之前在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
3. 安装 caffe
可直接使用Git下载caffe,如果没有Git,请先安装Git,我新装的Ubuntu16.04没有Git,所以先安装Git,执行如下语句:
sudo apt-get install git
安装结束后下载caffe,执行以下命令:
接下来一个一个安装第三方依赖库,这样后面发生错误时知道哪些地方出错
接着,安装 OpenCV,记得在caffe的目录下安装
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
4.执行编译
sudo make all -j8
sudo make test -j8
sudo make runtest -j8
(用make -j带一个参数,可以把项目在进行并行编译,比如在一台双核的机器上,完全可以用make -j4,让make最多允许4个编译命令同时执行,这样可以更有效的利用CPU资源。)
执行完runtest后,如果显示PASSED,则执行成功,如下图:
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