深度学习的框架很多,有Theano、keras、DeepLearnToolBox等等,caffe主要注重模块化和运行速度,是目前引用率较高的一个工具箱。
本次环境的搭建是在ubuntu14.04下搭建。参照官方的安指南Ubuntu Installation
这一步主要是安装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
首先安装 BLAS,一共有三种可以选择 ATLAS、 OpenBLAS 和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,可直接跳到编译步骤。
没必要提前安装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
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 // 开始运行测试例子
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接口无误。
参照网上和官方的教程安装多次,主要有这几点需要注意,系统最好是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