ubuntu16.04LTS + CUDA 8.0 + cudnn 5.1 + Caffe 安裝

筆者已經安裝了TensorFlow環境(GPU版本),顯卡驅動、cuda、cudnn的安裝教程也可參考:ubuntu16.04LTS + CUDA 8.0 + cudnn 5.1 + TensorFlow 安裝(GPU版本)
在此基礎上,筆者安裝caffe環境,僅供各位參考,如有不當之處請各位指教。

——呵———–caffe只適用python2———呵——–

如果博友安裝的是python3版本(安裝了anaconda3),可以參考Ubuntu 下同時安裝Anaconda2與Anaconda3 安裝anaconda2版本,本文使用的是Anaconda2-4.2.0-Linux-x86_64

在此,重複一遍筆者電腦現在的環境狀態:
系統:Ubuntu 16.04LTS (英文安裝)
顯卡:GTX 1080
NVIDIA驅動版本:NVIDIA-Linux-x86_64-390.25
anaconda版本:Anaconda3-4.2.0-Linux-x86_64
cuda版本:cuda_8.0.44_linux
cuddn版本:cudnn-8.0-linux-x64-v5.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

運行完成以上代碼後,需要檢查安裝是否成功,方法爲重新運行一次命令,查看是否安裝成功,舉個栗子:【驗證第三條命令是否成功安裝libopenblas-dev liblapack-dev libatlas-base-dev 這三個包】
再次運行命令:sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev此時命令運行結果如下截圖:
這裏寫圖片描述

若有些包安裝失敗,請重新執行命令或者問問度娘啦~確認所有依賴包都安裝成功後,請看下一步!

第二步 配置環境變量

使用命令sudo gedit ~/.bashrc打開.bashrc文件
在末尾添加以下兩行內容:

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH 

第三步 安裝OpenCV3.1

進入OpenCV官網,OpenCV官網鏈接【點這裏進入】,選擇3.1.0的版本的源碼sources,下載opencv-3.1.0.zip
這裏寫圖片描述

下載完成後,依次運行以下命令進行編譯等操作。
①使用命令unzip opencv-3.1.0.zip 解壓壓縮包
②進入OpenCV文件夾:cd opencv-3.1.0

修改/opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp文件,可能會由於opecv3.1與cuda8.0不兼容導致安裝失敗。
修改如圖:(使用命令sudo gedit xxx/graphcuts.cpp可進行修改)
這裏寫圖片描述

③創建文件夾“build”:mkdir build
④進入文件夾“build”中:cd build
⑤修改完成後,輸入命令進行編譯:[此過程會比較久一些,耐心等待哦]

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local 

make -j8  

編譯完成後如下圖:
這裏寫圖片描述

⑥編譯成功後安裝:sudo make install
⑦安裝完成後通過輸入命令:pkg-config --modversion opencv查看 opencv 版本驗證是否安裝成功:
這裏寫圖片描述

第四步 安裝 caffe

(1)下載caffe源碼:git clone https://github.com/BVLC/caffe.git
(2)進入 caffe ,將 Makefile.config.example 文件複製一份並更名爲 Makefile.config ,命令:sudo cp Makefile.config.example Makefile.config
(3)修改 Makefile.config 文件,sudo gedit Makefile.config
①使用cuddn:

#USE_CUDNN := 1
修改成: 
USE_CUDNN := 1

②使用並修改 opencv 版本

#OPENCV_VERSION := 3 
修改爲: 
OPENCV_VERSION := 3

③使用 python 接口

#WITH_PYTHON_LAYER := 1 
修改爲 
WITH_PYTHON_LAYER := 1

④修改 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-linux-gnu/hdf5/serial       

(4)然後修改 caffe 目錄下的 Makefile 文件:

將:(大約在415行)
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替換爲:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
將:(大約在181行)
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

(5)修改 /usr/local/cuda/include/host_config.h 文件 :

將(大約在119行)
#error-- unsupported GNU version! gcc versions later than 5 are not supported!
改爲
//#error-- unsupported GNU version! gcc versions later than 5 are not supported!

OK ,可以開始編譯了,在 caffe 目錄下執行 :make all -j8
編譯成功後可運行命令進行測試:make runtest -j8

這裏寫圖片描述
如果顯示結果爲上、下圖所示,則表示 caffe 已經成功安裝。
這裏寫圖片描述


此時,導入caffe成功,但是導入cv2失敗:
這裏寫圖片描述

根據裝了anaconda,和opencv,caffe,但import cv2報錯網頁上的回答,進行了操作:要把opencv編譯出來的cv2.so拷貝到anaconda的lib目錄下 。但是又報錯如下圖:ImportError: libstdc++.so.6: version GLIBCXX_3.4.21’ not found
這裏寫圖片描述
根據錯誤信息可以粗略知道,沒有找到GLBCXX 3.4.21。
輸入命令: strings /home/zhiwei/anaconda3/bin/../lib/libstdc++.so.6 | grep GLIBCXX
這裏寫圖片描述
果然是沒有GLBCXX 3.4.21
解決:使用命令下載conda install libgcc
再使用命令進行查看是否有“GLBCXX 3.4.21”
這裏寫圖片描述
然後又開始報錯:ImportError: dynamic module does not define module export function (PyInit_cv2)
這裏寫圖片描述

裝到這裏,,我已經筋疲力盡了。。。問過師兄後立馬改裝anaconda2,裝python2 版本。可以參考Ubuntu 下同時安裝Anaconda2與Anaconda3 安裝anaconda2版本,本文使用的是Anaconda2-4.2.0-Linux-x86_64

參考資料:
https://blog.csdn.net/yhaolpz/article/details/71375762
https://zhuanlan.zhihu.com/p/25709284
https://blog.csdn.net/m0_37407756/article/details/70789271
https://blog.csdn.net/wuzuyu365/article/details/52449574
https://blog.csdn.net/xiaolong2w/article/details/23915171
http://caffe.berkeleyvision.org/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章