TensorFlow 08——ch05-TensorFlow Object Detection 深度学习目标检测

tech2023-06-08  91

目录

准备工作1.编译 research\object_detection\protos 中的 .proto2.把Slim加入PYTHONPATH3.测试安装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+MobileNetSSD+InceptionR-FCN+ResNet101Faster RCNN+ResNet101Faster 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.jpg 2007_000032.jpg 2007_000033.jpg 2007_000039.jpg 2007_000042.jpg ……………… Annotations/ 2007_000027.xml 2007_000032.xml 2007_000033.xml 2007_000039.xml 2007_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: 20 2:num_examples: 5823 3: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/

最新回复(0)