Ubuntu 16.10安装caffe

主要依据http://blog.csdn.net/u011272513/article/details/52103453进行安装,跟据本身实际作了些许修改。

 

环境:

ubuntu16.10   cuda8.0   gcc5.4 opencv3.1.0 python2.7

  1. CUDA安装(包括nvidia显卡驱动和cuda库文件):

    •  CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU可以解决复杂的计算问题。开发人员如今可使用C语言来为CUDA™架构编写程序,C语言是应用最普遍的一种高级编程语言。所编写出的程序因而就能够在支持CUDA™的处理器上以超高性能运行。CUDA3.0已经开始支持C++FORTRAN

    •  
    • 经过英伟达安装包来分别安装库的驱动程序而不是使用apt-get来安装。若是只有CPU能够跳过这步。
    • 主板BIOS里面要选择自由选择显卡,这样才能识别nvidia的显卡并进行驱动更新。
    • 快捷键ctrl+alt+T打开命令终端,加入官方ppa源(ppa简介)。
      1. $ sudo  add-apt-repository ppa:graphics-drivers/ppa  
      须要输入密码并按enter键确认。以后刷新软件库并安装最新驱动。
      1. $ sudo apt-get update  
      2. $ sudo apt-get install nvidia-367 nvidia-settings nvidia-prime  
      安装完成后经过下面命令查看是否安装成功。
      1. $ nvidia-settings  
      注意安装完成后要重启,有以下效果则安装完成,不然就说明安装有问题,尝试关闭UEFI保护试试。
    • 从官网下载cuda8.0run文件cuda8.0下载 ,进入该页面选择相应版本,以下图
    • cuda8.0已经支持gcc5以上版本(不包括gcc6),故建议安装时使用Gcc5以上版本,不,由于Caffe须要使用Gcc5来编译,否则会出现不少undefined reference 的错误。ubuntu16.10系统自带的是最新的gcc6,致使接下来编译的时候比较麻烦。
    • 下载完run文件后,cd命令进入该文件所在目录,进行MD5检验,确保安装包正常。
      1. sudo md5sum cuda_8.0_linux.run     检验结果与源文件的md5sum比较。  
    • 检验正确后,输入以下代码安装(第一行修改文件权限,第二行执行文件安装):
      1. $ chmod 777 cuda_8.0_linux.run  
      2. $ sudo ./cuda_8.0_linux.run --override   
      执行代码后会跳出一个信息,左下方出现more|0%这样,此时直接按enter直到跳到100%结束退出,接下来要求输入相关配置命令,以下图,注意别弄错了,第三行配置询问是否要安装nvidia图形驱动器,必定要选n,由于以前已经安装过了,若是再安装则会报错。仔细看以下配置,别看错行。
    • 安装后出现以下则说明安装正确:
      1. ===========  
      2. = Summary =  
      3. ===========  
      4.   
      5. Driver:   Not Selected  
      6. Toolkit:  Installed in /usr/local/cuda-7.5  
      7. Samples:  Installed in /usr/local/cuda-7.5, but missing recommended librarie  
    • 接下来安装cudnn动态库,能够得到更快计算速率。cudnn5.0 ,初次进入须要注册,而后问卷调查,以后进入以下页面
    • 选择cuDNN v5 Library for Linux进行下载。下载后名字为:cudnn-7.5-linux-x64-v5.0-ga.tgz,进入文件所在目录进行解压:
      1. $ tar zxvf cudnn-7.5-linux-x64-v5.0-ga.tgz   
    • 解压后有个cuda文件,内有include和lib64两个文件夹,进入include文件夹,执行以下命令:
      1. $ sudo cp cudnn.h /usr/local/cuda/include/     #复制头文件  
    • 再cd命令切换进lib64文件夹,执行以下命令:
      1. $ sudo cp lib* /usr/local/cuda/lib64/    #复制动态连接库  
    • 而后进入复制后的动态连接库进行新的连接:
      1. $ cd /usr/local/cuda/lib64/        
      2. $ sudo rm -rf libcudnn.so libcudnn.so.5    #删除原有动态文件  
      3. $ sudo ln -s libcudnn.so.5.0.5 libcudnn.so.5  
      4. $ sudo ln -s libcudnn.so.5 libcudnn.so  
    • 而后设置环境变量和动态连接库:
      1. $ sudo gedit /etc/profile  
    • 而后再打开的文件末尾加上(“=”先后不要有空格)
      1. export PATH=/usr/local/cuda/bin:$PATH  
    • 保存以后建立连接文件:
      1. $ sudo vim /etc/ld.so.conf.d/cuda.conf  
    • 按下键盘i进行编辑:
      1. /usr/local/cuda/lib64  
    • 按下esc,按下:wq保存退出。并在终端输入如下命令使该连接生效:
      1. $ sudo ldconfig  
    • 使用sample里面的例子来测试还须要编译。
    • 而后进入用例文件进行编译(注意执行第二步命令时候须要较长时间是正常现象):
      1. $ cd /usr/local/cuda/samples  
      2. $ sudo make all -j4  
      3. $ cd /usr/local/cuda/samples/bin/x86_64/linux/release  
      4. $ sudo ./deviceQuery  
    • 执行命令后出现以下信息则说明显卡驱动和cuda安装成功。
  2. BLAS安装与配置

    • BLAS,即基础线性代数子程序库,里面拥有大量已经编写好的关于线性代数运算的程序,是一个应用程序接口的标准。caffe官网上推荐了三种实现:ATLAS, MKL, or OpenBLAS。其中atlas能够直接经过命令行安装.在此直接使用ATLAS,在线安装便可。

  3. OpenCV3.1.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  
      3. sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev  
    • OpenCV 进入该网站下载OpenCV3.1.0并解压缩,而后进入解压缩后的文件,建立build文件。
      1. $ unzip opencv-3.1.0.zip  
      2. $ cd opencv-3.1.0  
      3. $ mkdir build  
      4. $ cd build  
      5. $ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..  
      生成的文件在bulid中,而生成的CMakeLists.txt文件在上一级文件中。在配置过程会出现– ICV: Downloading ippicv_linux_20151201.tgz…错误。能够到 ippicv_linux_20151201.tgz 下载。
    • 将下载的文件替换掉 opencv-3.1.0/3rdparty/ippicv/downloads/linux-8b449a536a2157bcad08a2b9f266828b下的同名文件,同时在opencv-3.1.0目录下的CMakeList.txt 文件的开头加入一行,而后再次cmake便可,以下:
      1. $ cd ~/Downloads/  
      2. $ mv ippicv_linux_20151201.tgz opencv-3.1.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/   
      3. $ vim opencv-3.1.0/CMakeLists.txt   
    • 在弹出的文件开头加入一行(注意里面的引号要英文状态下的):
      1. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")   
    • 而后按esc和:wq保存退出。
       
      1. $ cd opencv-3.1.0/build  
      2. $ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..  
      3. $ make -j4       #四核运算  
      4. $ sudo make install  
    • 以上最后两步比较耗时,耐心等待。
  4. Python安装与配置

    • 选择的是anaconda linux64 2.7版本python2.7 。下载完成以后,最好也要进行md5sum的检验。完成以后,cd进入下载文件所在的目录,在命令行输入:
      1. $ bash Anaconda2-4.0.0-Linux-x86_64.sh  
    • 安装完成以后,在~/.bashrc文件末尾添加Anaconda的库文件(注意“=”两边不要有空格),具体以下:
      1. $ sudo gedit ~/.bashrc      
      2. export PATH="/home/jeson/anaconda2/bin:$PATH"  
      3. export LD_LIBRARY_PATH="/home/jeson/anaconda2/lib:$LD_LIBRARY_PATH"  
    • 重启电脑以后,在命令行输入:
      1. $ ipython  
    • 就能够看到python的版本。
  5. caffe的安装和配置

    • 安装各类依赖包
      1. sudo apt-get update  
      2. sudo apt-get upgrade  
      3. sudo apt-get install -y build-essential cmake git pkg-config  
      4. sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler  
      5. sudo apt-get install -y libatlas-base-dev  
      6. sudo apt-get install -y --no-install-recommends libboost-all-dev  
      7. sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev  
      8. sudo apt-get install -y python-pip  
      9. sudo apt-get install -y python-dev  
      10. sudo apt-get install -y python-numpy python-scipy  
      11. sudo apt-get install -y libopencv-dev  
    • 下载caffe:
      1. cd ~  
      2. git clone https://github.com/BVLC/caffe.git    //从github上git caffe  
    • 安装配置caffe:
      1. cd caffe    //打开到刚刚git下来的caffe  
      2. cp Makefile.config.example Makefile.config //make指令只能make Makefile.config  
      3. sudo gedit Makefile.config      //打开Makefile.config文件  
    • 配置文件修改(看英文提示根据具体修改):
      1. USE_CUDNN := 1
      2. OPENCV_VERSION := 3    #取消注释符号#,应用opencv3  
      3. BLAS := mkl   #BLAS库应用英特尔的mkl  
      4. #注释第66行自带的python  
      5. ANACONDA_HOME := /home/jeson/anaconda2  #将具体anaconda2路径写入  
      6. PYTHON_INCLUDE := $(ANACONDA_HOME)/include \  
      7.           $(ANACONDA_HOME)/include/python2.7 \  
      8.           $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \   #PYTHON_INCLUDE以前的注释#去掉,以及以后两行前的#也去掉  
      9. PYTHON_LIB := $(ANACONDA_HOME)/lib  
      10. INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial  
      11. LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial  
    • 为hdf5之类的文件建立新的连接[
      1. \\首先执行下面两句话:  
      2. find . -type f -exec sed -i -e 's^"hdf5.h"^"hdf5/serial/hdf5.h"^g' -e 's^"hdf5_hl.h"^"hdf5/serial/hdf5_hl.h"^g' '{}' \;  
      3. cd /usr/lib/x86_64-linux-gnu  
      4. \\而后根据状况执行下面两句:  
      5. sudo ln -s libhdf5_serial.so.10.1.0 libhdf5.so  
      6. sudo ln -s libhdf5_serial_hl.so.10.0.2 libhdf5_hl.so  
      7. \\注意:这里的10.1.0和10.0.2根据不一样的系统可能对应的数字会不一样,好比在ubuntu16.04中其数字就是10.1.0.  
      8. \\具体的数字能够在输入命令时候使用tab键补全查看  
    • 打开makefile文件搜索并替换
      1. NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)  
      1. NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)  
        1. $ sudo gedit ~/.bashrc  
    • 在打开的文件末尾加上:
      1. export LD_LIBRARY_PATH="/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH”  
    • 在命令行输入:
      1. sudo ldconfig #编译当即生效  
    • 而后进入caffe目录:
      1. make all -j4  
      2. make test -j4  
      3. make runtest  
    • 这里runtest会报错以下:
    • 解决方法是在~/.bashrc文件末尾添加输入一行,具体以下:
      1. sudo gedit ~/.bashrc  
      2. export MKL_CBWR=AUTO     #打开的文件末尾加入该行,而后保存退出。  
      3. sudo ldconfig            #编译当即生效   
    • 而后再来一遍
      1. make clean  
      2. make all -j4  
      3. make test -j4  
      4. make runtest  
    • 正确结果是以下:
    • 若是编译没有报错,则基本没问题。在运用anaconda和matlab时都须要修改相应的内容。                                                                                                                                                   
    •  
    • 1.编译过程当中若出现各类莫名奇妙的undefined reference 错误(undefined reference to ‘xxx’),优先考虑是不是编译器版本问题,使用gcc5进行编译。
    • 2.若出现protobuf/proto等相关的错误,优先考虑是不是protobuf未安装,能够本地编译protobuf。下载地址为https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz,按照README文件里的步骤安装便可
    • anaconda须要将caffe头文件进行连接:
      1. $ sudo gedit ~/.bashrc  
    • 输入
      1. export PYTHONPATH="/home/jeson/caffe/python:$PYTHONPATH"  
    • 保存后在命令行输入:
      1. sudo ldconfig  
      2. make pycaffe  
      3. make distribute  
      4. ipython  
      5. import caffe  
    • 最后若是没有跳出错误则说明编译成功,便可调用caffe模块。
    • 我在导入caffe时出现 /home/lqc/anaconda2/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found   ,主要由于/home/lqc/anaconda2/lib/libstdc++.so.6的确没有此版本(gcc.4.7),但个人系统安装的是gcc6,因此只要找到gcc6的libstdc++.so.6.0.22, 创建其为libstdc++.so.6软连接便可。
    • (strings  libstdc++.so.6.0 |grep GLIBCXX)  string命令查看
  6. 至此,暂时应该算是安装完成。
相关文章
相关标签/搜索