Ubuntu16.04 安装cuda8.0+cudnn+anaconda2+opencv-3.1.0+caffe

事先说明一下,本人是个新手,这安装caffe这个难题上碰到了不少的坑,一路都是百度谷歌过来的,浪费了不少时间,谨以此记来帮助后来的人节省点时间。如果哪里有什么不周到的还请各位大神私信或留言指出,不胜感激。
在正式的开始介绍安装以上这整个流程之前,请先下载我们所需要的所有资源,我将我手头里的所有资源上传到了百度云,方便大家下载使用。链接:https://pan.baidu.com/s/1Jl0Nc7Iyx8fB7DJDC2lVgQ 密码:j6u1
下载好以后,请讲文件从下载文件夹下移动到home(根目录)下,方便查找与使用。也许有些文件暂时用不到,但如果你没那么幸运,这些多出来的文件也许可以帮到你。
这里写图片描述
一.安装英伟达显卡驱动

在安装显卡驱动之前,需要卸载之前安装的显卡驱动,如果你是刚安装的Ubuntu系统,就不用了。

首先我们先下载好我们需要的驱动文件,(我的并重命名为NVIDIA.run)并保存到根目录下,这样就省的再找了。

ctrl+alt+t

sudo apt-get remove --purge nvidia*

sudo gedit /etc/modprobe.d/blacklist.conf

在打开的文本编辑器的最下方加入下面两句

blacklist nouveau
options nouveau modeset=0

然后保存文件

ctrl+alt+t

sudo update-initramfs -u

重启

ctrl+alt+t

lsmod |grep nouveau

如果没有输出任何信息,就继续下一步

sudo service lightdm stop

此时会黑屏,不用担心,没事的,使用ctrl+alt+F1,输入用户名和密码(不要使用键盘的数字键盘输入数字,使用字母键盘上的数字键输入),验证通过后,

sudo chomd +x NVIDIA.run     这里的NVIDIA.run是驱动的文件名,

sudo bash NVIDIA.run -no-opengl-files   如果./命令不能安装,就使用bash命令

sudo service lightdm start

在安装的过程中,需要手动的设置一下,在问到是否以后更新驱动时,选择默认的”否“
重启,

Ctrl+Alt+F7

使用nvidia-smi或nvidia-settings查看是否安装成功和驱动版本
这里写图片描述
二.安装依赖包

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
sudo apt-get install git cmake build-essential

三.安装cuda8.0
cuda安装包的格式有多种,我们这里选择.run格式的,目的是为了防止安装其他格式的会自动升级显卡驱动到最新版本,带来不必要的麻烦。

sudo bash cuda_8.0.61_375.26_linux.run  --no-opengl-libs

接下来我们要长按enter键,当信息读到100%时,选择accpt,当问到是否要安装显卡驱动时,本人的强烈建议是:“否(no)”,其他的选项选择:“y”即可。

现在我们来配置环境变量

sudo gedit ~/.bashrc

在打开的文件的最下方输入以下内容

export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH 

然后使该配置文件生效

source ~/.bashrc

最后验证cuda是否安装成功

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

若提示出现以下内容则说明cuda安装成功
这里写图片描述
四.安装cudnn
cudnn的安装是在cuda之后的,步骤比较简单
首先我们来解压我们下载好的cudnn压缩文件,会得到一个名为cuda的文件夹,里面包含了两个分别名为include和lib64的文件夹。
然后进入cuda/include路径下,右击鼠标,选择打开终端,然后进行以下操作

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

然后进入cuda/lib64路径下,右击鼠标,选择打开终端,然后进行以下操作

sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5 #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接

最后使用nvcc -V命令验证cudnn是否安装成功。

这里写图片描述

五.安装anaconda2
安装anaconda是为了方便使用python。如果你下载的是3.0版本的anaconda那对应的就是python3.X,如果你下载的是2.0版本的anaconda那对应的就是python2.X。
使用以下命令安装anaconda

sudo bash Anaconda2-4.0.0-Linux-x86_64.sh #Anaconda2-4.0.0-Linux-x86_64.sh是文件名,根据你下载的版本为准

然后会有一系列的提示询问,一路选择“y”就可以了
为了使用anacond的python,我们还要进行一些配置

sudo gedit ~/.bashrc

在打开的文件的最下方加入以下内容

alias python='/home/xxx/anaconda2/bin/python'  #注意这里的单引号,是英文输入法下的。XXX是用户名

然后使配置文件生效。

source .bashrc

这里写图片描述
六.安装opencv-3.1.0
opencv的安装非常的缓慢,请大家耐心一点
首先解压我们下载好的opencv的压缩文件,然后进入opencv文件夹,在打开的页面的空余的地方右击鼠标,选择打开终端。
由于opecv3.1与cuda8.0不兼容,修改opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp 文件

cd opencv-3.1.0/modules/cudalegacy/src 
sudo gedit graphcuts.cpp

在打开文件中,将//#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)改为 #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION>=8000)
效果图如下
这里写图片描述

cd opencv-3.1.0
mkdir build #创建编译的文件目录
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. #最后的这两个点别漏了
make all  #编译
sudo make install #安装

安转完成后,验证是否安装成功

pkg-config --modversion opencv  

这里写图片描述

七.安装caffe
caffe的安装是建立在之前不步骤都完全没有问题的,还有就是上面的安装顺序,希望读者尽量不要打乱,依次安装。
首先还是解压我们下载好的caffe-master文件,并将其重命名为caffe。然后进入caffe文件夹,右击打开页面的空余部分,选择在终端打开

cd caffe
sudo cp Makefile.config.example Makefile.config

然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:

cd caffe
sudo gedit Makefile.config

修改内容如下:
(1)将#USE_CUDNN := 1修改成: USE_CUDNN := 1 (就是去掉前面的#)
(2)将#OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3
(3)将#WITH_PYTHON_LAYER := 1修改为 WITH_PYTHON_LAYER := 1
(4)这一项非常重要
将# 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

然后保存该文件
(5)修改Makefile文件
打开Makefile文件,做如下修改

将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

然后保存该文件
(6)修改编辑/usr/local/cuda/include/host_config.h

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

在打开的文件中,做以下修改

将#error-- unsupported GNU version! gcc versions later than 5 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 5 are not supported!

然后保存该文件,接下来开始编译

cd caffe
sudo make all
sudo make pycaffe
sudo make test
sudo make runtest

然后验证是否安装成功

ctrl+alt+t
python
import caffe

这里写图片描述
八.常见问题及解决方法
(1)import Error :no moudle named caffe

sudo gedit ~/.bashrc
export PYTHONPATH=/home/XXX/caffe/python:$PYTHONPATH  #XXX为用户名
source .bashrc

紧接着

cat /etc/ld.so.conf
出现:include ld.so.conf.d/*.conf
sudo su
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig

(2)import Error :no moudle named _caffe
cd caffe #进入caffe目录,可能你的是cd caffe-master

    sudo make clean #清除原编译

    sudo make all  

    sudo make pycaffe   #最关键的一个

    sudo make test

    sudo  make runtest   #测试编译

(3)makefile:532:recipe for target ‘runtest’ failed
这里写图片描述
这时候试试

make runtest #去掉之前的sudo 

(4)import Error :no moudle named cv2
这个问题网上的解决办法多种多样,有:pip install opencv-python 有: conda install opencv
有:sudo apt-get install opencv-python 等等,但是很遗憾的是都不能解决我的问题。
我的解决办法是:

locate CV2.so    #定位cv2.so 的位置

然后将该文件复制到我的python路径下
anaconda2/lib/python2.7/sit-packages/

sudo cp cv2.so anaconda2/lib/python2.7/sit-packages/

然后上述问题就解决了。
(5)libcudart.so.8.0: cannot open shared object file: No such file or directory

解决方案:

sudo ldconfig /usr/local/cuda/lib64

(6)ImportError:No moudle named google.protobuf.internal
这里写图片描述
解决方案:

sudo chmod 777 -R anaconda2
conda install protobuf

(7)python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 没有那个文件或目录
这里写图片描述
解决方案:

sudo apt-get install python-numpy

(8).build_release/tools/caffe: error while loading shared libraries: libcudart.so.8.0: cannot open shared object file: No such file or directory
这里写图片描述
解决方案:

cat /etc/ld.so.conf
出现:include ld.so.conf.d/*.conf
sudo su
echo "/usr/local/lib" >> /etc/ld.so.conf
ldconfig

猜你喜欢

转载自blog.csdn.net/swiftfake/article/details/79429539