最近利用深度學習做物體檢測,需要配置caffe,根據歐新宇博士的博文教程http://ouxinyu.github.io/Blogs/20140723001.html 《Caffe + Ubuntu 15.04 + CUDA 7.0 新手安裝配置指南》和《Caffe + Ubuntu 15.04 + CUDA 7.5 新手安裝配置指南》進行配置,前面的步驟都很順利沒有遇到問題,但是到了caffe編譯測試的時候去出現一些問題。後來百度找到了解決方法,caffe也運行成功。故在沒有遺忘之際,將步驟記錄下來,希望有需要的朋友可以借鑒一下。
0. Caffe 官網地址:http://caffe.berkeleyvision.org/
PS:為了方便大家使用,用於分享部分安裝過程中需要用到的軟件包可以到歐新宇博士提供的百度雲盤中下載。鏈接: http://pan.baidu.com/s/1qX1uFHa 密碼:wysa
一 . 第一部分 Linux安裝Linux的安裝,如果不是Linux粉,只是必須,被迫要用它來作作科研什麼的,建議安裝成雙系統,網上方法很多,這裡我就不詳細寫了,安裝還算是傻瓜式的,和windows的過程類似,至於語言,如果覺得難度還不夠大的話,完全可以裝E文版的,甚至日文,德文~~~,我是裝的簡體中文版,我總共用分出的500G的空間來安裝Ubuntu 14.04,這個版本是最新的版本,有個好處是,可以直接訪問Windows8.1的NTFS分區,不用做額外的操作,而且支持中文,例如:$ cd /media/yourname/分區名字/文件夾名,當然GUI就更方便了.
我的分區設置如下:
根分區: \ 100G,
Swap交換分區:16G ,這裡,我設置和我的內存一樣,據說小於16G的內存,就設置成內存的1.5-2倍
boot分區:200M
Home分區:剩余的空間,鑒於Imagenet,PASCAL VOC之類的大客戶,建議500G,至少300G以上。
第二部分:nVidia驅動和CUDA Toolkit的安裝和調試(*.deb方法) 關於安裝完CUDA進入不了桌面的問題,大概和顯卡的版本、驅動版本、系統都有關系,所以以下幾種方法,可以考慮嘗試(雖然是互斥的,但是都出現過解決此問題的情況)。1. 安裝CUDA時,不安裝OpenGL;2.不安裝獨立下載的顯卡驅動,只安裝CUDA內置的;3. 不安裝CUDA內置驅動,只安裝Toolkit,另外安裝官網下載的最新的顯卡驅動;4. 安裝完成後,切忌自動更新Linux系統。
PS:特別推薦*.deb的方法,目前已提供離線版的deb文件,該方法比較簡單,不需要切換到tty模式。這裡以CUDA 7.0為例。
一、CUDA Repository
獲取CUDA安裝包,安裝包請自行去NVidia官網下載。
$ sudo dpkg -i cuda-repo-ubuntu1404-7-0-local_7.0-28_amd64.deb
$ sudo apt-get update
二、CUDA Toolkit
$ sudo apt-get install -y cuda
三、Environment Variables
$ export CUDA_HOME=/usr/local/cuda-7.0
exportLDLIBRARYPATH= export LD_LIBRARY_PATH={CUDA_HOME}/lib64
PATH= PATH={CUDA_HOME}/bin:${PATH}
第三部分 Matlab安裝和調試(以Matlab 2014a為例)1.下載
由於該軟件為商業軟件,請大家自行尋找,安裝學習,並確保不使用做商業目的,下載24小時刪除……
預准備
選擇Mathworks.Matlab.R2014a.Unix.iso - 右鍵 - 使用磁盤映像掛載器打開”,進入裝載的虛擬光盤,拷貝全部文件至home/Matlab 文件夾(PS:我的原則是能GUI就GUI,喜歡CMD的可以參照執行) .PS:Matlab 的破解文件Crack需要自己去到網上去搜索下載。
復制Crack/install.jar至 home/Matlab/java/jar/ 並覆蓋源文件
$ sudo cp install.jar /home/Matlab/java/jar/
授權安裝文件夾
$ chmod a+x Matlab -R
安裝
$ sudo ./install
選項:不使用Internet安裝
序列號: 12345-67890-12345-67890
默認路徑:/usr/local/MATLAB/R2014a
勾選從默認啟動路徑創建符號鏈接(實現在任意位置運行matlab啟動程序)
激活文件:license_405329_R2014a.lic
拷貝 libmwservices.so 至 /usr/local/MATLAB/R2014a/bin/glnxa64
$ sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64/
5.解決編譯器gcc/g++版本問題。
因為Ubuntu 14.04的gcc/g++版本是4.9.2,而Matlab 2014a(2015a)的版本是4.7.x所以在使用matla調用mex文件的時候,基本上都會報錯,根據報錯信息,考慮如下兩步解決方案。
A. 降級安裝gcc/g++版本為4.7.x
(a). 下載gcc/g++ 4.7.x
$ sudo apt-get install -y gcc-4.7
$ sudo apt-get install -y g++-4.7
(b). 鏈接gcc/g++實現降級
$ cd /usr/bin
$ sudo rm gcc
$ sudo ln -s gcc-4.7 gcc
$ sudo rm g++
$ sudo ln -s g++-4.7 g++
第五部分 Caffe-Master的安裝和測試
對於Caffe的安裝嚴格遵照官網的要求來:http://caffe.berkeleyvision.org/installation.html
一、安裝BLAS
這裡可以選擇(ATLAS,MKL或者OpenBLAS),我這裡使用MKL,首先下載並安裝英特爾® 數學內核庫 Linux* 版MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2016),下載鏈接是:https://software.intel.com/en-us/intel-education-offerings, 使用學生身份(郵件 + 學校)下載Student版,填好各種信息,可以直接下載,同時會給你一個郵件告知序列號。下載完之後,要把文件解壓到home文件夾(或直接把tar.gz文件拷貝到home文件夾,為了節省空間,安裝完記得把壓縮文件給刪除喔~),或者其他的ext4的文件系統中。
接下來是安裝過程,先授權,然後安裝:
$ tar zxvf parallel_studio_xe_2016.tar.gz (如果你是直接拷貝壓縮文件過來的)
$ chmod a+x parallel_studio_xe_2016 -R
$ sh install_GUI.sh
PS: 安裝的時候,建議使用root權限安裝,過程中會要求輸入Linux的root口令。(設置方法:命令行:$ sudo passwd)
二、MKL與CUDA的環境設置
新建intel_mkl.conf, 並編輯之:
$ sudo gedit /etc/ld.so.conf.d/intel_mkl.conf
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
新建cuda.conf,並編輯之:
$ sudo gedit /etc/ld.so.conf.d/cuda.conf
/usr/local/cuda/lib64
/lib
完成lib文件的鏈接操作,執行:
$ sudo ldconfig -v
三、安裝OpenCV 3.0.0
下載並編譯OpenCV(官網原版OpenCV:http://opencv.org/), 或者使用我提供的修改版的安裝包(前面的百度雲下載)(下面的安裝方式使用該包完成,安裝包修改了dependencies.sh文件並增加了OpenCV 3.0.0的安裝文件)
切換到文件保存的文件夾,然後安裝依賴項:
$ sudo sh Ubuntu/dependencies.sh
切換目錄Ubuntu\3.0\安裝OpenCV 3.0.0:
$ sudo sh opencv3_0_0.sh
保證網絡暢通,因為軟件需要聯網這裡時間較長,請耐心等待。。。,
四、安裝其他依賴項
Google Logging Library(glog),下載地址:https://code.google.com/p/google-glog/,然後解壓安裝:
$ tar zxvf glog-0.3.3.tar.gz
$ ./configure
$ make
$ sudo make install
如果沒有權限就chmod a+x glog-0.3.3 -R , 或者索性 chmod 777 glog-0.3.3 -R , 裝完之後,這個文件夾就可以kill了。
其他依賴項,確保都成功
$ sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler protobuf-c-compiler protobuf-compiler
五、安裝Caffe並測試
安裝pycaffe必須的一些依賴項:
$ sudo apt-get install -y 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
安裝配置nVidia cuDNN 加速Caffe模型運算
a. 安裝前請去先官網下載最新的cuDNN (cudnn-7.0-linux-x64-v4.0-prod)。
$ sudo cp include/cudnn.h /usr/local/include
$ sudo cp lib64/libcudnn.* /usr/local/lib
b. 鏈接cuDNN的庫文件
$ sudo ln -sf /usr/local/lib/libcudnn.so.4.0.7 /usr/local/lib/libcudnn.so.4
$ sudo ln -sf /usr/local/lib/libcudnn.so.4 /usr/local/lib/libcudnn.so
$ sudo ldconfig -v
切換到Caffe-master的文件夾,生成Makefile.config配置文件,執行:
$ cp Makefile.config.example Makefile.config
配置Makefile.config文件(僅列出修改部分)
a. 啟用CUDNN,去掉”#”
USE_CUDNN := 1
b. 配置一些引用文件(增加部分主要是解決新版本下,HDF5的路徑問題)
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial
c. 啟用Intel Parallel Studio XE 2016
BLAS := mkl
d. 配置路徑,實現caffe對Python和Matlab接口的支持
PYTHON_LIB := /usr/local/lib
MATLAB_DIR := /usr/local/MATLAB/R2014a
c. 啟用OpenCV 3.0, 去掉”#”
OPENCV_VERSION =3
編譯caffe-master!!!”-j8”是使用CPU的多核進行編譯,可以極大地加速編譯的速度,建議使用。
$ make all -j8
$ make test -j8
$ make runtest -j8
編譯Python和Matlab用到的caffe文件
$ make pycaffe -j8
$ make matcaffe -j8
六、使用MNIST數據集進行測試
Caffe默認情況會安裝在CAFFEROOT,就是解壓到那個目錄,例如:CAFFE_ROOT,就是解壓到那個目錄,例如: home/username/caffe-master,所以下面的工作,默認已經切換到了該工作目錄。下面的工作主要是,用於測試Caffe是否工作正常,不做詳細評估。具體設置請參考官網:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
數據預處理
$ sh data/mnist/get_mnist.sh
重建lmdb文件。Caffe支持多種數據格式輸入網絡,包括Image(.jpg, .png等),leveldb,lmdb,HDF5等,根據自己需要選擇不同輸入吧。
$ sh examples/mnist/create_mnist.sh
生成mnist-train-lmdb 和 mnist-train-lmdb文件夾,這裡包含了lmdb格式的數據集
訓練mnist
$ sh examples/mnist/train_lenet.sh
至此,Caffe安裝的所有步驟完結,下面是一組簡單的數據對比,實驗來源於MNIST數據集,主要是考察一下不同系統下CPU和GPU的性能。可以看到明顯的差別了,雖然MNIST數據集很簡單,相信復雜得數據集,差別會更大,Ubuntu+GPU是唯一的選擇了。