我的機器沒有nvidia的顯卡,因此只能使用CPU模式,網上很多是GPU模式下的配置,對於CPU模式往往一句話帶過,對於初學者來說,往往會摸不着頭腦。因為每個人的機器多少會有差異,因此跟着教程做的時候通過會遇到一些意外的問題,不用怕,google之,真心感覺google的強大,很多問題一搜便有結果。
建議大家在配置之前,認真閱讀官網的教程,講得很到位,會讓你少走許多彎路。
安裝Caffe前需要安裝一些庫:
一、安裝build-essentials
安裝開發所需要的一些基本包
sudo apt-get install build-essential
二、CUDA安裝
這一步包括三個部分:
- nvidia驅動
- cuda-toolkit
- cuda-samples
在CPU模式下僅需要安裝cuda-toolkit,接下來介紹如何安裝cuda-toolkit
2.1 下載CUDA6.5
解壓下載得到的.run文件,得到三個文件,我們只安裝第一個,即cuda-toolkit包
-
- CUDA安裝包: cuda-linux64-rel-6.5.14-18749181.run
- NVIDIA驅動: NVIDIA-Linux-x86_64-340.29.run
- SAMPLE包: cuda-samples-linux-6.5.14-18745345.run
cuda6.5.run --extract=extract_path
通過下列命令增加.run文件的執行權限
chmod +x *.run
2.2 安裝cuda
安裝CUDA需要在純命令行下進行(非常重要),按 ctrl+alt+F1進入tty,登錄后執行如下命令
sudo service lightdm stop
或者
sudo stop lightdm
執行下列命令安裝CUDA,按照提示一步步安裝,其中會讓你選擇安裝目錄,接受協議等,為方便選擇默認路徑,直接回車即可。
sudo ./cuda-linux64-rel-6.5.14-18749181.run
2.3 添加環境變量
安裝完成后在/etc/profile中添加環境變量,在文件最后添加
PATH=/usr/local/cuda-6.5/bin:$PATH export PATH
保存后,執行下列命令,使環境變量立即生效
source /etc/profile
2.4 添加lib庫路徑
在/etc/ld.so.conf.d/目錄下增加文件cuda.conf,內容如下
/usr/local/cuda-6.5/lib64
執行下列命令立刻生效
sudo ldconfig
注: 如果你沒有使用默認路徑,將上面的路徑換成自己相應的路徑即可
2.5 退出命令行
sudo service lightdm start
或者
sudo start lightdm
三、安裝BLAS
BLAS有三個版本:ATLAS, MKL, OpenBLAS。MKL是收費的,也用student版本,不過需要使用你所在單位的郵箱來申請, 其它兩種是免費的,這里使用OpenBlas。聽說MKL效率上比其它兩種好很多。。
- 去項目主頁下載安裝包
- 編譯安裝 (具體參考:http://my.oschina.net/u/274748/blog/101897)
-
- make
make PREFIX=/your/path install
3. 添加lib庫路徑: 在/etc/ld.so.conf.d/目錄下增加文件OpenBlas.conf,內容如下
/usr/local/OpenBlas/lib
4. 執行下列命令立刻生效
sudo ldconfig
四、安裝Opencv
- 從github上下載安裝腳本:https://github.com/jayrambhia/Install-OpenCV
- 進行Ubuntu/2.4目錄,對所有腳本增加可執行權限
sudo chmod +x *.sh
安裝最新版本(當前為2.4.9),有人自己寫了2.4.20版本的,有興趣的可以去下:http://pan.baidu.com/s/1m3hQu
3. 安裝依賴項
sudo ./dependencies.sh
4. 安裝opencv 2.4.9
sudo sh ./opencv2_4_9.sh
這塊兒時間比較長,保證網絡連接,需要聯網下載安裝包,大概三十分鍾,記不清了。。
注意:中途可能會報錯:
opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51): error: a storage class is not allowed in an explicit specialization
解決方案: 下載NCVPixelOperations.hpp ,替換掉Ubuntu/2.4/Opencv/opencv2.4.9/moduels/gpu/src/nvidia/core目錄中的NCPixelOperations.hpp文件,重新執行安裝命令
sudo sh ./opencv2_4_9.sh
五、安裝其它依賴項
Ubuntu14.04用戶執行
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
其它版本參考官網說明
六、安裝Caffe所需要的Python 環境
選擇一個適合你的IDE運行環境,作者用的是Spyder,因為它內置了 iPython 環境,Caffe有不少的程序是基於 iPython 環境完成的。安裝方法很簡單,直接在Ubuntu軟件中心搜索“spyder”即可安裝。
七、安裝Caffe所需要的matlab環境
- 下載:自己從網上找資源吧,百度雲盤中有比較多的資源。注意:caffe只支持matlab12b以上的版本
- 安裝具體流程參考:http://blog.csdn.net/aimatfuture/article/details/8058156
八、編譯Caffe
- 下載:https://github.com/BVLC/caffe
- 進入caffe目錄,復制一份Makefile.config
cp Makefile.config.example Makefile.config
- 根據自己環境修改相應內容
1 取消 CPU_ONLY := 1前面的注釋
2. cuda 安裝路徑改為自己的路徑 : CUDA_DIR := /usr/local/cuda-6.5
3. 配置路徑:實現caffe對python和matlab接口的支持
PYTHON_INCLUDE := /usr/include/python2.7 \ /usr/lib/python2.7/dist-packages/numpy/core/include PYTHON_LIB := /usr/local/lib INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib MATLAB_DIR := /usr/local/MATLAB/R2014a
4. BLAS := open (根據自己選擇的版本,分別設為atlas, mkl, open
- 編譯caffe
sudo make all -j2
sudo make test
sudo make runtest
在一這步可能會碰到問題:undefined refrence to ' cudaGetDevice '
解決方法:
1. 修改Makefile.config, 修改CUSTOM_CXX := g++-4.6
2. 執行命令 sudo apt-get install gcc-4.6 g++-4.6 gcc-4.6-multilib g++-4.6-multilib
3. 修改以下兩個文件
vi src/caffe/common.cpp
vi tools/caffe.cpp
使用google替代gflags
4. 重新make
如果在make的過程中提示:“error while loading shared libraries: xxx.so.x”,可能是cuda及OpenBLAS環境變量沒有設置正確,檢查相應步驟,可參考:http://blog.csdn.net/sahusoft/article/details/7388617
九、編譯matlab wrapper
make matcaffe
十、編譯python wrapper
make pycaffe
十一、使用MNIST數據集進行測試
這部分可參考caffe官網:http://caffe.berkeleyvision.org/gathered/examples/mnist.html,非常詳細。
注:這一部分默認在caffe的目錄下完成,不能去相應的子目錄下執行腳本,因為腳本中的路徑是相對於caffe目標的相對路徑 。
- 獲取數據: sudo sh data/mnist/get_mnist.sh
- 重建lmdb/ leveldb文件,caffe支持三種數據格式輸入: images(.jpg,.png等),leveldb, lmdb
- 切換到CPU模式: 在lenet_solver.prototxt中修改 solover_mode = CPU , 在最后一行
- 訓練minist: sudo sh examples/mnist/train_lenet.sh
沒有錯誤的話,就可以看到一串串的輸出信息啦。
十二、在CPU模式下,所以不安裝CuDnn