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配置,但目前這兩種已經夠用了