Ubuntu16.04从零开始安装配置caffe(GPU,nvidia-smi,cuda8,cudnn6,opencv3.3)

个人心得:本人配置caffe大约七八次,深度学习需要好电脑,由于换了一台新电脑,装完ubuntu16.04双系统必须要重新装caffe。现在网上的配置caffe教程大致是这样的:1,言简意赅,省略步骤,新手有些看不懂会搞错。2,有些教程步骤比较全,但是过于繁琐,而且有些出现很多错,虽然最后千辛万苦成功了既浪费了时间又不知所以然。

通过本次配置caffe的记录可以让我下次按照此教程配置的快点,如果网上的朋友有幸看到本教程那么你就有福了,教你如何零基础在全新的Ubuntu系统配置caffe,哈哈哈。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------开始:

一,依赖包的安装:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
udo 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

按照上面命令在终端复制粘贴运行,由于是一个全新的Ubuntu系统,出现了如下错误:

解决方法如下:

sudo apt-get update

再次安装依赖项:

确保每一个都安装成功。。。。

二,安装NVIDIA驱动

1,下载驱动

两种方式:官网下载:https://www.nvidia.com/Download/index.aspx?lang=en-us

百度云:链接:https://pan.baidu.com/s/1kCyazTjZePv2W3LoRGiv2g 
提取码:724a

下载后的驱动文件为:NVIDIA-Linux-x86_64-387.34.run

2,禁用nouveau

需要禁用 nouveau,只有在禁用掉 nouveau 后才能顺利安装 NVIDIA 显卡驱动,禁用方法就是在 /etc/modprobe.d/blacklist-nouveau.conf 文件中添加一条禁用命令,首先需要打开该文件,需要在终端输入以下命令打开:

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

输入密码然后在文件 的最后一行输入:blacklist nouveau  ,目的是把ubuntu自带的驱动加入黑名单,安装nvidia驱动

接下来在终端输入:

sudo update-initramfs -u 

重启电脑!

3,安装nvidia驱动

注意了哈,安装显卡驱动要先切换到文字界面,所以,启动电脑后,会发现电脑分辨率变大,妈呀吓一跳,不要怕,(按Ctrl+Alt+F1~F6)进入文字界面,一阵操作安装好驱动在开机没事了,下面是操作,哈哈

输入用户名和密码登录,再输入: sudo service lightdm stop 

现在可以安装驱动了,先进入家目录 cd ~ ,然后: sudo ./NVIDIA-Linux-x86_64-387.34.run,按照提示一步步来~ 

 

 这个选NO,注意了哈。。。。

完成之后,再次重启电脑!

打开终端输入nvidia-smi,出现一个界面就是成功了 。。。。。

三,安装cuda8.0

依然是两种方式:官网下载(https://developer.nvidia.com/cuda-downloads和我的百度云(上面写了),但是不建议用我上面百度网盘里面的cuda8.0,安装之后会出现错误,下面看一下我的误区你就理解了:

首先先记住自己的cuda文件名字。如下:

进入文字界面,按Ctrl+Alt+F1~F6,输入:sudo service lightdm stop

安装要与名字匹配,现在知道为啥要记住了吧,sudo sh cuda_8.0.61_375.26_linux.run,输入出现如下错误:

这是因为我在百度云下载的文件复制的过程损坏了,所以索性重新下是最好的,但是现在进官网只出现最新的版本10,我要8咋办,哈哈哈,进入这个链接,是他所有的历史发行版本,都有:https://developer.nvidia.com/cuda-toolkit-archive

再按照上面步骤进行:就是不停的点enter,accept,yes....,如下:

注意这个是no!!!!!!!!!!!!!!!!!!!!!!,不要更新

成功之后输入:sudo service lightdm start,进入图形界面

设置环境变量:

sudo gedit ~/.bashrc

在文件的最后加入:

export PATH=/usr/local/cuda-8.0/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

 

使环境变量生效:

source ~/.bashrc

验证cuda8.0是否安装成功:

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery

sudo make

./deviceQuery

 如果你还不放心,还可以通过查看cuda版本来检验是否安装成功: nvcc -V

四,cudnn

还是两种方式:官网注册安装:https://developer.nvidia.com/rdp/cudnn-download

百度云,链接:https://pan.baidu.com/s/1kCyazTjZePv2W3LoRGiv2g 
提取码:724a

建议百度云,注册很麻烦的,我i里面有适合cuda8.0的两个版本:cudnn5和cudnn6,这里我安装的cudnn6,都能用,放心

解压到/home,会出现一个cuda的文件夹,该文件夹下include 和 lib64 两个文件夹,命令行进入 cudn/include 路径下,然后进行以下操作:

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

然后命令行进入 cudn/lib64 路径下,运行以下命令: 

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

 检查cudnn版本验证是否成功

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

五,安装opencv3.3

两种方式:官网下载源码:http://opencv.org/releases.html

 

或者我的百度云,都可以,哈哈

接下来就是编译和安装opencv3,3,解压压缩包,然后如下
 

mkdir build # 创建编译的文件目录

cd build

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

这里如果没有cmake,可以按照提示安装cmake,然后继续进行:

make -j8  #编译

漫长的等待。。。。。。。。。。。。。。。。 

 

 编译成功之后安装!!!!!

sudo make install #安装

漫长的等待。。。。。。。。。。。。。。。。

 

安装后查看是否成功:

pkg-config --modversion opencv  

出现3.3.0就没问题了。

六,配置caffe

1,首先在你要安装的路径下 clone :

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

进入 caffe ,将 Makefile.config.example 文件复制一份并更名为 Makefile.config ,也可以在 caffe 目录下直接调用以下命令完成复制操作 

sudo cp Makefile.config.example Makefile.config

复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe。然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:

sudo gedit Makefile.config

2,先修改Makefile.config 文件内容 

将
#USE_CUDNN := 1
修改成: 
USE_CUDNN := 1
将
#OPENCV_VERSION := 3 
修改为: 
OPENCV_VERSION := 3
将
#WITH_PYTHON_LAYER := 1 
修改为 
WITH_PYTHON_LAYER := 1
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      

3,修改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

4,修改 /usr/local/cuda/include/host_config.h 文件 : 

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

但是这个文件是有权限的,集体怎么改如下:

 

 5,编译,在caffe目录下:

make all -j8

 6,测试

sudo make runtest -j8

 

 7,设置环境变量

sudo gedit ~/.bashrc

最后一行添加:
export PYTHONPATH=/home/caffe/python:$PYTHONPATH


source ~/.bashrc

8.检查caffe,出现下面错误

 

这是因为没有编译pycaffe,我是参考这边算是很好的博客解决的:https://blog.csdn.net/yhaolpz/article/details/71375762?utm_source=blogxgwz1

接下来又出现问题,主要是python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 没有那个文件或目录:

 解决方法:

sudo apt-get install python-numpy

 

再次make pycaffe成功:

再次检查导入caffe,还有错

ImportError: No module named skimage.io:

 解决方案:

pip install -U scikit-image #若没有安装pip: sudo apt install python-pip

 

 

参考这篇博客可解决:

https://blog.csdn.net/a781751136/article/details/80231406

 

再次检查caffey又出错:

参考这个博客可解决: 

https://blog.csdn.net/dgyuanshaofeng/article/details/78151510

 

 

成功!!!!!!!!!!!!!!!!!!!!!

enjoy your time!!!!!! 

猜你喜欢

转载自blog.csdn.net/qq_38522972/article/details/83504641