zoukankan      html  css  js  c++  java
  • [转]caffe在ubuntu14.04下安装配置,改错,换包记录

    喝一杯咖啡真难——我的caffe在ubuntu14.04下安装配置,改错,换包记录

    转载地址:http://blog.csdn.net/wingfox117/article/details/46278001
     

    目录(?)[+]

     

            由于课题换成了关于分类的方向,所以跟着世界最火的潮流走,咱们只能做DML。伯克利的 caffe可能是比较流行的框架之一,它运算速度快,可以使用Python,matlab进行使用,更可以使用CUDA进行运算(当然这也是它难以安装的内容之一)。

    先看caffe的主页的介绍,当然不翻墙不让看:https://docs.google.com/presentation/d/1UeKXVgRvvxg9OUdh_UiC5G71UMscNPlvArsWER41PsU/edit#slide=id.p

    国内墙了google,只好使用百度查,十分感谢下列或者转发,或者是原创的几位博主。

    http://www.haodaima.NET/art/2823705

    http://www.cnblogs.com/platero/p/3993877.html

    http://www.tuicool.com/articles/EzANjy7

    http://94it.Net/a/jingxuanboke/2015/0321/492734.html

    http://blog.csdn.net/liuxiabing150/article/details/42503389

    http://blog.csdn.net/kuaitoukid/article/details/40395617

    当然,我可能运气比较背,或者是我的Linux用的不熟,或者make命令问题,或者包问题,楼上各位的问题我基本都碰到了,另外他们没碰到的问题我也碰到了(比如qt包没有,比如OpenCV的安装脚本不适合我的,反正是各种不适应啊 ),终于在一周左右的时间内解决了各种问题,成功运行了caffe的mnist例程。

    当然routine的内容我能用别人的还是复用了,当然他们没遇到的错误,只好我自己来写,本来是个懒人,但是这次不记录还是说不过去了。原谅我当时没有记录出错的代码给大家搜索,因为当时心情真的不佳啊,呵呵。

    我的基本步骤也按照以下几个步骤:

    第一部分 Linux安装

    第二部分 nVidia驱动和CUDA Toolkit的安装和调试

    第三部分  MKL的安装

    第四部分 Opencv的安装
    第五部分 Caffe的安装和测试
    第六部分 Python安装和调试
    第七部分 Matlab安装和调试   

    第一部分 Linux安装

    这个就不多讲了,找个u盘,找个ubuntu14.04的iso,找到winiso工具把iso烧制到u盘上,在你windows下划分一个不低于80G的区,删除了这个分区,看别人的教程装吧,这个没有什么特别的。

    第二部分 nVidia驱动和CUDA Toolkit的安装和调试

    首先你想用cuda必须有一块独显,而且必须是nvidia家的,不然就跳过这个步骤,当然我的是,so to be continue

    2.1 安装build-essentials

    sudo apt-get install build-essential
    
    2.2   删除默认显示驱动
    Nouveau是一个开源的显卡驱动,Ubuntu 14.04 默认安装了,但是它会影响nVidia驱动的安装,所以只有请他回老家了,sorry!

    1. 将nouveau添加到黑名单,防止它启动

    $ cd /etc/modprobe.d $ sudo vi nvidia-graphics-drivers.conf  写入:blacklist nouveau
    保存并退出: wq! 检查:$ cat nvidia-graphics-drivers.conf   2. 对于:/etc/default/grub,添加到末尾。 $ sudo vi /etc/default/grub 末尾写入:rdblacklist=nouveau nouveau.modeset=0 保存并退出: wq! 检查:$ cat /etc/default/grub   3. 官网提供的操作:
    $ sudo mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img
    然后重新生成initrd文件
    $ sudo dracut /boot/initramfs-$(uname -r).img $(uname -r) $ sudo update-initramfs -u  
    上面那条是nVidia官方提供的命令,不知道为什么在我这里会提示dracut是不存在的命令,也许是版本问题,或者少了什么包,不过无所谓,第二条命令也可以搞定,应该是一样的功能。
    
    2.3  安装cuda,因为这个.run文件包含了驱动,所以我们可以不用分开安装了,直接大锅炒。

    1. 首先在BIOS设置里选择用Intel显卡来显示或作为主要显示设备

    然后【点击此链接】 下载CUDA 6.5.

    2. 进入Ubuntu, 按 ctrl+alt+F1 进入tty, 登录tty后输入如下命令

    sudo service lightdm stop

    该命令会关闭lightdm。如果你使用 gdm或者其他的desktop manager, 请在安装NVIDIA驱动前关闭他。

    3. 在纯命令行里边运行你下载的cuda6.5的run文件。

    或者需要你用 sudo chmod +x这个文件,从而获得运行权限。

    然后就是一路的 空格 到 100% yes 路径 yes之类,这个文件包含以下三个需要安装的内容:

    1 CUDA安装包:

    2 NVIDIA驱动:

    3 SAMPLE包:

    安装完以后在你个人的环境里设置

    sudo gedit /home/yuername/.ba*

    默认安装路径的话,就加入:

           PATH=/usr/local/cuda-6.5/bin:$PATH
           export PATH
           保存后更新链接
           sudo ldconfig
           而后保存你cuda的设置

    /etc/ld.so.conf.d/加入文件 cuda.conf, 内容如下

           /usr/local/cuda-6.5/lib64

    执行下列命令使之立刻生效

           sudo ldconfig

    可选-》安装CUDA SAMPLE

    首先安装下列依赖包

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

    然后用下述命令安装sample文件

    sudo ./cuda-samples-linux-6.5.14-18745345.run

    完成后编译Sample文件, 整个过程大概10分钟左右

    cd /usr/local/cuda-6.5/samples
    sudo make

     全部编译完成后, 进入 samples/bin/x86_64/linux/release, sudo下运行deviceQuery

    sudo ./deviceQuery

    如果出现下列显卡信息, 则驱动及显卡安装成功:

    复制代码
    ./deviceQuery Starting...
    
     CUDA Device Query (Runtime API) version (CUDART static linking)
    
    Detected 1 CUDA Capable device(s)
    
    Device 0: "GeForce GTX 670"
      CUDA Driver Version / Runtime Version          6.5 / 6.5
      CUDA Capability Major/Minor version number:    3.0
      Total amount of global memory:                 4095 MBytes (4294246400 bytes)
      ( 7) Multiprocessors, (192) CUDA Cores/MP:     1344 CUDA Cores
      GPU Clock rate:                                1098 MHz (1.10 GHz)
      Memory Clock rate:                             3105 Mhz
      Memory Bus Width:                              256-bit
      L2 Cache Size:                                 524288 bytes
      Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
      Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
      Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
      Total amount of constant memory:               65536 bytes
      Total amount of shared memory per block:       49152 bytes
      Total number of registers available per block: 65536
      Warp size:                                     32
      Maximum number of threads per multiprocessor:  2048
      Maximum number of threads per block:           1024
      Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
      Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
      Maximum memory pitch:                          2147483647 bytes
      Texture alignment:                             512 bytes
      Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
      Run time limit on kernels:                     Yes
      Integrated GPU sharing Host Memory:            No
      Support host page-locked memory mapping:       Yes
      Alignment requirement for Surfaces:            Yes
      Device has ECC support:                        Disabled
      Device supports Unified Addressing (UVA):      Yes
      Device PCI Bus ID / PCI location ID:           1 / 0
      Compute Mode:
         < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
    
    deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = GeForce GTX 610
    Result = PASS
     
    
    
    到这一步,你以为cuda装完了?no,no,no
    
    

    还有呢

    2.4 cuda补全安装计划

    装好所谓的cuda安装包以后,在终端输入

    nvcc -V

    不出意外的话应该会提示,nvcc没有安装,其实就是,nvidia-cuda-toolkit的编译器没有安装完整,总之,根据提示继续就好了
    $ sudo apt-get install nvidia-cuda-toolkit
    楼上有人写过这个问题,说一杯咖啡在手就搞定,可是我……
    发现居然没装成功,为什么?包的依赖关系形成了死锁,我擦,擦,擦啊
    一堆乱搜后发现这个博客
    http://blog.csdn.net/wishchin/article/details/44833635
    解决了这类的问题

    先安装一个aptitude, 即在终端输入:

    sudo apt-get install aptitude
    安装完之后,使用此工具安装nvidia-cuda-toolkit可用。即在终端输入:

    sudo aptitude install nvidia-cuda-toolkit

    卸载了依赖的包,把剩余的东西安装上去了。

    第三部分  MKL的安装

    首先下载并安装英特尔® 数学内核库 Linux* 版MKL,下载链接是:https://software.intel.com/en-us/intel-education-offerings,不收费的只好下载Student版的,先申请,然后会立马收到一个邮件(里面有安装序列号),打开照着下载就行了。

    (如果没有可以安装OpenBLAS代替)解压安装包,下面有一个install_GUI.sh文件, 执行该文件,会出现图形安装界面,根据说明一步一步执行即可。

    注意: 安装完成后需要添加library路径

    sudo gedit /etc/ld.so.conf.d/intel_mkl.conf

    在文件中添加内容

    /opt/intel/lib
    /opt/intel/mkl/lib/intel64

    注意把路径替换成自己的安装路径。 编辑完后执行(这里我手贱了一次,改了默认的地址,怎么都链接不到,不知道为何,老实点还是按照默认的来吧,所以把你的ubuntu的/目录设置大一点空间为好)

    sudo ldconfig
    
    
    
    安装这个很随意,问题不大,但注意要默认路径较好。

    第四部分 Opencv的安装

    这个尽量不要手动安装, Github上有人已经写好了完整的安装脚本:https://github.com/jayrambhia/Install-OpenCV

    下载该脚本,进入Ubuntu/2.4 目录, 给所有shell脚本加上可执行权限

    chmod +x *.sh

    然后安装最新版本 (当前为2.4.9)

    sudo ./opencv2_4_9.sh

    脚本会自动安装依赖项,下载安装包,编译并安装OpenCV。整个过程大概20小时左右。

    NO,NO,NO

    所以我先换到windows下载了opencv2.9的文件包,拉到了github的下载的make文件的目录下然后注释了他的这几行脚本

    #wget -O OpenCV-2.4.9.zip http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.9/opencv-2.4.9.zip/download
    #echo "Installing OpenCV 2.4.9"
    #unzip opencv-2.4.9.zip

    注意,中途可能会报错1

    找不到qt!!!!

    这个问题根本就没人说,我擦呀……仔细看他的make脚本有 with_qt=on

    没qt,好吧下载qt去!这里我下了完整的qt包

    下载地址如下:

    http://www.qt.io/download-open-source/

    安装之后记得设置qt的环境

    sudo gedit /etc/ld.so.conf.d/qt5.conf

    在文件中添加内容

    /opt/Qt5.4.1/5.4/gcc_64/lib
    不然编译还是找不到qt

    保存后继续

    sudo ldconfig
    然后编译又遇见了错误2
    
    opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization

    解决方法在此:http://code.opencv.org/issues/3814  下载 NCVPixelOperations.hpp 替换掉opencv2.4.9内的文件, 重新build。我看到作者也给出了这个修改意见。

    第五部分 Caffe的安装和测试

    1.首先安装依赖项Ubuntu14.04用户执行

    sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

    其他版本用户参考官方说明:http://caffe.berkeleyvision.org/installation.html

    2.google的依赖

    1. Google Logging Library(glog),下载地址:https://code.google.com/p/google-glog/,然后解压安装:
    $ tar zxvf glog-0.3.3.tar.gz
    $ ./ configure
    $ make
    $ sudo make install

    3.然后 从github上下载好caffe库: https://github.com/BVLC/caffe ,解压

    然后进入目录

    sudo cp makefile.config.example makefile.config

    修改

    CUDA_DIR := /usr/local/cuda-6.5(你自己的目录)

    BLAS := mkl

    然后make all

    发现错误 make: protoc:命令未找到 
    make: *** [.build_release/src/caffe/proto/caffe.pb.h] 错误 127

    那就下载protobuf吧,在github下载,解压 https://github.com/google/protobuf 

    运行

    [ruby] view plain copy
     
    1. <code><span style="font-family:宋体; font-size:14px"><span class="variable">$ </span>.<span class="regexp">/autogen.sh</span></span></code>  

    然后他又依赖与gtest 我擦了又是google的东西……下载要科学 csdn上居然有人上传了,不错!

    再次运行,提示错误

    ./autogen.sh: 40: ./autogen.sh: autoreconf: not found 

    原因是没安装 automake 工具

    运行命令安装:sudo apt-get install autoconf automake libtool

    再一次./autogen.sh,成功!然后依次运行以下命令

    $ ./configure
    $ make
    $ make check
    $ make install
    然后继续make all

    ./include/caffe/common.hpp:5:27: fatal error: gflags/gflags.h: 没有那个文件或目录。

    安装gflags

    这里继续安装gflags: https://github.com/schuhschuh/gflags/archive/master.zip 下载。解压

    cd gflags-master
    mkdir build && cd build
    export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
    make 
    sudo make install
    按好之后,接着make all

    继续错误,没有安装lmdb

    安装lmdb

    接着make,提示错误lmdb没装

    Git clone git://gitorious.org/mdb/mdb.git 

    cd mdb/libraries/liblmdb 

    make && make install 

    之后继续make all

    等待了15分钟左右之后,激动人心的场面出现了,done了……

    之后你 继续 

    make test

    make runtest

    等done了之后,继续下载测试mnist数据集合

    1. 数据预处理

    可以用下载好的数据集,也可以重新下载,我网速快,这里就偷懒直接下载了,具体操作如下:
    新版的caffe只能在他的caffe-master主目录下操作,不然会报错
    sudo sh ./data/mnist
    /get_mnist.sh

    2. 重建LDB文件,就是处理二进制数据集为Caffe识别的数据集,以后所有的数据,包括jpe文件都要处理成这个格式

    sudo sh ./examples/mnist
    /create_mnist.sh
    生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夹,这里包含了LDB格式的数据集

    3. 训练mnist
    sudo sh ./examples/mnist
    /train_lenet.sh
    等待数秒之后会发现迭代了1000次,以及输出的数据等。

    第六部分 Python安装和调试

    1. 安装caffe必须的一些依赖项:
    $ sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython 

     
    2. 配置路径,编辑Makefile.config
    PYTHON_INCLUDE := /usr/include/python2.7
                                        /usr/lib/python2.7/dist-packages/numpy/core/include
    PYTHON_LIB := /usr/local/lib

    INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
    LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

    3. 这里非常重要的是,为了确保支持Caffe Notebook里的程序,需要使用到IDE环境,并且支持iPython输出。 

    4 编译Python wrapper

        make pycaffe 

    第七部分 Matlab安装和调试  

    1. Caffe提供了MATLAB接口, 有需要用MATLAB的同学可以额外安装MATLAB。 安装教程请自行搜索。 

    2. 安装完成后添加图标 http://www.linuxidc.com/Linux/2011-01/31632.htm

         sudo vi /usr/share/applications/Matlab.desktop

    3.编译Matlab wrapper

        执行如下命令

        make matcaffe
    
    至此,所有的安装步骤告一段落,大家可以下载咖啡自带的demo,跑一跑玩了。
    
    本文基本是参照caffe的官方安装文档:http://caffe.berkeleyvision.org/installation.html 以及各位博友提供的参考步骤进行。
    如有雷同纯属参考,如有错误之处,望各位不吝赐教。3ks
  • 相关阅读:
    深度学习(dropout)
    centos 常见软件安装
    最近读的书 与论文
    如何理解反向传播 Backpropagation 梯度下降算法要点
    ubuntu 15 安装cuda,开启GPU加速
    快速排序算法
    Linux网络中接收 "二进制" 流的那些事 --- 就recv的返回值和strlen库函数进行对话
    linux源码升级编译内核
    C/C++中慎用宏(#define)
    Qt之hello world
  • 原文地址:https://www.cnblogs.com/Crysaty/p/6283373.html
Copyright © 2011-2022 走看看