1.前言
首先当然得感谢rbgirshick大神给我们不断带来惊喜,在fast-rcnn的基础上升级的faster-RCNN,这是github地址,https://github.com/rbgirshick/py-faster-rcnn,论文地址,https://arxiv.org/abs/1506.01497下面是几篇写的很好的博客总结,
http://blog.csdn.net/shenxiaolu1984/article/details/51036677,http://www.360doc.com/content/17/0303/14/10408243_633634497.shtml
2.安装
好了,废话不多说了,前面的理论知识学习完我们就可以开始实践了,这里简单介绍一下faster-rcnn代码的特点
- 自带的caffe,安装前可以不安装caffe,当然我觉着还是先自己安装好caffe比较安心
- 所有的tools均为python语言编写,方便使用
- 基于caffe构架,能力强的同学可以好好研究一下它是怎么搭建的
- 提供了tool可以进行训练,适应不同的cnn的网络,当然它只提供了zf,vgg12,和vgg16的tool,你想换比较新的,比如googleNet得自己参照着写
下面正式介绍安装:
本文的安装工作收到了下面的这篇文章很多启发,欢迎查看http://blog.csdn.net/sinat_30071459/article/details/51332084
本来想好好翻译一下,现在我又犯懒了,只挑重点说:
第一步:安装各种支持的库
pip install cython
pip install easydict
apt-get install python-opencv
第二步:安装各种支持的库
git submodule update --init --recursive
第三步:编译caffe
希望你已经装好caffe再玩frcnn,因为caffe很难装。给个我自己摸索的教程:
http://blog.csdn.net/angelfish91/article/details/56019558
第四步:编译frcnn的lib
进入py-faster-rcnn/lib
执行make
第五步:下载VOC2007数据集
提供一个百度云地址:http://pan.baidu.com/s/1mhMKKw4
解压,然后,将该数据集放在py-faster-rcnn\data下,用你的数据集替换VOC2007数据集。(替换Annotations,ImageSets和JPEGImages)
(用你的Annotations,ImagesSets和JPEGImages替换py-faster-rcnn\data\VOCdevkit2007\VOC2007中对应文件夹)
第六步:下载ImageNet数据集下预训练得到的模型参数(用来初始化)
提供一个百度云地址:http://pan.baidu.com/s/1hsxx8OW
解压,然后将该文件放在py-faster-rcnn\data下
也可以参照github上通过脚本来下载:
Download pre-computed Faster R-CNN detectors
cd $FRCN_ROOT
./data/scripts/fetch_faster_rcnn_models.sh
This will populate the $FRCN_ROOT/data folder with faster_rcnn_models. See data/README.md for details. These models were trained on VOC 2007 trainval.
第七步:运行Demo
After successfully completing basic installation, you’ll be ready to run the demo.
To run the demo
cd $FRCN_ROOT
./tools/demo.py
The demo performs detection using a VGG16 network trained for detection on PASCAL VOC 2007.
3. 训练
光玩玩Demo怎么行,下面介绍如何自己训练,先来看看步骤
- 准备数据
- 将数据制作成voc2007的格式
- 准备环境
- 设置参数进行训练
一项一项说:
数据最好是视频中取得照片,不用特别多,根据经验,超过500张训练出来就不会太差了。那么照片怎么标定呢,参照我整理的blog: http://blog.csdn.net/angelfish91/article/details/56295908
好了,数据有了,接下来是准备环境,第一步是修改网络参数,怎么修改,参照blog:http://blog.csdn.net/sinat_30071459/article/details/51332084,接下来要注意了,根据我踩过的坑:
- python中numpy 的版本必须为1.11,否则训练报错,怎么安装,参考blog:http://blog.csdn.net/youcharming/article/details/51073911
- 训练报错assert (boxes[:, 2] >= boxes[:, 0]).all()出现AssertionError,参考:http://blog.csdn.net/xzzppp/article/details/52036794
- !!!为防止与之前的模型搞混,训练前把output文件夹删除(或改个其他名),还要把py-faster-rcnn/data/cache中的文件和
py-faster-rcnn/data/VOCdevkit2007/annotations_cache中的文件删除(如果有的话)。
学习率等之类的设置,可在py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_alt_opt中的solve文件设置,迭代次数可在py-faster-rcnn\tools的train_faster_rcnn_alt_opt.py中修改:
4. 测试
将训练得到的py-faster-rcnn\output\faster_rcnn_alt_opt***_trainval中ZF的caffemodel拷贝至py-faster-rcnn\data\faster_rcnn_models(如果没有这个文件夹,就新建一个),然后,修改:
py-faster-rcnn\tools\demo.py,参考blog: http://blog.csdn.net/sinat_30071459/article/details/51332084,
弄好之后就可以通过demo来进行测试啦
5. 小结
faster-RCNN因为出色的性能,完善的代码,网上有很多教程,当环境配置出现问题时,请请教百度与google,很多问题在gibhub和stack overflow 上已经有人踩过坑了,祝大家训练成功。