標籤:
在 windows 10 下部署 Caffe 花了很多時間才調通,記錄下 key 節點以便後續查詢:
一、安裝軟體:
1、安裝 Microsoft Virtual Studio 2013 / Matlab 2015a / CUDA 7.5:
需要注意的是, VS2013 需要先安裝,以便於 Matlab 識別 VS路徑,CUDA 綁定內容;總之需要 VS2013 第一個安裝;
其中,VS2013 SP5 是必須的版本,據 happynear [CSDN,GitHub]描述,Caffe 在 VS2012 下編譯速度很慢(自測 VS2013 約半小時,i7 6700HQ/64G/970M/3G+SSD);
CUDA 測試用的 7.5 版本,其他版本不知道是否需要修改相關內容;
Matlab 測試使用的是 2015a,在前一次重設系統前是 2015b,似乎也沒有異常,有歡迎留言反饋其他版本;
2、安裝 cuDNN:
cuDNN 改善了 Caffe native 卷基層效率不高的弱點(參見 趙永科/蔔居 先生的大作《深度學習-21天實戰caffe》一書 P356 所提到的卷積網路效能對比),筆者下載的分支為 Microsoft 為 windows 所開發的分支,支援 cuDNN V3/V4,最新版本為 V5,Caffe 尚未官方(分支)支援,如要支援請參考蔔居先生的指導;如果沒有 nVIDIA 帳號,需要註冊一個帳號才能下載 cuDNN(網上搜可以得到網盤等資源);
此外,建議 cuDNN 單獨安裝在一個目錄中,獨立於 CUDA,方便更換版本(刪除就行);
3、安裝 Direct X SDK [非必選]:
Direct X SDK 是非必須的,Caffe 的 Demo 編譯時間提示某個常式需要 d3d9.h 檔案(不準確,後來總結時找不到具體是哪一個檔案了,歡迎留言反饋),下載這個版本就好;
4、安裝 Miniconda 部署 [非必選]:
為了編譯 Python 版本的 Caffe,需要安裝 Miniconda;
二、編譯 Caffe windows 分支:
Caffe 的 windows 分支有很多版本,測試使用的是 windows 版,這一版需要修改的內容較少(Happynear 版嘗試了下,太複雜不適合小白),還是 Microsoft 的版本 Microsoft/caffe 比較容易,記錄如下:
1、下載或 Git 源碼:
地址:傳送門;
2、複製 .\windows\CommonSettings.props.example 檔案,重新命名為 .\windows\CommonSettings.props;
3、修改 cuDNN 使能選項,決定是否使用 cuDNN;
3、安裝 cuDNN 時,如果沒有解壓 cuDNN 在 CUDA 目錄裡面,需要修改 cuDNN 路徑;
4、修改 Matlab 路徑為實際路徑:
5、可以開啟 Caffe.sln 並準備編譯了:
windows 版需要依賴 NuGet 提供的第三方庫,所以電腦能夠上網,且網速良好是十分必要的(該死的長城寬頻/該死的長城寬頻/該死的長城寬頻);
編譯可能會遇到一堆錯誤,不要緊,一個個檢查過去就好了;
其中測試時遇到的有:
提示 d3dx9.h 檔案找不到 -- 安裝 DirectX SDK;
提示 alt_sstream_impl.hpp 檔案有問題,簡單按下 Ctrl + S 儲存即可;
其他還可能遇到的錯誤,請FQ或百度一下(留言也可以,小白我不一定能解決);
需要注意的是,如果需要運行 Matlab,需要在編譯前運行 MatlabPreBuild.cmd,編譯後運行 MatlabPostBuild.cmd;
解決了必然存在的編譯錯誤,就愉快地產生了 windows 版的全部檔案;
三、跑 Matlab 版的測試:
1、下載基本資料:
可以在 GitHub 上下載需要的 bvlc_reference_caffenet.caffemodel 檔案,或者尋找其他資源如網盤;下載完成後解壓至 .\models\bvlc_reference_caffenet 目錄;
2、準備環境變數:
添加編譯出來的 .\Build\x64\Release 檔案夾到環境變數的 path 中,如果運行不成功記得重啟系統再試(很詭異,測試時重啟才看到環境變數生效);
3、啟動 Matlab,指向 .\matlab\demo 目錄;
添加路徑 .\Build\x64\Release\matcaffe 到 Matlab Path 中,然後運行如下命令:
im = imread(‘../../examples/images/cat.jpg‘);scores = classification_demo(im, 1);[score, class] = max(scores);
得到輸出:
Elapsed time is 0.073357 seconds.Elapsed time is 0.153671 seconds.Cleared 0 solvers and 1 stand-alone nets
可以看出,得到了最大可能的標籤為 282,0.2985.
運行如下代碼可以看到更多的分類結果細節:
figure;plot(scores);axis([0, 999, -0.1, 0.5]);grid on
經過艱難嘗試,Caffe 的 windows 版和 Faster-RCNN 先後攻克,標記一下解決過程,以備後續尋找。
此外,更常見的錯誤是 “Invalid MEX-file ‘……\caffe.mexw64‘: 找不到指定的模組”,這個錯誤需要分兩步解決,第一步是添加環境變數,目錄為 .\Build\x64\Release;第二步是將 matcaffe 加入 matlab 的目錄中(可能非必須,不加也成功過);
修改系統內容變數時,測試失敗,但重啟就可以,所以加了變數還不行建議重啟系統試試;如果一直不行,那麼將 .\Build\x64\Release 下產生的全部檔案都複製到 .\matlab\+caffe\private 下,重啟 Matlab 重試,應該可以解決。
windows 10 下 Caffe + Matlab 部署