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

然後用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

3.接下來就是一些軟體的安裝了,首先下載CUDA,可以根據自己的GPU版本下載對應版本的CUDA,我這裡下載的是CUDA7.5:developer.nvidia.com/cu

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

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

conda install --yes numpy scipy matplotlib scikit-image pipnpip install protobufn

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

2.Caffe編譯

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

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

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

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

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

大功告成!

3.配置和使用

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

1.首先,編譯完成後的所有文件都在D:caffe-windowsBuildx64Release目錄下,

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

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

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

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

4.測試

下面我們在mnist數據集上做測試,MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burge在這裡下載這四個文件,解壓到D:caffe-windowsdatamnist中

右鍵打開git bash here,輸入:

../../Build/x64/Release/convert_mnist_data train-images.idx3-ubyte train-labels.idx1-ubyte mnist_train_lmdbn../../Build/x64/Release/convert_mnist_data t10k-images.idx3-ubyte t10k-labels.idx1-ubyte mnist_test_lmdbn

這樣,訓練集和測試集就創建好了,將其拷貝至D:caffe-windowsexamplesmnist目錄下

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

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

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

caffe train -solver=lenet_solver.prototxt -gpu 0n

接著就可以看到一大串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)nsudo ./VBoxLinuxAdditions.runn

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

2.準備工作

首先安裝必要的環境:

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

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

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

然後下載cuda7.5:

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

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

chmod +x cuda_7.5.18_linux.run #使其可運行nsudo ./cuda_7.5.18_linux.run #運行n

說明:安裝的過程中會顯示最終用戶許可協議(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)

安裝必要的依賴庫:

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-yamlnsudo easy_install pillown

下載Caffe並安裝Python依賴庫

cd ~ngit clone https://github.com/BVLC/caffe.gitncd caffencat python/requirements.txt | xargs -L 1 sudo pip installn

漫長的等待。。。

增加符號鏈接

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

然後修改Makefile.config

cp Makefile.config.example Makefile.config n

用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 nmake all nmake test n

依然是等待。。。

4.測試

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

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

echo export PYTHONPATH=/home/<USER>/caffe/python >> ~/.bashrc nsource ~/.bashrcn

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

一切正常

下面測試一下mnist數據集:

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

然後編輯examples/mnist文件夾下的lenet_solver.prototxt文件,將solver_mode模式從GPU改為CPUn

./examples/mnist/train_lenet.sh n

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

配置過程主要參考官方文檔:Ubuntu 14.04 VirtualBox VM · BVLC/caffe Wiki · GitHub

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


推薦閱讀:

batch normalization的multi-GPU版本該怎麼實現?
深度學習系統相比較傳統的機器學習系統,針對常見的分類問題,精度究竟能有多大提升?
RNN神經網路訓練過程中weight幾乎不更新,只有bias更新?
卷積神經網路為什麼要加一層降採樣層呢?
深度學習在量化投資方面都有哪些可以借鑒應用的地方?如何結合一些策略方法?

TAG:Caffe深度学习框架 | 深度学习DeepLearning | 机器学习 |