RFCN学习系列(一)训练自己得数据集

前言

RFCN和faster rcnn算法模型原理非常类似,也有RPN,也是分两阶段来进行目标检测。主要不同点就是RFCN添加了Position Sensitive ROI Pooling层,这样使得ROI Pooling前已经带有位置信息,后面只需要做分类即可。基于这一改变,使得后面全连接层可以省略掉,模型size减少很多,计算量大为减少,从而效率提高了,而准确度还能和faster rcnn相当。

代码下载和编译

1)下载RFCN代码 

git clone https://github.com/Orpine/py-R-FCN.git

2) 下载对应得caffe代码

cd py-R-FCN

git clone https://github.com/Microsoft/caffe.git

3)编译Cython

cd xx/py-R-FCN/lib

make

这个时候会遇到cuda located error,需要修改setup.py,具体参考我的博客:https://blog.csdn.net/ltshan139/article/details/99868686

4)编译caffe

cd xx/py-R-FCN/caffe


cp Makefile.config.example Makefile.config

sudo make clean

sudo make -j8

sudo make pycaffe -j8

在编译前需要对Makefile.config进行修改, 而且会遇到cudnn版本过低的问题,具体还是参考上面提到的博客

另外,在用opencv3.4编译caffe example时,可能会遇到一个opencv api没有定义的bug:

 undefined reference to `cv::Mat::updateContinuityFlag() 

其解决办法就是不要编译它即可,毕竟不影响功能使用:

sudo mv examples/cpp_classification/classification.cpp examples/cpp_classification/classification.cpp1

5)如果上面这几步都ok了,可以运行demo来验证下。

直接运行下面这个脚本就运行的是ResNet101模型:sudo ./tools/demo_rfcn.py 

如果想运行ResNet50,则这么输入:sudo ./tools/demo_rfcn.py --net ResNet-50

训练自己的数据集

我们的重点是训练自己的数据集

1)数据集准备和faster rcnn类似,也是采用VOC格式,具体参考:https://blog.csdn.net/ltshan139/article/details/100087559

2)修改训练和测试相关配置文本文件,因为是采用ohem方式,所以只需要修改下面这些,主要是class num修改成自己数据集对应值,具体可以参考其他人的博客。

cd py-R-FCN/models/pascal_voc/ResNet-50/rfcn_end2end/

3) 修改迭代次数以及class names

vi ./experiments/scripts/rfcn_end2end_ohem.sh  #修改迭代次数以及正确的train和test数据目录名称

vi py-R-FCN/lib/datasets/pascal_voc.py #修改class names

4)训练过程中,如果遇到'module' object has no attribute 'text_format',

请参考https://blog.csdn.net/ltshan139/article/details/100068916

5)最后,执行训练:

sudo ./experiments/scripts/rfcn_end2end_ohem.sh 0 ResNet-50 pascal_voc

6)模型训练出来后,可以单独使用下面命令来测试:

 sudo ./tools/test_net.py --gpu 0 --def models/pascal_voc/ResNet-50/rfcn_end2end/test_agnostic.prototxt --net output/rfcn_end2end_ohem/voc_2007_trainval/resnet50_rfcn_ohem_iter_150000.caffemodel --imdb voc_2007_test --cfg experiments/cfgs/rfcn_end2end_ohem.yml 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ltshan139

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值