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版也即將要釋出了)。
3.安裝NVIDIA cuDNN(CUDA Deep Neural Library),目前最新版本是5(windows Caffe支援cuDNN 4和5)
下載的壓縮包中是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一行註釋掉。