centos7搭建caffe环境

由于要跑R-C3D,要求caffe环境,然后这两天都在研究怎么装,目前是测试通过了,python里import还不清楚好不好使,先暂时把流程和问题记录一下,后面遇到坑再说。

首先系统已有的环境是python3.6+cuda8.0,当时装cuda的时候也是跟着网上教程一通装,导致cudnn.h这个文件不在/usr/local/include这个路径下(由于路径非常的混乱,致使编译经常失败,需要先找到文件所在路径,更改Makefile.config;而且暂时还不清楚这样是否会对后续的运行代码有影响)

开始安装:
先是一堆依赖,依赖需要安装到/usr/local下面的目录,否则编译时会提示找不到相关库文件。
sudo yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel
sudo yum install gflags-devel glog-devel lmdb-devel
sudo yum install openblas-devel

在网上找的两个caffe都无法编译通过,反倒是R-C3D项目里的caffe3d文件夹可以编译,所以用的这个:
git clone --recursive git@github.com:VisionLearningGroup/R-C3D.git

遇到的第一个问题:protobuf版本问题
“.build_release/src/caffe/proto/caffe.pb.h:22:35: fatal error: google/protobuf/arena.h: 没有那个文件或目录”
网上说是anaconda中的高版本的protobuf覆盖了系统自带的protobuf,原理类似python版本切换。
解决办法:
一、直接替换:
1.  $ gedit ~/.bashrc  打开.bashrc文件,将添加的anaconda路径暂时注释掉。

2. $ source ~/.bashrc 使更改的环境变量生效

更改完后重新打开一个终端,

使用 $ protoc --version  命令可查看当前protoc版本

使用$ which protoc 命令可查看protoc的安装位置

如果版本结果显示  libprotoc 2.6.1   且 安装位置结果显示 /usr/bin/protoc 就可以正常编译caffe了

二、如果不行的话,可能要先下载protobuf:
首先,下载“protobuf-2.5.0.tar.gz” 
cd protobuf-2.5.0
./configure --prefix=/home/用户名/local_install/    #修改默认安装位置
make
make install 

这样就安装到“home/name/local_install”了。 
为了能在命令行中运行我们将该目录安装在path中

export PATH=~/local_install/bin/:$PATH

同时,也可以将其写入“~/.bashrc”中,以实现建立会话时自动匹配环境

然后在caffe文件的“Makefile.config”中设置本地环境 (这个Makefile.config的设置很有讲究,后面还会有提到)
在INCLUDE_DIRS 后边加上 ~/local_install/include 
在LIBRARY_DIRS 后边加上 ~/local_install/bin

上述两种办法应该能解决问题一,然后到caffe目录中开始编译:

cp Makefile.config.example Makefile.config
gedit Makefile.config

设置Makefile文件  具体每个设置的意义可以百度,这里我遇到了问题二:
好像是找不到cudnn的文件(就是因为路径混乱的缘故),然后解决办法是:

1.切换到压缩包所在位置,解压 
$ tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz(没装cudnn需要这一步,我的电脑里之前有)

2.复制相关文件到cuda特定目录下(我的cuda安装目录为/usr/local/cuda/)

$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include 
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64

3.修改文件权限 
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

4.使用 (这一步就是修改Makefile文件)
这个时候编译caffe可以将Makefile.config中的USE_CUDNN不注释,从而使用cuDNN加速 
# cuDNN acceleration switch (uncomment to build with cuDNN). 
USE_CUDNN := 1

最后编译:
make clean #如果是第一次编译,则不需要执行这一步骤
make all -j16 #-j16表示开16个线程并行编译,可以大大减少编译时间,但是线程数不要超过cpu核数
make test -j16
make runtest

完成后,编译pycaffe:这里遇到两个问题——
"python/caffe/_caffe.cpp:10:31: 致命错误:numpy/arrayobject.h:没有那个文件或目录"
"python/caffe/_caffe.cpp:1:52: 致命错误:Python.h:没有那个文件或目录"
归结起来  还是Makefile文件里的问题,对应的numpy 和python路径没有设置正确,最后我设置的python路径是系统自带的python2.7 在/usr/bin里面  而numpy是在anaconda里python3.6中装的,编译是通过了,但不知道这样做会不会有问题。

#编译
make pycaffe -j16
#添加环境变量
vim ~/.bashrc
将export PYTHONPATH=/home/wanghh/caffe/python:$PYTHONPATH添加到文件中。
source ~/.bashrc 使更改生效。
这样,在其他地方打开python,也可以import caffe了。


测试是否安装成功:
进入caffe目录
sh data/mnist/get_mnist.sh
sh examples/mnist/create_mnist.sh
sh examples/mnist/train_lenet.sh


参考:
https://www.cnblogs.com/qjoanven/p/7813957.html
https://blog.csdn.net/weixin_37251044/article/details/79817773
https://blog.csdn.net/qq_33144323/article/details/81259985
https://blog.csdn.net/yaoqiwaimai/article/details/78594154
https://www.jianshu.com/p/1de5f5809f2c
https://blog.csdn.net/kongxx/article/details/79019624



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值