Faster RCNN 在Linux+CPU环境下训练自己的数据集过程以及训练遇到的问题

本文详细记录了在Linux Ubuntu 16.04环境下,使用CPU训练Faster R-CNN的完整过程,包括Caffe的配置、Py-Faster-RCNN的CPU适配、数据集转换为PASCAL VOC格式等。在训练过程中遇到了loss为-nan和'numpy.float64' object不能作为索引的问题,通过调整学习率和修改源码成功解决。讨论了训练迭代次数、数据集质量等因素对定位效果的影响,并分享了数据集划分策略。
摘要由CSDN通过智能技术生成

本帖主要内容:

  • 训练过程中的一些思考.
  • Faster RCNN在Linux ubuntu 16.04+cpu 环境下的训练过程, 包括配置caffe, 修改py-faster-rcnn环境为cpu环境, 以及如何准备数据集(数据集准备出错会导致训练出错), 准备成Pascal VOC 标准集格式.
  • 训练过程中遇到的问题以及解决办法.

当前进度:

用自己的数据集, ZF网络, 训练max_iters = [2000, 1000, 2000, 1000], 有了些成效.


查了资料, 貌似我已经进入黑盒模式, 需要开始调参了.  和博客上一些高手探讨后, 也给出建议, 你应该多试试看, 这个没有固定因素, 多方面因素会影响结果. 

影响定位效果有这几个因素: 数据集质量, 训练次数, 网络参数等等

PART 1

对算法的一些思考:

1. 关于ROI POOLING, RoI polling 的目的就是要把不同大小的RoI 调整到固定的尺寸. 但是在原图中一个proposal 不就是对应feature map上一个点吗,那ROI尺度不就是一个点而已,相同的尺度,为什么还需要ROI?

只是9个proposal的中心对应feature map上同一个点,并不是原图上所有的proposal不同的尺度,映射到feature map只是一个点.所以需要RoI.


思考的问题,待解决的问题:

1. 如果只训练一类, 即车牌, 手头只有3200+ 张图片(车牌这一类数据有3200+张), 应该设置多少迭代数量?  目前为了跑通训练过程, 只设置了50,50,50,50, 为了排除训练问题. 目前训练自己数据集跑通了, 但可能训练迭代次数太少了, 效果不佳. 也有可能是因为没有学习到这些数据, 可能数据集出来问题.

max_iters = [ 50, 50, 50, 50]


后来设置了[2000, 1000, 2000, 1000], 网络上一些跑过faster rcnn的大神还是建议应该再多点训练数量, 跑个60000都不为过.

2. ImageSet/Main 里面 test.txt, trainval.txt, train.txt, val.txt 里面数量应该如何设置?  博主只有3200+ 车牌, 也是总的图片数量.  官方版test占整个数据集50%, trainval占整个数据集剩下的50%, train占trainval的50%, val占trainval剩下的50%.  如果按这样的比例, 那博主用于train 的车牌图片只剩下800张了. 

后来设置了, trainval 90%, test 10%. train是trainval的90%, val是trainval的10%.


PART 2

训练过程 

待补充...


1.编译caffe

编译前有一点比较重要, 要把roi_pooling_layer.cpp 和  smooth_L1_loss_layer.cpp 替换成CPU版本, 再编译caffe. 参照如下:

https://github.com/neuleaf/faster-rcnn-cpu


2.准备数据集

准备数据集, 要做成PASCAL VOC 格式. 为什么要这么做? 因为官方给出的RGB大师写的代码是用PASCAL VOC标准数据集的格式(PASCAL VOC数据集很常用, 是CV里面最常用的几种数据集之一), 使用xml标注文件进行训练. 如果想使用自己的数据集训练, 一种是把代码改成适应自己的标注文件, 例如博主使用openalpr的plate_tagger进行标注, 生成的是yaml文件. 另一种, 是提取自己标注的数据, 模仿PASCAL VOC, 制成xml的形式, 省下修改代码的很多功夫. 后者比较方便.  PASCAL VOC 标注xml文件结构如下: 

<</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值