有好多朋友在安裝 caffe 時遇到很多問題。(看文章的朋友但願關心一下個人創業項目趣智思成) 今天測試並整理一下安裝過程。我是在阿里雲上測試,選擇centos 7.3 鏡像。php
先安裝 epel 源html
1
|
yum
install
epel-release
|
安裝基本編譯環境python
1
2
|
yum
install
protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel
yum
install
gflags-devel glog-devel lmdb-devel<br>yum
install
atlas-devel<br>
#用默認的 atlas 有點問題,須要改成 openblas
|
1
2
3
4
|
yum
install
openblas-devel<br>
yum
install
python34-devel
yum
install
git
yum groupinstall
"Development Tools"
"Development Libraries"
|
下載源代碼linux
1
|
git clone https:
//github
.com
/BVLC/caffe
|
到源代碼目錄下執行git
1
|
mv
Makefile.config.example Makefile.config
|
修改配置文件 Makefile.config
全部不是#開頭的都須要修改github
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# CPU-only switch (uncomment to build without GPU support).
CPU_ONLY := 1
# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
BLAS :=
open
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
#BLAS_LIB := /path/to/your/blas
BLAS_INCLUDE :=
/usr/include/openblas
BLAS_LIB :=
/usr/lib64
|
最後在 caffe 目錄下運行:build。就完成了。有任何問題歡迎發在評論區。web
提到deep learning, caffe的大名天然是如雷貫耳,固然,除了caffe以外,還有不少其餘的框架,如torch,mxnet...可是,就我本身這一個月的實驗以及師兄的結論都是,caffe得出的實驗performance要高於別的框架,多是C++的威力吧~笑算法
OK,接下來準備在這個系列分享我使用和學習caffe的一些經驗,首先天然是框架的配置了。這裏咱們分享一下在windows10和ubuntu14.04虛擬機下的Caffe配置(:編程
1.軟件準備ubuntu
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
3.接下來就是一些軟件的安裝了,首先下載CUDA,能夠根據本身的GPU版本下載對應版本的CUDA,我這裏下載的是CUDA7.5:https://developer.nvidia.com/cuda-downloads
下載完成以後就能夠安裝了,這裏也是建議安裝在默認位置,等待解壓完成選擇默認設置,等待安裝完成便可.而後是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.測試
下面咱們在mnist數據集上作測試,MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burge在這裏下載這四個文件,解壓到D:\caffe-windows\data\mnist中右鍵打開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下的安裝配置就到這裏告一段落了,訓練大多數模型都已經沒問題了
大多數狀況下,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的,具體以下:
而後更新相應的庫路徑:
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進行訓練,因此速度會比較慢,大概三十分鐘才能整個訓練完
配置過程主要參考官方文檔:Ubuntu 14.04 VirtualBox VM · BVLC/caffe Wiki · GitHub
後面若是須要的話,還會繼續添加在Ubuntu14.04中的caffe配置,但目前這兩種已經夠用了
vector<shared_ptr<Blob<Dtype> > > blobs_;
vector<Blob<Dtype>*> ⊥
vector<Blob<Dtype>*> *top
virtual void Forward(const vector<Blob<Dtype>*> &bottom, vector<Blob<Dtype>*> *top) = 0; virtual void Backward(const vector<Blob<Dtype>*> &top, const vector<bool> &propagate_down, vector<Blob<Dtype>*> *bottom) = 0;
layers { bottom: "decode1neuron" // 該層底下鏈接的第一個Layer bottom: "flatdata" // 該層底下鏈接的第二個Layer top: "l2_error" // 該層頂上鍊接的一個Layer name: "loss" // 該層的名字 type: EUCLIDEAN_LOSS // 該層的類型 loss_weight: 0 }
vector<Dtype> loss_;
vector<shared_ptr<Blob<Dtype> > > blobs_;
vector<shared_ptr<Layer<Dtype> > > layers_;
vector<Blob<Dtype>*>& Forward(const vector<Blob<Dtype>* > & bottom, Dtype* loss = NULL); void Net<Dtype>::Backward();
shared_ptr<Net<Dtype> > net_;
virtual void ComputeUpdateValue() = 0;
ComputeUpdateValue(); net_->Update();