首先要知道怎么配置caffe,如果还没有配置过caffe,建议从头学起。详情见博主博文:
cpu版caffe:点击打开链接
gpu版caffe:点击打开链接
开始!!!
1. 获取源码
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
2. 安装Cpython和easydict,已安装过的请忽略。
sudo pip install cython
sudo pip install easydict
3. 配置cpython
首先在py-faster-rcnn/lib目录下修改setup.py文件,注释掉gpu相关项。
#CUDA = locate_cuda() //第一处
#self.set_executable('compiler_so', CUDA['nvcc']) //第二处
#Extension('nms.gpu_nms', //第三处,就是把cuda,gpu部分修改
#['nms/nms_kernel.cu', 'nms/gpu_nms.pyx'],
#library_dirs=[CUDA['lib64']],
#libraries=['cudart'],
#language='c++',
#runtime_library_dirs=[CUDA['lib64']],
# this syntax is specific to this build system
# we're only going to use certain compiler args with nvcc and not with
# gcc the implementation of this trick is in customize_compiler() below
#extra_compile_args={'gcc': ["-Wno-unused-function"],
# 'nvcc': ['-arch=sm_35',
# '--ptxas-options=-v',
# '-c',
# '--compiler-options',
# "'-fPIC'"]},
#include_dirs = [numpy_include, CUDA['include']]
#),
注释完成之后,在py-faster-rcnn/lib目录下使用:
make
4. 编译caffe
cd caffe-fast-rcnn
cp Makefile.config.example Makefile.config;
参照博主给的编译cpu版caffe,将Makefile.config文件中的ONLY_CPU,USE_OPENCV,WITH_PYTHON_LAYER=1的注释去掉后编译。
sudo make all -j4
sudo make pycaffe
如果中图出现
src/caffe/test/test_smooth_L1_loss_layer.cpp:11:35: fatal error: caffe/vision_layers.hpp
则将src/caffe/test/test_smooth_L1_loss_layer.cpp文件的第11行#include <vision_layers.hpp>注释掉即可。
这里注意cpu版注释掉该句之后无法使用sudo make runtest。
5. 测试demo
cd /home/username/py-faster-rcnn/data/scripts
./ fetch_faster_rcnn_models.sh
使用.sh下载,一般较慢,可以在这http://pan.baidu.com/s/1jIcfmrO 密码:l8nb下载,解压到py-faster-rcnn/data文件下即可。
然后修改一些文件:
A:修改/py-faster-rcnn/lib/fast_rcnn/config.py文件(True改成False)
# Use GPU implementation of non-maximum suppression
__C.USE_GPU_NMS = False
B:将/py-faster-rcnn/tools/test_net.py和 /py-faster-rcnn/tools/train_net.py的caffe.set_mode_gpu()修改为caffe.set_mode_cpu().
C:修改/py-faster-rcnn/lib/fast_rcnn/nms_wrapper.py文件(注释该引用,并将False改成True)
#from nms.gpu_nms import gpu_nms
def nms(dets, thresh, force_cpu=True)
cd pt-faster-rcnn/tools
./demo.py --cpu或者./demo.py --cpu --net zf