ubuntu 14.04下安装caffe

深度学习的框架很多,有Theano、keras、DeepLearnToolBox等等,caffe主要注重模块化和运行速度,是目前引用率较高的一个工具箱。
本次环境的搭建是在ubuntu14.04下搭建。参照官方的安指南Ubuntu Installation

1. 安装依赖库

这一步主要是安装opencv库、google的protobuf、boost、等等。这些都只需要一步搞定:

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev

需要注意的是两条命令最好分开执行,两条复制进console可能出现boost没有安装。
因为自己电脑显卡很差,所以就没有安装cuda。安装cuda部分建议参考1

2. 安装 BLAS、Imdb等

首先安装 BLAS,一共有三种可以选择 ATLASOpenBLAS MKL,主要的差别在对cpu的调用上,要获得更好的cpu表现就安装OpenBlas或Intel公司的MKL。

a. 安装 ATLAS

sudo apt-get install libatlas-base-dev

b. 安装 OpenBLAS

sudo apt-get install libopenblas-dev

c. 安装MKL

这个是Intel自己开发的工具,是收费的,学生用户可以注册下载,安装包也很大,建议按照参考1的安装方法
上面三个选一个安装即可,没必要都安装。
安装剩下的依赖库:

sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

如果你不需要python接口的caffe和cuda,可直接跳到编译步骤。

3. 安装cuda和cudann

没必要提前安装nvidia显卡驱动,cuda里面已经带了,可以在安装CUDA的时候勾选安装驱动选项即可

a.  禁用自带的显卡驱动:
    vim /etc/modprobe.d/blacklist.conf
    输入以下内容:
    blacklist nouveau
    options nouveau modeset=0
    -------------------------------------------------
    更新内核启动参数:
    sudo update-initramfs -u        //Ubuntu
    sudo dracut --force             //Centos

b.  关闭图形界面
    其中Ubuntu可以参考[1](http://blog.csdn.net/a1311543690/article/details/48861237)
    centos 7图形和命令提示符界面切换:
    systemctl set-default multi-user.target //命令提示符
    systemctl set-default graphical.target  //图形界面
c.  重启开始安装cuda(这里我们选择的是.run file进行安装的)
    查看gcc时候安装
    gcc --version
    如果没安装需要手动安装之!   
    sudo ./cuda_7.5.18_linux.run  --no-opengl-libs (不要安装opengl这会覆盖cpu中集成显卡的opengl库导致装完进不了图形界面)
    首先driver是肯定要安装的,tookit也是要安装的,sample可选,建议安装下,路径的除了sample都用默认的即/usr/local/cuda    

安装中按ctrl+c可以跳过长长的阅读协议部分。安装完毕,设置开启图形界面重启ok

d.  安装cudNN( 这里需要注意,最新版本的可能会不兼容caffe,本文采用cudnn4)
    下载x64位的cudnn压缩包。
    tar xvzf cudnn-7.0-linux-x64-v4.0-prod.tgz
    sudo cp cuda/include/cudnn.h /usr/local/cuda/include
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
    拷贝完这些文件后还需要注意,重新生成链接文件并赋予对应的权限。
    cd /usr/local/cuda/lib64
    rm -rf libcudnn.so libcudnn.so.4   //删除原来的链接
    chmod u=rwx,g=rx,o=rx libcudnn.so.4.0.7 //对目标文件放开权限
    ln -s libcudnn.so.4.0.7 libcudnn.so.4  //设置链接
    ln -s libcudnn.so.4.0.7 libcudnn.so   //同上
e.  配置cuda的环境变量:
    PATH变量:
    vim /etc/profile
    输入下面内容:
    PATH=/usr/local/cuda/bin:$PATH
    export PATH
    更新环境变量:
    source /etc/profile
    lib变量:
    cd /etc/ld.so.conf.d/
    vim cuda.conf
    输入下面内容:
    /usr/local/cuda/lib64
    更新环境变量: 
    sudo ldconfig

4. 编译caffe并测试

a.下载caffe

首先进入你希望caffe放置的位置然后:

git clone https://github.com/BVLC/caffe.git

b.对 Makefile 文件修改

cp Makefile.config.example Makefile.config
vim Makefile.config

修改的部分主要有:

1. 去掉use cudann 前面的 `#`注释
2. 因为是安装的openblas,所以还需要修改 BLAS := open
3. 需要matlab接口的,先安装matlab,详见[[1]](http://www.cnblogs.com/platero/p/3993877.html)然后修改Makefile.config里面的 MATLAB_DIR := /usr/local 为 MATLAB_DIR := /usr/local/MATLAB/R2014b (对照改成你MATLAB安装的位置)

c.开始编译和测试

cd caffe-folder
make all -j8 // 8 代表的是线程数,可以加快编译速度
make matcaffe //编译matlab接口
#开始测试,该步骤可选需要时间教长,对使用无影响,仅用于测试安装是否成功。
make test -j8 //编译测试需要的文件
make runtest  // 开始运行测试例子

5. 安装python接口

caffe具有python调用的接口,如果需要还得安装一些第三方库,有两种方式可以选择:一是利用linux系统自带的python,然后手动安装一些第三方的包,二是安装Anaconda python。下面分别介绍这两种方法。

a. 利用系统自带的python,优点是安装完成后所有用户可以用,缺点很多第三方的库python包需要自己安装,操作不当还有可能破坏系统的python环境。

首先安装 python-dev、pip

sudo apt-get install python-dev python-pip git

安装一些python包,具体需要安装的见“ caffe/python/requirements.txt ” 文件内容如下:

Cython>=0.19.2
numpy>=1.7.1
scipy>=0.13.2
scikit-image>=0.9.3
matplotlib>=1.3.1
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0

由于大陆网络的原因,python默认的pypi源速度超级慢,在安装这些扩展包之前我们先修改下pip命令默认的软件源,因为一般pip安装时要管理员权限的,所以先切换到root在root下执行以下操作,在别的用户目录下进行下面操作pip修改源不会生效!

cd
mkdir ~/.pip
vim ~/.pip/pip.conf 

输入以下内容,其实就是添加默认为清华的源。

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn

上面仅仅是修改了pip install安装时候的默认源,观察发现在使用setup.py的时候依然是使用的pypi.python.org,这里需要修改distutils的配置。同上切换到root。

vim ~/.pydistutils.cfg
输入:
[easy_install]
index_url = https://pypi.tuna.tsinghua.edu.cn/simple

这样以后安装的时候都是通过清华的镜像源,速度比较快。

下面利用命令安装这些库。

cd ~/caffe/python/
for req in $(cat requirements.txt); do sudo pip install $req -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn; done

中间可能有些包安装失败,比如我安装过程就出现过:
distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse(‘google-apputils’)

这个时候通过手动安装即可:

sudo pip install google-apputils

还需要把caffe下的python路径添加到到path中,这样好处就是不需要先进入caffe/python目录下才能调用caffe的python接口。
进入用户目录 打开 “.bashrc ”文件 在文件最后添加:

#set the caffe PYTHONPATH
export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH

注意上面的路径换成自己的。

b. 利用Anaconda python,优点是每个用户可以安装且这个python完全独立于系统的python,而且带的包也很多。

首先去Anaconda官网下载linux版本的,选择sh执行文件。
比如我下载的是Anaconda2-2.4.1-Linux-x86_64.sh
chmod 755 Anaconda2-2.4.1-Linux-x86_64.sh
./Anaconda2-2.4.1-Linux-x86_64.sh
默认是安装在/home/xxx目录下,并且添加path变量到.bashrc文件中
比如我的是下面这样的
export PATH="/opt/anaconda2/bin:$PATH"
如果希望使用系统自带的python,删除掉上述的记录即可。

虽然 Anaconda python包括了很多的库,但是也有一些包没有安装,和方法1类似

cd ~/caffe/python/
for req in $(cat requirements.txt); do sudo pip install $req -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn; done

至此python接口需要的库已经安装完毕!

如果是用的系统自带的python不用修改Make.config中的python设置,如果用的是Anaconda python,则需要修改:

#PYTHON_INCLUDE := /usr/include/python2.7 \
            #/usr/lib64/python2.7/site-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
 ANACONDA_HOME := $(HOME)/anaconda   // 修改成anaconda python安装的目录如/home/anaconda2
 PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
              $(ANACONDA_HOME)/include/python2.7 \
              $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \

# We need to be able to find libpythonX.X.so or .dylib.
#PYTHON_LIB := /usr/lib
 PYTHON_LIB := $(ANACONDA_HOME)/lib

b. 开始编译编译python接口并添加到path路径

cd caffe-folder
make pycaffe
#测试是否成功
cd caffe-folder/python
python
import caffe
#如果上述命令未报错,说明成功
#添加caffe/python 到python path变量
vim ~/.bashrc
#set the caffe PYTHONPATH
export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH

!如果是采用的Anaconda python,切记编译python接口在最后执行。
!如果是系统自带的python在make pycaffe可能出现python/caffe/_caffe.hpp:8:31: fatal error: numpy/arrayobject.h: No such file or directory
这是因为64位的python 库的存放路径问题。

查找arrayobject.h所在的目录:

sudo find / -name arrayobject.h

然后修改Makefile.config

PYTHON_INCLUDE := /usr/include/python2.7 \
            /usr/lib64/python2.7/site-packages/numpy   //这里修改成找到的路径!

再测试make pycaffe发现可以。

输入 python 进入python命令模式下输入import caffe 没有错误说明python接口无误。

6. 总结

参照网上和官方的教程安装多次,主要有这几点需要注意,系统最好是Ubutun14.04 这样安装最简单。还有在安装python的时候可以安装第三方的 Anaconda。

参考:

[1] http://www.cnblogs.com/platero/p/3993877.html

[2] http://blog.csdn.net/a1311543690/article/details/48878843

[3] http://caffe.berkeleyvision.org/installation.html#compilation

[4] http://ju.outofmemory.cn/entry/108631

[5] http://blog.csdn.net/sloanqin/article/details/49152351

[6] http://www.bubuko.com/infodetail-785289.html

[7] http://blog.csdn.net/deeplearninglc007/article/details/40086503

[8] http://www.zhihu.com/question/30091667/answer/47951446

你可能感兴趣的:(深度学习,环境配置)