Linux16.04下配置Caffe,Pycaffe,matcaffe

技術挖掘者發表於2017-04-12

Caffe – 一個基於C++編寫的深度學習框架,由於其高效性和便捷性廣泛應用於CV領域。它是由賈楊清在業餘時間編寫的一個框架,現在是由伯特利爾大學(BVLC)來進行維護和更新。

由於它出現的比較早,剛開始得到了廣泛的應用,你會在許多學術論文中看到它的身影,當然由於它的高效性,它也成為許多公司和研究所的利器,可以用來進行“模型的部署”。儘管如今出現了許多強大的深度學習框架,但是caffe仍然很受歡迎,尤其是在CV領域。

在你使用了caffe之後,你會發現它非常簡單,你需要做的就是“裝載並轉換資料型別”“構建自己的Model””編寫相應的配置檔案” “編寫相應的部署檔案”“編寫一些額外的C++程式碼”。最常用到的應該是.prototxt檔案,它常被用來構建Model,配置模型引數,部署模型。

它提供了python和matlab介面。你可以藉助方便的python和matlab來加速你的開發過程。pycaffe是對應的python介面,裡面封裝了一些類介面,你只需要簡單的呼叫或者編寫一些新的類介面來擴充套件你自己的應用。matcaffe是matlab介面,它的介面和pycaffe很像,詳細的內容可以看我後面更新的一些部落格。

caffe有cpu版本和gpu版本,你需要根據自己的情況,選擇合適的版本,本文介紹的是gpu版本。
好了,既然你知道了caffe,並且知道了它有什麼用,下面就開始的配置過程吧。(知其然,更要知其所以然!)

1. 首先你需要下載caffe,你可以選擇如下的幾種方式
方式一:使用Git下載
git clone https://github.com/BVLC/caffe
方式二:本機下載--即使用瀏覽器進行下載
方式三:使用wget
wget https://github.com/BVLC/caffe
2. 解壓當前的檔案;
unzip xxx.zip
3. 重新命名為caffe
mv xxx xxxx    # 即將檔案xxx重新命名為xxxx
4. 安裝依賴包:
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
sudo apt-get install libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
5. 因為make指令只能make Makefile.config檔案,而Makefile.config.example是caffe給出的makefile例子,因此,首先將Makefile.config.example的內容複製到Makefile.config
sudo cp Makefile.config.example Makefile.config 
6. 開啟並修改配置檔案
sudo gedit Makefile.config 或者 sudo vim Makefile.config
#開啟Makefile.config檔案 根據個人情況修改檔案:
a.若使用cudnn,則將
#USE_CUDNN := 1
修改成: 
USE_CUDNN := 1
b.若使用的opencv版本是3的,則將
#OPENCV_VERSION := 3 
修改為: 
OPENCV_VERSION := 3
c.若要使用python來編寫layer,則將       
#WITH_PYTHON_LAYER := 1  
修改為 WITH_PYTHON_LAYER := 1 
d.重要的一項 :
將 # Whatever else you find you need goes here. 下面的
1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 
修改為:
1 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
2 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial       
這是因為Ubuntu16.04的檔案包含位置發生了變化,尤其是需要用到的hdf5的位置,所以需要更改這一路徑.
注:我的建議改變a/b/c/d四項,具體的原因你會在後續的使用中體會到。
7. 修改makefile檔案
開啟makefile檔案,做如下修改:將
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替換為:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
8. 編輯/usr/local/cuda/include/host_config.h
將
#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改為
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
9. 編譯
sudo make all -j8 或者 sudo make all -j4
#-j根據自己電腦配置決定

注:
1)這個過程會花費很長的時間,你需要耐心等待。
2)這個過程可能會出現許多錯誤,典型錯誤及其解決方案如下所示:
問題一:"fatal error: hdf5.h: 沒有那個檔案或目錄"
解決方案:
step1:在Makefile.config檔案的第85行,新增/usr/include/hdf5/serial/ 到 INCLUDE_DIRS,也就是把下面第一行程式碼改為第二行程式碼。將:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
替換為:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
stept2:在Makefile檔案的第173行,把 hdf5_hl 和hdf5修改為hdf5_serial_hl 和 hdf5_serial,也就是把下面第一行程式碼改為第二行程式碼。
將:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改為:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial

問題二:"libcudnn.so.5 cannot open shared object file: No such file or directory"
解決方案:將一些檔案複製到/usr/local/lib資料夾下,注意自己CUDA的版本號!
1. sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
2. sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
3. sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
4. sudo cp /usr/local/cuda-8.0/lib64/libcudnn.so.5 /usr/local/lib/libcudnn.so.5 && sudo ldconfig
10. 執行測試
sudo make runtest
如果出現如下結果,表示安裝成功。結果如下圖所示:

runtest結果

11. 測試caffe是否安裝成功 -- 這一步相當重要!!!
1)將終端定位到Caffe根目錄
cd ~/caffe

2)下載MNIST資料庫並解壓縮
./data/mnist/get_mnist.sh

3)將其轉換成Lmdb資料庫格式
./examples/mnist/create_mnist.sh

4)訓練網路
./examples/mnist/train_lenet.sh
訓練的時候可以看到損失與精度數值,如下圖所示:

mnist執行結果

執行的結果是:0.9914 相當高的精確度!!!
注:這期間會產生大量的輸出,包括訓練網路和測試網路的架構,引數資訊,以及迭代次數,損失率loss和學習率lr,準確率accuracy等,你可以通過觀察這些引數來檢視訓練結果。
12. 配置Pycaffe
1)安裝一些依賴包
sudo apt-get install python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython
注:這裡面安裝了很多有用的工具,你會在後續的開發中使用到它。
2)sudo apt-get install protobuf-c-compiler protobuf-compiler

3) 編譯依賴庫
cd ~/caffe     # 切換到你的caffe安裝路徑
make pycaffe   # 編譯pycaffe

4) 新增檔案路徑
sudo gedit /etc/profile 或者 sudo vim /etc/profile
在檔案末尾新增:export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH
source /etc/profile   # 使得配置生效

5)測試pycaffe
python
import caffe
如果沒有報錯,表明Pycaffe安裝成功!
13. 安裝Matlab
1) 下載matlab,內容包括以下三部分:其中Crack為啟用的補丁包,dvd1.iso和dvd2.iso為分包壓縮的MATLAB映象檔案;

matlab

```
點選這個http://www.linuxidc.com/Linux/2013-12/93755.htm 連結關注 Linux公社官方微信,關注後回覆數字142290。即可得到網友的分享密碼。
如果取消關注Linux公社公眾號,即使再次關注,也將無法提供本服務!
連結:http://pan.baidu.com/s/1kUD7G9p  密碼:獲得見上面的方法,地址失效請在下面留言。

2) 將iso映象檔案掛載到linux中,執行下面命令:
sudo mkdir /media/matlab  
sudo mount -o loop [path]R2016b_glnxa64_dvd1.iso  /media/matlab
# 這裡 的[path]是指iso映象的目錄位置

3) 開始安裝MATLAB,先回到主目錄
cd ~
4) sudo /media/matlab/install
5)接下來就是安裝引導的影象介面了

這裡寫圖片描述
選擇Use a File Installtion Key,點選Next;

這裡寫圖片描述
選擇Yes,點選Next;

這裡寫圖片描述
選擇I have the File Installation Key for my license,然後輸入Installation Key,Installation Key可以在Crack資料夾下的readme.txt中找到;
點選Next;

再選擇安裝自己所需的功能,

然後就是半個小時到一個小時左右的等待了……

進度條到90%左右的時候,會有一個請彈出DVD1,插入DVD2的提示,因為是分了兩個iso壓縮的,按照提示彈出dvd1.iso(只需右鍵圖示選擇彈出即可),把dvd2.iso同前面一樣mount上去就可以了,安裝會自動繼續;

安裝完成之後,在MATLAB的安裝目錄下建一個“licenses”資料夾,將Crack資料夾中的license_standalone.lic拷貝進去(可能需要在終端sudo cp進行拷貝),同時,將Crack/R2016b/bin資料夾覆蓋安裝目錄下的bin資料夾;

6)安裝Matlab支援包
sudo apt-get install matlab-support
注:中間可選使用這款軟體的使用者以及重新命名GCC庫,我把當前使用者作為了使用這款產品的使用者

7) 啟用Matlab
sudo matlab
開啟Matlab,此時會提示進行啟用,使用本地檔案啟用,選擇“licenses”資料夾中剛剛拷貝的license_standalone.lic即可;

8)使用
matlab 或者  sudo matlab

注:參考連結:Linux安裝matlab

14. 配置matcaffe
1) cd ~/caffe
2) make all matcaffe
3) 將matcaffe加入Matlab搜尋路徑。在Caffe的根目錄啟動Matlab,在Matlab命令列中輸入以下指令
Addpath ./matlab
4) make mattest   # 測試是否編譯成功
注:在此之前需要你安裝好Matlab。
注:
1)由於能力有限難免出現一些錯誤,還望大家多多包涵。
2)如果有任何問題,請發訊息給我,大家一起學習,一起進步。
3)由於本部落格是我自己原創,如果需要轉載,請聯絡我,我會及時回覆大家。謝謝。
郵箱:1575262785@qq.com

1
1

相關文章