Ubuntu14.04(估計16.04也可以用,參照的就是16.04)+opencv + caffe(GPU版) + cuDnn超詳細包括報錯
lalalalala~
經過一星期的折磨,總算把caffe配置好,感謝網上大神們的助攻。
查看了好多的部落格,多多少少存在著坑。然後不停的在查詢與修改,終於把caffe裝進自己的碗裡。在成功執行caffe後兩天,特意分享一下caffe的配置過程,幫助後來有需要配置的人。 配置過程參考了https://www.cnblogs.com/go-better/p/7161006.html博文,對這次的配置提供了很大的幫助,感謝。
1. 安裝相關依賴項
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler libatlas-base-dev libboost-all-dev libgflags-dev libgoogle-glog-dev liblmdb-dev
# (Python general)
sudo apt-get install -y python-pip
# (Python 2.7 development files)
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy
# (or, Python 3.5 development files) sudo apt-get install -y python3-dev sudo apt-get install -y python3-numpy python3-scipy # (OpenCV 2.4) sudo apt-get install -y libopencv-dev (or, OpenCV 3.3 - see the instructions below)
這些依賴項包括了opencv的一些依賴項,opencv是必須要安裝的。基本複製貼上就能把依賴項解決了。
2.安裝opencv3.1
既然說到了OpenCV,那我們先把這個難題解決吧,我開始裝opencv的時候,是在Ubuntu16.04系統下裝的,也不知道哪裡出了問題,MAKE一直報錯,最後重灌了14.04一步一步的裝上去就沒有。
在官網https://opencv.org/releases.html上下載OpenCV3.1
這裡需要說一下的是,官網下載網站很多部落格放錯了,所以出現了404.
並將其解壓到你要安裝的位置,假設解壓到了/home/opencv
unzip opencv-3.1.0.zip sudo cp ./opencv-3.1.0 /home sudo mv opencv-3.1.0 opencv
安裝前準備,建立編譯資料夾:
cd ~/opencv
mkdir build
cd build
配置:
sudo apt install cmake
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
編譯:
sudo make
以上只是將opencv編譯成功,還沒將opencv安裝,需要執行下面指令進行安裝:
sudo make install
如果沒有報錯,opencv就安裝完成了。
3.安裝NVIDIA驅動
(1)查詢顯示卡型號以及支援版本
安裝顯示卡驅動,是不能直接在官網上查詢並下載安裝的,否則會造成迴圈登入的問題!
首先在官網查詢網址 http://www.nvidia.com/Download/index.aspx?lang=en-us查詢自己機子的顯示卡,點選右邊的search進入下載頁面
這裡可以看到我的顯示卡支援416,我之前裝的是410也能正常工作,應該是裝到最新的版本就行。
要是你不知道自己的機子的顯示卡型號可以在終端輸入:
lspci | grep -i nvidia
(2)安裝驅動
在終端下輸入:
sudo apt-get purge nvidia-* //這是解除安裝以前的nvidia驅動 sudo add-apt-repository pa:graphics-drivers/ppa sudo apt-get update sudo apt-get install nvidia-410 sudo reboot //重啟
確認每個語句都能執行,沒有報錯,要不然是裝不上顯示卡驅動的。完成後,一定要重啟!!
安裝完成之後輸入以下指令進行驗證:
sudo nvidia-smi
要是成功,或出現如下資訊,也許根據顯示卡的不一樣,後面那段not supported的顯示不一樣,大概是我的機子顯示卡有限制,所以有一些不支援。這個都是沒關係的。
4.安裝CUDA
首先在官網上(https://developer.nvidia.com/cuda-downloads)下載CUDA,根據實際裝的系統選擇選項:
(2)下載完成後執行以下命令(我用的是cuda7.5,直接登入進系統一般下載是最新的CUDA,因為CUDA要跟後面下載的CuDnn配套,以及計算機的一些相容性,推薦選擇低版本的CUDA下載):
sudo chmod 777 cuda_7.5.44_linux.run sudo ./cuda_7.5.44_linux.run
注意:執行後會有一系列提示讓你確認,但是注意,有個讓你選擇是否安裝nvidia367驅動時,一定要選擇否:
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?
因為前面我們已經安裝了更加新的nvidia410,所以這裡不要選擇安裝。其餘的都直接預設或者選擇是即可。
(3)環境變數配置
開啟~/.bashrc檔案:
sudo gedit ~/.bashrc
將以下內容寫入到~/.bashrc尾部:
export PATH=/usr/local/cuda-7.5/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
在/etc/profile檔案中新增CUDA環境變數:
sudo gedit /etc/profile
開啟文件都在文件結尾加上下面兩句:
export PATH=/usr/local/cuda/bin:$PATH
儲存後, 執行下列命令, 使環境變數立即生效:
source /etc/profile
同時新增lib庫路徑,在 /etc/ld.so.conf.d/新建檔案 cuda.conf
sudo gedit /etc/ld.so.conf.d/cuda.conf
在文中加入下面內容:
/usr/local/cuda/lib64
執行下列命令使之立刻生效:
sudo ldconfig
(4)測試CUDA的samples
cd /usr/local/cuda-7.5/samples/1_Utilities/deviceQuery //要是報錯,檢視自己的這個檔案在哪個資料夾 make sudo ./deviceQuery
如果顯示一些關於GPU的資訊,則說明安裝成功。
最後結果出現Result = PASS就是完成了。
nvcc –V 命令可檢視版本
5.配置cuDNN
感覺最坑的地方來了,要注意每一行的配置程式碼。
cuDNN是GPU加速計算深層神經網路的庫。
首先去官網 https://developer.nvidia.com/rdp/cudnn-download 下載cuDNN,需要註冊一個賬號才能下載。
我直接在網上下的cuda7.5的cudnn-7.5-linux-x64-v5.0.tgz
進行解壓:
sudo tar -zxvf ./cudnn-7.5-linux-x64-v5.0.tgz
進入cuDNN5.0解壓之後的include目錄,在命令列進行如下操作:
cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include #複製標頭檔案
再將進入lib64目錄下的動態檔案進行復制和連結:
cd .. cd lib64 sudo cp lib* /usr/local/cuda/lib64/ #複製動態連結庫 cd /usr/local/cuda/lib64/ sudo chmod +r libcudnn.so.5.0.5 sudo rm -rf libcudnn.solibcudnn.so.5 sudo rm -rf libcudnn.solibcudnn.so //移除兩個位連線的檔案,否則下面的軟連線會失敗 sudo ln -sf libcudnn.so.5.0.5 libcudnn.so.5 sudo ln -sf libcudnn.so.5 libcudnn.so //這裡的so.5.0.5和so.5是我下載下來的版本,你需要進入資料夾檢視一下自己的版本 sudo ldconfig
這裡要確保兩個軟連線的檔案有連線好,要是沒有連線好,就要刪掉再重新連線。(在這裡兜兜轉轉好幾次)
6.安裝Atlas
sudo apt-get install libatlas-base-dev
7.配置caffe
(1)https://github.com/BVLC/caffe下載caffe
下載完成後,會在家目錄下的下載裡找到caffe-master.zip,用unzip命令解壓到家目錄下,然後重新命名為caffe.
(2)複製Makefileconfig
sudo cp Makefile.config.example Makefile.config
(3)開啟並修改配置檔案:
sudo gedit Makefile.config
根據個人情況修改檔案:
#USE_CUDNN := 1
修改成
USE_CUDNN := 1
#OPENCV_VERSION := 3
修改成
OPENCV_VERSION := 3
#WITH_PYTHON_LAYER := 1
修改成
WITH_PYTHON_LAYER := 1
將# Whatever else you find you need goes here. 下面的
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)修改makefile檔案
開啟makefile檔案,做如下修改:(這個不知道有沒有用,這一步感覺沒作用)
將:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
修改成
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
接下來是針對安裝opencv3.0.0版本的同學而言的,對於3.0.0之前的版本不需要修改:
在位置((LIBRARIES+= glog gflags protobuf leveldb snappy lmdbboost_system hdf5_hl hdf5 m
opencv_coreopencv_highgui opencv_imgproc opencv_imgcodecs))處新增opencv_imgcodecs
這一步非常重要,否則編譯後會出現錯誤。
原因就是opencv3.0.0把imread相關函式放到imgcodecs.lib中了,而非原來的imgproc.lib。
(If you input "make all",the problem is the same again.But if you delete all the file in build(rm -rf ./build/*) before "make all"(I use make clean ),you will success.I just success)
(5)編輯/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!
(6)編譯
make all –j8 make test –j8 make runtest –j8
8.編譯pycaffe
在caffe根目錄的python資料夾下,有一個requirements.txt的清單檔案,上面列出了需要的依賴庫,按照這個清單安裝就可以了。
在安裝scipy庫的時候,需要fortran編譯器(gfortran),如果沒有這個編譯器就會報錯,因此,我們可以先安裝一下。
首先回到caffe的根目錄,然後執行安裝程式碼:
cd ~/caffe sudo apt-get install gfortran cd ./python for req in $(cat requirements.txt); do pip install $req; done
安裝完成以後,再次回到caffe根目錄我們可以執行:
cd ..
sudo pip install -r python/requirements.txt
就會看到,安裝成功的,都會顯示Requirement already satisfied, 沒有安裝成功的,會繼續安裝。
編譯python介面:
make pycaffe -j8
配置環境變數,以便python呼叫:
sudo gedit ~/.bashrc
將export PYTHONPATH=/home/caffe/python:$PYTHONPATH
新增到檔案中
編譯完成!
9.報錯集錦(後期更新,歡迎關注)
部分報錯是網上常見並解決了的,有些是自己親身經歷的,希望能幫到。