在本地跑一个实例之前,我们还需要一步准备工作。Configuring the Object Detection Training Pipeline
(╯' - ')╯︵ ┻━┻
┬─┬ ノ( ' - 'ノ) {摆好摆好}
(╯°Д°)╯︵ ┻━┻
这个API呢,使用protobuf来配置训练及评价过程,跟caffe一样样的。高屋建瓴地讲,配置文件要包括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"
配置训练器
用以配置训练进程
- 模型参数的初始化
- 输入预处理
- 随机梯度下降的参数设置
举个栗子
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的设置,不需要改动。
网友评论