在安装配置好caffe之后,安装faster-rcnn。
安装的过程中遇到了很多问题,在这里写个博客记录一下。
1.下载
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
2.生成Cython模块
$cd py-faster-rcnn/lib
$make
3.生成Caffe和pycaffe
$ cd py-faster-rcnn/caffe-fast-rcnn
$ cp Makefile.config.example Makefile.config
打开Makefile.config,修改方式和caffe中的修改方式一样。
打开Makefile文件,也按照caffe中的方式进行修改。
参考我的第一篇博客,https://blog.csdn.net/yato0514/article/details/72902729
编译
$ make -j8
$ make pycaffe
在make的过程中出现了诸多问题,后来查了很多资料终于make成功。
因为faster-rcnn默认的caffe支持的cudnn版本是V4,而我的是cuda8.0+cudnn7,因此编译caffe会出现版本不兼容而导致的函数参数不对应的错误。
错误一:
编译可能会出现libopencv_imgcodecs.so : undefined reference to `TIFFIsTiled@LIBTIFF_4.0’等
解决方法:
在cmake 编译OpenCV时加上: cmake -D BUILD_TIFF=ON
原因:
OpenCV需要libtiff4库,然而Ubuntu16.04系统安装不会自带libtiff4,因此当以OpenCV为接口时便会自动编译libtiff4,然后再以OpenCV做接口编译时,Bug消除!
还需要做的:
用最新caffe源码的以下文件替换掉faster rcnn 的对应文件
include/caffe/layers/cudnn_relu_layer.hpp,
include/caffe/layers/cudnn_sigmoid_layer.hpp,
include/caffe/layers/cudnn_softmax_layer.hpp,
include/caffe/layers/cudnn_tanh_layer.hpp,
src/caffe/layers/cudnn_relu_layer.cpp,
src/caffe/layers/cudnn_relu_layer.cu
src/caffe/layers/cudnn_sigmoid_layer.cpp,
src/caffe/layers/cudnn_sigmoid_layer.cu
src/caffe/layers/cudnn_softmax_layer.cpp,
src/caffe/layers/cudnn_softmax_layer.cu
src/caffe/layers/cudnn_tanh_layer.cpp,
src/caffe/layers/cudnn_tanh_layer.cu
用caffe源码中的这个文件替换掉faster rcnn 对应文件:include/caffe/util/cudnn.hpp
将 faster rcnn 中的 src/caffe/layers/cudnn_conv_layer.cu 文件中的所有 cudnnConvolutionBackwardData_v3 函数名替替换为cudnnConvolutionBackwardData ;
cudnnConvolutionBackwardFilter_v3函数名替换为 cudnnConvolutionBackwardFilter
make后还是出错:
我的解决方法是在Makefile.config加入下列信息:
LINKFLAGS := -Wl,-rpath,$(HOME)/anaconda3/lib
重新make,成功
备注:
如果在cpu上配置时,则需要把py-faster-rcnn/lib/setup.py里含有gpu的信息都注释掉。
4.下载模型
$cd py-faster-rcnn/data/scripts
$sh fetch_faster_rcnn_models.sh
运行后发现路径不可达,复制里面的url(https://dl.dropboxusercontent.com/s/o6ii098bu51d139/faster_rcnn_models.tgz?dl=0),下载到本地,然后将其放置在py-faster-rcnn/data/下,并解压