然而時間過太久,較前面的步驟遇到的問題已記不得了,在照著流程走的過程中遇到沒提到的問題再自行Google解決吧。
整個流程大致上是按照以下二篇參考教學的指示:
Caffe + Ubuntu 15.04 + CUDA 7.0 新手安裝配置指南
caffe+cuda7.0+opencv3.0.0+mkl ubuntu14.04配置
接著紀錄下我的安裝過程。
第一部分 Ubuntu安裝
這部分採用Caffe + Ubuntu 15.04 + CUDA 7.0 新手安裝配置指南的說法,分配比較多的空間給整個Ubuntu系統。
根分區: / 約50G。
Swap交換分區:記不太得了,可能是8G或16G。
Home分區:剩餘的空間,鑑於Imagenet,PASCAL VOC之類的大客戶,建議500G,至少300G以上。
第二部分:NVIDIA CUDA Toolkit安裝及配置
一、確認你的GPU可支援CUDA
執行下面的操作,確認硬體支援GPU CUDA,只要型號存在於https://developer.nvidia.com/cuda-gpus,就沒問題了
$ lspci | grep -i nvidia
二、CUDA Repository
獲取CUDA安裝包,安裝包請至NVIDIA官網下載。
(請下載Linux x86->Ubuntu 14.10 的 Local Package Installer DEB檔)
$ sudo dpkg -i cuda-repo-ubuntu1410-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
$ export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
$ PATH=${CUDA_HOME}/bin:${PATH}
$ export PATH
第三部分 Python安裝及配置
這部分我覺得不是那麼重要,不過還是姑且放一下。
一、iPython NoteBook 安裝
選擇一個適合你的IDE運行環境,Caffe有不少程式是基於 iPython 環境完成的。個人使用iPython NoteBook(基於瀏覽器的Python IDE),可以直接導出.py, .ipynb, html格式。安裝步驟如下:
$ sudo apt-get install -y ipython-notebook pandoc
二、配置和編譯pycaffe(見第五部分)
第四部分 Matlab安裝及配置
一、下載並安裝
由於該軟件為商業軟件,請大家自行尋找,安裝學習,並確保不使用做商業目的,下載24小時刪除......
這邊提供一個安裝教學及下載關鍵字:遠程 Linux MATLAB。
二、解決編譯器gcc/g++版本問題
因為Ubuntu 15.04的gcc/g++版本是4.9.2,而Matlab 2014a或b的版本是4.7.x,所以在使用matlab調用mex文件的時候,基本上都會報錯,這裡我採用降級安裝gcc/g++版本為4.7.x的解法。
1. 下載gcc/g++ 4.7.x
$ sudo apt-get install -y gcc-4.7
$ sudo apt-get install -y g++-4.7
2. 連結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++
三、編譯Matlab用到的caffe文件(見第五部分)
第五部分 Caffe安裝及測試
對於Caffe的安裝嚴格遵照官網的要求來:http://caffe.berkeleyvision.org/installation.html
一、安裝BLAS
這裡可以選擇(ATLAS,MKL或者OpenBLAS),我這裡使用OpenBLAS,簡單安裝教學:Building caffe with OpenBlas on Ubuntu 12.04
這裡只進行文章中步驟一的安裝指令。
(注意要先安裝git~ $ sudo apt-get install git )
$ git clone git://github.com/xianyi/OpenBLAS
$ cd OpenBLAS && make FC=gfortran
$ sudo make PREFIX=/opt/OpenBLAS install
$ sudo ldconfig
二、OpenBLAS與CUDA的環境設置
1. 新建openblas.conf, 並編輯之:
$ sudo gedit /etc/ld.so.conf.d/openblas.conf
/opt/OpenBLAS/lib
2. 新建cuda.conf,並編輯之:
$ sudo gedit /etc/ld.so.conf.d/cuda.conf
/usr/local/cuda/lib64
/lib
3. 完成lib文件的鏈接操作,執行:
$ sudo ldconfig -v
三、安裝OpenCV 3.0.0
根據caffe+cuda7.0+opencv3.0.0+mkl ubuntu14.04配置的說法,網上大部分教學是cuda6.5+opencv2.4.10,但近期如果下載cuda的話,只有cuda7.0,如果用openc2.4.10的話,編譯opencv的時候就會報錯,所以只能現在opencv3.0.用cuda7.0+opencv3.0配置完,編譯caffe的時候又會出錯,因為opencv3.0有些變動,需要改一下caffe裡的makefile文件(具體見下文)。
又因為大部分教學是下載編譯好的安裝包,安裝後問題很多,不如自己下載編譯,步驟算是十分簡單。
下載官網原版OpenCV後解壓縮,執行以下指令:
$ cd ~/opencv
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. (注意後面有兩個點)
Enter the created temporary directory (<cmake_binary_dir>) and proceed with:
$ make
$ sudo make install
配置openCV參數設置
$ sudo gedit /etc/ld.so.conf.d/opencv.conf
/usr/local/lib
執行以下指令:
$ sudo ldconfig
$ sudo gedit /etc/bash.bashrc
加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
至此,OpenCV安裝配置完畢。
四、安裝其他依賴項
1. 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了。
2. 其他依賴項,確保都成功
$ sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev
$ sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
以上軟體及套件都確保全部安裝成功後,就可以開始安裝Caffe了。
五、安裝Caffe並測試
1. 安裝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
$ sudo apt-get install -y protobuf-c-compiler protobuf-compiler
2. 安裝配置NVIDIA cuDNN加速Caffe模型運算
a. 安裝cuDNN
新版本的caffe-master支援cudnn-6.5-linux-x64-v2,請至官網下載最新的cuDNN,從註冊帳號到申請開通成功可能要一兩天。
$ sudo cp cudnn.h /usr/local/include
$ sudo cp libcudnn.so /usr/local/lib
$ sudo cp libcudnn.so.6.5 /usr/local/lib
$ sudo cp libcudnn.so.6.5.48 /usr/local/lib
b. 連結cuDNN的lib文件
$ sudo ln -sf /usr/local/lib/libcudnn.so.6.5.48 /usr/local/lib/libcudnn.so.6.5
$ sudo ln -sf /usr/local/lib/libcudnn.so.6.5 /usr/local/lib/libcudnn.so
$ sudo ldconfig -v
3. 切換到Caffe-master的文件夾,生成Makefile.config配置文件,執行:
$ cp Makefile.config.example Makefile.config
4. 配置Makefile.config文件(僅列出修改部分)
a. 啟用CUDNN,去掉"#"
USE_CUDNN := 1
b. 啟用GPU,將CPU_ONLY開頭加上"#"
# CPU_ONLY := 1
c. 配置一些引用文件(增加部分主要是解決新版本下,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
注意這邊後來會遇到hdf5.h not found when building on ubuntu 15.04的問題,解決辦法如下:
Specifically on Ubuntu 15, the HDF5 libraries and headers were installed in buried folders: respectively /usr/lib/x86_64-linux-gnu/hdf5/serial/ and /usr/include/hdf5/serial/
Create the following sym links:
$ sudo ln -s /usr/lib/x86_64-linux-gnu/hdf5/serial/hdf5_hl.so /usr/lib/x86_64-linux-gnu/hdf5_hl.so
$ sudo ln -s /usr/lib/x86_64-linux-gnu/hdf5/serial/hdf5_hl.a /usr/lib/x86_64-linux-gnu/hdf5_hl.a
$ sudo ln -s /usr/lib/x86_64-linux-gnu/hdf5/serial/hdf5.so /usr/lib/x86_64-linux-gnu/hdf5.so
$ sudo ln -s /usr/lib/x86_64-linux-gnu/hdf5/serial/hdf5.a /usr/lib/x86_64-linux-gnu/hdf5.a
d. 啟用OpenBLAS
BLAS := open
BLAS_INCLUDE := /opt/OpenBLAS/include
BLAS_LIB := /opt/OpenBLAS/lib
e. 配置路徑,實現caffe對Python和Matlab的支援
PYTHON_LIB := /usr/local/lib
MATLAB_DIR := /usr/local/MATLAB/R2014b
5. 配置Makefile文件(實現對OpenCV 3.x的支持)
查找「Derive include and lib directories」一節,修改「LIBRARIES +=」的最後一行,增加opencv_imgcodecs
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
這一步非常重要,否則編譯後會出現錯誤如下:
CXX/LD -o .build_release/tools/convert_imageset.bin
.build_release/lib/libcaffe.so: undefined reference to cv::imread(cv::String const&, int)'.build_release/lib/libcaffe.so: undefined reference tocv::imencode(cv::String const&, cv::_InputArray const&, std::vector >&, std::vector > const&)'
原因是opencv3.0.0把imread相關函數放到imgcodecs.lib中了,而非原來的imgproc.lib
p.s. 之後的編譯動作若有出現錯誤,可先檢查Makefile及Makefile.config文件內的路徑設定是否有誤。
6. 編譯caffe-master!!! "-j12"是使用CPU的多核進行編譯,12是CPU核心數,可以極大地加速編譯的速度,建議使用。
$ make all -j12
$ make test -j12
$ make runtest -j12
編譯Python和Matlab用到的caffe文件
$ make pycaffe -j12
$ make matcaffe -j12
至此都沒問題的話,Caffe的安裝就算大功告成了!!!
六、使用MNIST dataset進行測試
Caffe默認情況會安裝在$CAFFE_ROOT,就是解壓到那個目錄,例如:/home/username/caffe-master,所以下面的工作,默認已經切換到了該工作目錄。
下面的工作主要是用於測試Caffe是否正常運作,不做詳細評估。具體設置請參考官網:http://caffe.berkeleyvision.org/gathered/examples/mnist.html
1. 數據預處理
$ sh data/mnist/get_mnist.sh
2. 重建lmdb文件。Caffe支持三種數據格式輸入網絡,包括Image(.jpg, .png等),leveldb,lmdb,根據自己需要選擇不同輸入吧。
$ sh examples/mnist/create_mnist.sh
生成mnist-train-lmdb 和 mnist-train-lmdb文件夾,這裡包含了lmdb格式的數據集
3. 訓練mnist
$ sh examples/mnist/train_lenet.sh
這時會在終端機畫面中看到caffe的訓練過程
以上就是整個Caffe + Ubuntu 15.04 + CUDA 7.0的安裝流程。
你好!
回覆刪除最近我也在研究 caffe 這塊
可是官方那邊看不是很懂
我是用C++, caffe, cuda, opencv
跑 mnist 一直出錯
請問有沒有影片教學這範例呢?
hi,
刪除我跑MNIST是沒有問題的
如果你有確認過前面安裝編譯的過程沒有任何錯誤
可能只好砍掉重練了..
目前應該是不會有影片教學
個人也只是初學,遇到問題還是google會比較快解決~