目录
-
- 准备工作
-
- 1.编译 research\object_detection\protos 中的 .proto
- 2.把Slim加入PYTHONPATH
- 3.测试安装API成功
- 4.执行已经训练好的模型
- 训练新模型
-
- 1.下载数据集
- 2.解压并转换
- 3.准备模型
- 4.模型配置文件
- 5.训练新模型
代码链接:https://github.com/MONI-JUAN/Tensorflow_Study/ch05-TensorFlow深度学习目标检测
数据集和模型较大,可以提前下!
链接:https://pan.baidu.com/s/11E-8-AmUniHqu5WvQF82gQ
提取码:w9bi
准备工作
1.编译 research\object_detection\protos 中的 .proto
在research
文件夹执行命令:
protoc object_detection/protos/*.proto --python_out=.
2.把Slim加入PYTHONPATH
TensorFlow Object Detection API 是以 Slim 为基础实现的,需要将 Slim 的目录加入 PYTHONPATH 后才能正确运行。
如果是Linux直接在在research
文件夹执行命令:
export PYTHONPATH=$PYTHONPATH:'pwd':'pwd'/slim
如果是windows稍微麻烦一些,在python的执行目录新建一个pth文件,每个人的电脑不一样,我的是:
在目录C:\Anaconda3\Lib\site-packages\
,新建了一个tensorflow_model.pth
,把research的路径放进来,我的是:
D:\code\python\CV\Deep-Learning-21-Examples-master\chapter_5\research
D:\code\python\CV\Deep-Learning-21-Examples-master\chapter_5\research\slim
D:\code\python\CV\Deep-Learning-21-Examples-master\chapter_5\research\object_detection
3.测试安装API成功
在research
文件夹执行命令:
python object_detection/builders/model_builder_test.py
4.执行已经训练好的模型
TensorFlow Object Detection API 默认提供了 5 个预训练模型,官们都是使用 coco 数据集训练完成的,结构分别为:
- SSD+MobileNet
- SSD+Inception
- R-FCN+ResNet101
- Faster RCNN+ResNet101
- Faster RCNN+Inception_ResNet
在目录research\object_detection\
,打开jupyter
运行一遍object_detection_tutorial.ipynb
切换jupyter
的目录是在research\object_detection\
打开终端运行jupyter-notebook
,就会在这启动jupyter了
运行一遍object_detection_tutorial.ipynb
之后能得到检测效果如图 。
两张图片分别是:
那就可以开始正题了!
训练新模型
1.下载数据集
地址是:http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
但是这个下的比较慢,我传到百度云了。
链接:https://pan.baidu.com/s/11E-8-AmUniHqu5WvQF82gQ
提取码:w9bi
(另一个等下也要下)
在项目的object_detection文件夹中新建voc目录,并将解压后的数据集拷贝进来,最终形成的目录为:
research/object_detection/voc/VOCdevkit/VOC2012/JPEGImages/2007_000027.jpg2007_000032.jpg2007_000033.jpg2007_000039.jpg2007_000042.jpg………………Annotations/2007_000027.xml2007_000032.xml2007_000033.xml2007_000039.xml2007_000042.xml………………………………
2.解压并转换
将voc 2012数据集转换为 tfrecord 恪式,转换好的 tfrecord 保存在新建的 voc 文件夹下。
在项目的object_detection文件夹中cmd运行:
python create_pascal_tf_record.py --data_dir voc/VOCdevkit/ --year=VOC2012 --set=train --output_path=voc/pascal_train.record
python create_pascal_tf_record.py --data_dir voc/VOCdevkit/ --year=VOC2012 --set=val --output_path=voc/pascal_val.record
然后将 pascal_label_map.pbtxt 数据复制到 voc 文件夹下。
3.准备模型
下载 Faster RCNN+Inception_ResNet_v2 的这个模型faster_rcnn_inception_resnet_v2_atrous_coco_11_06_2017.tar.gz
,
地址是:http://download.tensorflow.org/models/object_detection/faster_rcnn_inception_resnet_v2_atrous_coco_11_06_2017.tar.gz
链接:https://pan.baidu.com/s/11E-8-AmUniHqu5WvQF82gQ
提取码:w9bi
(跟刚才的链接一样)
解压,在voc
文件夹建一个文件夹pretrained
,把这五个解压的文件放进去。
注意: 是这几个文件,一开始我下错了,查了好几个小时才发现数据集都匹配不上是这里导致的!
4.模型配置文件
TensorFlow Object Detection API 是依赖一个特殊的设置文件进行训练的 。在object_detection/samples/configs/ 文件夹下,有一些设置文件的示例。
可以参考 faster_rcnn_inception_resnet_v2_atrous_pets.config 文件创建的设置
文件。
先将 faster_rcnn_inception_resnet_v2_atrous_pets.config 复制一份到 voc 文件夹下,修改7个地方:
1:num_classes: 202:num_examples: 58233:PATH_TO_BE_CONFIGURED,需要改5个地方fine_tune_checkpoint: "voc/pretrained/model.ckpt"input_path: "voc/pascal_train.record"label_map_path: "voc/pascal_label_map.pbtxt"input_path: "voc/pascal_val.record"label_map_path: "voc/pascal_label_map.pbtxt"
5.训练新模型
在voc中创建一个文件夹train_dir
,在object_detection中执行命令:
python train.py --train_dir voc/train_dir/ --pipeline_config_path voc/voc.config
查看模型训练情况
tensorboard --logdir voc/train_dir/