首先说明,该篇博客是在ubuntu16.04+nvidia gt740m+cuda7.5+caffe安装、测试经历这篇博客基础上进行faster r-cnn安装的,使用GPU进行测试;且需要安装以下内容,前篇博客已经介绍清楚,这里不再赘述。
nvidia gt740m驱动版本为361.42
cuda版本为cuda_7.5.18_linux.run
cudnn版本为cudnn-7.5-linux-x64-v5.1.tgz
打个广告:目前博主正在字节跳动奋斗,欢迎各位一起来共事
【内推码】:HVWUV6Y
【投递地址】:https://job.bytedance.com/
废话不多说,上车吧,少年
一、拉取源码
- 终端输入
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
拉取完成后,在/home/pawn/目录下增加了py-faster-rcnn文件夹【pawn是我的ubuntu用户名】
二、安装依赖
- 终端输入
sudo apt-get install python-opencv
sudo pip install cython easydict
三、修改Makefile文件
-
终端输入
cd /home/pawn/py-faster-rcnn/caffe-fast-rcnn/
cp Makefile.config.example Makefile.config
#备份Makefile
gedit Makefile.config
-
使用python层
将# WITH_PYTHON_LAYER := 1
修改为WITH_PYTHON_LAYER := 1
-
使用cudnn加速
将# USE_CUDNN := 1
修改为USE_CUDNN := 1
-
保留
# CPU_ONLY := 1
不变,使用GPU运行faster r-cnn
四、编译Cython模块
- 终端输入
cd ~/py-faster-rcnn/lib/
make
五、编译caffe
- 终端输入
cd ~/py-faster-rcnn/caffe-fast-rcnn/
make -j4
出现图示错误
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CL58m0S6-1592371390857)(https://img-blog.csdn.net/20161007210002489)]
这是由于当前版本的caffe中cudnn实现与系统所安装的cudnn的版本不一致引起,rbgirshick的py-faster-rcnn其cudnn实现为旧版本的实现,所有出现了以上问题。
cudnn-7.0-linux-x64-v4.0-prod.tgz不会出现此问题
cudnn-7.5-linux-x64-v5.1.tgz会出现同样问题
cudnn-8.0-linux-x64-v5.1.tgz会出现同样问题
解决办法:
①将/home/pawn/py-faster-rcnn/caffe-fast-rcnn/include/caffe/util/cudnn.hpp 换成最新版caffe里的相应目录下的cudnn.hpp;
②将/home/pawn/py-faster-rcnn/caffe-fast-rcnn/include/caffe/layers/下所有cudnn开头的文件都替换为最新版caffe里相应目录下的同名文件;
③将/home/pawn/py-faster-rcnn/caffe-fast-rcnn/src/caffe/layer下所有cudnn开头的文件都替换为最新版caffe里相应目录下的同名文件;
- 终端输入
make clean
#清除前一次编译结果
make -j4
出现图示错误
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N6pSVGBa-1592371390859)(https://img-blog.csdn.net/20161007211454950)]
出现找不到hdf5.h错误;
解决办法:终端输入
cd /home/pawn/py-faster-rcnn/caffe-fast-rcnn/
gedit Makefile.config
在INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
后面打上一个空格,然后添加/usr/include/hdf5/serial
,如果没有这一句可能会报一个找不到hdf5.h的错误;
- 终端输入
cd ~/py-faster-rcnn/caffe-fast-rcnn/
make clean
#清除前一次编译结果
make -j4
出现图示错误
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LBo4P0lR-1592371390861)(https://img-blog.csdn.net/20161007212409132)]
这是由于gcc编译器版本太新引起;
解决办法:终端输入
cd /home/pawn/py-faster-rcnn/caffe-fast-rcnn/
gedit Makefile
CTRL+F输入NVCCFLAGS += -c
回车,定位到该行
修改
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
为
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
保存后关闭Makefile.config;
- 终端输入
cd ~/py-faster-rcnn/caffe-fast-rcnn/
make clean
#清除前一次编译结果
make -j4
成功编译caffe;
六、编译pycaffe
- 终端输入
cd ~/py-faster-rcnn/caffe-fast-rcnn/
make pycaffe
七、下载模型
- 终端输入
cd ~/py-faster-rcnn/
./data/scripts/fetch_faster_rcnn_models.sh
等待将近一小时…
八、faster r-cnn测试
- 终端输入
cd ~/py-faster-rcnn/
./tools/demo.py
出现图示错误
未安装python-tk包引起;
解决办法:终端输入
sudo apt-get install python-tk
- 终端输入
cd ~/py-faster-rcnn/
./tools/demo.py
出现图示错误
运行结果显示显存不足,这是由于demo.py中默认使用较大的VGG16网络,而我的gt740m显卡只有2G,只能采用ZF网络实现demo,现有两种解决方法:
①终端输入
cd ~/py-faster-rcnn/tools/
gedit demo.py
CTRL+F输入default='vgg16'
回车,定位到该行
将default='vgg16'
修改为default='zf'
#默认使用ZF网络
终端输入
cd ~/py-faster-rcnn/
./tools/demo.py
运行demo;
② 终端输入
cd ~/py-faster-rcnn/
./tools/demo.py --net zf
#运行时给参数选择ZF网络
运行demo;
- demo结果一共有11张检测结果图,首尾分别是: