Ubuntu14.04下深度學習框架Caffe的搭建

  隨着機器學習中神經網絡技術的發展,衍生出深度學習技術,前段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_INCLUDEPYTHON_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運行手寫體識別例程。

發佈了29 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章