Ubuntu + CUDA9 + CUDNN7 + OpenCV3.4 + contrib +CAFFE-master


安裝ubuntu時贊美Rufus(建議ubuntu16.04.04),過程參考 https://www.cnblogs.com/willnote/p/6725594.html
安 裝 前 一 定 要 注 意 確 認 當 前 硬 盤 的 存 儲 格 式 是 MBR 還 是 GPT
輸入法,瀏覽器,終端,CUDA、opencv、caffe等相關文件下載,參考百度。
 
方括號內容表示為變量,示計算機內實際文件(夾)而定
 
2018.04.18:建議安裝cuda-v9.0/v10.1而非v9.1/9.2, 對於20X0系列的顯卡,CUDA-10+是很必要的,10X0系列的還是CUDA-9好
2019.03.07: 2018.04.20:建議安裝opencv-v2.4.9+/v3.4.0,而非v3.4.1+/v4+ 【C語言的API對我本人開發需求而言已經不是很必要,所以我個人開始使用4.1.0了】
2019.03.07:(或者把caffe扔了(就應該這樣!),直接玩opencv4+里的dnn(依然可以參考本文安裝cuda/cudnn的辦法),參考“opencv-4 nvidia gpu 訓練 測試”相關搜索結果)

-----------------------------------------------------------
!保!障!網!絡!通!暢!
-----------------------------------------------------------
安裝顯卡驅動
系統設置->軟件和更新->下載自:阿里源( mirrors.aliyun.com ) 或 中科大源( mirrors.ustc.edu.cn )
輸入密碼,關閉窗口,等下載結束。
 
然后更新軟件:終端內 
sudo apt-get update&&sudo apt-get upgrade

 

系統設置->軟件和更新->附加驅動->使用NVIDIA較高版本的專有驅動(如果未顯示,使用.run的安裝方法(https://blog.csdn.net/xunan003/article/details/81665835))
選擇后會開始下載和自動安裝,等讀條全部完畢后,在終端內輸入
nvidia-smi #確認輸出了有效信息,如
date       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI XXX.XXX                Driver Version: XXX.XXX                   |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 1070    Off  | 00000000:01:00.0  On |                  N/A |
|  0%   31C    P8    11W / 230W |    201MiB /  8110MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0       997      G   /usr/lib/xorg/Xorg                           136MiB |
|    0      1839      G   compiz                                        59MiB |
|    0      2358      G   /usr/lib/firefox/firefox                       3MiB |
+-----------------------------------------------------------------------------+

 

-----------------------------------------------------------
-----------------------------------------------------------
安裝cuda依賴包 
終端內
sudo apt-get install --no-install-recommends libboost-all-dev -y
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libopenblas-dev liblapack-dev libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev -y

 

-----------------------------------------------------------
-----------------------------------------------------------
安裝cuda
 
https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=runfilelocal
sudo sh ./cuda_[9.X_XXX]_linux.run --no-opengl-libs #本體,非opengl這個參數非常重要,刪掉就等着開機循環登錄吧
sudo sh ./cuda_[9.X.Y]_linux.run  #[--no-opengl-libs] #補丁, 可以裝,必要性視補丁具體內容決定,修復bug和error的肯定要裝

其中,第一項顯卡驅動不需要裝(因為前一步已經裝過了,如果前一步兩種方法都安裝不了NVIDIA驅動的話,再考慮裝cuda這里自帶的驅動),第二項cuda組件必須裝,第三項cuda示例可以安裝


修改環境變量
sudo gedit ~/.bashrc
在最下端添加
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
使變量生效
source ~/.bashrc

-----------------------------------------------------------

測試cuda(如果安裝了第三項) 

終端里cd進cuda示例

cd [NVIDIA_CUDA_SAMPLES]/1_Utilities/deviceQueryDrv
sudo make
./deviceQueryDrv #確認輸出了有效的顯卡信息,並記下顯卡算力“CUDA Capability Major/Minor version number:”,編譯框架時會用上

----------------------------------------------------------- 

安裝cudnn
https://developer.nvidia.com/cudnn
先將cudnn壓縮包解壓
然后
#復制文件到系統環境
sudo
cp [CUDNN]/cuda/include/cudnn.h /usr/local/cuda/include/ sudo cp [CUDNN]/cuda/lib64/lib* /usr/local/cuda/lib64/
#重建軟連接
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.[主版本號]
sudo ln -s libcudnn.so.[全版本號] libcudnn.so.[主版本號]
sudo ln -s libcudnn.so.[主版本號] libcudnn.so
#使鏈接在環境中生效
sudo ldconfig

-----------------------------------------------------------

-----------------------------------------------------------
安裝opencv-3.4 + contrib-master
安裝依賴項
sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

解壓opencv

 
解壓opencv-contrib(使用對應版本)[nonfree的特殊工具包,不需要的話,可以不裝]
下載 ippicv_2017u3_lnx_intel64_general_20170822.tgz (https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822/ippicv)(或其他版本號的,具體的參考cmake-gui在configure卡住時下載的條目名稱)至文件夾 [opencv]/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ (這串亂碼可在cmake生成的cache文件中查到類似的) 然后改名為 4e0352ce96473837b1d671ce87f17359-ippicv_2017u3_lnx_intel64_general_20170822.tgz (同)

使用cmake-gui:
勾上BUILD_DOCS    BUILD_JPEG     BUILD_PNG    WITH_OPENGL     BUILD_opencv_world
 
在OPENCV_EXTRA_MODULES_PATH中填寫([opencv-contrib]/modules)     (3+的可以裝但沒必要,4+的為了調用WITH_CUDA的相關部分,或許有必要)
 
[注釋1]:
可以在cmake-gui的搜索欄里搜CU,去掉和cuda/NVIDIA有關的選項,一般用不到,除非打算自己擼框架(或者是打算用opencv3.4.3+/4.0.0+里面的dnn)
 
configure幾次直到框內沒有紅條(如果在輸出信息中存在相關BLAS的錯誤,暫未發現負面影響,不用管)
然后generate
 
有需要時再勾上WITH_QT,configure一次后填上需要的路徑並再次configure,紅條變白則校驗成功。然后generate
 
[注釋2]: 
遇上 make[2]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/extension_set_heavy.cc.o] Error 4
時,勾選ENABLE_CXX11
 
編譯opencv
cd [opencv]/build
make #這行不建議加-j4,曾出現過因為依賴次序問題引發的編譯錯誤
sudo make install -j4

添加引用變量

sudo gedit /etc/ld.so.conf.d/opencv.conf

文件內寫入

/usr/local/lib/x86_64-linux-gnu #(也可能沒有最后這段文件夾路徑,取決於libopencv_XXX.so文件具體在哪)

 

刷新鏈接
sudo ldconfig

-----------------------------------------------------------

-----------------------------------------------------------
安裝caffe

安裝依賴項

sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libopenblas-dev liblapack-dev libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev git cmake build-essential -y

 

 

獲取caffe,在希望放置caffe的目錄內:

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

復制caffe/MakeFile.config.example為MakeFile.config

修改其中的這幾項為:
USE_CUDNN := 1
USE_OPENCV := 1

# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/local/include/opencv /usr/local/include/opencv2 /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 /usr/local/lib/x86_64-linux-gnu

 

 
此外,對於這里的
CUDA_ARCH :=    #-gencode arch=compute_20,code=sm_20 \
                #-gencode arch=compute_20,code=sm_21 \
...

只保留和顯卡算力匹配的幾行,其他的全注釋掉(顯卡算力詳見[NVIDIA_CUDA_SAMPLES]/1_Utilities/deviceQueryDrv/deviceQueryDrv,在這個文件夾內make之后./deviceQueryDrv運行


如果編譯opencv后生成了libopencv_world.so,那么MakeFile中修改為:
ifeq ($(USE_OPENCV), 1)   #( 注意把空格換回制表符)
        #LIBRARIES += opencv_core opencv_highgui opencv_imgproc
        #ifeq ($(OPENCV_VERSION), 3)
            #LIBRARIES += opencv_imgcodecs
        #endif
        LIBRARIES += opencv_world
endif

 

 
編譯caffe:
make all -j4
#增加引用變量
sudo gedit /etc/ld.so.conf.d/caffe.conf
內容為:
/usr/local/cuda/lib64

回到終端內:

sudo make install
#刷新鏈接
sudo ldconfig

 

-----------------------------------------------------------
-----------------------------------------------------------
測試caffe
cd [caffe]
sudo sh data/mnist/get_mnist.sh
sudo sh examples/mnist/create_mnist.sh
sudo sh examples/mnist/train_lenet.sh 

不報錯就是安裝成功

-----------------------------------------------------------
-----------------------------------------------------------


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM