繼續(xù)前面tensorflow(gpu版)、torch后,我們開始安裝caffe
若要安裝NVIDIA顯卡驅(qū)動或者安裝CUDA+cudnn,參見:http://www.itdecent.cn/p/1baf9848b7d7 (內(nèi)附下載資源)
若需要安裝tensorflow或者torch,參見:http://www.itdecent.cn/p/038c6e073201
1.首先,我們安裝一下依賴包
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 libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install git cmake build-essential
2. 安裝opencv,注意:我們不安裝opencv3,一般用也只用opencv2,沒有必要用3
下載opencv版本自選,這里選擇下載opencv2.4.13,下載地址:https://opencv.org/releases.html
(1) 將下載好的文件夾解壓,進入文件夾 opencv-2.4.13:
cd opencv-2.4.13
(2) 新建一個文件夾用于存放臨時文件:
mkdir release
(3) 切換到該臨時文件夾:
cd release
(4) 開始編譯:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8 //開啟線程 按照自己的配置
sudo make install
然后進行環(huán)境配置:
(1) 將opencv的庫加入到路徑,從而讓系統(tǒng)可以找到:
sudo gedit /etc/ld.so.conf.d/opencv.conf
(2) 末尾加入/usr/local/lib,保存退出:
sudo ldconfig #使配置生效
sudo gedit /etc/bash.bashrc
末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存退出
sudo source /etc/bash.bashrc #使配置生效
到此為止,opencv的所有工作就做完了
可能有些小伙伴在終端測試時會發(fā)現(xiàn)問題:
ImportError: dynamic module does not define init function (PyInit_cv2)
這時候只需要通過pip安裝opencv-python就好了:
pip3 install opencv-python
3. 下面我們開始安裝caffe
在此確認步驟1中的步驟是否完成(重新輸入步驟1中的命令以確認),安裝好后方可繼續(xù)
在自己想安裝caffe的位置打開終端:
git clone https://github.com/BVLC/caffe.git
進入 caffe ,將 Makefile.config.example 文件復制一份并更名為 Makefile.config :
cd caffe
sudo cp Makefile.config.example Makefile.config
在 caffe 目錄下,修改 Makefile.config 文件:
sudo gedit Makefile.config
修改 Makefile.config 文件內(nèi)容:
(1).應用 cudnn
將
?#USE_CUDNN := 1
修改成:
USE_CUDNN := 1
(2).應用 opencv
將
?#USE_OPENCV := 0
修改為:
USE_OPENCV := 1
(3).使用 python 接口
將
?#WITH_PYTHON_LAYER := 1
修改為
WITH_PYTHON_LAYER := 1
(4).修改 python 路徑:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改為:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64
然后修改 caffe 目錄下的 Makefile 文件:
sudo gedit Makefile
將
?NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替換為:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
將
?LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改為:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
然后修改 /usr/local/cuda/include/host_config.h 文件 :
sudo gedit /usr/local/cuda/include/host_config.h
將
?#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改為
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
OK ,可以開始編譯了,在 caffe 目錄下執(zhí)行 :
make all -j8
這是如果之前的配置或安裝出錯,那么編譯就會出現(xiàn)各種各樣的問題,所以前面的步驟一定要細心。
編譯成功后可運行測試:
sudo make runtest -j8
4. 最后我們安裝 pycaffe接口環(huán)境
pycaffe 的安裝是為了更方便的去使用 caffe:
cd caffe
sudo make pycaffe -j8
5. 驗證
編譯 pycaffe 成功后,驗證一下是否可以在 python 中導入 caffe 包,首先進入 python 環(huán)境:
python
然后導入 caffe :
?>>> import caffe
若不報錯則表示 caffe 的 python 接口已正確編譯
在終端import caffe成功,但是當使用jupytr notebook時失敗的解決辦法

如圖,出現(xiàn)這種情況時,我們采取一下方式解決:
import os
import sys
caffe_root='/home/haoyev5/caffe/python' #自己的caffe路徑
os.chdir(caffe_root)
sys.path.insert(0,caffe_root+'python')
第三行有些是caffe-mast文件夾下的路勁,改下就好了,但是有個弊端就是,每次使用caffe時都必須加入以上幾行,略為不便
另外有些說法是這樣子的:
import sys
sys.path.append('/home/haoyev5/caffe/python')
我采取了這種方式,無效,大家可以試試
另外,若遇到有關(guān)于libpng16.so的錯誤,如 ImportError: libpng16.so.16: cannot open shared object file: No such file or directory,按照https://blog.csdn.net/pkokocl/article/details/78756422下載安裝就好了。