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 := 14.修改 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 buildsudo 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