Widows下Faster R-CNN的MATALB配置(GPU)




說在前面,這篇是關於Windows下Faster R-CNN的MATLAB配置,GPU版本;CPU版本見:Widows下Faster R-CNN的MATALB配置(CPU)

相比較來說,CPU版本相對容易一些,因為涉及到GPU的計算,還需要配置CUDA以及CuDNN;

下面將分成三個部分進行介紹:

  • 准備工作:下載caffe、faster rcnn源碼、安裝cuda、cudnn;
  • VS2013編譯caffe: 編譯支持matlab接口的caffe;
  • Faster R-CNN的MATLAB源碼測試:

環境配置:

Windows 10
VS 2013
CUDA 7.5, CuDNN V5
MATLAB 2018a


1. 准備工作

1.1 安裝CUDA、CuDNN

有關安裝CUDA的過程見:Windows下安裝CUDA8.0;該文章記錄的是安裝CUDA 8.0的過程以及在VS上的使用;


附加說明:

建議使用CUDA 7.5,CuDNN V5;

注意:將CuDNN壓縮包解壓到與下面的caffe與faster rcnn位於同級目錄;


1.2 Faster R-CNN的MATLAB源碼

下載faster_rcnn的matlab源碼:下載地址

得到./faster_rcnn文件夾;

打開matlab,定位到./faster_rnn/,目錄結構如下圖所示;

部分文件夾介紹:
experiment/:主要是用於testing/training的腳本;
external/:主要存放成功編譯的提供matlab接口的caffe;(后面將花費很多時間在這個上面)
fetch_data/:作者提供的一些用於下載的腳本文件;

其中的都是一些依賴方法,大家可以去看一下;

1.3 Microsoft-Caffe

下載Microsoft提供的caffe:下載地址

解壓得到./caffe文件夾;

目前,我們得到兩個文件夾;

1.4 matlab指定C/C++編譯器

打開matlab,執行:

mex -setup

選擇 Microsoft Visual C++ 2013 (C) 進行C語言編譯,如下圖:

2. VS2013編譯Caffe

2.1 CommonSettings.props

打開./caffe/windows/,找到CommonSettings.props.example文件,復制后,將名稱改為CommonSettings.props,如下圖:

使用Notepad打開·./caffe/windows/CommonSettings.props,根據自己的配置,做如下修改:

  • 第一處紅框:使用CUDA加速計算、僅使用CPU計算,兩者選其一;由於我們配置GPU,CUDA版本7.5,因此配置如圖;
  • 第二處紅框:提供matlab接口;
  • 第三處紅框:指定CuDNN V5的路徑,我的配置路徑如圖所示;也就是說將下載好的CuDNN壓縮包解壓到G:\ObjectDetection\Faster R-CNN\Faster R-CNN_GPU中;
  • 第四處紅框:修改兩個位置,一個是MATLAB的安裝路徑,另一個如圖;

補充說明:

有關<CudaArchitecture>compute_35,sm_35;compute_52,sm_52</CudaArchitecture>,可以修改為與自己顯卡相對應的計算能力,提示說可以減少編譯時間;

有關顯卡的計算能力查詢,見:英偉達GPU顯卡計算能力評估(深度學習)



2.2 項目-屬性配置

修改完成,使用VS2013打開./caffe/windows/Caffe.sln,雙擊即可;

打開之后,將Debug模式調成Release模式;(在調試的過程中,可能會重新加載項目,注意需要調整成Release)

之后,

libcaffe項目右鍵—> 屬性—>配置屬性—> C/C++ —> 常規,將將警告視為錯誤修改為

否則,編譯libcaffe時會報下面的錯誤;

提示出現:error C2220:...,表示alt_sstream_impl.hpp文件編碼格式錯誤;解決方法是:雙擊錯誤信息,彈出錯誤提示信息,確定后打開一個alt_sstream_impl.hpp文件,然后Ctrl+S進行保存即可;

2.3 添加roi_pooling_layer

打開解決方案資源管理器,

在項目libcaffe中添加roi_pooling_layer.cu, roi_pooling_layer.cpp, roi_pooling_layer.hpp:

  • libcaffe/cu/layers/右鍵—>添加—>現有項,添加./caffe/src/caffe/layers/roi_pooling_layers.cu文件;
  • libcaffe/include/layers/右鍵—>添加—>現有項,添加加./caffe/include/caffe/layers/roi_pooling_layers.hpp文件;
  • libcaffe/src/layers/右鍵—>添加—>現有項,添加./caffe/src/caffe/layers/roi_pooling_layers.cpp文件;

2.4 編譯libcaffe

選中項目libcaff,右鍵—> 重新生成

首先會自動還原NuGet包,然后生成成功;

======== 全部重新生成:  成功 1 個,失敗 0 個,跳過 0 個 ==========

(如果出現錯誤(不包含警告),仔細檢查上面配置是否正確;)

2. 5 編譯matcaffe

如果上面幸運的話,沒出什么錯,那這里也不會遇到什么麻煩了;

類似重新生成libcaffe,以同樣的方式,選擇matcaffe,右鍵—> 生成

成功后,輸出:

========== 生成:  成功 2 個,失敗 0 個,最新 1 個,跳過 0 個 ==========

到目前為止,我們已經有了四個文件夾,如下圖所示:

  • ./caffe/:表示microsoft提供的caffe;
  • ./cuda/:表示CuDNN V5的文件,解壓到該處;
  • ./faster_rcnn/:表示faster r-cnn的matlab源碼;
  • ./NugetPackages/:就是在編譯libcaffe時還原出來的NuGet包;
  • 另外,./caffe/Build/x64/Release/下就是得到caffe;

其中,./caffe/Build/文件夾就是編譯caffe得到文件;

如果在./caffe/Build/x64/Release/matcaffe+caffe/private/文件夾下,有caffe_.mexw64文件表明caffe的matlab接口編譯正確;


3. Faster R-CNN的MATLAB源碼測試

3.1 external

Faster R-CNN的源碼中,我們看到有./faster_rcnn/external/caffe/文件夾,該文件夾是為了存放編譯好的caffe;

而在這里,並不打算將編譯好的caffe復制到該文件夾下,而是通過設置系統環境變量和添加matlab搜索路徑

具體步驟如下:

  • ./caffe/Build/x64/Release/添加到系統變量的path中;
  • ./caffe/Build/x64/Release/matcaffe/添加到matlab的搜索路徑中;
  • ./caffe/matlab/+caffe/文件夾(不包含子文件夾)下的所有.m文件拷貝到/caffe/Build/x64/Release/matcaffe/+caffe/文件夾下;
  • 重啟電腦,完成caffe在matlab中的配置;

3.2 Preparation for Testing

  1. Run fetch_data/fetch_caffe_mex_windows_vs2013_cuda65.m to download a compiled Caffe mex (for Windows only).
  2. Run faster_rcnn_build.m
  3. Run startup.m

其中,

  1. 第0步:表示下載作者提供的編譯好的caffe,因為我們已經編譯好了,這里不需要執行;
  2. 第1步:執行faster_rcnn_build.m

打開faster_rcnn_build.m后,修改nvmex.m文件,如下圖:

  • 按照VS的安裝位置修改紅框內的路徑;
  • 第二個紅框注意修改CUDA版本;
  • 其他變量都是通過系統變量來獲取得到的;


補充說明:

在使用Matlab 2018a執行faster_rcnn_build.m時,總是報錯:

LIBCMT.lib(crt0dat.obj) : error LNK2005: _amsg_exit 已經在 MSVCRT.lib(MSVCR120.dll) 中定義
LIBCMT.lib(crt0dat.obj) : error LNK2005: _initterm_e 已經在 MSVCRT.lib(MSVCR120.dll) 中定義
...

不知道怎么解決,幸好沒有將之前安裝matlab 2016a卸載,使用matlab2016a再執行,就成功通過了;


  1. 第2步:執行start_up.m文件;

    這是因為,我們沒有將編譯好的caffe放在./external/caffe/文件夾下;

    因此,根據錯誤提示,需要在./external/caffe/文件夾下新建一個空白名為matlab的文件夾;

    然后,再執行start_up.m,就不會報錯了;

3.2 Testing Demo

  1. Run fetch_data/fetch_faster_rcnn_final_model.m to download our trained models.
  2. Run experiments/script_faster_rcnn_demo.m to test a single demo image.

其中,

  • 第0步:下載作者提供的訓練好的模型文件;

    其中下載鏈接好像需要翻牆,如果有需要的話,可以從這里下載:下載地址,提取碼:62n6;

    下載完成后,解壓到./faster_rcnn/中,覆蓋原來的./faster_rcnn/output/文件夾,以及多出了五張圖片;

  • 第1步:執行腳本文件experiments/script_faster_rcnn_demo.m,測試;

    當然該腳本中的參數,可以適當調整;

由於我的筆記本不行,即使換成ZF-Net也跑步了,檢測的結果了,結果應該和Widows下Faster R-CNN的MATALB配置(CPU)是一致;


免責聲明!

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



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