Caffe安装过程全记录
来源:互联网 发布:淘宝男质量好的店铺 编辑:程序博客网 时间:2024/04/28 16:35
由于项目需要,这周花了两天时间在实验室的云服务器上搭好了Caffe环境,期间走了一些弯路,也总结了一些经验教训。今天又从头开始重新搭了一遍,并且记录下了整个过程,形成了这篇安装笔记,留作备忘。
系统环境:
- 操作系统:CentOS 6.5 64位
- 显卡配置:无GPU
主要参考文档:
- 官方安装文档 http://caffe.berkeleyvision.org/installation.html
- 官方依赖安装指导 http://caffe.berkeleyvision.org/install_yum.html
- @s2392735818 的博客 http://blog.csdn.net/s2392735818/article/details/49796017
首先明确几个问题:
- 因为我们的服务器没有GPU,所以这篇笔记不涉及CUDA和cuDNN的安装;
- 配置了Caffe的Python接口Pycaffe,未配置MATLAB接口Matcaffe;
- BLAS选用OpenBLAS库,Pycaffe的依赖选用Anaconda来安装;
- 基本按照文档2中的顺序和方法来安装各项依赖,当yum软件库中的版本不满足要求时则采取源码编译安装的方式,并调整了个别依赖的安装次序;
- 按照文档3的说法,各依赖均需安装在/usr/local目录下,否则Caffe编译时会提示找不到相应的库(大多数依赖的默认安装路径就在/usr/local,但是有个别除外,需要特别注意;另外,我是用root用户登录的所以不存在/usr目录写入权限的问题,如果用其他用户登录的话最好用
sudo
命令来安装)。
下面是具体的安装过程:
1. Protobuf
GitHub项目主页 https://github.com/google/protobuf/
我下载的版本是Protobuf 3.3.2(Pycaffe要求Protobuf版本>=2.5.0):
cd ~wget https://github.com/google/protobuf/archive/v3.3.2.tar.gz
解压:
tar -zxvf v3.3.2.tar.gzcd protobuf-3.3.2
编译之前需要先执行下面的脚本来生成configure文件:
./autogen.sh
然后就是正常的编译、安装:
./configuremakemake checksudo make install
默认的安装路径就在/usr/local,所以只要确保当前用户有写入权限就可以了,不需要特别指定安装路径;
安装完成后刷新动态库目录的缓存:
sudo ldconfig
测试是否安装成功:
protoc --version
如果回显 libprotoc 3.3.2
则表示安装成功。
注:这里编译的是protobuf的C++接口,由于编译Python接口所需的依赖较多,所以将其放在安装Anaconda之后。
2. LevelDB,Snappy
Pycaffe要求LevelDB版本>=0.191,yum软件库中的版本满足要求,所以这里采用Caffe官网给出的方法,直接用yum安装:
sudo yum install leveldb-devel snappy-devel
安装时的版本是LevelDB 1.7.0和Snappy 1.1.0;
安装的路径为/usr/include(包含目录)和/usr/lib64(库目录),这两个目录最后需要在Caffe的Makefile.config文件中配置。
3. OpenCV
这里使用GitHub上 @jayrambhia 写好的脚本来自动安装:
cd ~git clone https://github.com/jayrambhia/Install-OpenCV.gitcd Install-OpenCV/RedHatsudo ./opencv_latest.sh
安装时的版本是OpenCV 3.2.0(Caffe要求OpenCV版本>=2.4)。
安装的过程中在”– ICV: Downloading ippicv_linux_20151201.tgz…”这一步会卡很长时间,而且最后通常都会下载失败;
我在网上找到了这个包,上传了一份到这里 http://download.csdn.net/detail/u010391437/9880368 ;
把下载好的包上传到目录 ~/Install-OpenCV/RedHat/OpenCV/opencv-3.2.0/3rdparty/ippicv/downloads/linux-xxx/,重新执行 sudo ./opencv_latest.sh
即可完成安装。
如果自动脚本安装失败,可以仿照opencv_install.sh的代码手动安装。具体可参考 http://www.tuicool.com/articles/uiuA3e 这篇博客的第6步。
4. HDF5
后面的Anaconda会自动安装,这里可以先跳过这一步。
5. GLog,GFlags,LMDB
这三项依赖均采用Caffe官网给出的方式来安装:
GLog:
cd ~wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/google-glog/glog-0.3.3.tar.gztar zxvf glog-0.3.3.tar.gzcd glog-0.3.3./configuremake && sudo make install
GFlags:
cd ~wget https://github.com/schuhschuh/gflags/archive/master.zipunzip master.zipcd gflags-mastermkdir build && cd buildexport CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1make && sudo make install
LMDB:
cd ~git clone https://github.com/LMDB/lmdbcd lmdb/libraries/liblmdbmake && sudo make install
默认的安装路径均在/usr/local,不需要特别指定。
安装时的版本分别为GLog 0.3.3,GFlags 2.2.0,LMDB 0.9.21。
6. OpenBLAS
官网下载地址 http://www.openblas.net/
我下载的版本是OpenBLAS 0.2.19:
cd ~wget http://github.com/xianyi/OpenBLAS/archive/v0.2.19.tar.gz
解压:
tar -zxvf v0.2.19.tar.gzcd OpenBLAS-0.2.19
编译,安装:
makesudo make PREFIX=/usr/local install
由于OpenBLAS的默认安装路径是/opt/OpenBLAS,所以这里我们需要用 PREFIX
选项来指定安装路径,安装到/usr/local。
7. Anaconda
这个包提供了Pycaffe所需的多项依赖,包括Python、NumPy、pandas等,还提供了HDF5等其他的库。
官网下载地址 https://www.continuum.io/downloads
官网提供了两种版本:Anaconda2基于Python 2.7,Anaconda3基于Python 3.6。
我下载的版本是Anaconda2 4.4.0:
cd ~wget https://repo.continuum.io/archive/Anaconda2-4.4.0-Linux-x86_64.sh
下载后直接运行即可:
sudo bash Anaconda2-4.4.0-Linux-x86_64.sh
先让你阅读license,一路回车;
然后问你是否接受license,输入yes;
接下来输入安装路径,默认是 ~/anaconda2,我在这里安到了/usr/local/anaconda2;
最后问你要不要把安装路径加入用户环境变量PATH,输入yes,安装完成。
安装完成后还要继续做一步操作,把Anaconda的库目录添加到环境变量中:
打开当前用户的 .bashrc 文件:
vim ~/.bashrc
在末尾添加一行:
export LD_LIBRARY_PATH=your_anaconda_path/lib:/usr/local/lib:$LD_LIBRARY_PATH
用Anaconda的实际安装路径替换your_anaconda_path(我在这里填的是/usr/local/anaconda2);
保存,退出;
关闭当前终端,重新打开一个新的终端使环境变量生效。
这一步非常重要,后面运行Caffe的时候如果报错找不到libxxx.so文件,很可能就是由于没有添加库目录引起的。
8. Protobuf - Python接口
由于编译protobuf的Python接口所需的依赖Anaconda都会帮我们自动装好,所以把Python接口的编译放到Anaconda安装之后来做。
cd ~/protobuf-3.3.2/python python setup.py build python setup.py test python setup.py install
完成后进入Python命令行验证一下是否安装成功:
python>>> import google.protobuf
如果没有报错则说明protobuf的Python接口安装成功。
9. Boost
官网下载地址 http://www.boost.org/
我下载的版本是Boost 1.64.0(Caffe要求Boost版本>=1.55):
cd ~wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.gz
解压:
tar -zxvf boost_1_64_0.tar.gzcd boost_1_64_0
编译,安装:
./bootstrap.shsudo ./b2sudo ./b2 install
默认安装路径就在/usr/local,所以不需要特别指定。
10. Caffe
终于迎来了最后一步的重头戏。
GitHub项目主页 https://github.com/BVLC/caffe
下载:
cd ~git clone https://github.com/BVLC/caffe.git
修改配置文件:
cd caffecp Makefile.config.example Makefile.configvim Makefile.config
需要修改的地方有以下几个:
- 取消注释CPU_ONLY选项(line 8);
- 取消注释OPENCV_VERSION选项(line 21);
- 注释掉GPU设置的相关选项(CUDA_DIR - line 28; CUDA_ARCH - line 36 ~ 44; TEST_GPUID - line 117);
- 将BLAS选项改为open(line 50);
- 取消注释BLAS_INCLUDE和BLAS_LIB选项,并修改为OpenBLAS相应的安装路径(line 54, 55)(我这里分别改为/usr/local/include和/usr/local/lib);
- 注释掉PYTHON_INCLUDE选项(line 68, 69);
- 取消注释ANACONDA_HOME和PYTHON_INCLUDE选项(line 72 ~ 75),并将ANACONDA_HOME选项修改为Anaconda的安装路径(我这里改为/usr/local/anaconda2);
- PYTHON_LIB(注释掉line 83,取消注释line 84);
- 添加额外的包含目录INCLUDE_DIRS和库目录LIBRARY_DIRS(line 94, 95)(我这里分别添加了/usr/include和/usr/lib64);
(修改后的文件在这里 http://download.csdn.net/detail/u010391437/9882095 可以直接下载使用)
修改后保存退出,执行编译:
make allmake testmake runtest
PS1. 如果是多核CPU的话可以用 -jn
选项启动n个线程同时编译,加快编译速度,比如4核CPU:
make all -j4
PS2. 每次编译失败后需要先清理编译文件:
make clean
再重新开始编译。
最后编译Python接口:
make pycaffe
至此Caffe环境全部安装完成。
11. Pycaffe编译和运行过程中的报错及解决方案
我在编译和运行Pycaffe的过程中出现过几个问题,这里记录一下,供参考。
11.1 编译Pycaffe时报错 “cannot find -lboost_python”
报错信息如下:
CXX/LD -o python/caffe/_caffe.so python/caffe/_caffe.cpp/usr/bin/ld: cannot find -lboost_pythoncollect2: ld returned 1 exit statusmake: *** [python/caffe/_caffe.so] Error 1
报错的原因是boost.python模块没有被正确安装。
解决方案:
重新编译boost.python模块:
cd ~/boost_1_64_0./bootstrap.sh --with-libraries=pythonsudo ./b2sudo ./b2 install
之后再重新编译Pycaffe即可。
我猜测boost.python模块的编译失败可能和Python版本有关,因为第一次编译boost时用的是系统的Python,版本2.6;重新编译boost.python时系统Python由Anaconda提供,版本是2.7。所以在新版安装笔记中我把boost放到Anaconda安装之后才编译,就没有再出现这个问题了。
11.2 调用Pycaffe时报错 “No module named google.protobuf.internal”
报错信息如下:
Traceback (most recent call last): File "/root/caffe/python/classify_mike.py", line 14, in <module> import caffe File "/root/caffe/python/caffe/__init__.py", line 1, in <module> from .pycaffe import Net, SGDSolver, NesterovSolver, AdaGradSolver, RMSPropSolver, AdaDeltaSolver, AdamSolver, NCCL, Timer File "/root/caffe/python/caffe/pycaffe.py", line 15, in <module> import caffe.io File "/root/caffe/python/caffe/io.py", line 8, in <module> from caffe.proto import caffe_pb2 File "/root/caffe/python/caffe/proto/caffe_pb2.py", line 6, in <module> from google.protobuf.internal import enum_type_wrapperImportError: No module named google.protobuf.internal
报错的原因是protobuf的Python接口没有被正确安装。
解决方案一:
按照第8步重新编译protobuf的Python接口。
解决方案二:
@wuzuyu365 在 http://blog.csdn.net/wuzuyu365/article/details/52431062 这篇博客中给出了另一种解决方案:
在Anaconda中安装protobuf:
cd /usr/localsudo chmod 777 -R anaconda2conda install protobuf
编译安装成功后便可正常使用Pycaffe。
12. 最后的一点唠叨
囿于水平有限,文章难免有所疏漏,如果发现哪些地方表述有误,请指出来大家可以一起讨论。
另外这篇文章是我一点一点码出来的,所以未经允许,请勿转载,谢谢配合!
- Caffe安装过程全记录
- Caffe编译安装全记录
- rar安装过程全记录
- Red5的安装过程全记录
- 源码编译mysql 5.5+ 安装过程全记录
- 【内存数据库】Timesten安装过程全记录
- caffe 分类全记录
- caffe安装过程记载
- Caffe-SSD 安装过程
- 安装caffe过程记录
- caffe安装过程详解
- Caffe安装过程记录
- Caffe安装笔记二:Caffe安装过程
- [Caffe]史上最全的caffe安装过程
- [Caffe]史上最全的caffe安装过程
- 项目过程全记录
- caffe安装过程中的问题
- TK1 Caffe 安装过程记录
- MNIST例子构建tensorflow Android应用
- 新闻客户端
- Java exception throws && throw 的区别
- NAT技术与代理服务器调研
- 登录OneDrive
- Caffe安装过程全记录
- asp.net前台调用后台方法(或asp.net中Repeater控件绑定后台方法)
- FFmpeg的rtmp
- 算法作业HW20 202. Happy Number
- 嵌入式系统概述
- Zabbix碰见mysql5.7怪现象
- Android启动过程深入解析
- IDENTITY属性的使用详解
- 多态、抽象类