Tensorflow中的object detection API

2017-11-20  本文已影响0人  Mouse_HH

在本地跑一个实例之前,我们还需要一步准备工作。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的设置,不需要改动。

上一篇下一篇

猜你喜欢

热点阅读