Ubuntu16.04+Cuda9.1+Cudnn7.5+Anaconda3(Python3.6)+opencv3.4.1+caffe编译安装(多坑已排!)

 

我第一次装ubuntu16.04的时候由于是小白,分区的时候分的不合理,所以空间不够用了,索性重装了一次,装ubuntu16.04双系统这里不再赘述,可参考文章 https://blog.csdn.net/demonliuhui/article/details/77483523          注意不要挂载/boot,而是换成efi系统分区。

第一步:安装依赖包

这一步是为了接下来的操作而安装必要的工具

在终端中输入

sudo apt-get install git vim cmake build-essential linux-headers$(uname -r)

安装git  vim  cmake  最新内核以及当前内核的headers文件

如果有安装包下载失败,可以输入

sudo apt-get upgrade

然后再重新安装软件包

第二步:安装显卡驱动

1、卸载原有的NVIDIA 驱动(如果没装过NVIDIA驱动,则忽略这一步)

sudo apt remove --purge nvidia*

2、禁用ubuntu自带的nouveau显卡驱动,只有在禁用掉 nouveau 后才能顺利安装 NVIDIA 显卡驱动   

禁用nouveau驱动
终端中运行:    lsmod | grep nouveau

如果有输出,则代表nouveau正在运行, 需要我们手动禁掉nouveau。

在Ubuntu16.04中,我们可以通过以下操作禁用nouveau:

a.在/etc/modprobe.d中创建文件blacklist-nouveau.conf

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

在文件中输入以下内容:
blacklist nouveau
options nouveau modeset=0

b.执行

$ sudo update-initramfs -u

c.查看nouveau是否已经成功禁用

$ lsmod | grep nouveau

若无内容输出,则禁用成功,若仍有内容输出,请重启系统,再检查。

          

3、安装最新NVIDIA驱动

从官网下载最新的显卡驱动,需要注意的是,Cuda9.1至少需要390版本以上的驱动,此处下载runfile类型并放到/home文件夹下,便于安装

sudo service lightdm stop

关闭图形界面,并ctrl+alt+F1进入命令行模式,登陆后输入

sudo chmod a+x NVIDIA-linux-x86_64-390.48.run

给run文件赋予执行权限,注意这里要对应自己的驱动版本号,然后输入

sudo ./NVIDIA-linux-x86_64-390.48.run -no-x-check -no-nouveau-check -no-opengl-files
sudo reboot

-no-x-check 安装驱动时关闭X服务    -no-nouveau-check 安装驱动时禁用nouveau  -no-opengl-files 不安装OpenGl文件(这句一定要加上,不然会出现循环登陆的问题)

安装过程中有几个警告,无视掉,一路安装就行。重启后再命令行输入nvidia-smi就能看见安装驱动的详细信息

第三步:安装 CUDA 9.1

下载cuda9.1的runfile文件,关闭图形界面并进入命令行界面

sudo sh cuda_9.1.85_387.26_linux.run

单击回车,直到提示“是否为NVIDIA安装驱动?”
选择否,因为已经安装好驱动程序,其他都是默认。

最后你会看到cuda驱动、sample、tookit已经安装成功,但是缺少一些库。

添加这些库

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

重新启动图形化界面

$ sudo service lightdm start

同时按住Alt + ctrl +F7,返回到图形化登录界面,输入密码登录。
如果能够成功登录,则表示不会遇到循环登录的问题,基本说明CUDA的安装成功了
重启电脑,检查Device Node Verification

 
  1. $ sudo reboot

  2. $ ls /dev/nvidia*


a、若结果显示

/dev/nvidia0    /dev/nvidiactl    /dev/nvidia-uvm

或显示出类似的信息,应该有三个(包含一个类似/dev/nvidia-nvm的),则安装成功。
b、大多数结果可能会是这样

ls: cannot access/dev/nvidia*: No such file or directory

或是这样的,只出现

/dev/nvidia0    /dev/nvidiactl

a中的一个或两个,但没有/dev/nvidia-num,即文件显示不全。

解决方法:

添加一个启动脚本rc.local  ,附上rc.local的百度云链接:

https://pan.baidu.com/s/1HU9QL6Qut3NubJw4RClmIQ,密码:r7j4

下载后放在/home目录下,然后输入

sudo cp rc.local /etc/


保存文件并重启,再次查看,这时你应该能直接看到/dev目录下的三个nvidia的文件
输入:

$ ls /dev/nvidia*

结果显示:

/dev/nvidia0    /dev/nvidiactl    /dev/nvidia-uvm

成功!

接着,设置环境变量。

终端中输入

sudo gedit ~/.bashrc

在打开的文件末尾,添加以下两行。
64位系统:

 
  1. export PATH=/usr/local/cuda-9.1/bin:$PATH

  2. export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64:$LD_LIBRARY_PATH

32位系统:

 
  1. export PATH=/usr/local/cuda-9.1/bin:$PATH

  2. export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib:$LD_LIBRARY_PATH

使该配置生效:

 source  ~/.bashrc

验证CUDA Toolkit

 nvcc -V

第四步:安装cuDNN v7

cuDNN的安装是建立在我们成功安装cuda的基础上的,cuDNN同样需要我们去NVIDIA的官网下载适合cuda版本的deb文件或tgz文件。
这里我以tgz文件的安装为例(cudnn-9.1-linux-x64-v7.tgz),
首先解压tgz文件

$ tar -xzvf cudnn-9.1-linux-x64-v7.tgz

接着复制文件到cuda安装路径下,

 
  1. $ sudo cp cuda/include/cudnn.h /usr/local/cuda-9.1/include

  2. $ sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.1/lib64

  3. $ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

第五步:安装 Anaconda3

清华镜像站下载最新的Anaconda3.5.1,下载成功后执行

bash ~/Downloads/Anaconda3-5.1.0-Linux-x86_64.sh

安装过程中会问你是否添加anaconda3的环境变量,直接输yes,这样就不用额外手动配环境变量了

第六步:安装 OpenCV 3.4.0

命令行进入已解压的文件夹 opencv-3.4.1 目录下,执行:

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

  2.  
  3. cd build

  4.  
  5. cmake -D WITH_IPP=OFF -D PYTHON_DEFAULT_EXECUTABLE=~/anaconda3/bin/python3 -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D PYTHON3_EXCUTABLE=~/anaconda3/bin/python3 -D PYTHON3_INCLUDE_DIR=~/anaconda3/include/python3.6m -D PYTHON3_LIBRARY=~/anaconda3/lib/libpython3.6m.so.1.0 -D PYTHON_NUMPY_PATH=~/anaconda3/lib/python3.6/site-packages ..

然后执行

 
  1. make -j4 #开始编译

  2. sudo make install #安装

  3. sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

  4. sudo ldconfig

编译时间较长,请耐心等待,我的电脑大概花费了50分钟。安装完成后输入以下指令验证OpenCv版本:

pkg-config --modversion opencv 

第七步:安装 Caffe

首先要安装一堆依赖项,不然编译的时候会报错

 
 
  1. sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

  2. sudo apt-get install --no-install-recommends libboost-all-dev

  3. sudo apt-get install libatlas-base-dev sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-de

然后下载caffe

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

然后

 
  1. cd caffe //进入到刚刚git下来的caffe

  2. sudo cp Makefile.config.example Makefile.config //将Makefile.config.example的内容复制到Makefile.config

 sudo cp ~/anconda3/bin/libpython3.6m*  /usr/lib/x86_64-linux-gnu  #配置Makefile.config文件,在这之前先复制几个文件

  sudo vim Makefile.config //打开Makefile.config文件 修改以下内容:

 
  1. #取消以下注释

  2. USE_CUDNN := 1

  3. OPENCV_VERSION := 3

  4. WITH_PYTHON_LAYER := 1

  5.  
  6. #将Python有关目录修改为

  7. PYTHON_LIBRARIES := boost_python-py35 python3.6m #这里需要建立boost_python3链接,详细介绍可看https://blog.csdn.net/lien0906/article/details/51784191

  8. ANACONDA_HOME := /path/to/anaconda3 #改成自己anaconda的路径

  9. PYTHON_INCLUDE := $(ANACONDA_HOME)/include \

  10. $(ANACONDA_HOME)/include/python3.6m \

  11. $(ANACONDA_HOME)/lib/python3.6/site-packages/numpy/core/include

  12.  
  13. PYTHON_LIB := $(ANACONDA_HOME)/lib

  14.  
  15. LINKFLAGS := -Wl,-rpath,$(ANACONDA_HOME)/lib

  16.  
  17. #最后修改INCLUDE_DIRS,LIBRARY_DIRS

  18. INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial

  19. LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial

修改Makefile文件

vim Makefile

用/检索NVCCFLAGS,找到后将

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

然后再在大概181行的地方做修改
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
替换为
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5 opencv_core opencv_imgproc opencv_imgcodecs opencv_highgui

最后

 
  1. make all -j4

  2. make test -j4

  3. make runtest

  4. make pycaffe -j4

在我经历了多次失败后终于成功用上了caffe和opencv,本文已经排了很多的坑,但即便如此,编译过程中出现错误也很正常,把错误拿到百度上搜基本都能解决,祝大家编译一次成功!

最后的最后,还有两个问题补充一下

1、在make runtest后,出现两个失败

 
  1. **[ FAILED ] 2 tests, listed below:

  2. [ FAILED ] BatchReindexLayerTest/2.TestGradient, where TypeParam = N5caffe9GPUDeviceIfEE

  3. [ FAILED ] BatchReindexLayerTest/3.TestGradient, where TypeParam = N5caffe9GPUDeviceIdEE**

这个问题https://github.com/BVLC/caffe/issues/6164上可以完美解决,我在此翻译一下
vim Makefile
然后用/搜索NVCCFLAGS,知道搜到下面这一段

 
  1. ...

  2. # Debugging

  3. ifeq ($(DEBUG), 1)

  4. COMMON_FLAGS += -DDEBUG -g -O0

  5. NVCCFLAGS += -G

  6. else

  7. COMMON_FLAGS += -DNDEBUG -O2

  8. endif

  9. ...

修改为

 
  1. ...

  2. # Debugging

  3. ifeq ($(DEBUG), 1)

  4. COMMON_FLAGS += -DDEBUG -g -O0

  5. NVCCFLAGS += -G

  6. else

  7. COMMON_FLAGS += -DNDEBUG -O2

  8. NVCCFLAGS += -G

  9. endif

  10. ...

也就是加一句NVCCFLAGS += -G
然后重新编译,那么所有test都能成功

2、在所有工作完成后import caffe,出现ImportError: No module named google.protobuf.internal
这是因为在anaconda3中没有装protobuf库,执行指令:

 
  1. cd ~/anaconda3/bin

  2. pip install protobuf

这时候再import caffe就没有问题了


至此大功告成


 

已收藏

分享

Ubuntu16.04下安装python3.6详细步骤及anaconda安装详解

阅读数 1万+

    最近在廖雪峰老师的网站上学习python,开始用的是Windows环境,但是越往后发现用Linux或许更好一些,环境搭建什么的比较方便,但是对于很少用Linux的同学来说,Linux上pyth... 博文 来自: kingkeenkai的博客

Ubuntu16.04下安装python3.6详细步骤及anaconda3安装详解

阅读数 1060

1.Python3.6的安装 Ubuntu中自带python2.7和python3.5,但是很多情况下我们需要使用python3.6,以下是在终端中安装python3.6的详细步骤:在终端中输入下面的... 博文 来自: sunshine_zkf的博客

ubuntu + Anaconda-python3.6 下安装 Anaconda-python3.5

阅读数 1009

官网说明:点击此处1.查看Anaconda-python的各个版本condasearchpythoncondasearch--full-namepython#查看全名,更为详细2.安装python的不... 博文 来自: 梦Dancing的博客

Ubuntu Anaconda3 环境下安装caffe

阅读数 791

安装Python环境本人环境为Anaconda3,可参照https://blog.csdn.net/ctwy291314/article/details/86571198完成安装Python2.7环境... 博文 来自: gmHappy

ubuntu 16.04 anaconda2 下安装caffe2

阅读数 2071

按照官网上的提示IfyoudonothaveaGPU:condainstall-ccaffe2caffe2ForGPUsupportyouwillneedCUDA,CuDNN,andNCCL.Thes... 博文 来自: 小x的博客

ubuntu16.04 caffe配置支持anaconda3

猜你喜欢

转载自blog.csdn.net/CVAIDL/article/details/89100038