1. 数据集制作(这个一个人做了就通用的了,可跳过)
1.1 数据集按照VOC格式放置
比如我创建一个VOC2007的数据,首先创建一个VOC2007的文件夹
-
建立
Annotations文件夹 -> 将xml文件全部放到该文件夹里 -
建立
ImageSets文件夹 在ImageSets文件夹下再建立Main文件夹,生成四个txt文件,test.txt是测试集,train.txt是训练集,val.txt是验证集,trainval.txt是训练和验证集。txt里的内容是即图片名字(无后缀)。 -
建立
JPEGImages文件夹 -> 所有的训练图片放到该文件夹里(JPG格式)
1.2 一些必要的安装包(lxml等)和编译
protoc object_detection/protos/*.proto --python_out=.
如有编译失败,参考链接
1.3 建立pbtxt,也就是你的类
可以去object_detection/data目录下去找一个修改
这里因为是使用的是VOC,所以复制一个pascal_label_map.pbtxt修改
1 | |
1.4 修改dataset_tools/create_pascal_tf_record.py文件
pbtxt路径修改1
2
3#flags.DEFINE_string('label_map_path', 'data/pascal_label_map.pbtxt', # 'Path to label map proto') flags.DEFINE_string('label_map_path', '/mnt/data2/caodai/VOC2007/pascal_label_map.pbtxt', 'Path to label map proto')-
1
2#img_path = os.path.join(data['folder'], image_subdirectory, data['filename']) img_path = os.path.join(FLAGS.year, image_subdirectory, data['filename']) -
1
2
3
4#examples_path = os.path.join(data_dir, year, 'ImageSets', 'Main', # 'aeroplane_' + FLAGS.set + '.txt') examples_path = os.path.join(data_dir, year, 'ImageSets', 'Main', FLAGS.set + '.txt')
1.4 生成数据集
1 | |
2. 训练
2.1 下载config文件对应的ckpt
解压后的里面有ckpt,还有个pipline.config(这个和object_detection/samples/configs对应的config文件是一样的,也可以直接修改这里的config),model的ckpt路径就是上面 config 问题 fine_tune_checkpoint后面要修改的路径
2.2 修改config文件
config文件路径 object_detection/samples/configs
复制一份修改,ssd_mobilenet_v1_coco.config 前面ssd是算法,mobilenet_v1是提取特征框架,coco是代表是在coco数据上训练的模型
然后将PATH_TO_BE_CONFIGURED换成实际的路径,num_classes换成所需要的类
其它参数也可以调整,后面看自己需求。
2.3 安装一些包和插件
安装pycocotools
1 | |
将库加入到pythonpath
1 | |
2.4 运行
1 | |