1. 程式人生 > >Windows+VS2015編譯caffe+py-faster-rcnn

Windows+VS2015編譯caffe+py-faster-rcnn

一、前期環境以及準備

1、安裝python

在caffe中,python2和python3的介面都有。但frcnn中只能支援python2.7,所以千萬不要裝成python3。為了方便,不用自己去pip一大堆庫,我建議安裝anaconda2,裡面已經安裝了很多第三方的庫。

2、安裝(更新)顯示卡驅動和cuda

NVIDIA的顯示卡驅動安裝應該不用我說了吧,到官網上下載吧。我要說明一點的是,我的1080ti在安裝顯示卡驅動時,說和Windows不匹配。怎麼解決呢?更新Windows,到官網上下驅動,再安裝。成功!還有就是記得更新你的顯示卡驅動,以防老的驅動不支援cuda。

CUDA安裝的話,也是傻瓜試的安裝。提醒一點的是,不要改變他的安裝路徑,預設路徑。然後去NVIDIA的官網上下載cudnn庫,這個庫的話需要去NVIDIA註冊一個賬號,然後問你用這個來完成什麼工作之類的巴拉巴拉。這個庫長什麼樣呢?下載完解壓縮,得到一個cuda的資料夾,裡面有3個資料夾


然後開啟你的CUDA資料夾,預設路徑是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0


把cudnn庫裡面的3個資料夾裡面的檔案,分別加到cuda裡面對應的資料夾。

然後開啟cuda需要編譯的部分,預設路徑是C:\ProgramData\NVIDIA Corporation\CUDA Samples\v8.0


因為我用的VS2015,那麼我就用開啟2015的那個,然後改成release執行。

至此,顯示卡計算的環境就搭建完成了。

3、cmake和git

cmake的話,我建議直接下載編譯好的能執行的檔案(到官網上下載)https://cmake.org/download/,然後解壓檔案,把bin的路徑新增到Path中。

git:因為frcnn裡面有很多linux的指令碼,你可以不用,但用的話會很方便的。所以我建議安裝git。同樣,傻瓜式的安裝,直接到官網上下載。

二、py-faster-rcnn

1、編譯caffe的python介面GPU版本(如果你編譯過了就不用了)

因為frcnn的編譯過程用需要用到python的caffe包,所以必須要先編譯一次caffe。如果你已經編譯過caffe的py介面就不用了。

你可以用git直接下載,或者在git的地址裡下載,隨便你。

git clone https://github.com/BVLC/caffe.git
cd caffe
git checkout windows

開啟caffe\scripts,然後編輯build_win.cmd檔案


第7行的VERSION是你VS的版本,VS2015對應的是14,VS2013對應的應該是12;第8行改為0;第9行改為0(如果你不用GPU,那就還是1);13行的python_version是你的python版本,2.x就是2,3.x就是3;24,28行是你的python的安裝目錄,如果你是anaconda就改你的anaconda的目錄,否則就不改。


同樣69-95行同樣修改。以上2張圖是我的cmake檔案配置。

進入caffe\scripts,開啟cmd,直接執行build_win.cmd。注意他會自動下載需要的庫,因為伺服器呢都不在國內,所以我建議掛個VPN,不然你且等呢吧。

這樣cmake後呢,python的介面就已經編譯好了,不用再編譯一遍了。把caffe\python下的caffe的資料夾copy到python的第三方包的資料夾就ok。

這樣caffe的python介面就好了,你可以進cmd的python試一下import caffe。如果說,他提示少了什麼包,你直接pip這個包就好了,找不到的話,百度一下就有。但只要你跟著上面我的方法做應該不會出現什麼問題。

2、編譯py-faster-rcnn依賴庫


好了,現在你的庫應該長成這樣,有setup.py和setup_cuda.py。進cmd,install這2個檔案。

現在你肯定會遇到問題,提示你VC版本不對

怎麼辦呢,先set一下:輸入SET VS90COMNTOOLS=%VS140COMNTOOLS%VS後面的數字就是你的版本。還有不要忘了把你VS的c1.exe加到path下



編譯好frcnn的依賴庫後,應該是這個樣子的。

3、給caffe加frcnn的層

現在,我們再下載一個caffe,跟前面一樣,把build_win.cmd進行修改。然後我們就可以把frcnn的一些特有的層加到caffe裡編譯了。

1)新增層和檔案

     開啟py-faster-rcnn\caffe-fast-rcnn\src\caffe\layers資料夾,找到4個檔案分別為


   然後copy到你新的caffe的對應資料夾caffe\src\caffe\layers裡。

   接著我們新增標頭檔案,開啟py-faster-rcnn\caffe-fast-rcnn\include\caffe,把fast_rcnn_layers.hpp這檔案copy到caffe的對應資料夾下caffe\include\caffe。

2)配置2個新層

    開啟你的caffe\src\caffe\proto下的caffe.proto,進行編輯。

在407行左右

往原來的檔案裡新增新的層的配置資訊

  optional ROIPoolingParameter roi_pooling_param = 8266711;
  optional SmoothL1LossParameter smooth_l1_loss_param = 8266712;
message ROIPoolingParameter {
  // Pad, kernel size, and stride are all given as a single value for equal
  // dimensions in height and width or as Y, X pairs.
  optional uint32 pooled_h = 1 [default = 0]; // The pooled output height
  optional uint32 pooled_w = 2 [default = 0]; // The pooled output width
  // Multiplicative spatial scale factor to translate ROI coords from their
  // input scale to the scale used when pooling
  optional float spatial_scale = 3 [default = 1];
}
message SmoothL1LossParameter {
  // SmoothL1Loss(x) =
  //   0.5 * (sigma * x) ** 2    -- if x < 1.0 / sigma / sigma
  //   |x| - 0.5 / sigma / sigma -- otherwise
  optional float sigma = 1 [default = 1];
}
3)cmake新的caffe的python介面

    就是再執行一遍build_win.cmd就行。編譯好之後,把caffe根目錄下的python資料夾替換py-faster-rcnn\caffe-fast-rcnn的python資料夾。

三、demo

完成以上步驟你的py-faster-rcnn就已經編譯成功了。如果你想用demo測試一下的話可以用.\data\scripts裡的指令碼去下載已經訓練好的model,檔案挺大的、速度挺慢的。所以給大家提供一個百度雲https://pan.baidu.com/s/1nuAOmG5,把caffemodel檔案放在data\faster_rcnn_models,然後執行tools\demo.py就能看到結果了