- PASCAL_VOC数据集格式
-
JPEGImages文件夹
文件夹里包含了训练图片和测试图片,混放在一起 -
Annotations文件夹
文件夹存放的是xml格式的标签文件,每个xml文件都对应于JPEGImages文件夹的一张图片 -
ImageSets文件夹
Main存放的是图像物体识别的数据,里面有XX_train.txtXX_val.txtMain。在本次使用API时候用不到XX_train.txt这些文件夹,只需要里面的test.txt , train.txt, val.txt ,trainval.txt.这四个文件我们后面会生成 。
2.利用labelImg工具进行图像标注
3.利用main4.py生成Main文件夹下的4个txt文件
5.修改./data/pascal_label_map.pbtxt 将其中的目标类别更新为自己voc数据集目标类别
4.修改dataset中的create_pascal_tf_record.py
具体修改可见./dataset_tools/create_pascal_tf_record_myvoc.py
脚本
重心为修改img_path
,定义图片路径
生成训练和验证数据集的tfrecord格式
参数year是存储图片,xml文件的上级文件名
python ./create_pascal_tf_record_vocteds.py --data_dir=./ --label_map_path=./jiejing_label_map.pbtxt --year=vocteds --set=train --output_path=./tfrecord/jiejing_train.record
python ./create_pascal_tf_record_vocteds.py --data_dir=./ --label_map_path=./jiejing_label_map.pbtxt --year=vocteds --set=val --output_path=./tfrecord/jiejing_val.record
6.修改模型配置文件下的ssd_inception_v2_coco.config或faster_rcnn_resnet50_coco.config取决于用的网络模型。
例如想要在faster_rcnn_resnet50
模型的基础行进行迁移训练,在faster_rcnn_resnet50_coco.config
文件中进行如下修改:
line10 num_classes: 44 #将类别修改为自己目标种类
line111 fine_tune_checkpoint: "./faster_rcnn_inception_v2_coco_2018_01_28/model.ckpt" # 选择希望迁移训练的模型位置
line 126 input_path: "./tfrecord/jiejing_train.record" # 训练集读取,给出制作好的训练集tfrecord文件
line 128 label_map_path: "./jiejing_label_map.pbtxt"# 给定目标种类.pbtxt文件
line 140 input_path: "./tfrecord/jiejing_val.record" # 验证集读取,给出制作好的验证集tfrecord文件
line 142 label_map_path: "./jiejing_label_map.pbtxt" # 给定目标种类.pbtxt文件
7.执行train.py和eval.py文件
python ./train.py --logtostderr --pipeline_config_path=./faster_rcnn_inception_v2_coco.config --train_dir=./4ctrainout
python ./eval.py --logtostderr --checkpoint_dir=./4ctrainout --eval_dir=./4cevalout --pipeline_config_path=./faster_rcnn_inception_v2_coco.config
8.执行export_inference_graph.py文件,成可被调用的冰冻模型。
python ./export_inference_graph.py --input_type image_tensor --pipeline_config_path ./faster_rcnn_inception_v2_coco.config --trained_checkpoint_prefix ./frctrainout/model.ckpt-20000 --output_directory ./pbmodel
9.利用object_detection_tutorial.ipynb或自己写一个脚本引用冰冻模型,导入图片查看interface结果。
- 在原有训练文件基础上进行调参训练,需要将训练文件转换为冰冻模型,注意文件步数,在pipline文件中修改调参文件路径即可。
网友评论