主要参考:
0)一个写的还不错的faster-rcnn的理论讲解(已经转载到知乎上面了):https://zhuanlan.zhihu.com/ML-Algorithm
1)faster rcnn官网
https://github.com/rbgirshick/py-faster-rcnn#installation-sufficient-for-the-demo
2)http://blog.csdn.net/zoro_lov3/article/details/60581174,第二个博客解决了shell脚本下载文件缓慢问题(可以利用迅雷下载,然后将下载好的文件直接复制到data路径下)
3)http://blog.csdn.net/u012841667/article/details/53436615
第三个博客解决了faster-rcnn编译不通过问题,——原因是:作者使用的caffe的cudnn.cpp,cudnn.hpp的文件版本和现在的cudnn文件版本不一致导致编译冲突
解决办法:
1).将/py-faster-rcnn/caffe-fast-rcnn/include/caffe/util/cudnn.hpp 换成最新版的caffe里的cudnn的实现,即相应的cudnn.hpp.
2).将/py-faster-rcnn/caffe-fast-rcnn/src/caffe/layer里的,所有以cudnn开头的文件,例如cudnn_lrn_layer.cu,cudnn_pooling_layer.cpp,cudnn_sigmoid_layer.cu。
都替换成最新版的caffe里的相应的同名文件。
3)将./include/caffe/layers的,所有以cudnn开头的文件,例如cudnn_conv_layer.hpp,cudnn_lcn_laye.hpp
都替换成最新版的caffe里的相应的同名文件之前我第三个文件没有替换,导致编译仍然没有通过,一定要全部替换这三个文件夹当中的文件
-----------------------------------------------------------------------------------------
前提:已经熟练掌握了caffe的配置问题,并且在Makefile.config当中,with_pythonlayer取消注释(这里如果没有取消注释的话,python层不会被识别,从而导致报错)
坑已填完,现在详细写一下运行步骤:
step1:数据准备以及编译:
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
cd py-faster-rcnn/lib
make
cd py-faster-rcnn/caffe-fast-rcnn
cp Makefile.config.example Makefile.config
然后将use_cudnn,with_pythonlayer取消注释
在make的时候注意上述说明的cudnn.cpp版本不一致问题
下载caffemodel::
cd py-faster-rcnn/data/scripts
gedit fetch_faster_rcnn_models.sh
在这个fetch_faster_rcnn_models.sh当中,给了caffemodel的下载链接。
复制其中的URL地址(http://www.cs.berkeley.edu/~rbg/faster-rcnn-data),打开下载faster_rcnn_models.tgz文件。我在windows系统下用迅雷下的,ubuntu里下载速度太慢了……
下载后,将该文件解压到
py-faster-rcnn/data
当中,然后就可以愉快的运行py-faster-rcnn/tools/demo.py文件了
--------------------------------------------------------------------------------------------------------------
利用faster rcnn跑VOC 2007的dataset
参考链接:http://blog.csdn.net/hongbin_xu/article/details/77278329
注意:代码当中一定不要由中文,之前写了好多中文注释,导致最后编译不成功
step1:数据集以及caffemodel的准备:
1)将下载好的三个文件解压到py-faster-rcnn/data当中
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
tar -xvf VOCdevkit_08-Jun-2007.tar
然后为PASCAL_VOC dataset创建链接 :
ln -s $VOCdevkit VOCdevkit2007
2)下载imagenet_models.rar到py-faster-rcnn/data/imagenet_models.rar
其实没有必要用sh脚本下载(因为下载速度太慢了)
./data/scripts/fetch_imagenet_models.sh
-------------------此时数据集以及model已经准备好了
step2:训练数据集:
好了,到目前为止都很简单。接下来要使用指令来训练了,一般来说都会因为环境不兼容碰到各种坑,后面会给出解决办法。
使用交替优化算法训练RPN
指令说明:
cd $FRCN_ROOT
./experiments/scripts/faster_rcnn_alt_opt.sh [GPU_ID] [NET] [--set ...]
GPU_ID:你的GPU号,默认为0;
NET:使用的网络模型,模型有三种{ZF, VGG_CNN_M_1024, VGG16},其中zf较小,vgg16最大;
set 训练集设置,使用的数据集是pascal_voc;
示例:
cd $FRCN_ROOT
./experiments/scripts/faster_rcnn_alt_opt.sh 0 VGG16 pascal_voc
使用联合训练的方法训练RPN
指令说明:
cd $FRCN_ROOT
./experiments/scripts/faster_rcnn_end2end.sh [GPU_ID] [NET] [--set ...]
GPU_ID:你的GPU号,默认为0;
NET:使用的网络模型,模型有三种{ZF, VGG_CNN_M_1024, VGG16},其中zf较小,vgg16最大;
set 训练集设置,使用的数据集是pascal_voc;
这里跟前面类似,只是训练的方法不一样,使用的网络模型和数据集等等都是一样的。
示例:
cd $FRCN_ROOT
./experiments/scripts/faster_rcnn_end2end.sh 0 VGG16 pascal_voc
我遇到了一个问题,原来的博主遇到的各种问题我没有遇到,可能比较幸运吧
问题:AttributeError: 'module' object has no attribute 'text_format'
解决办法:https://github.com/rbgirshick/py-faster-rcnn/issues/198
adding "import google.protobuf.text_format" in the fast-rcnn/lib/fast_rcnn/train.py