Caffe安装:Ubuntu16.04 + GPU + CUDA-8.0 + cuDNN v5.1 + OpenCV 3.0.0 + Anaconda2

此博文是我与@Issac_33历时3天安装完成,已在NVIDIA GTX970显卡的电脑与NVIDIA GeForce 840M显卡的电脑上测试通过。 如果出现问题请及时指正或留言。一定要使用16.04的系统,不推荐使用15.10的系统,否则前方无限坑!!!!!!

需要下载的东西


安装步骤

  1. 安装NVIDIA驱动nvidia-367.57

    1. 在Ubuntu的设置里面进行驱动的安装,打开System Settings -> System Settings -> Software & updates -> Additional Driver 进行安装,截图如下
      这里写图片描述
      • 安装下载会耗费一段的时间,安装结束需要对电脑进行重启即可
    2. 验证安装成功

      • 搜索nvidia,如果出现了如下的界面界面即说明安装成功
        这里写图片描述

      这里写图片描述

      • 同样,也可在命令行输入如下的命令

        sudo nvidia-smi

        如果出现如下的界面即说明安装成功
        这里写图片描述

    3. 注意:驱动下载安装完之后一定要重启,不能注销再登录,否则会出现电脑黑屏并输入各种乱七八糟的信息!
  2. 安装Anaconda2

    wget https://repo.continuum.io/archive/Anaconda2-4.2.0-Linux-x86_64.sh
    sudo bash Anaconda2-4.2.0-Linux-x86_64.sh #接下来按提示一步一步安装即可
  3. 安装各种的依赖库,在命令行输入如下的命令

    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

    安装的时候一定要注意是否都成功的下载并安装上了

    1. 如果遇到安装的依赖项的问题,可以运行如下的命令进行修复

      sudo apt-get install -f
    2. 如果遇到Hash sum dismatch问题,则依据提示的.deb地址进行先下载再安装,如果使用了阿里云的软件源,则使用第二种方法也可解决

      
      #一个例子
      
      wget https://xxx/ppp.deb
      sudo dpkg -i ppp.deb
      sudo vim /etc/resolv.conf
      
      # 加上下面的几句话
      
      nameserver 202.96.134.133
      nameserver 202.96.128.68
  4. 安装cuda 8.0

    1. 点此进入cuda下载界面,下载的界面如下图
      这里写图片描述
      • 注意在此处一定下载 .run文件的,否则后方有无限的坑!!
    2. 下载完成后在cuda 8 的下载目录打开命令行输入以下的命令进行cuda-8的安装

      sudo sh cuda_8.0.44_linux-run

      之后按照提示一步一步的安装就行了,但是 Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62 出现时一定要选择否,因为之前已经安装过了nvidia显卡的驱动

    3. 环境变量配置

      • 打开~/.bashrc文件:

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

        export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
        export LD_LIBRARY_PATH=/usr/local/cuda8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
      • 保存之后,输入如下的命令使配置生效

        source ~/.bashrc
    4. 测试CUDA的sammples,运行如下的命令

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

      出现如下的界面即证明安装成功
      这里写图片描述

  5. 安装 cudnn v5.1

    1. cuDNN是GPU加速计算深层神经网络的库,下载cudnn v5.1要进入官网进行下载,可能需要注册
      这里写图片描述
    2. 进入下载的目录,运行如下的命令

      tar zxvf cudnn-8.0-linux-x64-v5.1.tgz       #解压
      cd cuda/include         #进入include目录
      sudo cp cudnn.h /usr/local/cuda/include/    #复制头文件
      cd ../lib64        #进入lib64目录
      sudo cp lib* /usr/local/cuda/lib64/    #复制动态链接库
      cd /usr/local/cuda/lib64/
      sudo rm -rf libcudnn.so libcudnn.so.5  #删除原有动态文件
      
      # 以下的两步设置软连接时,一定要注意自己电脑的/usr/local/cuda/lib64/下的libcudnn.so.5.1.5名字,有的可能是libcudnn.so.5.0.5等,要依据自己的电脑上的文件来定
      
      sudo ln -s libcudnn.so.5.1.5 libcudnn.so.5                      #生成软链接
      sudo ln -s libcudnn.so.5 libcudnn.so                            #生成软链接
  6. 安装opencv3.0.0

    注意,前方多坑,请仔细看!!!

    1. 搭建编译环境

      sudo apt-get install build-essential
    2. 安装依赖库

      sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
      sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
    3. 下载并解压opencv

      cd ~
      wget https://github.com/Itseez/opencv/archive/3.0.0-alpha.zip -O opencv-3.0.0-alpha.zip   #下载opencv
      unzip opencv-3.0.0-alpha.zip    #解压opencv
    4. 代码修改,为了使得之后opencv的编译可以通过,需要做如下的修改

      • 打开opencv-3.0.0-alpha/modules/cudalegacy/src/cuda/NCVPixelOperations.hpp

        删除51-58行,61-68行,119-133行的static

      • 打开opencv-3.0.0-alpha/modules/cudastereo/src/cuda/stereocsbp.cu

        删除62,66,74行的static

      • 打开opencv-3.0.0-alpha/modules/cuda/src/graphcuts.cpp

        修改第45行的代码

      
      #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
      

      改为

      
      #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION>=8000)
      

      至此,对于代码的修改就此完毕,下面进行编译

    5. 编译opencv

      cd ~/opencv-3.0.0-alpha      #进入opencv-3.0.0-alpha文件夹
      mkdir build
      cd build
      
      # 直接cmake .. 会出现nvcc fatal : Unsupported gpu architecture'compute_11'错误
      
      sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler .. 
      make all -j4 #多核运算进行编译,此步的耗时较长,请耐心等待
      sudo make install #上一步进行的是编译,此步进行的是安装

      至此,opencv的编译安装就此完毕

  7. 安装caffe

    1. 下载caffe

      cd ~
      sudo apt-get install git #没有git的用户需要进行此步
      git clone https://github.com/BVLC/caffe.git #下载caffe
    2. 将原Makefile.config.example复制为Makefile.config并做如下的修改

      • 使用了cuDNN,取消相应注释

        
        #USE_CUDNN := 1 #注释取消改为下一行
        
        USE_CUDNN := 1
      • 使用了opencv 3.0的版本,取消相应注释

        
        #OPENCV_VERSION := 3 #注释取消改为下一行
        
        OPENCV_VERSION := 3
      • 使用了openblas

        BLAS := open # 将这句话的后面改为open
      • 修改INCLUDE_DIRS与LIBRARY_DIRS

        INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include #改为下面一行,否则出现fatal error: hdf5.h: No such file or directory
        INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
        
        LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib #改为下面一行
        LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
      • 由于使用了Anaconda2,需要取消Anaconda相关的注释,并正确地配置路径

        ANACONDA_HOME := $(HOME)/anaconda2 #取消这一行的注释,并且在后面写上正确的anacond路径
        
        #配置相应的include路径
        
        PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
        $(ANACONDA_HOME)/include/python2.7 \
        $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
        PYTHON_LIB :=$(ANACONDA_HOME)/lib #取消注释
        
      • 若要使用python来编写layer,取消相应注释

        
        #WITH_PYTHON_LAYER := 1
        
        WITH_PYTHON_LAYER := 1
    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     #修改为下面一行,否则出现fatal error: hdf5.h: No such file or directory
      LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl 
    4. 编译安装caffe

      cd ~/caffe   #进入你的caffe目录
      mkdir build  
      cmake ..
      make all -j4 #使用4线程编译
      make runtest #测试
      • make all -j4 成功之后的结果图如下
        这里写图片描述

      • make runtest 成功后的结果如下图
        这里写图片描述

      • 错误/anaconda2/lib/libstdc++.so.6: version `GLIBCXX_3.4.20’ not found ,做如下的操作

        cd ~/anaconda2/lib
        mv -vf libstdc++.so.6 libstdc++.so.6.old   #备份原来的libstdc++.so.6
        ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./libstdc++.so.6 #创建新的软连接

        之后重新从 make all -j4 开始

  8. 配置pycaffe接口

    • 安装protobuf

      conda install protobuf
    • 进入caffe/build目录,进行编译

      cd ~/caffe/build
      make pycaffe
    • 添加~/caffe/Python到$PYTHONPATH

      gedit ~/.bashrc
      
      #在打开的.bashrc的末尾添加下面一行
      
      export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH #注意/path/to/caffe修改为你自己的caffe路径,此处是~/caffe
      source ~/.bashrc
    • 验证caffe是否可以成功的导入
      这里写图片描述

    • 如果出现libcudart.so.8.0: cannot open shared object file: No such file or director则进行以下操作

      sudo find /* -name libcudart.so.8.0   #在电脑查找libcudart.so.8.0
      
      #例如查找到/usr/local/lib64/libcudart.so.8.0,则进行如下的操作
      
      sudo ln -s /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/lib/libcudart.so.8.0

参考链接

http://blog.csdn.net/u011762313/article/details/47262549
http://blog.csdn.net/u011762313/article/details/47263845
http://www.2cto.com/kf/201610/552429.html
http://askubuntu.com/questions/575505/glibcxx-3-4-20-not-found-how-to-fix-this-error
http://caffework.blogspot.hk/2015/04/install-caffe-on-ubuntu-1404.html

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值