caffe在Windows+VS2015+CPU ONLY下的編譯

 

最近初接觸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

 

  • 編譯caffe

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文件,沒有報錯說明配置應該成功了。

 

  • 測試caffe.exe

這裏參考了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上成功安裝並調試~

相關文章
相關標籤/搜索