最近初接觸caffe,剛剛實現了windows 7下VS2015的caffe安裝,編譯測試成功。html
microsoft github的caffe-master支持VS 2013,試着用網上的教程搗鼓了半天在VS2015上看能不能編譯成功,結果出現一大堆問題,最後只好放棄。git
按照官方github上的說法,Requirements有寫Visual Studio 2013 or 2015,應該是能在VS2015上實現的。github
而以前見過的caffe+windows的安裝教程都是基於VS2013的,本文主要是實現caffe在VS2015的編譯。數據庫
首先介紹一下window7下個人配置環境:windows
VS2015+CMake3.8.0ide
Miniconda Python 2.7(x64)已安裝,能夠安裝MATLAB加上matcaffe接口。測試
CPU ONLY,無GPU,CUDA沒有安裝,cuDNN沒有安裝。ui
注意:CMake和Python加到系統變量裏去。spa
1. 下載caffe-windows 調試
原文中介紹,在cmd下只經過幾句話就能夠編譯成功:
C:\Projects> git clone https://github.com/BVLC/caffe.git C:\Projects> cd caffe C:\Projects\caffe> git checkout windows :: Edit any of the options inside build_win.cmd to suit your needs C:\Projects\caffe> scripts\build_win.cmd
這個build_win.cmd
會自動下載所需的依賴項並生成Visual Studio的sln文件。
實際上發現國內的網下載GitHub上的東西簡直就是渣渣,所以能夠先下載zip文件(https://github.com/BVLC/caffe/archive/windows.zip),解壓進入script文件夾,能夠發現build_win.cmd。
該文件中下面部分須要修改,把後綴改爲txt進行編輯:
:: Change to 1 to use Ninja generator (builds much faster) if NOT DEFINED WITH_NINJA set WITH_NINJA=0 //用vs2015的把這裏爲0 :: Change to 1 to build caffe without CUDA support if NOT DEFINED CPU_ONLY set CPU_ONLY=1 //CPU ONLY的把這裏爲1 ... :: Change these options for your needs. if NOT DEFINED BUILD_PYTHON set BUILD_PYTHON=1 if NOT DEFINED BUILD_PYTHON_LAYER set BUILD_PYTHON_LAYER=1 if NOT DEFINED BUILD_MATLAB set BUILD_MATLAB=0 //須要MATLAB接口的把這裏設置爲1
修改完畢把.txt再改爲.cmd後綴便可。
2. 下載依賴包
執行上述cmd文件,它又會開始幫你下載依賴項,依然很慢......
因而咱們能夠再一次先下載好所需的依賴項,而後解壓到目標文件夾中。
下載地址:https://github.com/willyd/caffe-builder/releases
按照安裝的版本選擇所需的依賴文件,好比我是VS2015,就選擇v140,Python是2.7版本的,就選擇py27..
最後下載的文件是libraries_v140_x64_py27_1.0.1.tar.bz2。
(這些文件各類網盤上也有很多,稍微搜索一下,不必定要經過github下)
解壓這個文件,發現是一個libraries文件夾。將壓縮文件和libraries文件夾分別放入自動下載文件中默認的下載路徑,好比個人是壓縮文件放在用戶文件夾中的\.caffe\dependencies\download,解壓文件夾放在\.caffe\dependencies\libraries_v140_x64_py27_1.0.1.tar.bz2。
將libraies文件夾加入環境變量之中。
這裏遇到了一個bug,每次執行build_win.cmd的時候總會用空的文件覆蓋我直接放進去的下載好的文件,致使運行錯誤,沒有依賴包存在。
最後修改了caffe-windows\caffe的WindowsDownloadPrebuiltDependencies.cmake,將其中下載依賴包的語句所有刪掉,最後成功。
刪除部分以下:
if(_download_file)
message(STATUS "Downloading prebuilt dependencies to ${_download_path}")
file(DOWNLOAD "${DEPENDENCIES_URL}"
"${_download_path}"
EXPECTED_HASH SHA1=${DEPENDENCIES_SHA}
SHOW_PROGRESS
)
if(EXISTS ${CAFFE_DEPENDENCIES_DIR}/libraries)
file(REMOVE_RECURSE ${CAFFE_DEPENDENCIES_DIR}/libraries)
endif()
endif()
if(EXISTS ${_download_path} AND NOT EXISTS ${CAFFE_DEPENDENCIES_DIR}/libraries)
message(STATUS "Extracting dependencies")
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xjf ${_download_path}
WORKING_DIRECTORY ${CAFFE_DEPENDENCIES_DIR}
)
endif()
其中WindowsDownloadPrebuiltDependencies.cmake的下載的依賴包版本默認爲1.1.0我也把這些相關的改爲了1.0.1,由於v1.0.1的依賴包在網盤上一下就找到了-_-||...
3. 生成caffe.sln文件
這裏生成sln文件默承認以用build_win.cmd運行生成,也能夠用cmake生成。
我是用cmake生成的,caffe-windows目錄下新建build文件夾,生成.sln文件放入其中。
CMakeLists.txt中也有部分參數須要修改,好比caffe_option中CPU-ONLY須要改爲1等等,這裏不太記得了。
用CMake生成時遇到了一個錯誤,Could NOT find Atlas....
查找緣由,發現makefile中的BLAS默認值爲altas。修改爲open便可。
也能夠將CMake裏的BLAS值下拉改成Open,就能夠成功生成了。
幾分鐘以後,cmake就會在build的目錄下生成一個在VS2015下的caffe.sln工程文件。
4. 編譯caffe.sln
用vs2015將caffe.sln打開,並在release x64或者Debug x64生成ALL_BUILD文件,沒有報錯說明配置應該成功了。
這裏參考了http://www.cnblogs.com/guanyu-zuike/p/5948670.html
下載MNIST數據庫,解壓縮後將mnist-test-leveldb與mnist-train-leveldb文件夾放到\examples\mnist下
修改lenet_train_test.prototxt文件,四處地方:
//須要修改四處地方,以下注釋標註
name: "LeNet"
layer {
name: "mnist"
type: "Data"
top: "data"
top: "label"
include {
phase: TRAIN
}
transform_param {
scale: 0.00390625
}
data_param {
source: "....省略/examples/mnist/mnist-train-leveldb" //寫上你的絕對路徑
batch_size: 64
backend: LEVELDB //格式改爲LEVELDB
}
}
layer {
name: "mnist"
type: "Data"
top: "data"
top: "label"
include {
phase: TEST
}
transform_param {
scale: 0.00390625
}
data_param {
source: "....省略/examples/mnist/mnist-test-leveldb"//寫上你的絕對路徑
batch_size: 100
backend: LEVELDB //格式改爲LEVELDB
}
}
修改lenet_solver.prototxt文件,三個地方:
net: "....省略/examples/mnist/lenet_train_test.prototxt" //絕對路徑
snapshot_prefix: "....省略/examples/mnist/lenet" //絕對路徑
solver_mode: CPU //CPU模式,
右鍵caffe打開屬性,在調試-命令參數裏設置輸入: train --solver=前面的絕對路徑/mnist/lenet_solver.prototxt
成功運行!
也能夠編寫批處理文件run.bat內容以下(個人caffe.exe在D:\caffe\build\tools\Release下):
D:\caffe\build\tools\Release\caffe.exe train --solver=前面的絕對路徑/mnist/lenet_solver.prototxt
Pause
便可看到運行界面啦~
至此,caffe在VS2015上成功安裝並調試~