Ubuntu14.04搭建Caffe(仅CPU)详解教程
<p>首先吐槽一下本屌的笔记本,我现在的笔记本还是大一时候买的Dell INSPIRON 4010,没有Nvidia,没有Nvidia,没有Nvidia,没有Nvidia,重要的事情说四遍,呵呵。</p>
<p>
操作系统: Ubuntu 14.04</p>
<p>
是否使用PYTHON API: 是, 目标是安装后CAFFE能作为PYTHON MODULE来使用</p>
<p>
硬件: 低端笔记本, 只使用CPU模式</p>
<p>
<strong>1.安装依赖</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_289279">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">apt-get </code><code class="bash functions">install</code> <code class="bash plain">libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">sudo</code> <code class="bash plain">apt-get </code><code class="bash functions">install</code> <code class="bash plain">--no-</code><code class="bash functions">install</code><code class="bash plain">-recommends libboost-all-dev</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">apt-get </code><code class="bash functions">install</code> <code class="bash plain">libgflags-dev libgoogle-glog-dev liblmdb-dev</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash functions">sudo</code> <code class="bash plain">apt-get </code><code class="bash functions">install</code> <code class="bash plain">libatlas-base-de</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
PYTHON需要2.7版本,这是操作系统本身已经安装好的. 输入python2.7 --version 会显示具体的版本号说明安装了.</p>
<p>
但是还需要sudo apt-get install python-dev</p>
<p>
2.下载Caffe</p>
<p>
使用Git直接下载Caffe非常简单,或者去https://github.com/BVLC/caffe下载。由于我习惯去github上找代码,所以就直接去下载的源码。</p>
<p>
下载完成后,会在家目录下的下载里找到caffe-master.zip,用unzip命令解压到家目录下,然后重命名为caffe.</p>
<p>
<strong>3.编译Caffe</strong></p>
<p>
(1)切换到Caffe所在目录</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_707783">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">cp</code> <code class="bash plain">Makefile.config.example Makefile.config</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
(2)修改配置文件Makefile.config</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_709770">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">CPU_ONLY := 1</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
配置一些引用文件(增加部分主要是解决新版本下,HDF5的路径问题)</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_896796">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">INCLUDE_DIRS := $(PYTHON_INCLUDE) </code><code class="bash plain">/usr/local/include</code> <code class="bash plain">/usr/lib/x86_64-linux-gnu/hdf5/serial</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">LIBRARY_DIRS := $(PYTHON_LIB) </code><code class="bash plain">/usr/local/lib</code> <code class="bash plain">/usr/lib</code> <code class="bash plain">/usr/lib/x86_64-linux-gnu/hdf5/serial</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">BLAS := atlas</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
计算能力 mkl > openlas >atlas</p>
<p>
(3)编译 Caffe</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_570889">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">make</code> <code class="bash plain">all </code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">make</code> <code class="bash functions">test</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash functions">make</code> <code class="bash plain">runtest</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
另外, 这个make默认是用CPU单核运算,如果想要快一点, 比如我想使用四核, 在make后面加上-j4标签。</p>
<p>
如果上面4行某一行报错之后想要重试,建议先make clean再重新开始。</p>
<p>
<strong>4.编译Python接口</strong></p>
<p>
Caffe拥有python\C++\shell接口,在Caffe使用python特别方便,在实例中都有接口的说明。</p>
<p>
确保pip已经安装</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_128890">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">apt-get </code><code class="bash functions">install</code> <code class="bash plain">python-pip</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
执行安装依赖</p>
<p>
在caffe根目录的python文件夹下,有一个requirements.txt的清单文件,上面列出了需要的依赖库,按照这个清单安装就可以了。</p>
<p>
在安装scipy库的时候,需要fortran编译器(gfortran),如果没有这个编译器就会报错,因此,我们可以先安装一下。</p>
<p>
首先回到caffe的根目录,然后执行安装代码:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_210792">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">cd</code> <code class="bash plain">~</code><code class="bash plain">/caffe</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash functions">sudo</code> <code class="bash plain">apt-get </code><code class="bash functions">install</code> <code class="bash plain">gfortran</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash keyword">for</code> <code class="bash plain">req </code><code class="bash keyword">in</code> <code class="bash plain">$(</code><code class="bash functions">cat</code> <code class="bash plain">requirements.txt); </code><code class="bash keyword">do</code> <code class="bash plain">pip </code><code class="bash functions">install</code> <code class="bash plain">$req; </code><code class="bash keyword">done</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
安装完成以后,我们可以执行:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_492651">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash functions">sudo</code> <code class="bash plain">pip </code><code class="bash functions">install</code> <code class="bash plain">-r python</code><code class="bash plain">/requirements</code><code class="bash plain">.txt</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
就会看到,安装成功的,都会显示Requirement already satisfied, 没有安装成功的,会继续安装。</p>
<p>
编译python接口</p>
<p>
make pycaffe<br>
--结果显示ALL TESTS PASSED就安装好了!</p>
<p>
运行python结构</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_567065">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
<div class="line number4 index3 alt1">
4</div>
<div class="line number5 index4 alt2">
5</div>
<div class="line number6 index5 alt1">
6</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">$ python2.7</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">Python 2.7.12 (default, Jul 1 2016, 15:12:24) </code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain"> on linux2</code>
</div>
<div class="line number4 index3 alt1">
<code class="bash plain">Type </code><code class="bash string">"help"</code><code class="bash plain">, </code><code class="bash string">"copyright"</code><code class="bash plain">, </code><code class="bash string">"credits"</code> <code class="bash plain">or </code><code class="bash string">"license"</code> <code class="bash keyword">for</code> <code class="bash functions">more</code> <code class="bash plain">information.</code>
</div>
<div class="line number5 index4 alt2">
<code class="bash plain">>>> </code><code class="bash functions">import</code> <code class="bash plain">caffe</code>
</div>
<div class="line number6 index5 alt1">
<code class="bash plain">>>></code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
如果没有报错,说明caffe安装全部完成!</p>
<p>
<strong>5.在Mnist运行Lenet</strong></p>
<p>
获取数据源</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_828801">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">.</code><code class="bash plain">/data/mnist/get_mnist</code><code class="bash plain">.sh</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">.</code><code class="bash plain">/examples/mnist/create_mnist</code><code class="bash plain">.sh</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
因为是CPU运行,所以修改在examples文件下的Mnist下的lenet_solver.prototxt中的solver_mode:CPU</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_739508">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">solver_mode: CPU</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
训练模型</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_968978">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">.</code><code class="bash plain">/examples/mnist/train_lenet</code><code class="bash plain">.sh</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
整个训练时间会持续很久,这是因为本屌的笔记本还是i3处理器,且没有启用GPU,并且默认是单核,所以本屌足足等了3个小时</p>
<p>
以上所述是小编给大家介绍的Ubuntu14.04搭建Caffe(仅CPU)详解教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!</p>
<p>
原文链接:http://www.cnblogs.com/xuanxufeng/p/6016945.html</p>
頁:
[1]