美文网首页
Tensorflow中的object detection API

Tensorflow中的object detection API

作者: Mouse_HH | 来源:发表于2017-11-20 17:14 被阅读0次

    在本地跑一个实例之前,我们还需要一步准备工作。Configuring the Object Detection Training Pipeline
    (╯' - ')╯︵ ┻━┻
    ┬─┬ ノ( ' - 'ノ) {摆好摆好}
    (╯°Д°)╯︵ ┻━┻
    这个API呢,使用protobuf来配置训练及评价过程,跟caffe一样样的。高屋建瓴地讲,配置文件要包括5部分

    1. 模型配置:来定义使用什么样的模型;
    2. 训练配置:训练过程中的一些参数配置,如 梯度下降的参数配置,输入的预处理什么的;
    3. 评价配置
    4. 训练输入设置
    5. 评价输入设置

    配置文件大概长这个样子

    model {
    (... Add model config here...)
    }
    
    train_config : {
    (... Add train_config here...)
    }
    
    train_input_reader: {
    (... Add train_input configuration here...)
    }
    
    eval_config: {
    }
    
    eval_input_reader: {
    (... Add eval_input configuration here...)
    }
    

    Picking Model Parameters

    配置模型是个麻烦活儿,往往适合的才是最好的。Faster R-CNN精度高但速度慢。SSD速度较快。作者们在论文里仔细地研究了速度和精度的相关问题。为了方便入手,API在object_detection/samples/model_configs文件夹下提供了示例模型配置。

    定义输入

    之前提过API用的是TFRecord的文件格式。这里要给出训练和评价文件的位置,同时label map也要给出
    引用文档中的一个例子

    tf_record_input_reader { 
    input_path: "/usr/home/username/data/train.record"
    }
    label_map_path: "/usr/home/username/data/label_map.pbtxt"
    

    配置训练器

    用以配置训练进程

    1. 模型参数的初始化
    2. 输入预处理
    3. 随机梯度下降的参数设置
      举个栗子
    batch_size: 1
    optimizer {
      momentum_optimizer: {
        learning_rate: {
          manual_step_learning_rate {
            initial_learning_rate: 0.0002
            schedule {
              step: 0
              learning_rate: .0002
            }
            schedule {
              step: 900000
              learning_rate: .00002
            }
            schedule {
              step: 1200000
              learning_rate: .000002
            }
          }
        }
        momentum_optimizer_value: 0.9
      }
      use_moving_average: false
    }
    fine_tune_checkpoint: "/usr/home/username/tmp/model.ckpt-#####"
    from_detection_checkpoint: true
    gradient_clipping_by_norm: 10.0
    data_augmentation_options {
      random_horizontal_flip {
      }
    }
    

    初级阶段可以在这个的基础上微改。

    模型参数初始化

    为了加快训练进程,一般都会在已有的分类模型或或检测模型基础上进行训练。训练配置有两个需要设置的地方,fine_tune_checkpoint和from_detection_checkpoint。fine_tune_checkpoint 要求提供一个已有模型的路径。from_detetion_checkpoint 是一个布尔值,当设置为假的时候,认为导入的是一个分类模型。

    provided checkpoints

    官方提供了一些在coco数据集上的预先训练好的模型。

    Model name Speed COCO mAP Outputs
    ssd_mobilenet_v1_coco fast 21 Boxes
    ssd_inception_v2_coco fast 24 Boxes
    rfcn_resnet101_coco medium 30 Boxes
    faster_rcnn_resnet101_coco medium 32 Boxes
    faster_rcnn_inception_resnet_v2_atrous_coco slow 37 Boxes

    输入预处理

    在train_config中可以选择是否启用数据扩充

    SGD 参数

    梯度下降的超参数设置

    评价器的配置

    使用了PASCAL VOC的设置,不需要改动。

    相关文章

      网友评论

          本文标题:Tensorflow中的object detection API

          本文链接:https://www.haomeiwen.com/subject/eituuxtx.html