Ubuntu16.04+GT720M + Cuda8.0+py-faster-rcnn(caffe)
Ubuntu16.04 + GT 720M + Cuda8.0+ Py-faster-rcnn(caffe)
Cuda8.0 安装
cuda 的安装相对而言非常简便。具体来说,有两种主要的安装途径:一种是通过.deb文件进行安装;另一种则是利用.run 文件完成安装过程。通常情况下,推荐选择.deb文件作为安装介质,并且其操作更为便捷。
1. 下载安装 cuda8.0
下载
可通过官方网站获取:cuda 安装包下载 https://developer.nvidia.com/cuda-download
为了方便国内用户 download, 我会使用 Google Drive 分享 deb 文件, 但由于国内某些地区可能会无法正常 download, 建议直接访问官网获取: cuda8.0 deb 文件网络安装版 https://drive.google.com/open?id=0B_ujX9f31tyYM2ozVkJOTEZ6VkU
此方案的 CUDA 8.0(适用于所有 CUDA 版本)相对简单, 仅需三行命令即可解决问题:
使用dpkg命令安装指定软件包:
$ sudo dpkg -i cuda-repo-ubuntu1604_8.0.44-1_amd64.deb
更新系统缓存:
$ sudo apt-get update
安装CUDA库:
$ sudo apt-get install CUDA
]
【
安装cudnn库是一个可选步骤。实际上它是专为加速深度神经网络而设计的一组高性能库软件包。然而,在使用时需要考虑其显卡兼容性问题。具体来说,该库需要在至少3.0版本的支持下才能正常运行。因此,在这种情况下GT 720M显然无法满足这一最低硬件配置要求。如果需要进一步了解显卡性能,请访问以下链接:NVIDIA GPU 列表。
建议您参考NVIDIA GPU分类列表及其对应的计算能力匹配情况熟悉各类别 GPU性能参数, 以判断您的设备是否具备cudnn支持功能
安装CUDA的过程与CUDNN之间并不存在直接关联性。在此提及的是,在后续构建caffe的过程中需要用到
cudnn 下载
从官方网站获取:官方提供的cudnn下载地址
使用unzip命令展开包含在/cudnn-7.5-linux-x64-v5.1.tgz文件包中的内容到当前目录
进入cuda目录
在root目录下执行以下命令将头文件复制到/usr/local/include/
在root目录下执行以下命令将共享库复制到/usr/local/lib/
3. 重启电脑后,请检查CUDA是否成功安装
要检查CUDA是否正确安装其实非常容易。你可以通过运行nvidia-smi命令来完成这一操作。当输入nvidia-smi时,在屏幕上会显示相关信息界面(界面),这表明CUDA已经成功安装并配置好了。不过,请务必记住,在检查CUDA是否正确安装之前必须先重启电脑设备。
nvidia-smi

卸载cuda 并重新安装
当安装出现失败情况时,请确认是否已卸载旧版本并升级至最新版本?为了完成升级操作,请务必清除所有与CUDA相关的文件,并使用以下命令进行清理:
sudo apt-get remove –purge nvidia-*
再重新安装cuda。
Py-Faster-RCNN(Caffe)的安装
py-faster-rcnn的安装所需要做的工作其实主要是关于caffe的编译。
step 1. 安装常用的dependencies
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libhdf5-dev
sudo apt-get install –no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install python-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
step 2. 安装 Cython, easydict, opencv
这三个库一定要记得安装,否则会报错
安装C扩展库cython。
安装Python字典库easydict。
使用apt-get安装OpenCV库。
step 3. 编译 Caffe for py-faster-rcnn
PS: 单独编译caffen 和在py-faster-rcnn文件夹中编译caffen大致相同, 因此在这里的编译同样可以实现独自完成caffen的构建.
推荐两个工具包:一个是基于Python实现的py-faster-rcnn开源项目rbgirshick,另一个是用于计算机视觉框架的Caffecaffe
从github上面clone整个目录:
git clone —recursive https://github.com/rbgirshick/py-faster-rcnn.git
注释:—recursive 用于 caffe-fast-rcnn(即 caffe branch),必须包含该内容;否则文件夹将为空。
step 4. 安装Python所需要的dependencies
cd py-faster-rcnn/caffe-fast-rcnn/python
在终端(Termianl)执行下面的命令:
foreach i in cat requirements.txt; do sudo pip install "$i"; done
PS: 运行此命令时,请务必切记不要省略sudo指令
在 /py-faster-rcnn/lib directory 目录下执行make, 会出现如下结果:

step 5. Compile caffe in caffe-fast-rcnn folder
cp Makefile.config.example Makefile.config
vim Makefile.config
取消设置变量 WITH_PYTHON_LAYER 的值为1。
取消设置变量 USE_CUDNN 的值为1。
如果计算机具备支持CUDNN的能力,则会进行设置;但我的电脑不具备该能力,在此处未做取消处理。
请在Makefile.config中加入以下代码块:
否则,在编译过程中可能会抛出错误。
值得注意的是,在Ubuntu 14.04 LTS环境中并未出现此问题。
然而,在 Ubuntu 16.04 上出现了该问题。
事实上,在不添加这两行代码的情况下程序将无法正常运行,
因为缺少hdf5.h文件导致程序无法启动,
此外还会出现其他相关错误,
因此建议必须执行上述步骤以解决问题
INCLUDE_DIRS := (PYTHON_INCLUDE) 位于/usr/local目录下的include文件夹 以及/usr目录下的include文件夹中的hdf5库中的serial头文件位置 LIBRARY_DIRS := (PYTHON_LIB) 位于/usr/local目录下的lib文件夹 和/usr目录下的lib文件夹 中的x86_64-linux-gnu版本hdf5库头文件位置
然后在py-faster-rcnn/caffe-fast-rcnn/:目录下编译caffe:
make all -j4 或者 make all -j8(取决于你的处理器核心数量)建议采用-j4或-j8以优化编译性能。
执行测试:$ make test
运行测试:$make runtest
PS: 当进行make测试操作时可能会遇到与test_smooth_L1_loss_layer.cpp$相关的错误问题。通过将此文件重新命名为test_smooth_L1_loss_layer.cpp.orig$可以有效地解决问题。
mv test_smooth_L1_loss_layer.cpp test_smooth_L1_loss_layer.cpp.orig
step 6. Make pycaffe
在位于py-faster-rcnn/caffe-fast-rcnn/文件夹内的环境中运行命令make pycaffe
若无错误提示,则会输出相应的结果信息
make : Nothing to be done for ‘pycaffe’
说明make pycaffe 成功
到此,所有的准备工作已经昨晚,现在下载model并测试。
测试
Step1. 下载model
在py-faster-rcnn/data/scripts/目录下执行下面命令得到所需要的model。
bash fetch_faster_rcnn_models.sh
bash fetch_imagenet_models.sh
Step 2. 测试
在py-faster-rcnn/tools/ 目录下执行:
python demo.py —net zf
得到测试结果如下:


到此,测试结束!
安装的过程可能会遇到一系列问题,在安装过程中需要注意的关键点已经列示在文章中,并且建议操作人员严格按照指导步骤进行操作以确保安全与效率
问题总结:
如果在编译过程中遇到关于hdf5.h的问题时,请首先检视一下你是否在Makefile.config中对以下两行进行了修改(其中用红色标注的是那些需要添加的内容):
INCLUDE_DIRS := (PYTHON_INCLUDE) 带有 /usr/local 和 /usr 的 include 路径 /hdf5/serial LIBRARY_DIRS := (PYTHON_LIB) 带有 /usr/local、/usr、/usr/lib/x86_64-linux-gnu 和 /usr/lib/x86_64-linux-gnu/hdf5/serial 的 library 路径
以上设置定义了项目的包含目录和库目录
问题2: caffe版本的问题
我在编译过程中遇到了以下错误提示:make: *** [.build_release/src/caffe/parallel.o] Error 1其中可能的原因是我误用了cudnn v5版本的软件库:目前该框架不支持对其集成。因此我们采取的具体措施包括将caffeman整合至caffe-fast-rcnn框架中。
设置当前目录为Caffe的Fast R-CNN分支。
执行以下命令以配置远程Git仓库:
配置远程仓库CAFFERepository至本地环境:
git remote add CAFFERepository https://github.com/BVLC/caffe.git
下载并获取CAFFERepository中的代码块:
git fetch CAFFERepository
将主版本控制台(master)合并至本地CAFFERepository:
git merge CAFFERepository/master
并且把下面这一行给删除掉:
self_.attr(“phase”) = static_cast(this->phase_);
在/caffe-fast-rcnn/include/caffe/layers/python_layer.hpp
第3题: OpenCV 3版本的用户,请您确认以下内容是否正确配置: 在编译前,请您确认以下内容是否正确配置: 在编译前,请您确认以下内容是否正确配置: 在编译前,请您确认以下内容是否正确配置: 在编译前,请您确认以下内容是否正确配置:
Uncomment if you’re using OpenCV 3
OPENCV_VERSION := 3
把第二行给注释掉(去掉#号)。
问题4: 当运行make test$时涉及该文件的错误,请通过以下命令修复该问题:mv test_smooth_L1_loss_layer.cpp test_smooth_L1_loss_layer.cpp originate.
第5题:在运行make runtest时遇到了一个错误信息:"locale::facet::_S_create_c_locale name not valid"。 通过以下命令进行处理:设置环境变量LC_ALL,并执行命令export LC_ALL="en_US.UTF-8"
问题6: 执行demo.py文件时如遇到下面问题:
F1125 06:19:12.150683 8945 roi_pooling_layer.cu:91] 检查失败:error变量等于成功值(8与0),表明存在无效设备函数。
Stack trace for check failure:
Aborted with a core dump
修改../lib/fast_rcnn/config.py第205行,把__C.USE_GPU_NMS = True改成__C.USE_GPU_NMS = False即可解决上面问题
在编译 caffe 的时候遇到了诸多问题,请参考以下常见问题汇总以获得帮助。如果您有任何疑问,请随时联系 lyushuen@gmail.com。
