1. 程式人生 > >VS2013下安裝&編譯Windows Caffe

VS2013下安裝&編譯Windows Caffe

想在Windows平臺使用Caffe,吭哧吭哧下載了半天第三方庫,後來忽然發現Microsoft官方移植了Caffe,配置起來簡直太省心了…


1. 從Microsoft官方Github上下載Caffe,原始碼壓縮包不到9MB大小,並將其解壓縮到本地目錄


https://github.com/Microsoft/caffe


2.安裝NVIDIA CUDA,目前最新版本是7.5,離線安裝包約962MB(8.0版也即將要釋出了)。

Nvidia CUDA Toolkit


3.安裝NVIDIA cuDNN(CUDA Deep Neural Library),目前最新版本是5(windows Caffe支援cuDNN 4和5)

Nvidia cuDNN

下載的壓縮包中是Nvidia編譯好的lib和dll以及.h標頭檔案,約39MB,解壓縮到本地目錄即可。


4.開啟Caffe解壓縮目錄,將其中windows目錄中的CommonSettings.props.example複製一份並重命名為CommonSettings.props,然後使用Visual Studio 2013開啟Caffe.sln解決方案。首先我們要將第3步中的cuDNN目錄新增到libcaffe工程目錄中,開啟CommonSettings.props編輯<CuDnnPath>標籤;或者是開啟工程的“屬性”->“配置屬性”->“VC++目錄”,在右側的“包含目錄”中將cuDNN的include檔案路徑新增進去即可。然後我們就可以對Caffe進行編譯了。

此時有同學可能會問,Caffe所依賴的boost、OpenCV、gflags、glog等第三方庫統統都沒有配置,難道不需要提前安裝了嗎?現在這個問題不用擔憂了,因為Microsoft有非常強大的NuGet工具。只要當我們第一次編譯工程時,NuGet便開始自動下載並配置這些第三方庫了,同時會在Caffe同層目錄生成一個名為NugetPackages的資料夾,資料夾內容如下圖所示。第三方庫全部下載解壓縮後這個資料夾大小約1GB,所以NuGet下載時間還挺漫長的。



5.如果在編譯過程中提示“error C2220: 警告被視為錯誤 - 沒有生成“object”檔案”,這是由於微軟NuGet回來的boost庫中的format\alt_sstream_impl.hpp檔案編碼格式導致的,只需要雙擊錯誤開啟該檔案並儲存,再編譯就順利通過了。


6.如果我們安裝的CUDA版本不是7.5版本,或者我們甚至沒有GPU,一樣也可以正常使用Caffe

開啟CommonSettings.props對以下對應的標籤進行編輯即可,

<CpuOnlyBuild>false</CpuOnlyBuild> // 是否只使用CPU模式

<UseCuDNN>true</UseCuDNN> // 使用CuDNN

<CudaVersion>7.5</CudaVersion> // 使用的CUDA版本

<PythonSupport>false</PythonSupport> // Python支援

<MatlabSupport>false</MatlabSupport> // Matlab支援

<CudaArchitecture>compute_52,sm_52</CudaArchitecture>// 計算能力要和當前顯示卡匹配


CudaArchitecture很重要,需要設定成和當前顯示卡計算能力匹配,否則即使僥倖通過編譯,執行時也會報錯提示invalid device function。NVIDIA官網可以查詢顯示卡計算能力

https://developer.nvidia.com/cuda-gpus


7.如果需要配合Python使用,則將上面的標籤<PythonSupport>值改為true。由於Caffe的工程配置預設是x64,因此Python也需要安裝64位版本的,同時還需要安裝64位的numpy。

如果編譯Caffe Debug版本時提示缺少python27_d.lib,可以將Python安裝目錄libs資料夾中的python27.lib複製一份,重新命名為python27_d.lib即可。再修改Python安裝目錄include資料夾中的pyconfig.h檔案,將#define Py_DEBUG一行註釋掉。