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 |
|