折腾faster-rcnn(三)--训练篇

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了折腾faster-rcnn(三)--训练篇相关的知识,希望对你有一定的参考价值。

参考技术A 标签(空格分隔): Linux 深度学习

前面,我们已经成功跑起来faster-rcnn,并且自己动手训练了PascalVOC2007图像集,但是笔者接下来继续沿着官方文件跑PascalVOC2012,训练到第二阶段的某个点,程序就开始报错退出。查看logs发现,找不到图像的Annotation文件。遂放弃,转而生成自己的图像集。

这里笔者需要先完成毕业设计,所以图像集设计的种类不多,也就三类。毕竟PascalVOC一开始也只有四类呢!看了这么多经验帖,总结需要注意一下几个问题:文件名不要大写,后缀只能是.jpg或.JPEG,图像不要长得太过“瘦长”。这里为了重新命名收集来的文件,笔者自己写了一段Python脚本,变量命名注释极不规范,而且并不能识别某些后缀是jpg但并不是jpg的“假图”,大家看看就好,勿喷。

这里采用的是 labelImg 的标定工具,发动同学和学姐学弟一起帮我标定2333~~~

这里我们需要产生和PascalVOC一样格式的txt文件,这里笔者事先研究过了,产生是有点规律的,具体见我的上一篇博客: 折腾faster-rcnn(二)--数据篇
然后是几个集合的比例问题:
一般情况下trainval占总数据集的50%,test占总数据集的50%;train占trainval的50%,val占trainval的50%。上面所占百分比可根据自己的数据集修改,如果数据集比较少,test和val可少一些。这个在生成以上四个文件的脚本里面可以调比例,暂时就用默认比例试试,跑跑。生成这几个文件的脚本如下:

将以上几步搞好后,我们需要仿照PSACALVOC2007的结构建立自己的图像库,目录结构如下图所示

这一步肯定是需要的,因为PascalVOC有20类,所以我们需要根据自己的需求稍微修改神经网络参数。所有参数都在 /models 下,分为 coco 和 pascal_voc 格式,每种格式又有两到三种网络模型,每种模型还有两种训练方式 Alternative training(alt-opt) 和 Approximate joint training(end-to-end) 。总之,由于各种原因,本文以Alternative training+ZF model为例。笔者的需求是四类,还有一类在这里叫 __background__ 类,一共五类。
要修改的文件:
1.py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt/stage1_rpn_train.pt

2.py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt/stage1_fast_rcnn_train.pt

3.py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt/stage2_rpn_train.pt

4.py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt/stage2_fast_rcnn_train.pt

5.py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt/faster_rcnn_test.pt

注意,注意,这里文件夹进行了切换,并不属于模型的参数而是属于支持库的改动:
6.py-faster-rcnn/lib/datasets/pascal_voc.py

7.py-faster-rcnn/lib/datasets/imdb.py

8.根目录执行 ./experiments/scripts/faster_rcnn_alt_opt.sh 0 ZF pascal_voc ,训练和测试一气呵成,并且还有日志记录。如果只需要训练,那么执行(无日志记录):

Q&A:
1.如果标签含有大写字母,那么修改py-faster-rcnn/lib/datasets/pascal_voc.py第209行:

2.出现错误:

这是因为某些图像根本不是jpeg图像,只是后缀被改动了,这一下被学姐坑惨了。建议大家训练前统统用图转工具将图像转换一下格式,以绝后患。

faster-rcnn训练自己数据+测试

准备使用faster-rcnn进行检测实验。同时笔者也做了mask-rcnn,yolo-v3,ssd的实验,并进行对比。

window下使用faster-rcnn  https://blog.csdn.net/qq_38497266/article/details/86234055

错误信息

https://blog.csdn.net/gbbb1234/article/details/73865148

https://blog.csdn.net/baidu_32936911/article/details/79865659

以上是关于折腾faster-rcnn(三)--训练篇的主要内容,如果未能解决你的问题,请参考以下文章

使用 Fast/Faster-RCNN 在 C++ 上制作对象检测器的最简单方法是啥?

rcnn fast-rcnn faster-rcnn资料

Faster-RCNN训练自己的数据集——备忘

faster-rcnn CUDA8.0编译错误

深度学习目标检测网络结构SPP FAST-RCNN FASTER-RCNN

深度学习Caffe实战笔记(19)Windows平台 Faster-RCNN 制作自己的数据集