北方佬 發表於 2023-7-25 00:00:00

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 &gt; openlas &gt;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">&gt;&gt;&gt; </code><code class="bash functions">import</code> <code class="bash plain">caffe</code>
</div>
                                                                <div class="line number6 index5 alt1">
                                                                        <code class="bash plain">&gt;&gt;&gt;</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]
查看完整版本: Ubuntu14.04搭建Caffe(仅CPU)详解教程