ubuntu 14.04+ GTX 1070+cuda 8.0 + cudnn 5.1+opencv3.0的安裝參見我前兩篇博客,詳細介紹了!
本文重點爲caffe的安裝與配置細節
1、安裝caffe前,安裝依賴項和各種庫
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev libboost-all-dev
2、安裝caffe需要的python包
網上介紹用現有的anaconda,我反正不建議,因爲路徑設置麻煩,很容易出錯,而且自己安裝很簡單也挺快的。
首先需要安裝pip
sudo apt-get install python-pip
再下載caffe,我把caffe放在用戶目錄下
sudo apt-get install git
git --version
git clone https://github.com/BVLC/caffe.git
再轉到caffe的python目錄,安裝scipy
cd caffe/python
sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-notebook python-pandas python-sympy python-nose
最後安裝requirement裏面的包,需要root權限
sudo su
for req in $(cat requirements.txt)
do pip install $req
done //回車鍵
如果提示報錯,一般是缺少必須的包引起的,直接根據提示pip install <package-name>就行了
安裝完後退出root權限
exit
3、編譯caffe
cd ~/caffe cp Makefile.config.example Makefile.config gedit Makefile.config
這裏僅需要修改兩處:
# USE_CUDNN := 1 //取消註釋
# OPENCV_VERSION := 3//取消註釋
make all -j8
make test
make runtest
make pycaffe
在make all -j8 時,
出現錯誤/usr/bin/ld: 找不到 -lhdf5_hl /usr/bin/ld: 找不到 -lhdf5
然後sudo apt-get install libhdf5-dev sudo apt-get install libhdf5-serial-dev都顯示已經最高版本。但在計算機裏搜索不到libhdf5.so以及libhdf5_hl.so,然後去官網https://launchpad.net/ubuntu/+source/hdf5/下載libhdf5-dev libhdf5-serial-dev,然後在/usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so裏面找到,所以,執行以下:
sudo cp /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so /usr/lib/
sudo cp /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5_hl.so /usr/lib/
make clean
make all -j8
出現錯誤/usr/bin/ld:cannot find -lopencv_imgcodecs
參見http://blogs.csdn.net/jideljd_2010/article/details/38046901這位大神的博文得到靈感
解決方法:在計算機裏搜索libopencv_imgcodecs 的文件,發現有4個相關文件在/home/shan/opencv-3.0.0/build/lib/裏,複製移動
sudo cp /home/shan/opencv-3.0.0/build/lib/libopencv_imgcodecs.so /usr/lib/
sudo cp /home/shan/opencv-3.0.0/build/lib/libopencv_imgcodecs.so.3.0 /usr/lib/
sudo cp /home/shan/opencv-3.0.0/build/lib/libopencv_imgcodecs.so3.0.0 /usr/lib/
sudo cp /home/shan/opencv-3.0.0/build/lib/libopencv_imgcodecs_pch_dephelp.a /usr/lib/
在解決的過程中結合了http://blog.csdn.net/w113691/article/details/77942408這位大神的博文
先將Makefile.config文件中
OPENCV_VERSION :=3 註釋掉,只修改USE_OPENCV := 1
修改後的結果:
USE_OPENCV := 1
#OPENCV_VERSION := 3
在caffe根目錄下,找到Makefile文件,打開文件
查找“Derive include and lib directories”一節,修改“LIBRARIES +=”的最後一行(LIBRARIES +=opencv_imgcodecs ),增加opencv_imgcodecs
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
(此時應該變爲LIBRARIES += opencv_imgcodecs opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs)
保存,退出。
成功解決!
make test 沒問題
在make runtest時,出現錯誤
問題描述: error while loading shared libraries: libcudart.so.8.0: cannot open shared object file: No such file or directory
解決辦法:首先確認/etc/profile中的路徑包含了cuda8.0的安裝路徑及相應的庫文件
sudo gedit /etc/profile
export PATH=$PATH:/usr/local/cuda-8.0/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64
export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/cuda-8.0/lib64
$source /etc/profile
使配置文件生效,再次執行。
若仍提示相同的錯誤,則執行以下命令,將相應的庫文件複製到/usr/lib
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
成功解決!
運行make pycaffe
在成功編譯caffe的源碼之後,可以在python環境中使用caffe。
在Ubuntu環境下,打開python解釋程序,輸入import caffe時:出現以下錯誤
>>>import caffe
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named caffe
解決辦法:
sudo gedit ~/.bashrc
寫入
export PYTHONPATH=~/caffe/python:$PYTHONPATH
source ~/.bashrc
生效後在新終端重新輸入import caffe時:無任何輸出,證明無錯誤
至此,全部安裝完成!!!!
測試:
caffe測試,執行以下命令:
cd ~/caffe
sudo sh data/mnist/get_mnist.sh
sudo sh examples/mnist/create_mnist.sh
最後測試:
sudo sh examples/mnist/train_lenet.sh
運行成功!