环境配置说明(无CUDA,caffe在CPU下运行)caffe+Ubuntu14.0.4 64bit

来源:互联网 发布:网络大病众筹 编辑:程序博客网 时间:2024/05/18 21:08
原文网址:http://blog.csdn.net/liuxiabing150/article/details/42503389粘过来代码显示了两遍,但是不妨碍学习

   caffe是一个简洁高效的深度学习框架,具体介绍可以看这里http://caffe.berkeleyvision.org/,caffe环境配置过程可以参考这里:http://caffe.berkeleyvision.org/installation.html,我在搭建环境时搜集了许多资料,这里整理了一下,介绍一下caffe在无CUDA的环境下如何配置。

1. 安装build-essentials

安装开发所需要的一些基本包

[html] view plain copy
print?
  1. sudo apt-get install build-essential  
sudo apt-get install build-essential
如果出现essential包不可用的情况,可以执行下列命令解决:
[html] view plain copy
print?
  1. sudo apt-get update  
sudo apt-get update

2. 安装ATLAS for Ubuntu

执行命令:

[html] view plain copy
print?
  1. sudo apt-get install libatlas-base-dev  
sudo apt-get install libatlas-base-dev
注:ATLAS, MKL,或OpenBLAS都可以,我这里选择安装ATLAS

3. 安装OpenCV

    这个尽量不要手动安装, Github上有人已经写好了完整的安装脚本:https://github.com/jayrambhia/Install-OpenCV
下载该脚本,解压”.zip”文件,解压命令:
[html] view plain copy
print?
  1. unzip /home/liuxiabing/下载/Install-OpenCV-master.zip  
unzip /home/liuxiabing/下载/Install-OpenCV-master.zip

    进入解压后的文件中的Ubuntu/2.4 目录(我的目录是/home/liuxiabing/Install-OpenCV-master/Ubuntu/2.4), 给所有shell脚本加上可执行权限:
[html] view plain copy
print?
  1. chmod +x *.sh  
chmod +x *.sh
      然后安装最新版本 (当前为2.4.10):

       注:原来安装的是2.4.9,但这个版本存在bug,会出现这样的错误:NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization
      解决该问题需要更换NCVPixelOperations.hpp,但现在这个hpp文件下载链接失效了,所以安装2.4.10版本最好,这个版本不存在任何bug,可以顺利安装成功。

[html] view plain copy
print?
  1. sudo ./opencv2_4_9.sh  
sudo ./opencv2_4_9.sh

4. 安装其他依赖项

      Ubuntu14.04用户执行
[html] view plain copy
print?
  1. 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  
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

  使用其它系统的可以参考官网介绍。

  注:如果上述命令运行时,系统提示“存在依赖关系,不能安装之类的”,可以使用

[html] view plain copy
print?
  1. sudo apt-get update  
sudo apt-get update
 之后如果还存在问题,可以分开,一个一个单独安装,例如:

[html] view plain copy
print?
  1. sudo apt-get install libprotobuf-dev   
  2. sudo apt-get install libleveldb-dev   
sudo apt-get install libprotobuf-dev sudo apt-get install libleveldb-dev 
如果还是不能安装,可以在“Ubuntu软件中心-编辑-软件源”中的“更新”中选择前两个,即“重要安全更新”,“推荐更新”,其他都不选,之后在“其它软件”中选择后两个,即两个“独立”,其他都不选,然后运行命令:

[html] view plain copy
print?
  1. sudo apt-get update  
sudo apt-get update

之后再运行安装命令即可安装成功。

5. 安装python

首先安装pip和python-dev (系统默认有python环境的, 不过我们需要的使python-dev)

[html] view plain copy
print?
  1. sudo apt-get install python-dev python-pip  
sudo apt-get install python-dev python-pip
然后执行如下命令安装编译caffe python wrapper 所需要的额外包(注意:需要先进入目录/caffe-master/python/下,再执行这个命令):

[html] view plain copy
print?
  1. for req in (cat requirements.txt); do sudo pip install req; done  
for req in $(cat requirements.txt); do sudo pip install $req; done

这条命令表示 检查requirements.txt里面的库是否都有安装, 如果没有, 那么用pip来安装。

当然也可以打开requirements.txt文件,单独分别安装各个包,例如安装命令:

[html] view plain copy
print?
  1. sudo pip install Cython  
sudo pip install Cython

如果安装过程中出现错误,可以参考csdn博客:

安装Caffe的Python wrapper时出现问题的解决方法

注:(1)如果requirements.txt中所有的包都成功安装了,则不再需要安装Anaconda了。

        (2)安装完成后,可以查看一下当前用的是哪个Python,确保该python是系统自带的python,而不是Anaconda包中的python。查看命令:

[html] view plain copy
print?
  1. which python  
  2. which pip  
which pythonwhich pip

        (3)安装完成后,打开bashrc,添加环境变量PYTHONPATH,相关命令如下所示:

[html] view plain copy
print?
  1. echo PYTHONPATH&nbsp;&nbsp;</span></span></li><li class=""><span>vi&nbsp;~/.bashrc&nbsp;&nbsp;</span></li></ol><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div></div><pre name="code" class="html" style="display: none;">echoPYTHONPATHvi ~/.bashrc          打开bashrc之后,在最后一行添加下列语句:

    [html] view plain copy
    print?
    1. export PYTHONPATH=/home/liuxiabing/caffe-master/python  
    export PYTHONPATH=/home/liuxiabing/caffe-master/python

              保存并退出之后,执行下列命令使之立即生效:

    [html] view plain copy
    print?
    1. sudo ldconfig  
    sudo ldconfig

              之后,使用下列命令查看当前的PYTHONPATH内容:

    [html] view plain copy
    print?
    1. echo PYTHONPATH&nbsp;&nbsp;</span></span></li></ol><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div></div><pre name="code" class="html" style="display: none;">echoPYTHONPATH

      如果PYTHONPATH中是空的,需要在命令行执行一下下列命令:

      [html] view plain copy
      print?
      1. export PYTHONPATH=/home/liuxiabing/caffe-master/python  
      export PYTHONPATH=/home/liuxiabing/caffe-master/python

      6. 安装matlab

      Caffe提供了MATLAB接口, 有需要用MATLAB的同学可以额外安装MATLAB。 安装教程请自行搜索。
      我安装的是matlabR2013b,直接按照教程安装即可。

      7. 编译Caffe

          完成了上述环境的配置,就可以编译Caffe了! 
          下载caffe安装包,下载地址:https://github.com/BVLC/caffe
          解压该压缩包,解压缩命令:
      [html] view plain copy
      print?
      1. unzip /home/liuxiabing/下载/caffe-master.zip  
      unzip /home/liuxiabing/下载/caffe-master.zip

          注:如果解压位置出错了,可以使用以下命令删除该目录及所有的子目录:
      [html] view plain copy
      print?
      1. sudo rm -rf caffe-master  
      sudo rm -rf caffe-master

          进入caffe根目录, 首先复制一份Makefile.config,命令:
      [html] view plain copy
      print?
      1. cp Makefile.config.example Makefile.config  
      cp Makefile.config.example Makefile.config

         然后修改里面的内容,主要需要修改的参数包括:

          CPU_ONLY 是否只使用CPU模式,由于我没有NVIDIA的显卡,就没有安装CUDA,因此需要打开这个选项(即把前面的#去掉)。
          其余的一些配置可以根据需要修改:
          BLAS (使用intel mkl还是OpenBLAS,默认是atlas,如果安装的是atlas,就不用修改了)
          MATLAB_DIR 如果需要使用MATLAB wrapper的同学需要指定matlab的安装路径, 如我的路径为 /usr/local/MATLAB/R2013b (注意该目录下需要包含bin文件夹,bin文件夹里应该包含mex二进制程序)

          我的MATLAB_DIR修改完是这样的:

      [html] view plain copy
      print?
      1. MATLAB_DIR := /usr/local/MATLAB/R2013b  
      2. # MATLAB_DIR := /Applications/MATLAB_R2012b.app  
      MATLAB_DIR := /usr/local/MATLAB/R2013b

# MATLAB_DIR := /Applications/MATLAB_R2012b.app

    关于python的配置,我没有修改,直接使用默认的就行了。

    DEBUG 是否使用debug模式,打开此选项则可以在eclipse或者NSight中debug程序

注:在Makefile.config中,”#”表示注释

    完成上述设置后,开始编译(编译也是在/caffe-master目录下进行的):  

[html] view plain copy
print?
  1. make all -j4  
  2. make test  
  3. make runtest  
 make all -j4 make test make runtest
   注意:-j4 是指使用几个线程来同时编译,可以加快速度,j后面的数字可以根据CPU core的个数来决定,如果CPU是4核的,则参数为-j4,也可以不添加这个参数,直接使用“make all”,这样速度可能会慢一点儿。

   注:如果编译后出错了,修改完配置文件Makefile.config后重新编译,会提示“make 没有什么可编译的了”,可以试试这个方法:先运行命令

[html] view plain copy
print?
  1. make clean  
make clean

   之后再运行命令:

[html] view plain copy
print?
  1. make all  
  2. make test  
  3. make runtest  
make allmake testmake runtest

8.编译matlab wrapper

在根目录下(/caffe-master)执行命令:

[html] view plain copy
print?
  1. make matcaffe  
make matcaffe

9.编译python wrapper

在根目录下(/caffe-master)执行命令:

[html] view plain copy
print?
  1. make pycaffe  
 make pycaffe

10.使用MNIST数据集进行测试

    Caffe默认情况会安装在CAFFEROOT home/username/caffe-master,所以下面的工作,
默认已经切换到了该工作目录。下面的工作主要是测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:
http://caffe.berkeleyvision.org/gathered/examples/mnist.html
    (1)数据预处理
    可以用下载好的数据集,也可以重新下载,直接下载的具体操作如下:

[html] view plain copy
print?
  1. &nbsp;cd&nbsp;data/mnist&nbsp;&nbsp;</span></span></li><li class=""><span> sudo sh ./get_mnist.sh  
$ cd data/mnist$ sudo sh ./get_mnist.sh</pre><span style="font-weight:normal"><span style="font-size:14px">&nbsp; &nbsp; &nbsp; &nbsp;(2)重建LDB文件,就是处理二进制数据集为Caffe识别的数据集,以后所有的数据,包括jpe文件都要处理成这个格式,执行命令如下:</span></span><span style="font-size:14px; font-weight:normal">&nbsp;</span><div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><b>[html]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 479px; top: 5592px; width: 18px; height: 18px; z-index: 99;"><embed id="ZeroClipboardMovie_30" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="18" height="18" name="ZeroClipboardMovie_30" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=30&amp;width=18&amp;height=18" wmode="transparent"></div></span><span data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-xml"><li class="alt"><span><span>$ sudo sh ./examples/mnist/create_mnist.sh  
$ sudo sh ./examples/mnist/create_mnist.sh
       生成mnist-train-leveldb/ 和 mnist-test-leveldb/文件夹,这里包含了LDB格式的数据集
       注:新版caffe都需要从根目录上执行,如果使用下列命令执行:

[html] view plain copy
print?
  1. # cd examples/mnist  
  2. # sudo sh ./create_mnist.sh  
# cd examples/mnist

# sudo sh ./create_mnist.sh     可能会遇到这个错误:./create_mnist.sh: 16: ./create_mnist.sh: build/examples/mnist/convert_mnist_data.bin: not found
      (3)训练mnist
      如果没有GPU,只有CPU的话,需要先修改examples/mnist目录下lenet_solver.prototxt文件,将solver_mode:GPU改为      solver_mode:CPU,修改后结果如下所示:
[html] view plain copy
print?
  1. # solver mode: CPU or GPU  
  2. solver_mode: CPU  
# solver mode: CPU or GPUsolver_mode: CPU

    修改时可以使用vi编辑命令(ubuntu14.0.4下也可以直接双击打开,修改后保存即可),如果是只读文件,不能编辑,可以用sudo命令,比如:
[html] view plain copy
print?
  1. sudo vi lenet_solver.prototxt  
sudo vi lenet_solver.prototxt

     先进入命令模式,使用a进入编辑模式,修改完之后,使用esc退出编辑模式,进入末行模式,再使用“:wq”保存修改并退出(“:q!”为退出但不保存修改)
   修改完成后,再在根目录下(即/caffe-master目录)执行下面的命令进行训练:

[html] view plain copy
print?
  1. &nbsp;sudo&nbsp;sh&nbsp;./examples/mnist/train_lenet.sh&nbsp;&nbsp;</span></span></li></ol><div class="save_code tracking-ad" data-mod="popu_249"><a href="javascript:;" target="_blank"><img src="http://static.blog.csdn.net/images/save_snippets.png"></a></div></div><pre name="code" class="html" style="display: none;"> sudo sh ./examples/mnist/train_lenet.sh

         最终训练完的模型存储为一个二进制的protobuf文件,至此,Caffe安装的所有步骤完结。

    注:如果进入到mnist目录下执行这个sh命令,会出现错误。即这样操作

[html] view plain copy
print?
  1. cd ./examples/mnist  
  2. sudo sh ./train_lenet.sh  
cd ./examples/mnistsudo sh ./train_lenet.sh
会有一个caffe-master/.build_release/tool/caffe找不到或不存在的错误。


参考资料:
Caffe 实例测试一: MNIST
http://blog.sciencenet.cn/blog-1583812-843207.html

Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置说明
http://www.cnblogs.com/platero/p/3993877.html
CNN之Caffe配置

http://www.cnblogs.com/alfredtofu/p/3577241.html

Training LeNet on MNIST with Caffe
http://caffe.berkeleyvision.org/gathered/examples/mnist.html
Caffe+Ubuntu14.04+CUDA6.5新手安装配置指南
http://www.haodaima.net/art/2823705
caffe安装指南            
http://www.haodaima.net/art/2823705

0 0