前言
经过大概两个星期的配置,终于将faster-rcnn安装好了,期间重装了大概十次系统,查阅了无数多文献博客,遇到了无数多坑。本人写这篇文章就是希望读者能通过我写的文章能够避免那些无谓的弯路,顺利的配置好环境。
参考资料:
Windows 7下硬盘安装Ubuntu 14.10图文教程
Ubuntu16.04+cuda8.0rc+opencv3.1.0+caffe+Theano+torch7搭建教程
Ubuntu16.04+CUDA8.0+caffe配置
Cuda安装详细步骤
Ubuntu Installation
Installation Guide for Linux
Faster R-CNN (Python implementation)
Ubuntu16.04
先下好Ubuntu16.04 LTS, EasyBCD。在这里EasyBCD是用来安装ubuntu和装好之后设置引导项的。具体步骤看
注意事项
1.我给Ubuntu腾出80G的空间,如何分配请看下面
2.记得在安装系统之前在终端上输入
$ sudo umount -l /isodevice
3.
在编辑menu.lst时,将
title Install Ubuntu
root (hd0,0)
kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-14.10-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8
initrd (hd0,0)/initrd.lz
改为
title Install Ubuntu
root (hd0,0)
kernel (hd0,0)/vmlinuz.efi boot=casper iso-scan/filename=/ubuntu-14.10-desktop-i386.iso ro quiet splash locale=zh_CN.UTF-8
initrd (hd0,0)/initrd.lz
这里ubuntu-14.10-desktop-i386.iso为原文下载的Ubuntu镜像名字,这里需要改成读者自己的。
4.
在设置分区时,要分出4个分区,分别设:
(如何划分分区? 点“空闲”->”左下角的+”)
大小 51200MB
主分区
用于EXT4日志文件系统
挂载点 /
大小 2048MB
逻辑分区
用于交换空间
大小 200MB
逻辑分区
用于EXT4日志文件系统
挂载点 /boot
大小 剩余空间
逻辑分区
用于EXT4日志文件系统
挂载点 /home
5.一定要记得将安装引导启动器设置为 /boot所在分区,如果读者想以windows启动项启动的话。
CUDA8.0
根据Caffe官网说明,我们需要分别安装CUDA的.run文件和手动安装显卡驱动
安装显卡驱动
首先,通过快捷键Ctrl+Alt+T打开终端,然后加入官方ppa源:
$ sudo add-apt-repository ppa:graphics-drivers/ppa
$ sudo apt-get update
点击Ubuntu右上角的设置图标->系统设置->软件和更新->附加驱动, 这时系统会自动匹配出读者独显型号的最新驱动版本,点击最新的驱动版本(即数字最大的那个,比如nvidia-340与nvidia-378就选nvidia-378) ->应用更改
重启后输入
$ nvidia-settings
查看显卡驱动版本是否与所安装驱动相符
安装CUDA8.0
在官网上下载CUDA8.0 .run文件,先进行md5校验,看md5码与Installer Checksums里的是否一致
关闭集显:
$ sudo gedit /etc/modprobe.d/blacklist.conf
在blacklist文件最后加上
blacklist nouveau
重启,验证集显是否已经禁用了
$ lsmod | grep nouveau
如果没有输出则说明禁用成功
同时按:CTRL+ALT+F1,退出图形界面。一开始会叫你输入你的用户名和密码。输入完毕后,关闭桌面服务:
$ sudo service lightdm stop
进入到你下载的cuda .run文件所在位置(注意,所在位置一定要在linux系统下的盘符,不要将.run文件放到windows下的c盘,d盘类似这样去运行),输入
$ sudo sh cuda_8.0.44_linux.run
跟着操作就行,注意当询问是否安装显卡驱动时,一定要选no
安装完成后,输入
$ sudo service lightdm start
启动图形界面
重启,检查路径~/dev下 有无存在名为nvidia*(以nvidia开头)的多个文件(device files)
如果没有的话,可以参考官方文档里的指导步骤,进行添加。
添加过程:
a)在home下创建一个文档,命名位modprobe,不要后缀,文档的内容如下:
#!/bin/bash
/sbin/modprobe nvidia
if [ "$?" -eq 0 ]; then
# Count the number of NVIDIA controllers found.
NVDEVS=`lspci | grep -i NVIDIA`
N3D=`echo "$NVDEVS" | grep "3D controller" | wc -l`
NVGA=`echo "$NVDEVS" | grep "VGA compatible controller" | wc -l`
N=`expr $N3D + $NVGA - 1`
for i in `seq 0 $N`; do
mknod -m 666 /dev/nvidia$i c 195 $i
done
mknod -m 666 /dev/nvidiactl c 195 255
else
exit 1
fi
/sbin/modprobe nvidia-uvm
if [ "$?" -eq 0 ]; then
# Find out the major device number used by the nvidia-uvm driver
D=`grep nvidia-uvm /proc/devices | awk '{print $1}'`
mknod -m 666 /dev/nvidia-uvm c $D 0
else
exit 1
fi
b)将该文件复制到/etc/init.d目录下,然后更改文件权限
$ sudo chmod 755 /etc/init.d/modprobe
d)执行如下命令将脚本放到启动脚本中去。
$ cd /etc/init.d
$ sudo update-rc.d modprobe defaults 95
e)关机然后重新启动,去~/dev下面查看,不出意外此时应该有nvidia*系类文件了。
设置环境变量
注意,在本人查找的博客中该博主没有成功生成的,但是没有影响后续操作,大家根据具体情况自行分析。
设置环境变量
$ sudo gedit /etc/profile
在打开的文件末尾,添加以下两行:
export PATH=/usr/local/cuda-8.0/bin/:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/:$LD_LIBRARY_PATH
重启电脑,检查上述的环境变量是否设置成功
$ env
在输出的环境变量中检查有无上述 设置的变量,如果有则代表设置成功。
–
检查 NVIDIA Driver是否安装成功
$ cat /proc/driver/nvidia/version
会输出NVIDIA Driver的版本号
–
检查 CUDA Toolkit是否安装成功
$ nvcc –V
会输出CUDA的版本信息
编译CUDA Sample
编译CUDA Sample
$ cd ~/NVIDIA_CUDA-8.0_Samples
$ make
**注意:这里的make操作是将Samples文件夹下所有的demo都编译了一遍,所以比较耗时,如果仅仅想测试某个例子,可以进入相应的文件夹去编译即可。
如果出现错误的话,则会立即报错停止,否则会开始进入编译阶段。**
成功后,NVIDIA_CUDA-8.0_Samples文件夹下会出现一个bin文件夹。运行编译生成的二进制文件。
编译后的二进制文件 默认存放在~/NVIDIA_CUDA-8.0_Samples/bin中。
$ cd ~/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release
$ ./deviceQuery
看到类似图片中的显示,则代表CUDA安装且配置成功
OpenCV3.1
首先安装必要的库
$ sudo apt-get -y remove ffmpeg x264 libx264-dev
$ sudo apt-get -y install libopencv-dev build-essential checkinstall cmake pkg-config yasm libtiff4-dev libjpeg-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev x264 v4l-utils ffmpeg libgtk2.0-dev
根据官网上的链接下载OpenCV3.1.0版本,并进行解压,解压之后进入安装文件目录。建立要编译的build目录,然后进入build目录进行编译:
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
在configure过程中过程中,可能会出现下面的错误:ICV: Downloading ippicv_linux_20151201.tgz…
在直接下载该文件的过程中,会因为超时而失败,可以下载ippicv_linux_20151201.tgz, 并替换掉 opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件,然后再次cmake即可。
生成编译文件之后,在opencv-3.1.0/build目录下,终端输入:
$ make -j2
$ sudo make install
安装好以后配置环境变量,使其生效:
$ sudo sh -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
$ sudo ldconfig
特别注意:这里所有的编译都用Ubuntu自带编译器GCC和G++版本编译,不要进行降级,就不会导致后面编译caffe出现找不到依赖库的错误。等待安装完成
编译opencv3.1.0时可能会出现trying to build v3.1 opencv with cuda support. standard cmake. project of: opencv_cudalegacy not compile – nppiGraphcut missing的报错,这是因为OpenCV3.1现在还不支持CUDA8.0而造成的,我们需要手动修改相关文件,解决方法如下:
cd ~/opencv-3.1.0/modules/cudalegacy/src
sudo gedit ./graphcuts.cpp
将
#include "precomp.hpp"
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#include "precomp.hpp"
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
安装成功后,输入
$ pkg-config --modversion opencv
查看OpenCV版本,若有输出,即为安装成功
python
python的安装有两种方式:一种是系统自带的python,只需再安装相应的库即可;第二种是直接安装anaconda,很多相应的库已经包含了。这里,我们使用第一种安装方法
安装pip,tornado和pyzmq
$ sudo apt-get install python-pip
$ sudo pip install tornado pyzmq pygments
$ sudo apt-get install libzmq-dev
再安装一些依赖库
$ sudo apt-get install python-numpy python-scipy python-matplotlib python-qt4 qt4-designer pyqt4-dev-tools python-qt4-doc spyder cython swig python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags ipython protobuf-c-compiler protobuf-compiler
安装完成后,输入
$ ipython
如有相关信息出现,即为安装成功
Caffe
安装Caffe
首先安装依赖库
$ sudo apt-get update
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
$ sudo apt-get install --no-install-recommends libboost-all-dev
$ sudo apt-get install build-essential cmake git pkg-config libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libgflags-dev libgoogle-glog-dev liblmdb-dev python-dev
$ sudo apt-get install --no-install-recommends libboost-all-dev
$ sudo apt-get install libatlas-base-dev
从github上clone Caffe
$ git clone https://github.com/BVLC/caffe.git
修改配置文件,进入到caffe的根目录,执行:
$ cp Makefile.config.example Makefile.config
打开makefile.config对其进行修改,makefile.config修改内容内容如下(未配置cudnn加速):
注释第5行的 USE_CUDNN := 1
去掉注释第21行的 OPENCV_VERSION := 3
去掉注释 WITH_PYTHON_LAYER := 1
在 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include 后面添加 /usr/include /usr/include/hdf5/serial
在 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 后面添加 /usr/lib/x86_64-linux-gnu/hdf5/serial
实现caffe对Python和Matlab接口的支持 PYTHON_LIB := /usr/local/lib
cuda8.0编译器问题,打开/usr/local/cuda/include/host_config.h ,将:
error -- unsupported GNU version! gcc versions later than 5.3 are not supported!
改为
//#error -- unsupported GNU version! gcc versions later than 5.3 are not supported!
编译
$ make all -j2
$ make test -j2
$ make runtest -j2
$ make pycaffe -j2
自此,Caffe配置完成
MNIST数据集测试
配置caffe完成后,用MNIST数据集对caffe进行测试
1.将终端定位到Caffe根目录
cd ~/caffe
2.下载MNIST数据库并解压缩
./data/mnist/get_mnist.sh
3.将其转换成Lmdb数据库格式
./examples/mnist/create_mnist.sh
4.训练网络
./examples/mnist/train_lenet.sh
训练的时候可以看到损失与精度数值,如图
faster-rcnn
Clone faster-rcnn
$ git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
编译Cython模型
$ cd py-faster-rcnn/lib
$ make
编译Caffe和pycaffe
$ cd py-faster-rcnn/caffe-fast-rcnn
$ make -j8 && make pycaffe
下载faster-rcnn识别模型
cd py-faster-rcnn
./data/scripts/fetch_faster_rcnn_models.sh
测试Demo
cd py-faster-rcnn
./tools/demo.py
如果出现
Loaded network
/home/tezerc/py-faster-rcnn/data/faster_rcnn_models/VGG16_faster_rcnn_final.caffemodel
F0225 17:53:01.675832 21673 syncedmem.cpp:56] Check failed: error ==
cudaSuccess (2 vs. 0) out of memory
* Check failure stack trace: *
则更换训练网络
cd py-faster-rcnn
./tools/demo.py --net zf
若有图片出现,则faster-rcnn安装成功!自此,整个环境配置完毕。
后记
由于配置环境途中出现的问题实在太多,有一部分忘记是什么困难了。如果读者在配置过程中遇到某些没在上面提到的问题和困难,欢迎留言。本人会不定期更新