深度學習的框架很多,有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,一共有三種可以選擇 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,可直接跳到編譯步驟。
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