隨着機器學習中神經網絡技術的發展,衍生出深度學習技術,前段google公司風頭一時無兩的“阿爾法狗”就是深度學習的產物。而Caffe就是一款優秀的易於學習的深度學習框架。Caffe本身由c++寫成,支持Java和Python接口。而本篇文章就是Caffe的入門篇之一,平臺的搭建。
首先,推薦在linux下進行Caffe的學習。本文使用的是Ubuntu的14.04版本。由於使用GPU加速所需的環境比較難配置(需要GPU驅動支持,配置CUDA)本人踩了許多坑,故寫此博客記錄下最終的完整安裝過程。
1.依賴包的安裝
Ubuntu14.04中在terminal中輸入
$ sudo apt-get install git
$ 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 python-dev(可選)
$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
2.安裝anacoda2
推薦使用anacoda2,python2.7的版本
3.下載caffe源碼
第一步成功下載所需依賴包後,到git下載Caffe源代碼
$ cd ~
$ git clone https://github.com/bvlc/caffe.git
4.構建make配置文件
下載成功後進入caffe根目錄,複製一份Makefile.config.example並命名爲Makefile.config
$ cd caffe
$ sudo cp Makefile.config.example Makefile.config
5 修改默認的config配置
$ sudo gedit Makefile.config
若使用anacoda安裝的python,需要修改默認的config配置文件
如上圖,將默認的PYTHON_INCLUDE
和PYTHON_LIB
路徑修改爲對應的anacoda路徑
6. 安裝CUDA
注意:一定要使用.run文件安裝,deb文件安裝會有未知問題,導致黑屏等問題
- 首先拉黑nouveau,ubuntu自帶的nouveau驅動會影響cuda安裝
鍵入命令
$ sudo gedit blacklist-nouveau.conf
- 在文件中輸入以下內容並保存
blacklist nouveau
options nouveau modeset=0
- 然後更新配置
$ sudo update-initramfs -u
- 按alt+ctrl+f1,進入符號終端,關閉lightdm圖形化界面
$ sudo service lightdm stop
- 然後開始正式安裝CUDA
$ sudo sh cuda_8.0.61_375.26_linux.run
注意:安裝位置推薦默認,切記看清楚提示,除了openGL,其它都安裝。除了openGL,其它都安裝。除了openGL,其它都安裝。
- 然後啓動圖形化界面
$ sudo service lightdm start
如果能順利登陸進入桌面,並在終端輸入nvidia-smi
,如果成功顯示本機顯卡信息,說明安裝成功。
7. 編譯測試
在Caffe根目錄,輸入
make -j4
其中,參數 -j 後可以添加數字,爲啓動多核編譯,速度更快,這裏默認爲1。看到如圖所示,則爲編譯成功。
編譯成功後的文件存放於~/caffe/build目錄下,並且會在根目錄生成.build_release文件夾。
依賴包簡介
剛纔過程中通過apt安裝了多個依賴包,這裏對這些依賴包的作用進行簡介。
ProtoBuff
ProtoBuff是由google公司開發的一種可以實現內存與非易失存儲介質交換的協議接口,Caffe源碼中大量使用ProtoBuffer進行權值和模型參數燈載體。例如,有人喜歡使用TXT存儲參數,有人喜歡用BIN存儲參數,一個項目中不一樣的參數管理會帶來很多問題。ProtoBuffer工具很好地解決了這個問題,用戶只要建立統一的參數描述文件(proto),然後利用protoc編譯就能讓協議細節等關鍵部分代碼自動生成。caffe中使用ProtoBuff進行序列化。
Boost
著名的C++準標準庫,功能強大,這個不用過多介紹。
glog & gflag
google公司的庫,gflag提供命令行參數解析的作用,glog庫是用於記錄應用程序日誌的實用庫,提供基於C++標準輸入輸出流形式的接口。
libatlas
提供卷積神經網絡中用到的矩陣,向量的計算。
HDF5
HDF是能高效存儲和分發科學數據的新型數據格式。它可以存儲不同類型的圖像和數碼數據的文件,並且可以在不同類型的機器上傳輸,同時還有能統一處理這種文件格式的函數庫。Caffe訓練模型可以選擇保存爲HDF5格式或默認的ProtoBuffer格式。
OpenCV
世界上最流行的開源計算機視覺庫,包含大量圖像處理函數。
LMDB和LEVELDB
提供數據管理,將Caffe中不同的原始數據,如jpeg,二進制數據轉換爲統一的key-value存儲。大部分請況下LMDB已經滿足使用,但是爲了與舊版本兼容,仍然引入例LEVELDB。
Snappy
壓縮和解壓縮的C++庫。
至此,Caffe搭建完畢,下篇文章介紹Cafee運行手寫體識別例程。