图片标注工具:labelImg https://github.com/tzutalin/labelImg
标记后生成的是xml文件需要自己进行转换
我用的是KITTI数据集做训练。tensorflow已经提供的转换方法 object_detection/dataset_tool/create_kitti_tf_record.py
同时也提供了pbtxt文件 路径在 object_detection/data/kitti_label_map.pbtxt
可以直接使用命令转换就可以,前提是已经下载了数据集
数据集转换完成后,下载与训练模型
4、训练模型
Object Detection API是依赖一种特殊的设置文件进行训练的。在object_detection/samples/configs文件夹下,有一些设置文件的示例。可以参考faster_rcnn_inception_resnet_v2_atrous_coco.config文件创建的设置文件。先将faster_rcnn_inception_resnet_v2_atrous_coco.config复制一份到voc文件夹下,命名为faster_rcnn_inception_resnet_v2_atrous_voc.config。
faster_rcnn_inception_resnet_v2_atrous_voc.config文件有7处需要修改:
- 第一处为num_classes,需要将它修改为自己数据集的类别数
- 第二处为eval_config中的num_examples,它表示在验证阶段需要执行的图片数量,修改为验证集的图片数5823(可以在create_pascal_tf_record.py中,输出对应的examples_list长度,就可以知道这个大小)。
- 还有5处为所有含PATH_TO_BE_CONFIGURED的地方。这些地方需要修改为自己的目录,他们应该分别被修改为:
gradient_clipping_by_norm: 10.0
fine_tune_checkpoint:
##此行需要修改##
"voc/faster_rcnn_inception_resnet_v2_atrous_coco_2018_01_28/model.ckpt"
from_detection_checkpoint: true
# Note: The below line limits the training process to 200K steps, which we
# empirically found to be sufficient enough to train the pets dataset. This
# effectively bypasses the learning rate schedule (the learning rate will
# never decay). Remove the below line to train indefinitely.
num_steps: 200000
data_augmentation_options {
random_horizontal_flip {
}
}
}
train_input_reader: {
tf_record_input_reader {
##此行需要修改##
input_path: "voc/pascal_train.record"
}
##此行需要修改##
label_map_path: "voc/pascal_label_map.pbtxt"
}
eval_config: {
##此行需要修改##
num_examples: 5823
# Note: The below line limits the evaluation process to 10 evaluations.
# Remove the below line to evaluate indefinitely.
max_evals: 10
}
eval_input_reader: {
tf_record_input_reader {
##此行需要修改##
input_path: "voc/pascal_val.record"
}
##此行需要修改##
label_map_path: "voc/pascal_label_map.pbtxt"
shuffle: false
num_readers: 1
}
在使用object_detection目录下的train.py文件训练的时候会使用到slim下库,因此我们需要先配置临时环境变量,这一步在配置API过程中已经完成。
然后就可以开始训练了。
老的训练方法在 /object_detection/legacy/train.py 中,执行下面的命令
python train.py --logtostderr --train_dir ./training/ --pipeline_config_path /home/vision/Project/tf-models/research/object_detection/ssd_model/ssdlite_mobilenet_v1_coco.config
--train_dir 训练得到的文件保存路径
--pipeline_config_path 上一步自己修改后配置文件路径。我直接使用的全路径
参考文章:
第三十二节,使用谷歌Object Detection API进行目标检测、训练新的模型(使用VOC 2012数据集) https://www.cnblogs.com/zyly/p/9248394.html
使用新方法训练模型 + 模型转换:https://www.cnblogs.com/zongfa/p/9663649.html
https://www.cnblogs.com/leviatan/archive/2019/04/20/10740105.html