Ross Girshick大牛把Faster RCNN改为python版本,并记录如何安装 python版的Faster-RCNN 参考:
https://github.com/rbgirshick/py-faster-rcnn
因为之前已经安装过caffe了,参考我前面博客:http://blog.csdn.net/alex_starsky/article/details/69681029
Ubuntu16.04系统,显卡GTX1080,以各种依赖,cuda8.0, cudnn6.0, opencv2.4.13等,都已经安装过了,python环境是Anaconda2,前面博客有记录遇到的各种坑。
另外欢迎访问我的博客,一起学习交流。
sudo pip install Cython
出现错误:
ImportError: No module named easydict
解决办法:
sudo pip install easydict
出现错误:
ImportError: No module named cv2
解决办法:
cp /home/opencv-2.4.13.2/build/lib/cv2.so anaconda2/lib/python2.7/site-packages/
下载源代码
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
修改显卡计算能力,并编译Cython 库文件
cd py-faster-rcnn/lib
修改setup.py文件第135行
'nvcc': ['-arch=sm_35',
根据自己的显卡计算能力进行修改,查询网址为:CUDA GPUs :https://developer.nvidia.com/cuda-gpus
例如我的电脑是GTX 1080, 计算能力为6.1,则修改为
'nvcc': ['-arch=sm_61',
保存后执行编译命令:
make
进行编译.
修改Makefile.config文件
cd ../caffe-faster-rcnn
进入faster-rcnn对应的caffe目录.
也可以将之前的caffe的Makefile.config拷贝到了该目录下,也可以执行
cp Makefile.config.example Makefile.config
然后同样的,对Makefile.config文件进行修改:
注意修改
USE_CUDNN := 1
WITH_PYTHON_LAYER := 1
USE_PKG_CONFIG := 1
修改cudnn加速文件
这里坑多,主要是修改替换cudnn文件,不然会出现cudnn错误,因为作者的caffe版本所用的cudnn为旧版本的,可能与新环境的cudnn不兼容,导致出现如下错误:
In file included from ./include/caffe/util/cudnn.hpp:5:0,
from ./include/caffe/util/device_alternate.hpp:40,
from ./include/caffe/common.hpp:19,
from ./include/caffe/util/db.hpp:6,
from src/caffe/util/db.cpp:1:
/usr/local/cuda/include/cudnn.h:803:27: note: declared here
cudnnStatus_t CUDNNWINAPI cudnnSetPooling2dDescriptor(
^
make: *** [.build_release/src/caffe/util/db.o] Error 1
make: *** Waiting for unfinished jobs....
解决办法:我们需要替换更新文件,选择最新版的caffe-master版的文件进行替换:
py-faster-rcnn/caffe-fast-rcnn/include/caffe/util/cudnn.hpp
py-faster-rcnn/caffe-fast-rcnn/src/caffe/util/cudnn.cpp
py-faster-rcnn/caffe-fast-rcnn/src/caffe/layers/ 目录下16个cudnn_开头的文件
py-faster-rcnn/caffe-fast-rcnn/include/caffe/layers/目录下8个cudnn_开头的文件
修改一个include错误
编译仍会出现一个错误,不过是vision_layers.hpp在caffe变迁导致的:
src/caffe/test/test_smooth_L1_loss_layer.cpp:11:35: fatal error: caffe/vision_layers.hpp: 没有那个文件或目录
compilation terminated.
Makefile:563: recipe for target '.build_release/src/caffe/test/test_smooth_L1_loss_layer.o' failed
make: *** [.build_release/src/caffe/test/test_smooth_L1_loss_layer.o] Error 1
make: *** 正在等待未完成的任务....
只要修改文件:
py-faster-rcnn/caffe-fast-rcnn/src/caffe/test/test_smooth_L1_loss_layer.cpp
删除或者注释第十一行
#include "caffe/vision_layers.hpp"
出现错误:
AttributeError: ‘SimpleParamLayer’ object has no attribute ‘param_str’
原因是proto配置文件不一致,使用Beyond Compare修改对应的配置参数文件。
编译caffe
# 编译 Caffe 模块及模块测试
make -j8 all
make -j8 test
# 运行测试确认所有模块通过
make runtest
[----------] Global test environment tear-down
[==========] 1932 tests from 269 test cases ran. (293128 ms total)
[ PASSED ] 1932 tests.
# 编译python版本 pycaffe
make pycaffe
下载已经训练好的模型
cd $FRCN_ROOT
./data/scripts/fetch_faster_rcnn_models.sh
执行Demo测试
cd $FRCN_ROOT
./tools/demo.py
图像出现目标检测框,demo检测成功。