菜鸟跑通caffe(一)

这篇博客详细记录了一位新手如何配置Caffe环境,包括设置CUDA和cuDNN的软链接步骤。
摘要由CSDN通过智能技术生成
      最近想跑3DOP算法,用于道路场景下物体检测,其中需要搭建caffe,顺道将caffe搭建起来。 由于实验室原因,cuda只能使用6.5,ubuntu14.04版本,已经安装好:
      ----OpenCV2.4.9
      ----Boost 1.60
      ----protobuf 2.5.0
      ----gcc 2.8.x
      ----python 2.7和3.x
参考:
一、配置
                      http://valser.org/thread-774-1-1.html

菜鸟跑通caffe(一) - 小影 - 影 的博客 菜鸟跑通caffe(一) - 小影 - 影 的博客 菜鸟跑通caffe(一) - 小影 - 影 的博客
   
二、cuDNN安装
       CUDA6.5本身对caffe没有直接什么影响,但是影响cuDNN,cuDNN 又影响caffe 。只有cuDNN v1 v2才支持CUDA6.5.
菜鸟跑通caffe(一) - 小影 - 影 的博客
  The current version is cuDNN v3; older versions are supported in older Caffe.
菜鸟跑通caffe(一) - 小影 - 影 的博客 菜鸟跑通caffe(一) - 小影 - 影 的博客 菜鸟跑通caffe(一) - 小影 - 影 的博客 菜鸟跑通caffe(一) - 小影 - 影 的博客
    决定采用cuDNN v2,需要先注册,才能下载。地址: https://developer.nvidia.com/rdp/cudnn-archive  菜鸟跑通caffe(一) - 小影 - 影 的博客
安装完成后进行以下设置:
菜鸟跑通caffe(一) - 小影 - 影 的博客

$ sudo ln -sf /usr/local/cuda/lib64/libcudnn.so.6.5.48 /usr/local/cuda/lib64/libcudnn.so.6.5

$ sudo ln -sf /usr/local/cuda/lib64/libcudnn.so.6.5 /usr/local/cuda/lib64/libcudnn.so

注意,一定要有sudo ln命令
  菜鸟跑通caffe(一) - 小影 - 影 的博客
菜鸟跑通caffe(一) - 小影 - 影 的博客
 
 
菜鸟跑通caffe(一) - 小影 - 影 的博客
 
  参考:
三、Caffe下载
The current version is cuDNN v3; older versions are supported in older Caffe.
         下载older Caffe是问题,鉴于我对github了解不深,所以找了个现成的老版本,呵呵,多亏英伟达啊,良心好企业!下载caffe-0.12。
菜鸟跑通caffe(一) - 小影 - 影 的博客
 这里的export是为了后续编译的,在MakeFile文件中有CAFFE_HOME。可以写到~/.bashrc
注意:
总结下/etc/profile,/etc/bash.bashrc以及 /etc/ld.so.conf的区别和联系
(1)/etc/profile和/etc/bash.bashrc是一样的,里面写bin所在路径,PATH就写在这里,和windows下的环境变量path是一样的,/etc/profile里面就是调用/etc/bash.bashrc,所以bin路径写在哪里差别不大,注意写完后要使用source命令使其生效。
(2)/etc/ld.so.conf是lib所在路径,里面添加非标准库路径,标准的是在ld.so中,添加修改后需要调用ldconfig命令使其生效。
(3)最后说一下~/.bashrc,这个bash shell里面写的临时bin或lib或者宏定义,当没有root权限或者说本人测试时候使用,比如LD_LIBRARYZ_PATH经常放到里面,从而避免每次执行时候必须export。
菜鸟跑通caffe(一) - 小影 - 影 的博客
 四、下载其他依赖包
菜鸟跑通caffe(一) - 小影 - 影 的博客
  菜鸟跑通caffe(一) - 小影 - 影 的博客
  
其中,BLAS,我下载的是TLAS。
其中,python的两种环境搭建方法,我都试过,完全可行
菜鸟跑通caffe(一) - 小影 - 影 的博客
 
菜鸟跑通caffe(一) - 小影 - 影 的博客
 Anaconda的下载地址: https://www.continuum.io/downloads
菜鸟跑通caffe(一) - 小影 - 影 的博客

至于matlab下载,使用R2014b,由于是从另一位童鞋那copy,所以大家只能自行下载了。
菜鸟跑通caffe(一) - 小影 - 影 的博客
 

 最后,我的环境设置为:

cat ~/.bashrc

菜鸟跑通caffe(一) - 小影 - 影 的博客

 
菜鸟跑通caffe(一) - 小影 - 影 的博客
菜鸟跑通caffe(一) - 小影 - 影 的博客
 注意,ld.so.confi中要添加/home/ql/anaconda2/lib,这样就同时避免找不到hd5,同时不要将词句写到.bashrc中,LD_LIBRARY_PATH不能添加此句,否则将导致gedit等出现以下错误:
菜鸟跑通caffe(一) - 小影 - 影 的博客
 
 注意,由于我是编译成功后才发的截图,所以PYTHONPATH被改变了,实际应该是$CAFFE_HOME/python,二者等价:
菜鸟跑通caffe(一) - 小影 - 影 的博客
 注意,不是 $CAFFE_HOME/build/python
菜鸟跑通caffe(一) - 小影 - 影 的博客
 
另外,也没有LD_LIBRARY_PATH这一条,这也是在编译完caffe后加的。
另外,注意到caffe/build/lib和caffe/distribute/lib是等价的。
菜鸟跑通caffe(一) - 小影 - 影 的博客
 
先预览下编译完caffe后,执行make distribute后的效果:
菜鸟跑通caffe(一) - 小影 - 影 的博客
 
五、编译Caffe
菜鸟跑通caffe(一) - 小影 - 影 的博客 菜鸟跑通caffe(一) - 小影 - 影 的博客
  
菜鸟跑通caffe(一) - 小影 - 影 的博客
 首先说一下cmake方法:
菜鸟跑通caffe(一) - 小影 - 影 的博客 菜鸟跑通caffe(一) - 小影 - 影 的博客
  注意,matlab务必选择off,反正我是on没有编译成功。。。
重点说下make方法,这种是妥妥的成功的。
重点修改:
CUDA_DIR:=/usr/local/cuda
BLAS:=atlas
BLAS_INCLUDE := /usr/include
BLAS_LIB := /usr/lib
MATLAB_DIR := /usr/local/MATLAB/R2014b
ANACONDA_HOME := $(HOME)/anaconda2
PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
$(ANACONDA_HOME)/include/python2.7 \
$(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
PYTHON_LIB := $(ANACONDA_HOME)/lib
菜鸟跑通caffe(一) - 小影 - 影 的博客 菜鸟跑通caffe(一) - 小影 - 影 的博客
  环境设置如下:
菜鸟跑通caffe(一) - 小影 - 影 的博客


菜鸟跑通caffe(一) - 小影 - 影 的博客
 

 
1)如果出现错误:
/usr/local/include/boost/config/suffix.hpp(510): error: identifier "__float128" is undefined
                            
2)如果出现错误:
error while loading shared libraries: libcudart.so.6.5:  cannot open shared object file: No such file or directory
则检查是否没有把libcudart.so.6.5所在目录/usr/local/cuda/lib64放到环境配置里:
菜鸟跑通caffe(一) - 小影 - 影 的博客
类似的,libhdf5_hl.so.10需要添加其所在路径/home/ql/anaconda2/lib到/etc/ld.so.conf中
菜鸟跑通caffe(一) - 小影 - 影 的博客
特别指出,如果提示google.protobuf找不到,确认下anaconda2下是否有google文件夹,一般默认安装在系统默认python2.7目录下,此时需要将其复制到/home/ql/anaconda2/lib/python2.7/sit-packages下:
菜鸟跑通caffe(一) - 小影 - 影 的博客
 
菜鸟跑通caffe(一) - 小影 - 影 的博客
 
3)如果出现错误:
/usr/local/cuda/lib64/libcudnn.so.6.5 is not a symbolic link
则,检查cuDNN安装中的cp后,没有使用ln建立软连接。

$ sudo ln -sf /usr/local/cuda/lib64/libcudnn.so.6.5.48 /usr/local/cuda/lib64/libcudnn.so.6.5

$ sudo ln -sf /usr/local/cuda/lib64/libcudnn.so.6.5 /usr/local/cuda/lib64/libcudnn.so

编译完成后,
 依次执行:
mkdir build
cd build
cmake ..
make all
make install
make runtest

make pycaffe

make matcaffe

make distribute

设置环境变量:

export PYTHONPATH=${HOME}/caffe/distribute/python:$PYTHONPATH

export LD_LIBRARY_PATH=${HOME}/caffe/build/lib:$LD_LIBRARY_PATH


菜鸟跑通caffe(一) - 小影 - 影 的博客

六、验证测试

make runtest 2>&1|tee make.log


菜鸟跑通caffe(一) - 小影 - 影 的博客


关于python接口测试:进入python,import caffe,只要不提示错误,就说明成功,一切ok,否则检查路径从头再来,甚至需要重新编译python。这一步容易提示google.protobuff找不到,参考前文解决。还可能提示numpy版本不对,那只能重新编译了,这可能是由于你在编译好python接口后,更新了numpy或者更改了默认的numpy路径(尤其是当安装了python2.7又安装了anaconda2)。

菜鸟跑通caffe(一) - 小影 - 影 的博客

 

关于matlab接口测试:编译好之后得到mex文件,这是类似于C++工程的dll文件,是matlab的动态链接库(姑且这么理解),进入matlab2014b,cd到caffe/matlab/caffe,输入im = imread(‘peppers.png‘);[scores, maxlabel] = matcaffe_demo(im,1);

如下图所示就是成功。

菜鸟跑通caffe(一) - 小影 - 影 的博客

菜鸟跑通caffe(一) - 小影 - 影 的博客

 

 

参考:
cd $CAFFE_ROOT
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.
cd $CAFFE_ROOT
./examples/mnist/train_lenet.sh
参考:
菜鸟跑通caffe(一) - 小影 - 影 的博客

 成功!

 


 

 


 


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值