Python Faster R-CNN 安装配置记录

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,前面博客有记录遇到的各种坑。
另外欢迎访问我的博客,一起学习交流。

1.安装python依赖包

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

进行编译.

2.编译caffe,运行FRCN

修改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检测成功。

猜你喜欢

转载自blog.csdn.net/Alex_StarSky/article/details/70038144