1. 程式人生 > >Caffe + Ubuntu 15.04/16.04 + CUDA 7.5/8.0 在伺服器上安裝配置及解除安裝重新安裝(已測試可執行)

Caffe + Ubuntu 15.04/16.04 + CUDA 7.5/8.0 在伺服器上安裝配置及解除安裝重新安裝(已測試可執行)

第一部分 Linux安裝

如何在Windows系統上製作一個USB安裝盤:中文英文

總共用分出的500G的空間來安裝Ubuntu 15.04,這個版本是最新的版本,有個好處是,可以直接訪問Windows8.1的NTFS分割槽,建議安裝英文版本,中文版本在文字命令模式下有時會出現亂碼。

如果是裝雙系統啟動建議學習一下
計算機是如何啟動的

Linux的檔案系統

ext2:這個檔案系統在Linux下使用了很久。ext是英語Extended的前三個字母,是“擴充套件的”的意思。由法國程式設計師Remy Card設計,他也是ext(第一代擴充套件檔案系統)的設計者。ext檔案系統的一大優勢是幾乎不怎麼產生磁碟碎片,所以在Linux系統下一般不需要進行磁碟碎片整理。
ext3:ext3和ext2很接近,不過ext3是日誌型檔案系統,所以比之ext2(不是日誌型),ext3在故障時可以恢復資料。ext3和ext2高度相容。 ext4:ext3的演進,擴大了磁碟分割槽的大小,進一步減少了磁碟碎片的產生機率

所以ext2,ext3和ext4分別是Second Extended Filesystem(第二代擴充套件檔案系統),Third Extended Filesystem(第三代擴充套件檔案系統)和Fourth Extended Filesystem(第四代擴充套件檔案系統)的縮寫。

Linux下磁碟分割槽的名稱

dev是英語device的頭三個字母,表示"裝置"
檔案。 第一個字母:h或s。h表示IDE介面的硬碟。s表示SATA或SCSI介面的硬碟。 第二個字母:總是d。英語drive的首字母,表示"磁碟驅動器"。 第三個字母:a,b,c,d,等等。表示順序。

hda一般是指IDE介面的硬碟,hda一般指第一塊硬碟(磁碟),類似的有hdb,hdc等。

sda一般是指SATA或SCSI介面的硬碟,sda一般指第一塊硬碟(磁碟),類似的有sdb,sdc等。

主分割槽和邏輯分割槽

主分割槽:英語是Primary Partition。也稱為主磁碟分割槽,和擴充套件分割槽、邏輯分割槽一樣,是一種分割槽型別。主分割槽中不能再劃分其他型別的分割槽,因此每個主分割槽都相當於一個邏輯磁碟

(在這一點上主分割槽和邏輯分割槽很相似,但主分割槽是直接在硬碟上劃分的,邏輯分割槽則必須建立於擴充套件分割槽中)。早期MBR模式分割槽只能劃分四個分割槽,現在的GPT分割槽至少可以劃分128個主分割槽,未來很有可能將不存在擴充套件分割槽和邏輯分割槽的概念。一個硬碟的主分割槽包含作業系統啟動所必需的檔案和資料的硬碟分割槽,要在硬碟上安裝作業系統,則硬碟必須有一個主分割槽

邏輯分割槽:英語是Logical Partition。是硬碟上一塊連續的區域,不同之處在於,每個主分割槽只能分成一個驅動器,每個主分割槽都有各自獨立的引導塊,可以用fdisk設定為啟動區。一個硬碟上最多可以有4個主分割槽,而擴充套件分割槽上可以劃分出多個邏輯驅動器。這些邏輯驅動器沒有獨立的引導塊,不能用fdisk設定為啟動區。

分割槽設定如下

第一次分割槽—根分割槽:
根分割槽也就是 / 分割槽,相當於Windows系統的C盤。在Linux系統裡,/是最上層目錄,其實就是一個根目錄。

掛載點:“/
大小:100G
新分割槽的型別:主分割槽
新分割槽的位置:空間起始位置
用於:EXT4日誌檔案系統
第一次分割槽完畢

第二次分割槽:

“空閒”處,繼續點“+”,如下設定,
掛載點:(不設定)
Swap交換分割槽:128G,這裡設定為何記憶體一樣,據說小於16G的記憶體,就設定成記憶體的1.5-2倍。
新分割槽的型別:邏輯分割槽
新分割槽的位置:空間起始位置
用於:交換空間
第二次分割槽完畢。

SWAP分割槽也叫交換分割槽,就是LINUX下的虛擬記憶體分割槽。
它的作用是在實體記憶體使用完之後,將磁碟空間(也就是SWAP分割槽)虛擬成記憶體來使用。

第三次分割槽引導分割槽:

引導分割槽,也就是引導作業系統啟動的程式所在的分割槽。/boot分割槽是系統啟動所需要的檔案。

“空閒”處,繼續點“+”,如下設定,
掛載點:/boot 設定Ubuntu啟動引導區。
大小:200MB(筆者暫時設定為200MB)
新分割槽的型別:邏輯分割槽
新分割槽的位置:空間起始位置
用於:EXT4日誌檔案系統
第三次分割槽完畢

第四次分割槽:

“空閒”處,繼續點“+”,如下設定,
掛載點:/home ,用於存放我們使用者的檔案。
大小:(剩餘全部空間,剩下顯示多少,就多少)。
鑑於Imagenet,PASCAL VOC之類的大客戶,建議500G,至少300G以上。
新分割槽的型別:邏輯分割槽
新分割槽的位置:空間起始位置
用於:EXT4日誌檔案系統
第四次分割槽完畢

分割槽設定完畢後,下方還有一項“安裝啟動引導器的裝置”,重要的一點:記得將“安裝啟動引導器的裝置”選擇稱為之前分配/boot的那個分割槽名。

UEFI 引導啟動需要設定 ESP(EFI系統分割槽),切記!!!

☆☆☆☆☆☆☆☆☆☆安裝前需要注意的問題:☆☆☆☆☆☆☆☆☆☆☆☆☆☆

a. 檢查自己的GPU是否支援CUDA,linux可用以下命令來檢視GPU型號:

lspci |grep –i nvidia

b. 檢查自己的作業系統是不是CUDA支援的,可以輸入以下命令:

uname -m && cat /etc/*release

x86_64
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION=”Ubuntu 16.04.2 LTS”
NAME=”Ubuntu”
VERSION=”16.04.2 LTS (Xenial Xerus)”
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=”Ubuntu 16.04.2 LTS”
VERSION_ID=”16.04”
HOME_URL=”http://www.ubuntu.com/”
SUPPORT_URL=”http://help.ubuntu.com/”
BUG_REPORT_URL=”http://bugs.launchpad.net/ubuntu/”
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial

uname -r

4.8.0-52-generic

03:00.0 3D controller: NVIDIA Corporation GK110BGL [Tesla K40c] (rev a1)
04:00.0 VGA compatible controller: NVIDIA Corporation GK110GL [Quadro K5200] (rev a1)
04:00.1 Audio device: NVIDIA Corporation GK110 HDMI Audio (rev a1)

CUDA-8支援的Linux系統

c. 檢查作業系統是否安裝了gcc,可用以下命令

gcc --version

很多作業系統都預裝有gcc,如果你的沒有就先安裝一下。有時gcc已經預裝,但是gcc –version執行後沒有顯示資訊,可以執行下面命令來查詢系統的gcc資訊。

cat /proc/version

d. 去https://developer.nvidia.com/cuda-downloads下載最新版的CUDA,目前是7.5的。這裡注意選擇與自己機器和作業系統相匹配的(比如我的是64位的Ubuntu15.04)。友情提醒:檔案有點大,大概1G,網速不好的同學請耐心等待。

e. 驗證下載的CUDA是否有效:

md5sum 安裝包名字

例如:

md5sum cuda-repo-ubuntu1504-7-5-local_7.5-18_amd64.deb

執行完上述命令後會出現一串md5值,例如我的是: 0a02f6efe0ba2b8dea3e7654ee0951d7,看看https://developer.nvidia.com/cuda-downloads/checksums列表中是否能找到你的md5值,如果不能找到,那就說明之前下的安裝包有問題,要重新下載。

第二部分:NVidia CUDA Toolkit的安裝(*.deb方法)

特別備註:Cuda7.5包含CUDA所需的所有驅動,不存在相容的問題,所以沒有必要去專門安裝Nvidia的驅動。

PS:特別推薦.deb的方法,目前已提供離線版的deb檔案,該方法比較簡單,不需要切換到tty模式,因此不再提供原來的.run安裝方法,這裡以CUDA 7.5為例。

對於出現迴圈登入介面的問題,所以需要禁用 nouveau驅動

禁用nouveau驅動

Ubuntu系統整合的顯示卡驅動程式是nouveau,我們需要先將nouveau從linux核心解除安裝掉才能安裝NVIDIA官方驅動。將nouveau新增到黑名單blacklist.conf中,(關於blacklist參見 《禁用Linux核心驅動》),linux啟動時,就不會載入nouveau.
因為nouveau驅動的影響,ubuntu安裝後無法登入桌面,所以在ubuntu系統啟動顯示登入介面後,需要按ctrl+alt+F1進入tty文字模式進入下面的操作

由於blacklist.conf檔案的屬性不允許修改。所以需要先修改檔案屬性。
檢視屬性

ll /etc/modprobe.d/blacklist.conf

修改屬性

sudo chmod 666 /etc/modprobe.d/blacklist.conf

用vi編輯器開啟

sudo vi /etc/modprobe.d/blacklist.conf

在檔案末尾新增如下幾行:

 blacklist vga16fb
 blacklist nouveau
 blacklist rivafb
 blacklist rivatv
 blacklist nvidiafb

修改並儲存檔案後,記得把檔案屬性復原:

sudo chmod 644 /etc/modprobe.d/blacklist.conf

再更新一下核心

sudo update-initramfs -u

關於update-initramfs命令的用途,參見 《initramfs 簡介,一個新的 initial RAM disks 模型》
修改後需要重啟系統。
重啟系統確認nouveau是否已經被遮蔽掉,使用lsmod命令檢視:

lsmod | grep nouveau

lsmod命令用於顯示已經載入到核心中的模組的狀態資訊,參見《lsmod命令》

一、CUDA Repository

sudo dpkg -i cuda-repo-ubuntu1504-7-5-local_7.5-18_amd64.deb
sudo apt-get update

二、CUDA Toolkit

sudo apt-get install -y cuda

#檢查CUDA安裝
重啟一下系統,讓NVIDIA GPU載入剛剛安裝的驅動,重啟完成之後執行

cat /proc/driver/nvidia/version

如果有如下顯示,說明GPU驅動載入成功

NVRM version: NVIDIA UNIX x86_64 Kernel Module 375.39 Tue Jan 31 20:47:00 PST 2017
GCC version: gcc version 5.4.1 20160904 (Ubuntu 5.4.1-2ubuntu1~16.04)

Information about the cuda compiler driver

nvcc -V

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Tue_Jan_10_13:22:03_CST_2017
Cuda compilation tools, release 8.0, V8.0.61

檢視NVIDIA驅動版本

sudo dpkg --list | grep nvidia-*
nvidia-smi  #檢視GPU使用情況
nvidia-settings #設定GPU引數,比如風扇運轉速度
sudo fuser -v /dev/nvidia* #查詢佔用GPU資源的PID
sudo lsof -n -w /dev/nvidia* #查詢佔用GPU資源的PID
sudo kill -9 ***(PID)  # 解除視訊記憶體佔用

第三部分 Matlab安裝和除錯(以Matlab 2014a為例)

1.下載

由於該軟體為商業軟體,請大家自行尋找,安裝學習,並確保不使用做商業目的,下載24小時刪除……

2. 預準備

選擇Mathworks.Matlab.R2014a.Unix.iso -右鍵 - 使用磁碟映像掛載器開啟”,進入裝載的虛擬光碟,拷貝全部檔案至home/Matlab資料夾,複製Crack/install.jar至 home/Matlab/java/jar/並覆蓋原始檔

 sudo cp install.jar /home/Matlab/java/jar/

3. 授權安裝資料夾

 chmod a+x Matlab -R

4. 進入/home/Matlab 安裝

 sudo ./install

選項:不使用Internet安裝
序列號: 12345-67890-12345-67890
預設路徑:/usr/local/MATLAB/R2014a
勾選從預設啟動路徑建立符號連結(實現在任意位置執行matlab啟動程式)
啟用檔案:license_405329_R2014a.lic
拷貝 /Crack/Linux 下的libmwservices.so至 /usr/local/MATLAB/R2014a/bin/glnxa64

sudo cp libmwservices.so /usr/local/MATLAB/R2014a/bin/glnxa64/

百度雲盤的 matlab2015b安裝情況類似

5.解決編譯器gcc/g++版本問題

因為Ubuntu 15.04的gcc/g++版本是4.9.2,而Matlab 2014a(2015a)的版本是4.7.x所以在使用matla呼叫mex檔案的時候,基本上都會報錯,根據報錯資訊,考慮如下兩步解決方案。
A. 降級安裝gcc/g++版本為4.7.x
(a). 下載gcc/g++ 4.7.x

 sudo apt-get install -y gcc-4.7
 sudo apt-get install -y g++-4.7

(b). 連結gcc/g++實現降級

 cd /usr/bin
 sudo rm gcc
 sudo ln -s gcc-4.7 gcc
 sudo rm g++
 sudo ln -s g++-4.7 g++

B. 暴力引用新版本GLIBCXX_3.4.20

sudo cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20 /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6.0.20

(libstdc++.so.6.0.20的版本,可能因為系統不同而不同,使用最新的就可以了。)
目錄切換到 /usr/local/MATLAB/R2014a/sys/os/glnxa64/,非常重要!

 sudo mv libstdc++.so.6 libstdc++.so.6.backup

(僅僅是備份,可以不備份,直接刪除)。

 sudo ln -s libstdc++.so.6.0.20 libstdc++.so.6
 sudo ldconfig -v

通過命令

strings /usr/local/MATLAB/R2014a/sys/os/glnxa64/libstdc++.so.6 |grep GLIBCXX

可以看一下,是否已經成功包含了GLIBCXX_3.4.20,如果已經存在,基本上就成功了。

6.編譯Matlab用到的caffe檔案(見第五部分)

第四部分 Caffe-Master的安裝和測試

一、安裝BLAS

這裡可以選擇(ATLAS,MKL或者OpenBLAS),三者的速度大致為MKL>OpenBLAS>ATLAS,推薦採用MKL。我這裡使用MKL,首先下載並安裝英特爾®數學核心庫 Linux*版MKL(Intel(R) Parallel Studio XE Cluster Edition for Linux 2016),下載連結是:https://software.intel.com/en-us/intel-education-offerings,使用學生身份(郵件 + 學校)下載Student版,填好各種資訊,可以直接下載,同時會給你一個郵件告知序列號。下載完之後,要把檔案解壓到home資料夾(或直接把tar.gz檔案拷貝到home資料夾,為了節省空間,安裝完記得把壓縮檔案給刪除喔~),或者其他的ext4的檔案系統中。

接下來是安裝過程,先授權,然後安裝:
tar zxvf parallel_studio_xe_2016.tar.gz
(如果你是直接拷貝壓縮檔案過來的)

 chmod a+x parallel_studio_xe_2016 -R
 cd parallel_studio_xe_2016 -R
 sudo sh install_GUI.sh

PS: 安裝的時候,建議使用root許可權安裝,過程中會要求輸入Linux的root口令。

若出現有32位的庫沒有找到的問題,32-bit libraries not found

sudo apt-get install g++-multilib

二、MKL與CUDA的環境設定

1. 新建intel_mkl.conf,並編輯之:

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

新增下列code

/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64

2. 新建cuda.conf,並編輯之:

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

新增下列code

/usr/local/cuda/lib64
/lib

3. 完成lib檔案的連結操作,執行:

sudo ldconfig -v
$ sudo apt-get install -y gfortran %需安裝gfortran來編譯

安裝步驟

cd OpenBLAS
make 
sudo make install
make -j 40 -f Makefile.install install
make[1]: Entering directory '/home/bids/softwares/OpenBLAS'
Generating openblas_config.h in /opt/OpenBLAS/include
Generating f77blas.h in /opt/OpenBLAS/include
Generating cblas.h in /opt/OpenBLAS/include
Copying LAPACKE header files to /opt/OpenBLAS/include
Copying the static library to /opt/OpenBLAS/lib
Copying the shared library to /opt/OpenBLAS/lib
Generating OpenBLASConfig.cmake in /opt/OpenBLAS/lib/cmake/openblas
Install OK!
make[1]: Leaving directory '/home/bids/softwares/OpenBLAS'

修改Caffe的Makefile.config

BLAS := open
BLAS_INCLUDE :=  /opt/OpenBLAS/include
BLAS_LIB := /opt/OpenBLAS/lib

export環境變數

export OPENBLAS_NUM_THREADS=4
export LD_LIBRARY_PATH=/opt/OpenBLAS/lib/:$LD_LIBRARY_PATH

接下來就可以使用caffe的多cpu進行計算了

三、安裝OpenCV 3.0.0

1. 下載並編譯OpenCV
(官網原版OpenCV:http://opencv.org/),或者使用我提供的修改版的安裝包 Install-OpenCV-master https://github.com/jayrambhia/Install-OpenCV(下面的安裝方式使用該包完成,安裝包修改了dependencies.sh檔案並增加了OpenCV 3.0.0的安裝檔案)

2. 切換到檔案儲存的資料夾,然後安裝依賴項:

cd Install-OpenCV-master
sudo sh Ubuntu/dependencies.sh

3. 切換目錄Ubuntu/3.0:

cd Ubuntu/3.0
sudo sh opencv3_0_0.sh

保證網路暢通,因為軟體需要聯網這裡時間較長,請耐心等待。

終端安裝

sudo apt-get install libopencv-dev python-opencv

原始碼編譯安裝

sudo apt install build-essential
sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

clone壓縮包的資料夾,把原始碼拿下來

git clone opencv/opencv

然後進入OpenCV資料夾:

mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

準備完畢,直接make並安裝:

make
sudo make install

四、安裝其他依賴項

tar zxvf glog-0.3.3.tar.gz
cd glog-0.3.3
./configure
make
sudo make install

如果沒有許可權就chmod a+x glog-0.3.3 -R ,或者索性 chmod 777 glog-0.3.3 -R ,裝完之後,這個資料夾就可以kill了。

2. 其他依賴項,確保都成功

sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler protobuf-c-compiler protobuf-compiler

五、安裝Caffe並測試

1. 安裝pycaffe必須的一些依賴項:

sudo apt-get install -y python-yaml python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython ipython-notebook python-imdbpy python-pip liblmdb-dev

sudo pip install lmdb 

備註:關於python模組的特別說明
具體詳情大家可以去下面連結去查閱
easy caffe 配置
python最蛋疼的一是縮排,二是包管理。
不同的包管理工具安裝的包之間可能是不相容的,出現互相依賴的時候,就特別麻煩了,而且解除安裝還是不乾淨的。
使用pip這個包管理工具安裝pithon模組。你只要熟悉幾個簡單的命令:

pip search <package name> #搜尋某包  
pip list #列出已安裝的包  
pip install <some package> #安裝一個包    
pip uninstall <installed package> #解除安裝  

有個比較好用的命令:pip install -r requirements.txt,在requirements.txt填上所有要安裝的模組名,pip會install one by one。
編輯 requirements.txt,新增所需的模組

Cython>=0.19.2
numpy>=1.10.2
scipy>=0.13.3
scikit-image>=0.11.3
scikit-learn>=0.17
matplotlib>=1.5.0
pyopencv
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
lmdb
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0
pyzmq
singledispatch
backports_abc
certifi
jsonschema
jupyter
qtawesome
pydot
notebook
sklearn 
skimage   
imdbpy
liblmdv-dev

一定要驗證python 安裝包依賴庫

cd caffe-master/python
for  req  in  $(cat  requirements.txt);  do  pip  install  $req;  done

終端可能會有很多紅字,那麼在執行下一句

for  req  in  $(cat  requirements.txt);  do  sudo  -H  pip  install $req --upgrade;  done 

2. 安裝配置nVidia cuDNN加速Caffe模型運算

a. 安裝前請去先官網https://developer.nvidia.com/cudnn下載最新的cuDNN (cudnn-7.0-linux-x64-v4),建議安裝v4

tar zxvf cudnn-7.0-linux-x64-v4.0-rc.tgz
cd cuda
sudo cp include/cudnn.h /usr/local/include
sudo cp lib64/libcudnn.* /usr/local/lib

b. 連結cuDNN的庫檔案

$ sudo ln -sf /usr/local/lib/libcudnn.so.4.0.4 /usr/local/lib/libcudnn.so.4

$ sudo ln -sf /usr/local/lib/libcudnn.so.4 /usr/local/lib/libcudnn.so

$ sudo ldconfig -v

———————————————————-

特別備註:a. 安裝前請去先官網下載最新的cuDNN (cudnn-7.0-linux-x64-v4),建議安裝v4,v4是執行caffe是沒有問題的,但是若此後還需要安裝 Theano,V4就不行了,在測試Theano會出現下列問題。詳情見

Using gpu device 0: Tesla K40c (CNMeM is disabled, cuDNN Version is too old. Update to v5, was 4004.)

所以最後的建議還是安裝V5
a. 安裝前請去先官網https://developer.nvidia.com/cudnn下載最新的cuDNN (cudnn-7.5-linux-x64-v5.0),建議安裝v5

tar zxvf cudnn-7.5-linux-x64-v5.0-ga.tgz
cd cuda
sudo cp include/cudnn.h /usr/local/include
sudo cp lib64/libcudnn.* /usr/local/lib

b. 連結cuDNN的庫檔案

$ sudo ln -sf /usr/local/lib/libcudnn.so.5.0.5 /usr/local/lib/libcudnn.so.5

$ sudo ln -sf /usr/local/lib/libcudnn.so.5 /usr/local/lib/libcudnn.so

$ sudo ldconfig -v

3.切換到Caffe-master的資料夾,生成Makefile.config配置檔案,執行:

cd caffe-master
cp Makefile.config.example Makefile.config

4. 配置Makefile.config檔案(僅列出修改部分)

sudo gedit Makefile.config

用來修改配置Makefile.config
a. 啟用CUDNN,去掉”#”

USE_CUDNN := 1

b. 配置一些引用檔案(增加部分主要是解決新版本下,HDF5的路徑問題)

INCLUDE_DIRS := $(PYTHON_INCLUDE)/usr/local/include /usr/lib/x86_64-linux-gnu/hdf5/serial/include

LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial

c. 啟用Intel Parallel Studio XE 2016

BLAS := mkl

d. 配置路徑,實現caffe對Python和Matlab介面的支援

PYTHON_LIB := /usr/local/lib

MATLAB_DIR := /usr/local/MATLAB/R2014a

c. 啟用OpenCV 3.0,去掉”#”

OPENCV_VERSION =3

5. 編譯caffe-master!!!”-j8”是使用CPU的多核進行編譯,可以極大地加速編譯的速度,建議使用。

特別備註:最好在編譯caffe-master之前進行重啟電腦,因為顯示卡驅動裝完需要重啟才能生效,否則有時會出現編譯錯誤.

cd caffe-master
make all -j16
make test -j16
make runtest -j16

6.編譯Python和Matlab用到的caffe檔案

make pycaffe -j16
make matcaffe -j16

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

備註:安裝BLAS,可以選擇ATLAS

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

如果不用 MKL的話,把上面4條命令跑一遍,然後裝好CUDA,之後執行

mkdir build
cd build
cmake ..
make all
make test
make runtest

這樣配置比MKL更加便捷。

安裝和配置cuDNN
把cudnn解壓之後,把對應的檔案拷貝到 cuda 的對應的 include 和 lib64目錄下,然後進入到build目錄,在該目錄下

cmake .. 
 make -j8 
 make runtest -j8 

注意:-j8 是指使用幾個執行緒來同時編譯, 可以加快速度, j後面的數字可以根據CPU core的個數來決定, 我的CPU使8核, 所以-j8.
這樣直接進入測試階段即可。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

caffe在伺服器上的copy使用

caffe的安裝比較複雜,因此如果伺服器上有其他使用者裝好配置好了caffe,我們可以拷貝過來使用,方法如下:

1. 新建自己的使用者

sudo adduser newaccount

2. 將別的使用者的caffe根目錄的包拷到自己的使用者

cp -r  ./caffe-master /home/newaccount

3 . 重新編譯

make clean
make all -j16
make test -j16
make runtest -j16

六、使用MNIST資料集進行測試

Caffe預設情況會安裝在CAFFEROOThome/username/caffe-master,所以下面的工作,預設已經切換到了該工作目錄。下面的工作主要是,用於測試Caffe是否工作正常,不做詳細評估。具體設定請參考官網:http://caffe.berkeleyvision.org/gathered/examples/mnist.html

mnist資料訓練樣本為60000張,測試樣本為10000張,每個樣本為28*28大小的黑白圖片,手寫數字為0-9,因此分為10類。

1. 資料預處理

 sh data/mnist/get_mnist.sh

執行成功後,在 data/mnist/目錄下有四個檔案:

train-images-idx3-ubyte:  訓練集樣本 (9912422 bytes) 
train-labels-idx1-ubyte:  訓練集對應標註 (28881 bytes) 
t10k-images-idx3-ubyte:   測試集圖片 (1648877 bytes) 
t10k-labels-idx1-ubyte:   測試集對應標註 (4542 bytes)

**2. 重建lmdb檔案。**Caffe支援多種資料格式輸入網路,包括Image(.jpg, .png等),leveldb,lmdb,HDF5等,根據自己需要選擇不同輸入吧。

sh examples/mnist/create_mnist.sh

生成mnist-train-lmdb和 mnist-train-lmdb資料夾,這裡包含了lmdb格式的資料集,存放的data.mdb和lock.mdb

3. 訓練mnist

sh examples/mnist/train_lenet.sh

至此,Caffe安裝的所有步驟完結,下面是一組簡單的資料對比,實驗來源於MNIST資料集,主要是考察一下不同系統下CPU和GPU的效能。可以看到明顯的差別了,雖然MNIST資料集很簡單,相信複雜得資料集,差別會更大,Ubuntu+GPU是唯一的選擇了。

第五部分增加新層(以Fast RCNN提出的 ROIPooling layer為例)

已配置和需要修改的檔案,參見百度雲盤:百度雲盤連結: http://pan.baidu.com/s/1hqCWTF2密碼: 8qw8
該教程僅為新增方案,切勿直接覆蓋原來的檔案,將雲盤中下載的檔案響應的內容覆蓋到合適的位置即可。

1. 新增層引用:

編輯檔案:$ include/vision_layers.hpp,將class ROIPoolingLayer新增到合適的位置(參考其他層)

2. 建立層檔案

建立roi_pooling_layer.cpp和 roi_pooling_layer.cu檔案到目錄