RCNN、SPP-net、Fast-RCNN和Faster-RCNN

-牧野-發表於2018-05-02

RCNN


RCNN (Regions with CNN features) 的核心思想是把影象劃分成N(2000)個獨立的區域,分別提取每個區域的CNN特徵,然後把這些特徵使用SVM等分類器進行結果預測,把目標檢測任務轉換成了分類任務。RCNN由Ross Girshick在2013年提出。

RCNN演算法的4個步驟:

1.  候選區域選擇

選擇候選區域就是進行區域提名(Region Proposal)操作,找出潛在的感興趣區域。區域提名會提取到很多有重合區域的ROI,所以一般還會進行合併操作,綜合考慮如色彩,灰度,輪廓等因素,既要保證不會漏掉有用的區域,又不至於重疊太多。Ross Girshick的RCNN論文中取了2000個區域候選狂。

2. 區域大小歸一化

把第一步提取到的候選區域執行大小歸一化,論文中是歸一化到227×227。

3. CNN特徵提取

對每一個歸一化後的候選框區域執行標準的CNN過程,通過一系列卷積和池化操作,最後再通過2個全連線層,得到每個候選區域的固定維度的特徵向量。

4. 分類與邊界迴歸

把步驟3中得到的特徵向量使用SVM分類器(需要訓練好基於CNN特徵的SVM分類器)進行分類,用邊界迴歸(Bounding-box regression)演算法調整目標區域的位置,合併重疊區域,完成精確定位。



RCNN存在的主要問題:
  • 1. 重複計算,RCNN中的2000個候選框都要進行CNN操作,重複計算量很大。
  • 2. 訓練的空間和時間代價很高,RCNN中的區域提名、特徵提取、分類和迴歸沒能在一個流程中統一起來,有的需要單獨離線進行,候選區域需要單獨儲存,佔用磁碟空間較大。
  • 3. 檢測速度慢,在GPU上檢測約需要13S,CPU上約需要53S。

SSP-net


2014年,何愷明等對RCNN進行了改進,提出SPP-net(Spatial Pyramid Pooling net),SPP-net相比RCNN的改進主要有兩點:

一,使用空間金字塔方法實現維度歸一化

去掉了RCNN中對原始影象進行的剪裁,拉伸縮放等歸一化操作(這些warp操作導致物體的畸變,或幾何失真),轉而採用空間金字塔的方式,支援資料的多尺度輸入。
SPP-net的金字塔方法通過一個SPP層實現,加在最後一個卷積層後,第一個全連線層之前,實現了不同尺度的特徵送入全連線層之前的維度歸一化,

二, 只對原圖提取一次卷積特徵,不再對每個候選區域單獨執行CNN操作,在後邊做一個候選區域的對映,對應到候選區域的特徵上,減少了大量重複計算。


Fast-RCNN


2015年,Ross Girshick提出了 Fast-RCNN,Fast-RCNN結合了SPP-net的優點,主要為了解決2000個候選框帶來的重複計算問題,提高訓練和檢測效率,主要思想是使用一個叫做 ROI Pooling的結構,可以看做是單層的SPP-net層,可以把不同維度的CNN特徵歸一化到統一維度,之後經過全連線層再softmax分類。梯度也可以通過這個ROI池化層直接傳播,訓練不再需要多步進行。

實驗結果表明,Fast RCNN的測試速度比RCNN快213倍,比SPP-net快10倍。


Faster RCNN


Faster RCNN利用 RPN(Region Proposal Network)網路來完成候選框的選取,取代了傳統的區域提名方法。

RPN網路以任意大小的圖片作為輸入,輸出一系列矩形區域提名,每個區域對應一個目標類別分數以及對應的位置資訊。

Faster RCNN的主要步驟:
  • 1. 提取CNN特徵,以整張圖作為輸入,只計算一次CNN
  • 2. 區域提名,在最終的CNN特徵上,為每個點利用9個不同的矩形框,提名候選區域
  • 3. 區域判定和邊界迴歸:先對每個候選矩形框進行目標物體和非目標物體的二分類,排除掉非目標物體的矩形框,再用9個迴歸模型(對應9個矩形框)微調候選框位置和大小。
  • 4. 分類和邊界迴歸,對步驟3中提供的候選框結果進行篩選,目標分類和邊界迴歸。


相關文章