新手在Ubuntu16.04安装caffe(CPU only)并 配置Anaconda2步骤

时间:2021-09-05 06:29:19

之前在windows10下安装caffe(only CPU),看了很多网上的教程,但后面折腾了很多,怎么都配置环境,在VS2013下都编译不成功,最后在老师建议下,安装双系统windows10和Ubuntu16.04,在Ubuntu16.04下安装caffe(only CPU)和anaconda2,自己也是折腾了很久,很多都是无用功,所以把自己的安装步骤和经验教训都记下来。

强调一定要细心和有耐心,一心急就有可能就漏点一些重要的东西,这都是白花花的时间

参看教程:

Ubuntu 16.04无GPU版caffe安装简记: 

http://www.linuxdiyf.com/linux/22442.html

Ubuntu16.04 + Anaconda2 + caffe (only cpu): https://www.jianshu.com/p/a71866734d51

      http://www.cnblogs.com/denny402/p/5067265.html

      http://blog.csdn.net/u013989576/article/details/56677749

      http://blog.csdn.net/u010193446/article/details/53259294

     http://www.linuxidc.com/Linux/2016-09/135025.htm



1.  Ubuntu16.04的安装(网上有具体安装教程,可以直接百度)

网上有很多安装教程,先在windows的磁盘管理中腾出100GB(这是我的情况),然后准备一个u盘,根据网上教程制作Ubuntu启动盘,再在boost中设置U盘启动优先,注意在传统模式下启动还是在UEFI模式下,这个是很关键的,具体原因网上说得很清楚了,自己百度。

然后进入安装,推荐语言选择英文,如果你选择英文,一定要看清每个选项后再下一步,这个很重要(我安装很多次都是因为都是一路next下去,导致是在UEFI模式下安装,一直失败,)。网上有具体的安装过程,我是分四个磁盘,/boost是400M(是存放引导启动器的), / 是20G(是存放系统的盘),Swap 是16G(是放缓存,网上说为自己电脑内存的2倍),其余的空间都给 /home 用来存放各种文档东西的。然后下面系统启动器选择/boost对应的那个区号,然后就差不多了。

2.  Anaconda2的安装

下载地址:https://www.continuum.io/downloads

下载Linux版本,根据Python版本选择相应的。

(将下载的安装包放到某目录下,然后执行)

sudo bash home/downloads/Anaconda2-4.2.0-Linux-x86_64.sh(你自己的存放地址和下载的版本号)

读完license(一直回车),回复个 yes

输入安装地址/usr/local/anaconda2

安装路径放到/home/xx/.bashrc, 回复yes

路径添加到path:  source~/.bashrc

运行python,发现已经安装成功anaconda

输入:python

新手在Ubuntu16.04安装caffe(CPU only)并 配置Anaconda2步骤


3.  安装 caffe

可直接使用Git下载caffe,如果没有Git,请先安装Git,我新装的Ubuntu16.04没有Git,所以先安装Git,执行如下语句:

sudo apt-get install git

安装结束后下载caffe,执行以下命令:

新手在Ubuntu16.04安装caffe(CPU only)并 配置Anaconda2步骤

接下来一个一个安装第三方依赖库,这样后面发生错误时知道哪些地方出错

新手在Ubuntu16.04安装caffe(CPU only)并 配置Anaconda2步骤

如果有些依赖库在安装时出现 failed to fetch some archives, maybe run apt-get update or try with–fix-missing.说明你的网络状况不是很好,换个网络试试(我当初是这样解决的)

接着,安装 OpenCV,记得在caffe的目录下安装

新手在Ubuntu16.04安装caffe(CPU only)并 配置Anaconda2步骤

4.  编译caffe

1.  进入caffe目录:cd ~/caffe

2. 生成Makefile.config文件:cp Makefile.config.exampleMakefile.config

3.(GPU不需要考虑这一步)修改Makefile.config文件中的配置: 

     sudo gedit Makefile.config


3.1 去掉CPU_ONLY前面的#号

3.2 配置引用文件路径(主要是HDF5的路径问题:hdf5.h libhdf5.so的路径)

INCLUDE_DIRS:= $(PYTHON_INCLUDE)/usr/local/include/usr/include/hdf5/serie-l

 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib/usr/lib/i386-linux-gnu/hdf5/serial

( 注意:可以利用sudo find / -name 文件名来查找某个文件的具体位置)

 然后接下来可以大概参看这:我直接截取图片,详细可以直接看链接点击打开链接

https://www.jianshu.com/p/a71866734d51

新手在Ubuntu16.04安装caffe(CPU only)并 配置Anaconda2步骤

4.执行编译


 
  sudo make all  -j8 

    sudo make test  -j8

    sudo make runtest  -j8


(用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。)

    执行完runtest后,如果显示PASSED,则执行成功,如下图:

新手在Ubuntu16.04安装caffe(CPU only)并 配置Anaconda2步骤

注意:如果执行结果失败,则需要执行语句sudo make clean后,解决掉问题,重新编译。

5.  我遇到的问题

在接下来的make runtest 这一步我又遇到了找不到文件的错误,错误代码如下。

.build_release/tools/caffe:error whileloading shared libraries: libhdf5_hl.so.100: cannot open sharedobject file: Nosuch file or directory

      注意这里报错的库文件(libhdf5_hl.so.100)在不同时期的caffe上可能有所差别,要根据自己报错的库文件做修改。Anaconda自带的库能找到相同的库文件libhdf5_hl.so.100的,这是一个软链指向了libhdf5_hl.so.10.0.1这个文件。因此参考这个issues后,可以在 /usr/lib 及/usr/lib/x86_64-linux-gnu 分别放了一个软链指向了Anaconda的库中libhdf5_hl.so.10.0.1。


sudo cp-s$HOME/anaconda2/lib/libhdf5_hl.so.100.0.1 /usr/lib/libhdf5_hl.so.100

sudo cp -s$HOME/anaconda2/lib/libhdf5_hl.so.100.0.1/usr/lib/x86_64-linux-gnu/libhdf5_hl.so.100


再次尝试运行 make runtest 这次发现错误变成了:

.build_release/tools/caffe:error whileloading shared libraries: libhdf5.so.101: cannot open shared objectfile: Nosuch file or directory

如法炮制,找到原库文件是libhdf5.so.101.0.0:


sudo cp –s $HOME/anaconda2/lib/libhdf5.so.101.0.0 /usr/lib/libhdf5.so.101

sudo cp –s $HOME/anaconda2/lib/libhdf5.so.101.0.0/usr/lib/x86_64-linux-gnu/libhdf5.so.101


这次再运行 make runtest,成功了!


6.  MNIST训练

之前将Caffe的环境搭好了,现在用MNIST这个数据集进行测试,继续在caffe下进行操作。


./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh


经过上述操作./examples/mnist/路径下会有mnist_test_lmdb和mnist_train_lmdb两个文件夹,分别是测试和训练数据。

在最终训练之前需要修改./examples/mnist/lenet_solver.prototxt最后一句话为,

solver_mode: CPU。你直接打开caffe文件夹里面的examples文件夹下mnist文件夹下的lenet_solver.prototxt文件,双击打开进行修改。
这样保证个训练过程在CPU上进行,最后执行训练命令,


./examples/mnist/train_lenet.sh