Author : Liqi
Date : 2018.08.23
E-mail : [email protected]
查看CUDA和CUDNN版本的方法:
终端中输入
cuda 版本
cat /usr/local/cuda/version.txt
cudnn 版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
使用git从github上克隆源码仓库
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
–recursive
:是为了递归下载caffe-master
因为 py-faster-rcnn/caffe-fast-rcnn
来自另一个仓库
注: 如果执行完
git clone
指令后发现py-faster-rcnn/caffe-fast-rcnn
目录是空的,则需要继续下载,执行如下指令:
cd caffe-fast-rcnn
git submodule update --init --recursive
进入py-faster-rcnn/caffe-fast-rcnn/python
目录,caffe-fast-rcnn/python/requirement.txt
文件列出了pycaffe的所有依赖库,要把requirements下的依赖都装一遍,执行如下指令:
$for req in $(cat requirements.txt); do pip install $req; done
进入py-faster-rcnn/lib
目录,执行如下指令:
make
需要先更新用到的caffe,原版py-faster-rcnn依赖的caffe比较老,不支持cudnnv5,那就更新下对应的源码,进入 py-faster-rcnn/caffe-fast-rcnn
依次执行如下指令:
cd caffe-fast-rcnn
git remote add caffe https://github.com/BVLC/caffe.git
git fetch caffe
git merge -X theirs caffe/master
注:
git fetch
需要验证github账户和密码,git merge
时需要预先设置默认github账户,可使用如下指令设置:
git config user.name "your name"
git config user.email "your email"
完成版本合并后需注释掉
include/caffe/layers/python_layer.hpp
文件里的self_.attr(“phase”) = static_cast(this->phase_)
进入py-faster-rcnn/caffe-fast-rcnn
目录,找到Makefile.config
,如果没有可执行:
cp Makefile.config.example Makefile.config
紧接着修改Makefle.config
#使用cudnn
USE_CUDNN := 1
#去掉不合适的cuda计算能力参数
#注:此处可直接复制替换
CUDA_ARCH := -gencode arch=compute_50,code=sm_50 \
-gencode arch=compute_52,code=sm_52 \
-gencode arch=compute_60,code=sm_60 \
-gencode arch=compute_61,code=sm_61 \
-gencode arch=compute_61,code=compute_61
# 开启PYTHON支持
WITH_PYTHON_LAYER := 1
# INCLUDE_DIRS路径上,追加/usr/include/hdf5/serial,因为hdf5这个包在ubuntu16.04换成hdf5/seiral这种用法了
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
再修改Makefile
找到LIBRARIES
变量,把hdf5
的两个库名换掉,把hdf5_hl
换成hdf_serial_hl
,把hdf5
换成hdf5_serial
,整句如下:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
切换到caffe-fast-rcnn
目录下, 执行如下指令:
make -j8
make pycaffe
在终端中输入指令:python
,开启Python后,输入import caffe
,若没有报错则说明caffe编译安装成功。若报错:No module named caffe
,则可能需要添加环境变量。具体操作如下:
1. 在终端中输入:sudo gedit /etc/bash.bashrc
注意:不要写到/etc/profile
中!写到/etc/profile
里面重启终端后会失效
2. 在最后一行追加:export PYTHONPATH=/**你的目录**/py-faster-rcnn/caffe-fast-rcnn/python:$PYTHONPATH
3. 保存
4. 在终端中输入:source /etc/bash.bashrc
经过此步骤后,可以在本机的任何地方import caffe
了
1. 下载用VOC2007训练好的模型
切换到py-faster-rcnn
目录下,执行:
./data/scripts/fetch_faster_rcnn_models.sh
可以下载到一个名为faster_rcnn_models
的文件夹,里面存有VGG16_faster_rcnn_final.caffemodel
和ZF_faster_rcnn_final.caffemodel
两个模型文件。
使用sh脚本下载模型,需要链接dropbox,需要。这里提供一个百度云盘链接:
链接: https://pan.baidu.com/s/1eSKoVAi 密码: 59ga
下载后将压缩包解压到data
目录下。
2. 下载ImageNet的预训练模型
从ImageNet训练来的Caffe models (ZF, VGG16) pre-trained,执行如下指令
./data/scripts/fetch_imagenet_models.sh
3. 运行测试程序
切换到py-faster-rcnn
目录下,执行:
./tools/demo.py
如果要使用GPU可以运行:
./tools/demo.py --gpu 0
类似的问题出现多是因为Makefile中的路径声明出现问题,只需要在正确的位置添加路径,例如如下错误出现时:
AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so.1.0.0-rc3
/usr/bin/ld: cannot find -lboost_python3
collect2: error: ld returned 1 exit status
Makefile:563: recipe for target '.build_release/lib/libcaffe.so.1.0.0-rc3' failed
make: *** [.build_release/lib/libcaffe.so.1.0.0-rc3] Error 1
只需要修改Makefile.config
中的
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
改为
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
根据报错,使用sudo apt-get install
指令添加所需的依赖项即可。例如:
LD -o .build_release/lib/libcaffe.so
/usr/bin/ld: cannot find -lcblas
/usr/bin/ld: cannot find -latlas
collect2: error: ld returned 1 exit status
Makefile:493: recipe for target '.build_release/lib/libcaffe.so' failed
只需执行如下指令:
sudo apt-get install libatlas-base-dev