【已過時】windows 10 下 Caffe + Matlab 部署


在 windows 10 下部署 Caffe 花了很多時間才調通,記錄下 key 節點以便后續查詢:

 

一、安裝軟件:

1、安裝 Microsoft Virtual Studio 2013 / Matlab 2015a / CUDA 7.5:

需要注意的是, VS2013 需要先安裝,以便於 Matlab 識別 VS路徑,CUDA 綁定內容;總之需要 VS2013 第一個安裝;

其中,VS2013 SP5 是必須的版本,據 happynear [CSDNGitHub]描述,Caffe 在 VS2012 下編譯速度很慢(自測 VS2013 約半小時,i7 6700HQ / 64G / 970M / 3G + SSD);

CUDA 測試用的 7.5 版本,其他版本的 Caffe 不知道是否需要修改相關源碼;

Matlab 測試使用的是 2015a,在前一次重置系統前是 2015b,似乎也沒有異常,默認是 2014b,有歡迎留言反饋其他版本;

2、安裝 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,方便更換版本(刪除就行);

3、安裝 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 后繼續安裝(參考文章)。 

4、安裝 Miniconda 部署 [非必選]:

為了編譯 Python 版本的 Caffe,需要安裝 Miniconda,Microsoft/Caffe 的 READ.ME 里面有相關的說明;

 

二、編譯 Caffe windows 分支:

開始之前,建議先編譯一下 CUDA 自帶的 Samples,以便測試 CUDA 環境,如果編譯運行有錯誤,可以在這階段方便地分離問題。

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 提供的第三方庫,所以電腦能夠上網,且網速良好是十分必要的(該死的長城寬帶 / 該死的長城寬帶 / 該死的長城寬帶);

編譯可能會遇到一堆錯誤,不要緊,一個個檢查過去就好了;

 其中測試時遇到的有:

顯示警告:“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 保存即可;

其他還可能遇到的錯誤,請翻牆或百度一下(留言也可以,小白我不一定能解決);

需要注意的是,如果需要運行 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 重試,應該可以解決。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM