Ubuntu16.04+cuda9.0+opencv3.4+caffe环境搭建

Posted on 2018-02-10 13:33  fan2312  阅读(3433)  评论(0编辑  收藏  举报


参考地址:Ubuntu16.04+CUDA8.0+caffe配置

一 安装Nvidia驱动

1.安装依赖项

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 libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

2.安装过程(略,在设置里安装驱动,版本390)


3.安装完成之后输入以下指令进行验证:

sudo nvidia-smi

若列出了GPU的信息列表则表示驱动安装成功。

二 安装Cuda
CUDA是NVIDIA的编程语言平台,想使用GPU就必须要使用cuda。
(1)下载CUDA
首先在官网上(https://developer.nvidia.com/cuda-downloads)下载CUDA:
(2)安装
同样,简化命名为cuda.run

sudo sh cuda.run

注意不要安装图形驱动,其他一路绿灯
(3)环境变量配置
打开~/.bashrc文件:

sudo gedit ~/.bashrc

将以下内容写入到~/.bashrc尾部:

export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

(4)测试CUDA的sammples

cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery #由自己电脑目录决定
sudo make
sudo ./deviceQuery

如果显示一些关于GPU的信息,则说明安装成功。


三 安装cudnn
cuDNN是GPU加速计算深层神经网络的库。
首先去官网(https://developer.nvidia.com/rdp/cudnn-download)下载cuDNN,可能需要注册一个账号才能下载。
下载CuDNN v7.X library for Linux
下载cuDNN之后进行解压,cd进入cuDNN解压之后的include目录,在命令行进行如下操作:

sudo cp cudnn.h /usr/local/cuda/include/    #复制头文件1

再将cd进入lib64目录下的动态文件进行复制和链接:

sudo cp lib* /usr/local/cuda/lib64/    #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7    #删除原有动态文件
sudo ln -s libcudnn.so.7.0.5 libcudnn.so.7  #生成软衔接(注意这里要和自己下载的cudnn版本对应,可以在/usr/local/cuda/lib64下查看自己libcudnn的版本)
sudo ln -s libcudnn.so.7 libcudnn.so      #生成软链接


四 安装opencv
从官网(https://opencv.org/releases.html)下载Opencv(Sources版),并将其解压到你要安装的位置,假设解压到了/home/opencv。
安装前准备,创建编译文件夹:

cd ~/opencv
mkdir build
cd build


配置:

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..


编译:

make -j8 #-j8表示并行计算,根据自己电脑的配置进行设置,配置比较低的电脑可以将数字改小或不使用,直接输make。

以上只是将opencv编译成功,还没将opencv安装,需要运行下面指令进行安装:

sudo make install


五 安装 caffe
(1)将终端cd到要安装caffe的位置。
(2)从github上获取caffe:

git clone https://github.com/BVLC/caffe.git

注意:若没有安装Git,需要先安装Git:

sudo apt-get install git

(3)因为make指令只能make Makefile.config文件,而Makefile.config.example是caffe给出的makefile例子,因此,首先将Makefile.config.example的内容复制到Makefile.config:

sudo cp Makefile.config.example Makefile.config

(4)打开并修改配置文件:

sudo gedit Makefile.config #打开Makefile.config文件

根据个人情况修改文件:
a.若使用cudnn,则将

#USE_CUDNN := 1
修改成:
USE_CUDNN := 1

b.若使用的opencv版本是3的,则将

#OPENCV_VERSION := 3
修改为:
OPENCV_VERSION := 3

c.若要使用python来编写layer,则将

#WITH_PYTHON_LAYER := 1
修改为
WITH_PYTHON_LAYER := 1

d. 重要的一项 :
将# Whatever else you find you need goes here.下面的

 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
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     

这是因为ubuntu16.04的文件包含位置发生了变化,尤其是需要用到的hdf5的位置,所以需要更改这一路径.
e.更重要的
注释掉这一行

#-gencode arch=compute_20,code=sm_20 

(5)修改makefile文件
打开makefile文件,做如下修改:
将:

NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

替换为:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

(6)修改host_config.h

sudo gedit /usr/local/cuda/include/crt/host_config.h 

#error-- unsupported GNU version! gcc versions later than 6 are not supported!

改为

//#error-- unsupported GNU version! gcc versions later than 6 are not supported!

(7)复制链接

sudo cp /opencv-3.4.0/build/lib/libopencv_core.so.3.4 /usr/local/lib/libopencv_core.so.3.4 && sudo ldconfig
make -j8

在caffe/python目录下

for req in $(cat requirements.txt); do pip install $req; done

然后

sudo apt-get install python-numpy
make py

最后

make test -j8
make runtest

测试绿图:

cifar-10测试: