UBUNtu 16.04 cuda cudnn opencv anaconda caffe

ubuntu安装显卡驱动的三种方法

一是:系统设置->软件更新->附加驱动->选择nvidia最新驱动(361)->应用更改

简单但是不提倡

二是:先官网下载好对应驱动编译

Nvidia中文官网是 http://www.nvidia.cn/page/home.html

1)打开终端,先删除旧的驱动:

sudo apt-get purge nvidia*

2)禁用自带的 nouveau nvidia驱动

创建一个文件通过命令 sudo vim /etc/modprobe.d/blacklist-nouveau.conf

并添加如下内容:

blacklist nouveau
options nouveau modeset=0

再更新一下

sudo update-initramfs -u

修改后需要重启系统。确认下Nouveau是已经被你干掉,使用命令: lsmod | grep nouveau

3)重启系统至init 3(文本模式),也可先进入图形桌面再运行init 3进入文本模式,再安装下载的驱动就无问题,

首先我们需要结束x-window的服务,否则驱动将无法正常安装

关闭X-Window,很简单:sudo service lightdm stop,然后切换tty1控制台:Ctrl+Alt+F1即可

4)接下来就是最关键的一步了:sudo./NVIDIA.run开始安装,安装过程比较快,根据提示选择即可最后安装完毕后,重新启动X-Window:sudo service lightdm start,然后Ctrl+Alt+F7进入图形界面;

最后测试一下是否安装成功

nvidia-smi

nvidia-settings

三是:添加官方ppa源

快捷键ctrl+alt+T打开命令终端,加入官方ppa源。

$ sudo add-apt-repository ppa:graphics-drivers/ppa

需要输入密码并按enter键确认。之后刷新软件库并安装最新驱动。

$ sudo apt-get update

$ sudo apt-get install nvidia-367nvidia-settings nvidia-prime

安装完成后通过下面命令查看是否安装成功。

$ nvidia-settings

注意安装完成后要重启,有如下效果则安装完成,否则就说明安装有问题,尝试关闭UEFI保护试试。

 

安装了nvidia367后循环登录出现问题,解决参考http://www.jianshu.com/p/34236a9c4a2f

Cuda-9.0

Cuda-9.0下载链接Cuda Toolkit 9.0 Downloads
在这里插入图片描述

安装官网命令安装
在这里插入图片描述

安装成功后,配置环境变量

    打开/etc/profile文件
    $ sudo getdit /etc/profile
    将下面两行添加到文件末尾
    export PATH=/usr/local/cuda-9.0/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64
    激活
    $ source /etc/profile
    测试例子
    $ cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
    $ sudo make
    $ ./deviceQuery
    成功后截图

在这里插入图片描述
4. Cudnn-7.1.4

Cudnn-7.1.4下载链接cuDNN v7.1.4,选择cuDNN v7.1.4 Library for Linux
在这里插入图片描述
将下载cudnn-9.0-linux-x64-v7.1.tgz解压,解压后cuda文件夹下有include、lib64两个文件夹

    将cudnn的文件复制到前面安装的cuda-9.0下
    $ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
    $ sudo cp cuda/lib64/* /usr/local/cuda/lib64/
    接下来要ln cudnn.so
    $ cd /usr/local/cuda/lib64/
    $ sudo rm -rf libcudnn.so libcudnn.so.7
    $ sudo ln -s libcudnn.so.7.1.4 libcudnn.so.7
    $ sudo ln -s libcudnn.so.7 libcudnn.so
    查看
    $ ls -l libcudnn*
    在这里插入图片描述

安装 Anaconda (python3.6)

Ubuntu中自带python2.7和python3.5,但是很多情况下我们需要使用python3.6,以下是在终端中安装python3.6的详细步骤

在终端中输入下面的命令

wget http://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
tar -xvzf Python-3.6.4.tgz
cd Python-3.6.4
./configure --with-ssl
make
sudo make install

安装好后可以通过python3命令进行检查所安装版本,如下图所示

可能有细心的同学发现和我的图片有些不一样,缺少了Anaconda,下面将介绍如何安装这个重要的工具

官方下载地址:https://www.anaconda.com/download/

可以通过内置的Firefox浏览器对其进行下载,注意下载对应的Linux版本,文件名为Anaconda3-5.0.1-Linux-x86_64.sh

下载完成后,在文件管理器中“下载”目录中找到这个文件,右击选择属性,如下图所示

在终端中输入

cd /home/hello/下载

cd 后面的一段为上图所示位置后面的路径

接下来运行如下命令进行安装

bash Anaconda3-5.0.1-Linux-x86_64.sh

根据提示输入回车键

往下是浏览注册信息,一路按回车到底后输入yes继续安装

在如图所示下面回车继续

此后遇到yes和no的地方一律输入yes即可

安装完成后输入下面的命令以检验,出现如图所示即为安装成功

安装 OpenCV 3.4.1

命令行进入已解压的文件夹 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就没有问题了


至此大功告成

猜你喜欢

转载自blog.csdn.net/CVAIDL/article/details/89136693
今日推荐