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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章