1. 程式人生 > >Ubuntu14.04(估計16.04也可以用,參照的就是16.04)+opencv + caffe(GPU版) + cuDnn超詳細包括報錯

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新增到檔案中

 source ~/.bashrc
編譯完成!

9.報錯集錦(後期更新,歡迎關注)

部分報錯是網上常見並解決了的,有些是自己親身經歷的,希望能幫到。