Caffe安装记录

最近一段时间在深度学习框架caffe,看了它官方的文档和一部分代码,结合以前一些基本的神经网络知识,算是有了个大概的认识。在自己本机上ubuntu14.04上很容易配置好caffe的依赖环境,下载了一个训练好的ImageNet分类模型,写了几个python小脚本跑起来做图像分类。目前跑了10W多张,从所分类别的结果看,还不错,但要进一步验证准确性,就需要投入一些人力去辨别了,而辨别前,需要搭建一定的环境进行开发,于是,开始了折腾之旅。

按照caffe官方的installation指南,caffe依赖于一下几个包:

·             CUDA library version 6.5 (recommended), 6.0, 5.5, or 5.0 and the latestdriver version for CUDA 6 or 319.* for CUDA 5 (and NOT 331.*)

·             BLAS (provided via ATLAS, MKL, or OpenBLAS).

·             OpenCV.

·             Boost (>= 1.55, although only 1.55 and 1.56 are tested)

·             glog, gflags, protobuf, leveldb, snappy, hdf5, lmdb

·             Python 2.7, numpy (>= 1.7), boost-provided boost.python

·             MATLAB with the mex compiler.

但其实CUDAMATLAB不是必须的,caffe支持仅用CPU处理。于是就需要安装剩下的几个包。

公司服务器的源里有BLAS包,但也折腾了一下。

OpenCV 2.4.9

先是安装了源里的OpenCV,但看了下头文件,应该是2.0版本之前的,而caffe中用的C++的接口Mat,所以只能自己编译了。

编着编着,Error跳了出来:

No rule to make target `/lib64/libz.so', needed by `lib/libopencv_core.so.2.4.9'

搜了下,是要安装zlib

然后又是cblas.h找不到,安装blas-devel包。

源里没有gflags-develglog-devel lmdb-devel这几个包,手动安装如下:

# glog

wgethttps://google-glog.googlecode.com/files/glog-0.3.3.tar.gz

tar zxvf glog-0.3.3.tar.gz

cd glog-0.3.3

./configure

make && make install

# gflags

wgethttps://github.com/schuhschuh/gflags/archive/master.zip

unzip master.zip

cd gflags-master

mkdir build && cd build

export CXXFLAGS="-fPIC" && cmake.. && make VERBOSE=1

make && make install

# lmdb

git clone git://gitorious.org/mdb/mdb.git

cd mdb/libraries/liblmdb

make && make install

其中gflags的时候,cmake版本太低,又手动编译了cmake 2.8。。

接下来就是编译大头了:OpenCV 2.4.9。这个库确实大了些,大概有2.5G左右,编译过程中几次因为空间不足而编译停止,时间基本都花在这上面了。不得不看下编译选项,先把能关的都关了,实在不行就不编译一些包,毕竟也只是用到少数的一部分核心函数而已。下面是编译OpenCV时遇到的问题:

error: unable to find a register to spill inclass 'GENERAL_REGS'

stackoverflow上的这个方法可以解决。

[ 92%] Generating pyopencv_generated_funcs.h, pyopencv_generated_func_tab.h, pyopencv_generated_types.h, pyopencv_generated_type_reg.h, pyopencv_generated_const_reg.h

  File "/usr/home/wanglei23/build/opencv-2.4.9/modules/python/src2/gen2.py", line 815

    cname1=("cv::Algorithm" if classinfo.isalgorithm elseclassinfo.cname)))

                             ^

SyntaxError: invalid syntax

make[2]: *** [modules/python/pyopencv_generated_funcs.h] Error 1

make[1]: *** [modules/python/CMakeFiles/opencv_python.dir/all] Error 2

make: *** [all] Error 2

想想应该是Python版本问题,默认版本是2.4.3,升级到2.6,在编译时指定Python的一些信息(感谢Stackoverflow),另外为了节省空间,关闭了一些选项,于是生成Makefile的命令就成了:

env CC=/usr/bin/gcc44 CXX=/usr/bin/g++44 cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/ -D BUILD_PYTHON_SUPPORT=ON -D PYTHON_EXECUTABLE=/usr/bin/python2.6 -D PYTHON_INCLUDE=/usr/include/python2.6/ -D PYTHON_LIBRARY=/usr/lib64/libpython2.6.so -D PYTHON_PACKAGES_PATH=/usr/lib/python2.6/site-packages/ -D PYTHON_NUMPY_INCLUDE_DIR=/usr/lib/python2.6/site-packages/numpy/core/include/ -D BUILD_TESTS=NO -D BUILD_PERF_TESTS=NO ..

折腾了好久,编译到92%时就开始担心会不会再次出现空间不足的问题,我的目录已经都清空了!!如果还有问题,要么找老大多分点空间,要么精简OpenCV,好在最后终于跳出了100%,舒了一口气~~

依赖解决了,最后也就是要编译caffe了。下面是遇到的问题:

./include/caffe/util/io.hpp:9:21: error:hdf5_hl.h: No such file or directory
src/caffe/layers/hdf5_data_layer.cpp:14:21: error: hdf5_hl.h: No such file ordirectory
src/caffe/layers/hdf5_output_layer.cpp:4:21: error: hdf5_hl.h: No such file ordirectory

其间遇到个问题:hdf5.hhdf5_hl.h,一个头文件(忘了是哪个了。。)包含了这两个,但include文件夹只有hdf5.h,看了下hdf5_hl.h就是hdf5.h的精简版,果断注释之,编译安装通过,后续应该不会有什么影响。

有点想不通,为啥会加两个这样的头文件呢?

之后又是boost库版本过低,升级吧,唉。。。

好不容易将caffe编译好,跑了几个自带的测试,终于没问题了,但编译Python接口时又出现了问题,编译是能通过的,但import就出错segmentation fault,查了好久原因,原来是用pip install numpy竟然装到了/usr/lib64目录下的Python中,而/usr/lib下的Python中也有numpy,于是冲突,想了想就把pip安装的卸载了,编译好后终于没问题了,但又陷入了其他依赖库的问题中,egg pain啊!caffe自带的python接口依赖于scikit-image,而scikit-image又依赖于比较高版本的numpy,我是真不想折腾numpy了,于是就先这样吧,至少C/C++编译出来也测试通过了,先用着。

看了下scikit-imagecaffepython接口的作用,貌似就是读入图像并转换成float类型,还用到个resize,看能不能修改下,用Image库来完成,如果可以到时可以提交个PR~~

今天和同事聊这个库,他说网上流传这个库难装,我确实体会到了,在自己的机子上倒没什么问题,但到了比较陈旧的服务器上,问题就来了,简单总结下,就是在服务器上安装时,先把基本的软件升级,比如gccpythoncmake什么的,然后安装比较基本的库,如boostOpenCV等其他的一些依赖,最后在编译caffe,编译时尤其要注意Makefile.conf里面的一些配置,改成自己实际安装的位置,我是绕来绕去把自己都绕晕了。。。caffe难装归难装,贵在好用啊,模块结构清晰,只需要写个深度学习的结构配置文件,就可以用了,还是非常方便的~~继续好好研究研究,不仅是深度学习框架方面的,代码规范方面的也可以多多学习~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值