当前位置: 代码迷 >> 综合 >> TensorFlow 08——ch05-TensorFlow Object Detection 深度学习目标检测
  详细解决方案

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

热度:112   发布时间:2023-09-26 21:31:18.0

目录

    • 准备工作
      • 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=.

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

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的路径放进来,我的是:

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

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

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

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之后能得到检测效果如图 。
TensorFlow 08——ch05-TensorFlow Object Detection 深度学习目标检测
两张图片分别是:

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

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

那就可以开始正题了!

训练新模型

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,把这五个解压的文件放进去。
TensorFlow 08——ch05-TensorFlow Object Detection 深度学习目标检测

注意: 是这几个文件,一开始我下错了,查了好几个小时才发现数据集都匹配不上是这里导致的!

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"

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

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/

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

  相关解决方案