【实战】Faster R-CNN API检测

1.准备工作

1.1 voc2007数据集下载(如果是自己制作数据集,跳过这一步)

官网下载地址:http://host.robots.ox.ac.uk/pascal/VOC/voc2007/index.html
(有时可以下载有时不能下载;可以下载voc2007、voc2012和voc一系列的数据集)
备用下载地址:http://bendfunction.f3322.net:666/
(个人的服务器,也是有时能下载有时不能下载;可以下载很多数据集)
(1)voc2007数据集包含train数据集和test数据集,train数据集下JPEGImages是存放图片的位置,Annotations是图片对应的xml标签。
(2)voc2007包含VOCtrain2007和VOCtest2007数据集;
VOCtrain2007包含Annotations,ImageSets,JPEGImages,SegmentationClass和SegmentationObject共5个文件夹。train有5011张图片,test有4952张图片。

1.2 Object Detection下载(如果已下载,跳过这一步)

下载地址:https://github.com/tensorflow/models
(1)models是tensorflow应用的开源代码,Object
Detection是tensorflow目标检测官方开源的API。目标检测的代码在models-master\research\object_detection的位置。需要将该文件夹放在工程的根目录下面。
(2)Github不能单独下载某个文件夹,只能下载整个工程(如models);若是感觉到下载比较慢,可以翻*下载,手机也有电脑版的github,所以可以通过手机来下载。(手机连接vpn方便)

1.3 protobuf下载(如果下载,则直接看(2))

最新下载地址:
https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-win32.zip
Windows下载地址:
https://github.com/protocolbuffers/protobuf/releases/download/v3.4.0/protoc-3.4.0-win32.zip
(1)如果是windows系统,必须下载3.4版本的,如果是linux或者mac则可以下载其他版本。然后把下载得到的protoc.exe文件放入C:\Windows\System32的路径。(不放入这个路径也行,但是一定要将protoc.exe添加系统环境变量)
(2)打开终端,进入到models-master\research目录,执行: protoc object_detection/proto/*.proto –python_put=. 执行完成没有错误,会在protos文件下生成很多的.py文件。 然后再把object_detection复制出去

1.4 labelimg标注工具下载(如果已经下载好了labelimg,跳过这一步)

参考地址:https://jingyan.baidu.com/article/5225f26ba428fee6fa090829.html
(1)如果是直接下载exe文件,需要把它放在一个不含有中文的目录下面才能打开。
(2)labelimg的使用:有open dir打开图片所在文件夹;Change Save dir用于存放标签;保存两种格式:YOLO格式(会有两个txt文件,txt1(类别,中心点下x,中心点y,宽,高),txt2(类别))和Pascal VOC格式(生成xml文件)

2 工作流程

2.1 数据集预处理
采集到的图片放到raw_images文件夹里

(1)数据增强(如,旋转、对称)待续
(2)图片大小
(3)图片命名
调整大小、更改名字后的图片放到processed_image
调整大小程序为pre_process.py

3.数据集打标签

(1)打标签所在的文件夹和图片文件名都会被记录到标签集xml文件里面(放到xml_labels文件夹)。
(2)打标签越接近,训练出来的效果越好。
(3)一个图片上相同标签的物体可以重复标注
(4)剔除没打上标签的图片(放到xml_images文件夹

4. xml转成csv文件

(1)因为在制作用于训练的.record格式文件时用到的是csv格式文件,所以需要将xml先转换成csv文件。将生成的xml文件转换成csv文件。所需代码如下:
在这里插入图片描述
(2)xml_to_csv.bat是批处理文件,双击执行,不用进入终端再用执行python
xml_to_csv.py这一步;并且使执行完文件里面所有的指令才终止,中值即退出终端。修改xml输入路径以及csv输出路径(image_path中train_labels和train_labels.csv)
在这里插入图片描述
(3)如果有test和train两个集合需要同时处理,可以通过在main函数中复制,修改来做。

5. csv转成tfrecord文件

(1)tfrecord文件是tensorflow中规定的文件保存格式。所需代码如下:
在这里插入图片描述
(2)修改类别个数,跟自己的标签对应。(如线夹,2个标签就写两个就行)
在这里插入图片描述
(3)另外,批处理文件generate_tfrecord.bat内容参数顺序应该和这个保持一致。这三个值分别是:csv文件,image图像所在路径,生成的tfrecord路径。由于tfrecord是整合了标签和图片,所以它的比较大。
(4)generate_tfrecord.bat内容:

python generate_tfrecord.py --csv_input=train_labels.csv --image_dir= train_images --output_path=train.record
pause

解释:python
generate_tfrecord.py的含义就是使用python.exe来执行generate_tfrecord.py程序,后面”空格–"对应的就是generate_tfrecord.py程序需要传入的参数。
注意:如果有训练集和测试集,则需要将generate_tfrecord.bat里面的内容增加为两条转换。

6.准备pbtxt文件
文件内容根据标签来定,注意不要写成pdtxt,所需代码如下:
在这里插入图片描述
注意,内容必须和generate_tfrecord.py中的对应。
在这里插入图片描述
7. 下载训练好的目标检测模型

下载地址:
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
(1)模型主要是通过coco数据集训练而成。也有其他4个数据集训练而成的模型。
model.ckpt文件为训练模型,一般采用预训练模型,可降低训练所需时间,根据实际需求选择适合自己的模型,下载完成后解压,将名字带有model.ckpt的三个文件移动到training目录下。如线夹,使用预训练模型为:
(2)导出该下载文件下面的文件如下: 解压后里面有个.pb文件,对我们没用,因为它是不可训练模型。

8. 配置模型训练文件

(1)在object_detection\samples\configs下找到跟预训练模型匹配的config文件,所以此处下载的配置文件应该和步骤7中的ssd_mobilenet_v1_coco模型一致。复制到工程所在根目录。
(2)更改配置文件内容 Num_classes:2 # 如线夹,只有2个标签 Batch_size:16 #
如果电脑内存不够,可以改为8或者4 Num_steps:200 # 可以断点续训,刚开始可以设置的小一点,看效果。
Fine_tune_checkpoint:”./training/model.ckpt” # 加载预训练模型 下面内容也需要更改:
1)训练集数据和pbtxt文件
2)验证集数据和pbtxt文件(如果有测试集,把测试集放到验证集这个地方就行,即用test.record替代train.record)
3)更改验证集的数量
4)由于bolt这一个标签的框特别小,所以需要更改anchor生成的大小。把min_scale参数默认的0.2调小一些,调成0.02。

9. 训练模型

(1)首先找到train.py文件,在object_detection\legacy目录下面,将它到复制到工程所在根目录下面。
(2)所需代码如下: (3)train.bat内容: python train.py --logtostderr
–pipeline_config_path=ssd_mobilenet_v1_coco.config --train_dir=train_dir/ pause logtostderr 这个参数不用管默认的。train_dir模型生成的文件夹,每过一段时间会保存一次模型。最多保存5个模型。

10. 模型的导出

把ckpt的模型变成.pb的模型,.pb的模型用起来比较方便。
(1)首先找到export_inference_graph.py文件,复制到工程所在根目录。 (2)所需代码如下
(3)export_inference_graph.bat内容如下: python export_inference_graph.py ^
–input_type image_tensor ^ # 固定参数
–pipeline_config_path “ssd_mobilenet_v1_coco.config” ^ # 配置文件
–trained_checkpoint_prefix “train_dir/model.ckpt-3400” ^ # 模型参数
–output_directory “models1” # 加了引号,不加也行,不加最好 Pause 生成的.pb文件就可以用来做目标检测

11.目标检测

(1)目标检测demo,object_detection_tutorial.ipynb在object_detection目录下面
(2)怎样打开D盘文件夹下面的jupyter文件。终端进入D盘jupyter所在目录,然后输入jupyter
notebook,这样浏览器打开的目录就是现在终端所在目录。
(3)更改jupyter打开的默认浏览器:控制面板-程序-默认程序-设置默认程序-选中浏览器、切换浏览器,即可。
(4)由于object_detection_tutorial.ipynb里面有import
utils…这一块,所以需要从object_detection下面复制utils到工程根目录下。
(5)object_detection_tutorial.ipynb里面需要修改的地方。

  • 1)改成自己pb模型所在位置以及自己对应的pbtxt文件。

  • 2)增加一个test_images文件夹,用于存放测试图片。

    • 3)object_detection_tutorial.ipynb将变成object_detection_tutorial.py文件。所需代码:
      对object_detection_tutorial.py文件修改下面部分,用于存放测试输出的图片。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值