1. 程式人生 > >ubuntu安裝配置caffe-ssd gpu版本,配置cuda和cudnn

ubuntu安裝配置caffe-ssd gpu版本,配置cuda和cudnn

寫在前面:電腦聯想Y410,顯示卡755,ubuntu16.04,本文是caffe-ssd,沒有安裝anaconda,使用的python是系統自帶的2.7版本,以前安裝anaconda後兩種python版本管理不好會出錯

1、將gcc版本降低

cuda8.0對應的gcc版本是5.3以下,ubuntu16.04的gcc版本是5.4

檢視gcc版本:gcc --version

參考連結:https://blog.csdn.net/iotlpf/article/details/54175064

2、nvidia顯示卡驅動安裝

方法一:直接在系統設定下安裝


可能存在的問題:驅動的版本和自己電腦顯示卡對應的版本不一致,會導致後續安裝的問題。

方法二:在nvidia官網下載對應驅動安裝

方法三:新增源進行安裝

注意:查詢自己電腦顯示卡對應的驅動連結:www.nvidia.cn/download/index.aspx?lang=cn

一定要下載正確的驅動,否則可能後續的安裝會有很多問題



具體安裝方法參考連結:https://blog.csdn.net/iotlpf/article/details/54175064

3、安裝cuda8.0

cuda的安裝也可以看下自己的電腦適合的cuda版本:在windows下nvidia控制面板,圖形顯示,可以看到n卡適合的cuda版本,僅供參考。

如何檢視顯示卡支援的CUDA版本:https://blog.csdn.net/wangyjfrecky/article/details/55100963

cuda安裝參考:https://blog.csdn.net/yhaolpz/article/details/71375762

在進行測試時出現的錯誤:

 CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 35
-> CUDA driver version is insufficient for CUDA runtime version
Result = FAIL

解決方案:檢視自己電腦安裝的nvidia顯示卡版本是否正確,不清楚具體使用哪個就多安裝幾個版本試下。

cuda安裝成功執行結果:


可參考連結:https://zhuanlan.zhihu.com/p/28954367

4、安裝cudnn5.1

cudnn5.1的安裝主要參考教程 : https://blog.csdn.net/yhaolpz/article/details/71375762

和上鍊接博主不同的是,在locate時並沒有定位到資訊,不過後面貌似沒影響。

具體操作如下:

下載完成後解壓,得到一個 cudn 資料夾,該資料夾下include 和 lib64 兩個資料夾,命令列進入 cudn/include 路徑下,然後進行以下操作:

sudo cp cudnn.h /usr/local/cuda/include/ #複製標頭檔案

然後命令列進入 cudn/lib64 路徑下,執行以下命令:

sudo cp lib* /usr/local/cuda/lib64/ #複製動態連結庫
cd /usr/local/cuda/lib64/ sudo rm -rf libcudnn.so libcudnn.so.5#刪除原有動態檔案
注意:如不能刪除請cd到 
cd /usr/local/cuda/lib64/下進行刪除
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5#生成軟銜接
sudo ln -s libcudnn.so.5 libcudnn.so #生成軟連結

安裝完成後可用 nvcc -V 命令驗證是否安裝成功,若出現以下資訊則表示安裝成功:

5、安裝opencv3.1

解壓到你要安裝的位置,命令列進入已解壓的資料夾 opencv-3.1.0 目錄下,執行:

mkdir build # 建立編譯的檔案目錄

cd build

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

make -j8 #編譯

在執行 make -j8 命令編譯到 92% 時可能會出現以下錯誤:

modules/cudalegacy/src/graphcuts.cpp:120:54: error: 
‘NppiGraphcutState’ has not been declared
typedef NppStatus (*init_func_t)(NppiSize oSize, 

這是由於opecv3.1與cuda8.0不相容導致的。解決辦法:

修改 /opencv-3.1.0/modules/cudalegacy/src/graphcuts.cpp 檔案內容,如圖: 


編譯成功後安裝:

sudo make install #安裝

安裝完成後通過檢視 opencv 版本驗證是否安裝成功:

pkg-config --modversion opencv  
6、安裝caffe-ssd

git clone https://github.com/weiliu89/caffe.git

cd caffe

git checkout ssd(出現“分支”則說明copy-check成功)

cp Makefile.config.example Makefile.config

然後修改 Makefile.config 檔案,在 caffe 目錄下開啟該檔案:

sudo gedit Makefile.config

修改 Makefile.config 檔案內容:

1.應用 cudnn

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

2.應用 opencv 版本

#OPENCV_VERSION := 3 修改為: OPENCV_VERSION := 3

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

然後修改 caffe 目錄下的 Makefile 檔案:

將#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!

Makefile檔案中第260行左右新增boost_regex,即

LIBRARIES += boost_thread stdc++後,如下

LIBRARIES += boost_thread stdc++ boost_regex

繼續在makefile檔案下操作:

將:

NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)

替換為:

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

編輯/usr/local/cuda/include/host_config.h 將其中的第115行註釋掉:

#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!

將一些檔案複製到/usr/local/lib資料夾下,解決"libcudart.so.8.0 cannot openshared object file: Nosuch fileor directory":

#注意自己CUDA的版本號!

sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0

&& sudo ldconfig cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0

&& sudo ldconfig cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig

可能會有一點問題,但不影響,有的教程沒用這步,我是一開始使用其他的教程報錯使用的這步,參考:https://blog.csdn.net/qq_36673141/article/details/78428702

至此前期環境配置應該完成。

編譯caffe有兩種方式:

1、make all

2、cmake方式

我是使用make all編譯成功的,以前看教程據說cmake更好,兩種方式分別如下:

a、make all

        make all -j8
sudo make runtest -j8
注意:我在另一臺電腦上用sudo make runtest -j8報錯使用make runtest -j8就好了;
.build_release/tools/caffe: error while loading shared libraries: libcudart.so.8.0:
cannot open shared object file: No such file or directory」
  • b、cmake
  • 本人用了一下報錯沒有修改,但這種編譯官網上是有的,所有可以參考,前提是前面的環境配置正確。
  • cd caffe
    mkdir build
    cd build

    sudo cmake -D WITH_CUDA=ON -D CUDA_ARCH_BIN="5.3" -D CUDA_ARCH_PTX="" -D WITH_GSTREAMER=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

    make -j8
    make install
    make runtest(這一步不是必須的)


  • 7、安裝 pycaffe notebook 介面環境

在上一步成功安裝 caffe 之後,就可以通過 caffe 去做訓練資料集或者預測各種相關的事了,只不過需要在命令列下通過 caffe 命令進行操作,而這一步 pycaffe 的安裝以及 notebook 環境配置只是為了更方便的去使用 caffe ,實際上大多數都是通過 python 來操作 caffe 的,而 notebook 使用瀏覽器作為介面,可以更方便的編寫和執行 python 程式碼

cd caffesudo make pycaffe -j8

編譯 pycaffe 成功後,驗證一下是否可以在 python 中匯入 caffe 包,首先進入 python 環境:

python

然後匯入 caffe :

>>> import caffe

如果沒有報錯只是警告可以繼續操作。

可能錯誤1:

File "<stdin>", line 1, in <module>   ImportError: No module named caffe

解決方法:

sudoechoexport PYTHONPATH="~/caffe/python" >> ~/.bashrc

source ~/.bashrc

最後一步,配置notebook環境

在安裝scipy庫的時候,需要fortran編譯器(gfortran),如果沒有這個編譯器就會報錯,因此,我們可以先安裝一下。

首先進入 caffe/python 目錄下,執行安裝程式碼

sudo apt-get install gfortranfor req in $(cat requirements.txt);

dopip install $req; done

注意:此處安裝依賴項可能一次無法全部安裝,多進行幾次就可以,我安裝時出現錯誤,按照提示升級了一下pip到10.0,貌似版本太高了,會報錯

File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name main

我重新安裝了9.1,執行後就可以了:https://blog.csdn.net/jasonzzj/article/details/53341271

在import caffe時也出現了 ImportError: cannot import name cbook錯誤

解決方案:

解除安裝之前的matplotlib: 

sudo pip uninstall matplotlib

使用該命令重新安裝:

sudo apt-get install python-matplotlib

這樣就解決了

安裝完成以後執行:

sudo pip install -r requirements.txt

就會看到,安裝成功的,都會顯示Requirement already satisfied, 沒有安裝成功的,會繼續安裝。

然後安裝 jupyter :

sudo pip install jupyter

安裝完成後執行 notebook :

jupyter notebook

安裝小結:

1、前期環境配置時最重要的,首先是NVIDIA顯示卡,其次是cuda,之後是cudnn,每次安裝好一定要測試

2、查清楚自己需要安裝什麼型別的顯示卡,文中有連結,以及cuda和cudnn的對應。

3、前期的依賴項一定多找幾個教程多安裝一些,(安裝全一些)多裝了沒事,少裝了後面報錯可能找不到方案解決。(個人意見)

4、編譯caffe之前保證opencv在系統環境裡(安裝opencv後的操作),編譯caffe時對makefile檔案和config檔案改寫仔細

5、編譯caffe一般都會報錯,仔細檢查下問題出現在哪裡,如果確保前期工作沒問題,嘗試用cmake 或者make all分別編譯,出錯了之後一定記得make clean

6、在編譯時候有的需要許可權,有的不需要許可權,所以也可以嘗試下分別sudo和不帶sudo進行操作。

7、以上純屬瞎扯,謹慎參考。

參考連結:

1、https://blog.csdn.net/yhaolpz/article/details/71375762

2、https://blog.csdn.net/qq_36673141/article/details/78428702

3、https://blog.csdn.net/qq_36673141/article/details/78428702