1. 程式人生 > >caffe學習(1):多平臺下安裝配置Caffe

caffe學習(1):多平臺下安裝配置Caffe

準備在這個專欄和大家分享一下自己學習深度學習的一些收穫,也起到共同學習的作用!加油!

提到deep learning, caffe的大名自然是如雷貫耳,當然,除了caffe之外,還有很多其他的框架,如torch,mxnet...但是,就我自己這一個月的實驗以及師兄的結論都是,caffe得出的實驗performance要高於別的框架,可能是C++的威力吧~笑

OK,接下來準備在這個系列分享我使用和學習caffe的一些經驗,首先自然是框架的配置了。這裡我們分享一下在windows10和ubuntu14.04虛擬機器下的Caffe配置(

一.Windows10 CUDA7.5 VS2013環境

1.軟體準備

1.我使用的是系統是win10,首先要確保下載安裝好visual stdio 2013,community版本下載連結在這,2014-Nov 12 Release Notes,這裡建議大家最好將VS安裝在預設C盤位置,不然之後編譯可能會出現各種莫名其妙的問題

2.GitHub - BVLC/caffe at windows 這是微軟修改的caffe windows版本,集成了caffe編譯需要的第三方庫,使用起來非常方便!下載好之後解壓到任意位置,我這裡是放在D盤下,接下來,到windows目錄下,copy一份CommonSettings.props.example到CommonSettings.props


然後用vs開啟CommonSettings.props,


我這裡是預設使用GPU,CUDA版本為7.5,支援python的配置,大家可以根據自己需要進行調整,GPU對應CUDA版本和CudaArchitecture大致如下圖


注意如果需要使用python介面的話,推薦安裝Miniconda 2.7 64-bit Windows installer(from Miniconda website)或者是Anaconda 2.7 64-bit Windows installer(Download Anaconda Now!)

然後對應修改CommonSettings.props,我這裡安裝的是Anaconda2


下載完成之後就可以安裝了,這裡也是建議安裝在預設位置,等待解壓完成選擇預設設定,等待安裝完成即可.然後是CUDNN,https://developer.nvidia.com/cudnn ,貌似需要註冊之後才能下載,應該不是很費事,下載cudnn v4


下載完成後,把解壓後的資料夾中的bin,lib/x64,include中的內容分別放至 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5中的bin,lib/x64,include三個子目錄下,這是%CUDA_PATH%路徑,如果不太確定可以去系統環境變數下檢視,最後就是Anaconda2了,下載完成之後開啟cmd,輸入以下命令安裝一些python庫

conda install --yes numpy scipy matplotlib scikit-image pip
pip install protobuf

至此,所有準備工作都已經完成了!

2.Caffe編譯

開啟D:\caffe-windows下的caffe.sln,將編譯選項切換成Release



我這裡刪除了一些以後一般不會用到的工程,其實最主要的是caffe,libcaffe,pycaffe這三個,加快編譯速度.然後我們先編譯libcaffe,一般這個不出問題整個安裝就沒什麼問題了。


最開始VS可能會比較卡,這是在安裝一些第三方庫(opencv,boost之類的,microsoft用Nuget整合在了這一步),安裝完成之後在D:\NugetPackages下的這些都是caffe編譯所需的第三方庫


然後默默等待編譯完成即可,大約需要十分鐘


看到這裡之後,這次安裝基本上已經成功了.接下來編譯剩下的即可


大功告成!

3.配置和使用

編譯完成後,接下來做一些簡單的配置:

1.首先,編譯完成後的所有檔案都在D:\caffe-windows\Build\x64\Release目錄下,


裡面包含最重要的就是caffe.exe以及pycaffe,如果需要在別的機器上使用的話,只需要將Release資料夾拷貝過去即可,不需要再重新編譯一遍

2.接下來我們做一些簡單設定,首先開啟環境變數設定,


在user variables下新建PATH和PYTHONPATH,填寫對應的檔案路徑,這樣就可以便捷使用caffe和caffe python介面了,配置好之後我們開啟cmd,先輸入caffe,在python中import caffe,如果都不報錯——證明你可以愉快的進入deep learning的殿堂了^_^


3.安裝git for windows,對於習慣Linux系統的人使用這個會更加方便,當然你只用命令列也可以,這個是可選項

4.測試


右鍵開啟git bash here,輸入:

../../Build/x64/Release/convert_mnist_data train-images.idx3-ubyte train-labels.idx1-ubyte mnist_train_lmdb
../../Build/x64/Release/convert_mnist_data t10k-images.idx3-ubyte t10k-labels.idx1-ubyte mnist_test_lmdb

這樣,訓練集和測試集就建立好了,將其拷貝至D:\caffe-windows\examples\mnist目錄下


進入該目錄,開啟lenet_train_test.prototxt,修改如下


然後開啟lenet_solver.prototxt,修改第二行即可,


這裡暫時不對這些配置檔案做解釋,只是安裝完之後進行的測試,ok下面開啟bash:

caffe train -solver=lenet_solver.prototxt -gpu 0

接著就可以看到一大串log出現,好像很厲害的樣子!


最後在測試集上的結果是99.13%!深度學習,很強勢!

好了,windows下的安裝配置就到這裡告一段落了,訓練大多數模型都已經沒問題了

二.VM Ubuntu14.04下安裝CPU版本的Caffe

大多數情況下,windows環境下的caffe能夠完美完成Linux下caffe的功能了,但畢竟Linux是標準平臺,網上的很多開原始碼都是基於Linux下的caffe的,比如神經網路視覺化工具deepvis,以及RGB大神的RCNN系列,而且大部分情況下只需要應用到Caffe在CPU下的版本,所以這裡給出虛擬機器下ubuntu14.04下安裝caffe的過程

1.建立虛擬機器

這裡我使用虛擬機器軟體是VirtualBox.首先建立一個linux/ubuntu14.04/64位/4GB記憶體的名為caffe的虛擬機器,這裡記憶體官網建議是8GB,但是筆記本總記憶體才8GB,大家有條件的建議分8GB



接下來一路下一步,


建立後點擊啟動,選擇映象,點選啟動,


下面就是建立虛擬機器的一些常見操作了,貼幾張關鍵的圖吧


點選continue後,漫長的等待。。。

重啟之後,我們先安裝一下VBox Additions


選擇裝置下的安裝增強功能,在終端中輸入

cd /media/<USER>/VBOXADDITIONS_4.3.16_95972 (where <USER> is your user name)
sudo ./VBoxLinuxAdditions.run

在Virtual Box Manager, 點選Settings, 然後選擇常規 | 高階 | 共享剪下板 | 雙向,然後選擇重啟,這樣虛擬機器就可以充滿全屏了,不再是一小塊


2.準備工作

首先安裝必要的環境:

sudo apt-get update #更新軟體列表   
sudo apt-get upgrade #更新軟體   
sudo apt-get install build-essential #安裝build essentials  
sudo apt-get install linux-headers-`uname -r` #安裝最新版本的kernel headers

注意:官網缺少前兩步,會導致CUDA安裝失敗

這也是個漫長的步驟,默默等待。。。

然後下載cuda7.5:

sudo apt-get install curl
cd Downloads/
curl -O "http://developer.download.nvidia.com/compute/cuda/7.5/Prod/local_installers/cuda_7.5.18_linux.run"

這又是個漫長的過程。。。如果嫌這種方式太慢,可以去官網直接下載,然後複製進虛擬機器,不過這種方式有時會出現一點問題

chmod +x cuda_7.5.18_linux.run #使其可執行
sudo ./cuda_7.5.18_linux.run #執行

說明:安裝的過程中會顯示終端使用者許可協議(EULA),很長,可以按‘q’退出閱讀,然後安裝的時候不要安裝顯示卡驅動,因為虛擬機器是沒法使用GPU的,具體如下:

  • Accept the EULA
  • Do NOT install the graphics card drivers (since we are in a virtual machine)
  • Install the toolkit (leave path at default)
  • Install symbolic link
  • Install samples (leave path at default)


然後更新相應的庫路徑:

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64:/usr/local/lib' >> ~/.bashrc
source ~/.bashrc

安裝必要的依賴庫:

sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler gfortran libjpeg62 libfreeimage-dev libatlas-base-dev git python-dev python-pip libgoogle-glog-dev libbz2-dev libxml2-dev libxslt-dev libffi-dev libssl-dev libgflags-dev liblmdb-dev python-yaml
sudo easy_install pillow

下載Caffe並安裝Python依賴庫

cd ~
git clone https://github.com/BVLC/caffe.git
cd caffe
cat python/requirements.txt | xargs -L 1 sudo pip install

漫長的等待。。。

增加符號連結

sudo ln -s /usr/include/python2.7/ /usr/local/include/python2.7  
sudo ln -s /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy/ /usr/local/include/python2.7/numpy  

然後修改Makefile.config

cp Makefile.config.example Makefile.config  

用gedit開啟Makefile.config(或者直接用vim在終端中開啟修改也可以)

1)去掉 # CPU_ONLY: = 1 的註釋


2)在PYTHON_INCLUDE下, 把/usr/lib/python2.7/dist-packages/numpy/core/include替換成/usr/local/lib/python2.7/dist-packages/numpy/core/include


3.編譯Caffe

終於可以編譯caffe了,這三句即可,如果前面配置一切正常,這裡應該不會出錯

make pycaffe  
make all  
make test  

依然是等待。。。

4.測試

這裡我們測試一下CPU下的caffe能否正常執行即可:

首先為方便使用,我們將PYTHONPATH寫入.bashrc中:

echo 'export PYTHONPATH=/home/<USER>/caffe/python' >> ~/.bashrc 
source ~/.bashrc

然後在終端中輸入:python和import caffe


一切正常

下面測試一下mnist資料集:

cd ~/caffe 
./data/mnist/get_mnist.sh  
./examples/mnist/create_mnist.sh  

然後編輯examples/mnist資料夾下的lenet_solver.prototxt檔案,將solver_mode模式從GPU改為CPU

./examples/mnist/train_lenet.sh  

由於是使用CPU進行訓練,所以速度會比較慢,大概三十分鐘才能整個訓練完


後面如果需要的話,還會繼續新增在Ubuntu14.04中的caffe配置,但目前這兩種已經夠用了