在 windows 10 下部署 Caffe 花了不少時間才調通,記錄下 key 節點以便後續查詢:html
1、安裝軟件:git
一、安裝 Microsoft Virtual Studio 2013 / Matlab 2015a / CUDA 7.5:github
須要注意的是, VS2013 須要先安裝,以便於 Matlab 識別 VS路徑,CUDA 綁定內容;總之須要 VS2013 第一個安裝;redis
其中,VS2013 SP5 是必須的版本,據 happynear [CSDN,GitHub]描述,Caffe 在 VS2012 下編譯速度很慢(自測 VS2013 約半小時,i7 6700HQ / 64G / 970M / 3G + SSD);windows
CUDA 測試用的 7.5 版本,其餘版本的 Caffe 不知道是否須要修改相關源碼;網絡
Matlab 測試使用的是 2015a,在前一次重置系統前是 2015b,彷佛也沒有異常,默認是 2014b,有歡迎留言反饋其餘版本;app
二、安裝 cuDNN:性能
cuDNN 改善了 Caffe native 卷基層效率不高的弱點(參見 趙永科/卜居 先生的大做《深度學習-21天實戰caffe》一書 P356 所提到的卷積網絡性能對比),筆者下載的分支爲 Microsoft 爲 windows 所開發的分支,支持 cuDNN V3/V4,對於最新版本爲 V5,Caffe 還沒有官方(Microsoft 分支)支持,如要支持請參考卜居先生的指導;若是沒有 nVIDIA 帳號,須要註冊一個帳號才能下載 cuDNN(網上搜能夠獲得網盤等資源,文件名:cudnn-7.0-win-x64-v4.0-prod.zip cudnn-7.0-win-x64-v3.0-prod.zip cudnn-7.5-windows10-x64-v5.0-ga.zip );學習
此外,建議 cuDNN 單獨安裝在一個目錄中,獨立於 CUDA,方便更換版本(刪除就行);測試
三、安裝 Direct X SDK [非必選]:
Direct X SDK 是非必須的,CUDA 的 Demo 編譯時提示幾個例程須要 d3dx9.h 文件,下載這個版本就好;
若是安裝出錯(非全新系統容易出現),提示「Error Code: S1023:Setup failed. Errors were encountered during installation of redistributable packages. Please close all open programs and try running setup again. If problems persist, contact DirectX Developer Support.」,錯誤以下圖,能夠卸載 Microsoft Visual C++ 2010 x86/x64 redistributable 後繼續安裝(參考文章)。
四、安裝 Miniconda 部署 [非必選]:
爲了編譯 Python 版本的 Caffe,須要安裝 Miniconda,Microsoft/Caffe 的 READ.ME 裏面有相關的說明;
2、編譯 Caffe windows 分支:
開始以前,建議先編譯一下 CUDA 自帶的 Samples,以便測試 CUDA 環境,若是編譯運行有錯誤,能夠在這階段方便地分離問題。
Caffe 的 windows 分支有不少版本,測試使用的是 windows 版,這一版須要修改的內容較少(Happynear 版嘗試了下,太複雜不適合小白),仍是 Microsoft 的版本 Microsoft/caffe 比較容易,記錄以下:
一、下載或 Git 源碼:
地址:傳送門;
二、複製 .\windows\CommonSettings.props.example 文件,重命名爲 .\windows\CommonSettings.props;
三、修改 cuDNN 使能選項,決定是否使用 cuDNN;
三、安裝 cuDNN 時,若是沒有解壓 cuDNN 在 CUDA 目錄裏面,須要修改 cuDNN 路徑;
四、修改 Matlab 路徑爲實際路徑:
五、能夠打開 Caffe.sln 並準備編譯了:
windows 版須要依賴 NuGet 提供的第三方庫,因此電腦可以上網,且網速良好是十分必要的(該死的長城寬帶 / 該死的長城寬帶 / 該死的長城寬帶);
編譯可能會遇到一堆錯誤,沒關係,一個個檢查過去就行了;
其中測試時遇到的有:
顯示警告:「math_functions.h(4492): warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss」,相似這樣數百數千個警告,不用管就能夠;
提示 alt_sstream_impl.hpp 文件有問題:「Error 8711 error C2220: warning treated as error - no 'object' file generated (..\..\src\caffe\util\math_functions.cpp) .\Caffe\NugetPackages \ boost.1.59.0.0\ lib \native \include \boost\format\alt_sstream_impl.hpp」,並提示了出錯的行,這是這個文件的編碼或是結尾等內容與當前系統或編譯器設置不匹配,簡單按下 Ctrl + S 重寫 alt_sstream_impl.hpp 保存便可;
其餘還可能遇到的錯誤,請FQ或百度一下(留言也能夠,小白我不必定能解決);
須要注意的是,若是須要運行 Matlab,須要在編譯前運行 MatlabPreBuild.cmd,編譯後運行 MatlabPostBuild.cmd(沒有深究編譯先後是否自動調用了);
解決了必然存在的編譯錯誤,就愉快地生成了 windows 版的所有文件;
3、跑 Matlab 版的測試:
一、下載基本數據:
能夠在 GitHub 上下載須要的 bvlc_reference_caffenet.caffemodel 文件,或者尋找其餘資源如網盤;下載完成後解壓至 .\models\bvlc_reference_caffenet 目錄;
二、準備環境變量:
添加編譯出來的 .\Build\x64\Release 文件夾到環境變量的 path 中,若是運行不成功記得重啓系統再試(很詭異,測試時重啓纔看到環境變量生效);
三、啓動 Matlab,指向 .\matlab\demo 目錄;
添加路徑 .\Build\x64\Release\matcaffe 到 Matlab Path 中,而後運行以下命令:
1 2 3 |
|
獲得輸出:
1 2 3 |
|
能夠看出,獲得了最大可能的標籤爲 282,0.2985.
運行以下代碼能夠看到更多的分類結果細節:
1 2 3 |
|
如圖:
通過艱難嘗試,Caffe 的 windows 版和 Faster-RCNN 前後攻克,標記一下解決過程,以備後續查找。
此外,更常見的錯誤是 「Invalid MEX-file '……\caffe.mexw64': 找不到指定的模塊」,這個錯誤須要分兩步解決,第一步是添加環境變量,目錄爲 .\Build\x64\Release;第二步是將 matcaffe 加入 matlab 的目錄中(可能非必須,不加也成功過);
修改系統環境變量時,測試失敗,但重啓就能夠,因此加了變量還不行建議重啓系統試試;若是一直不行,那麼將 .\Build\x64\Release 下生成的所有文件都複製到 .\matlab\+caffe\private 下,重啓 Matlab 重試,應該能夠解決。