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

aimhabo發表於2018-04-05
安裝ubuntu時讚美Rufus(建議ubuntu16.04.04),過程參考 https://www.cnblogs.com/willnote/p/6725594.html
安 裝 前 一 定 要 注 意 確 認 當 前 硬 盤 的 存 儲 格 式 是 MBR 還 是 GPT
輸入法,瀏覽器,終端,CUDA、opencv、caffe等相關檔案下載,參考百度。
 
方括號內容表示為變數,示計算機內實際檔案(夾)而定
 
2018.04.18:建議安裝cuda-9.0而非9.1
2018.04.20:建議安裝opencv-3.4.0而非3.4.1
———————————————————–
!保!障!網!絡!通!暢!
———————————————————–
安裝顯示卡驅動
系統設定->軟體和更新->下載自:阿里源( 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))
終端內 sudo nvidia-smi #確認輸出了有效資訊
———————————————————–
———————————————————–
安裝cuda依賴包 
終端內
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 -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_3XX]_linux.run –no-opengl-libs #本體
sudo sh ./cuda_[9.X.Y]_linux.run  –no-opengl-libs #補丁, 可以裝但是沒必要
 
其中,第一項顯示卡驅動不需要裝,第二項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 #確認輸出了有效的顯示卡資訊,並記下顯示卡算力,編譯框架時會用上

———————————————————– 
安裝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(使用對應版本)[特殊工具包,可以不裝]
下載 ippicv_2017u3_lnx_intel64_general_20170822.tgz (https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822/ippicv)至資料夾 [opencv]/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/ 然後改名為 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)
 
[註釋1]:
可以在cmake-gui的搜尋欄裡搜CU,去掉和cuda/NVIDIA有關的選項,一般用不到,除非打算自己擼框架
 
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_world.so檔案具體在哪)
重新整理連結
sudo ldconfig
———————————————————–
———————————————————–
安裝caffe

安裝依賴項

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-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

 

獲取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
只保留和顯示卡算力匹配的幾行,其他的全註釋掉

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

———————————————————–

———————————————————–

相關文章