Ubuntu14.04 安装Caffe(仅CPU)

来源:互联网 发布:获取js对象的方法 编辑:程序博客网 时间:2024/05/22 11:15

from :  http://blog.csdn.net/u011762313/article/details/47262549

目录:

  • 前言
  • GPU版本
  • 正文
    • 安装依赖库一
    • 安装BLAS
    • 安装python
    • 安装matlab
    • 安装opencv
    • 安装依赖库二
    • 下载Caffe
    • 如果安装的是opencv30
    • 编译Caffe
    • 配置pycaffe
    • 配置matcaffe

前言:

  • 按照Caffe官网安装教程安装Caffe时,要装Cuda,按照Cuda官网安装教程,
    命令行输入:$ lspci | grep -i nvidia,发现没有nvidia显卡,所以只能暂时放弃Gpu,改用Cpu了。

GPU版本

  • 详见:Ubuntu14.04安装Caffe(GPU)

正文:

安装依赖库(一):

<code class="hljs lasso has-numbering">$ sudo apt<span class="hljs-attribute">-get</span> install libprotobuf<span class="hljs-attribute">-dev</span> libleveldb<span class="hljs-attribute">-dev</span> libsnappy<span class="hljs-attribute">-dev</span> libopencv<span class="hljs-attribute">-dev</span> libhdf5<span class="hljs-attribute">-serial</span><span class="hljs-attribute">-dev</span> protobuf<span class="hljs-attribute">-compiler</span>$ sudo apt<span class="hljs-attribute">-get</span> install <span class="hljs-subst">--</span>no<span class="hljs-attribute">-install</span><span class="hljs-attribute">-recommends</span> libboost<span class="hljs-attribute">-all</span><span class="hljs-attribute">-dev</span></code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li></ul>

安装BLAS:

<code class="hljs lasso has-numbering">$ sudo apt<span class="hljs-attribute">-get</span> install libatlas<span class="hljs-attribute">-base</span><span class="hljs-attribute">-dev</span></code><ul style="display: block;" class="pre-numbering"><li>1</li></ul>
  • 可以安装OpenBLAS 或 MKL,以提升CPU性能,但是要修改caffe中Makefile文件…

安装python

  • 我的Ubuntu14.04自带
  • 可使用pycaffe接口

安装matlab

  • 详见:Ubuntu14.04安装Matlab2014a
  • 如不使用matcaffe接口,可以不装

安装opencv

  • 详见:Ubuntu14.04安装OpenCV3.0
  • 注:opencv必须安装,且版本为>=2.4或3.0

安装依赖库(二):

<code class="hljs lasso has-numbering">$ sudo apt<span class="hljs-attribute">-get</span> install libgflags<span class="hljs-attribute">-dev</span> libgoogle<span class="hljs-attribute">-glog</span><span class="hljs-attribute">-dev</span> liblmdb<span class="hljs-attribute">-dev</span></code><ul style="display: block;" class="pre-numbering"><li>1</li></ul>

下载Caffe:

<code class="hljs ruby has-numbering"><span class="hljs-variable">$ </span>cd ~<span class="hljs-variable">$ </span>git clone <span class="hljs-symbol">git:</span>/<span class="hljs-regexp">/github.com/</span><span class="hljs-constant">BVLC</span>/caffe.git</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li></ul>

如果安装的是opencv3.0:

a、修改Makefile,在

<code class="hljs tex has-numbering">LIBRARIES += glog gflags protobuf leveldb snappy <span class="hljs-command">\</span>lmdb boost_system hdf5_hl hdf5 m <span class="hljs-command">\</span>opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>

处加入后面的opencv_imgcodecs,因为opencv3.0.0把imread相关函数放到imgcodecs.lib中了(原来是imgproc.lib)

b、修改caffe/examples/cpp_classification/classification.cpp文件,加入:

<code class="hljs vala has-numbering"><span class="hljs-preprocessor">#include <opencv2/imgproc/types_c.h></span><span class="hljs-preprocessor">#include <opencv2/objdetect/objdetect_c.h></span></code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li></ul>

否则会出现”CV_BGR2GRAY”的错误


编译Caffe:

<code class="hljs smalltalk has-numbering"><span class="hljs-char">$ </span>cd ~/caffe<span class="hljs-char">$ </span>cp <span class="hljs-class">Makefile</span>.config.example <span class="hljs-class">Makefile</span>.config# 修改<span class="hljs-class">Makefile</span>.config文件:去掉<span class="hljs-class">CPU_ONLY</span>:= <span class="hljs-number">1</span>的注释<span class="hljs-char">$ </span>make all<span class="hljs-char">$ </span>make test<span class="hljs-char">$ </span>make runtest</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>

配置pycaffe:

a、安装依赖库:

<code class="hljs lasso has-numbering">$ sudo apt<span class="hljs-attribute">-get</span> install python<span class="hljs-attribute">-numpy</span> python<span class="hljs-attribute">-scipy</span> python<span class="hljs-attribute">-matplotlib</span> python<span class="hljs-attribute">-sklearn</span> python<span class="hljs-attribute">-skimage</span> python<span class="hljs-attribute">-h5py</span> python<span class="hljs-attribute">-protobuf</span> python<span class="hljs-attribute">-leveldb</span> python<span class="hljs-attribute">-networkx</span> python<span class="hljs-attribute">-nose</span> python<span class="hljs-attribute">-pandas</span> python<span class="hljs-attribute">-gflags</span> Cython ipython$ sudo apt<span class="hljs-attribute">-get</span> install protobuf<span class="hljs-attribute">-c</span><span class="hljs-attribute">-compiler</span> protobuf<span class="hljs-attribute">-compiler</span></code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li></ul>

b、编译:

<code class="hljs smalltalk has-numbering"><span class="hljs-char">$ </span>cd ~/caffe<span class="hljs-char">$ </span>make pycaffe</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li></ul>

c、添加~/caffe/python到$PYTHONPATH:

<code class="hljs bash has-numbering">$ <span class="hljs-built_in">sudo</span> gedit /etc/profile<span class="hljs-comment"># 末尾添加: export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH</span><span class="hljs-comment"># 用完整路径,不要用~</span>$ <span class="hljs-built_in">source</span> /etc/profile <span class="hljs-comment"># 使之生效</span></code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li></ul>

d、测试是否可以引用:

<code class="hljs python has-numbering">$ pythonPython <span class="hljs-number">2.7</span><span class="hljs-number">.6</span> (default, Jun <span class="hljs-number">22</span> <span class="hljs-number">2015</span>, <span class="hljs-number">17</span>:<span class="hljs-number">58</span>:<span class="hljs-number">13</span>) [GCC <span class="hljs-number">4.8</span><span class="hljs-number">.2</span>] on linux2Type <span class="hljs-string">"help"</span>, <span class="hljs-string">"copyright"</span>, <span class="hljs-string">"credits"</span> <span class="hljs-keyword">or</span> <span class="hljs-string">"license"</span> <span class="hljs-keyword">for</span> more information.<span class="hljs-prompt">>>> </span><span class="hljs-keyword">import</span> caffe<span class="hljs-prompt">>>> </span></code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>

配置matcaffe:

a、gcc降级(Ubuntu14.04自带的gcc版本是4.8,MATLAB2014a支持的最高版本为4.7x。因此,需要安装gcc4.7,并给gcc降级):
详见Ubuntu中update-alternatives命令(版本切换)

<code class="hljs brainfuck has-numbering"><span class="hljs-comment">sudo</span> <span class="hljs-comment">apt</span><span class="hljs-literal">-</span><span class="hljs-comment">get</span> <span class="hljs-comment">install</span> <span class="hljs-comment">gcc</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">7</span> <span class="hljs-comment">g</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">7</span> <span class="hljs-comment">g</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">7</span><span class="hljs-literal">-</span><span class="hljs-comment">multilib</span> <span class="hljs-comment">gcc</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">7</span><span class="hljs-literal">-</span><span class="hljs-comment">multilib</span><span class="hljs-comment">sudo</span> <span class="hljs-comment">update</span><span class="hljs-literal">-</span><span class="hljs-comment">alternatives</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">install</span> <span class="hljs-comment">/usr/bin/g</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span> <span class="hljs-comment">g</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span> <span class="hljs-comment">/usr/bin/g</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">7</span> <span class="hljs-comment">100</span> <span class="hljs-comment">sudo</span> <span class="hljs-comment">update</span><span class="hljs-literal">-</span><span class="hljs-comment">alternatives</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">install</span> <span class="hljs-comment">/usr/bin/g</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span> <span class="hljs-comment">g</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span> <span class="hljs-comment">/usr/bin/g</span><span class="hljs-literal">+</span><span class="hljs-literal">+</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">8</span> <span class="hljs-comment">50</span> <span class="hljs-comment">sudo</span> <span class="hljs-comment">update</span><span class="hljs-literal">-</span><span class="hljs-comment">alternatives</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">install</span> <span class="hljs-comment">/usr/bin/gcc</span> <span class="hljs-comment">gcc</span> <span class="hljs-comment">/usr/bin/gcc</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">7</span> <span class="hljs-comment">100</span> <span class="hljs-comment">sudo</span> <span class="hljs-comment">update</span><span class="hljs-literal">-</span><span class="hljs-comment">alternatives</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">install</span> <span class="hljs-comment">/usr/bin/gcc</span> <span class="hljs-comment">gcc</span> <span class="hljs-comment">/usr/bin/gcc</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">8</span> <span class="hljs-comment">50</span><span class="hljs-comment">sudo</span> <span class="hljs-comment">update</span><span class="hljs-literal">-</span><span class="hljs-comment">alternatives</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">install</span> <span class="hljs-comment">/usr/bin/cpp</span> <span class="hljs-comment">cpp</span><span class="hljs-literal">-</span><span class="hljs-comment">bin</span> <span class="hljs-comment">/usr/bin/cpp</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">7</span> <span class="hljs-comment">100</span><span class="hljs-comment">sudo</span> <span class="hljs-comment">update</span><span class="hljs-literal">-</span><span class="hljs-comment">alternatives</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">install</span> <span class="hljs-comment">/usr/bin/cpp</span> <span class="hljs-comment">cpp</span><span class="hljs-literal">-</span><span class="hljs-comment">bin</span> <span class="hljs-comment">/usr/bin/cpp</span><span class="hljs-literal">-</span><span class="hljs-comment">4</span><span class="hljs-string">.</span><span class="hljs-comment">8</span> <span class="hljs-comment">50</span><span class="hljs-comment">#</span> <span class="hljs-comment">验证gcc默认版本:</span><span class="hljs-comment">$</span> <span class="hljs-comment">gcc</span> <span class="hljs-literal">-</span><span class="hljs-comment">v</span> </code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li></ul>

b、编译:

<code class="hljs bash has-numbering">$ <span class="hljs-built_in">cd</span> ~/caffe<span class="hljs-comment"># 修改Makefile.config文件,MATLAB_DIR := /usr/local/MATLAB/R2014a</span>$ make matcaffe</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>

c、添加工作空间:

<code class="hljs ruby has-numbering"><span class="hljs-variable">$ </span>sudo matlab -nodesktop -nosplash>>> addpath ~<span class="hljs-regexp">/caffe/matlab</span>>>> savepath</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li></ul>

即可

0 0
原创粉丝点击