系统环境:
系统:ubuntu 16.04 LTS
CUDA: 8.0
cudnn:5.1
OpenCV:3.4.1
本文假设你已成功安装上述环境并配置好了caffe,即完成caffe相关依赖的安装。
1. 下载py-faster-rcnn
$ git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
我们将/PATH/TO/py-faster-rcnn/ 称为 FRCNN_ROOT/,则FRCNN_ROOT/下的文件及文件夹组织方式如下
FRCNN_ROOT/
├── caffe-fast-rcnn
├── data
├── experiments
├── lib
├── LICENSE
├── models
├── README.md
└── tools
2. 编译caffe-fast-rcnn
$ cd FRCNN_ROOT/caffe-faster-rcnn
注意:由于faster-rcnn没有与时俱进所以较高的cudnn不支持,因此我们将对应编译选项关闭。
$ cmake . -DUSE_CUDNN=OFF
根据 https://blog.csdn.net/hongbin_xu/article/details/76100132提供的cudnn解决方式处理cudnn不兼容问题,否则无法训练vgg16
- 用最新版本的caffe源码目录中的如下文件替换py-faster-rcnn/caffe-fast-rcnn中的对应文件。
include/caffe/layers/cudnn_relu_layer.hpp,
src/caffe/layers/cudnn_relu_layer.cpp,
src/caffe/layers/cudnn_relu_layer.cu
include/caffe/layers/cudnn_sigmoid_layer.hpp,
src/caffe/layers/cudnn_sigmoid_layer.cpp,
src/caffe/layers/cudnn_sigmoid_layer.cu
include/caffe/layers/cudnn_tanh_layer.hpp,
src/caffe/layers/cudnn_tanh_layer.cpp,
src/caffe/layers/cudnn_tanh_layer.cu
- 用caffe源码中的这个文件替换掉faster rcnn 对应文件
include/caffe/util/cudnn.hpp
- 打开 py-faster-rcnn/caffe-fast-rcnn 中的 src/caffe/layers/cudnn_conv_layer.cu文件,并将:
cudnnConvolutionBackwardData_v3
替换为
cudnnConvolutionBackwardData
cudnnConvolutionBackwardFilter_v3
替换为
cudnnConvolutionBackwardFilter
$ cmake .
$ make all –j16
$ make install
3. 编译lib
$ cd FRCNN_ROOT/lib
$ make
4. 下载与训练模型
放置FRCNN_ROOT/data下,完成后其文件组成如下
FRCNN_ROOT/data/
├── demo
├── faster_rcnn_models
├── pylintrc
├── README.md
└── scripts
5. 运行demo
$ cd FRCNN_ROOT/tools
$ python demo.py