從RCNN到Faster RCNN

R-CNN (Region-based CNN features)

性能:RCNN在VOC2007上的mAP是58%左右。

簡述:R-CNN要完成目標定位,其流程主要分爲四步:

  • 1.輸入圖像
  • 2.利用選擇性搜索(Selective Search)這樣的區域生成算法提取Region Proposal 提案區域(2000個左右)
  • 3.將每個Region Proposal分別resize(因爲訓練好的CNN輸入是固定的)後(也即下圖中的warped region,文章中是歸一化爲227×227)作爲CNN網絡的輸入。
  • 4.CNN網絡提取到經過resize的region proposal的特徵送入每一類的SVM分類器,判斷是否屬於該類。

這裏寫圖片描述

RCNN的缺點:

  • 1:對於提取的每個Region Proposal,多數都是互相重疊,重疊部分會被多次重複提取feature),都要分別進行CNN前向傳播一次(相當於進行了2000喫提特徵和SVM分類的過程),計算量較大,。
  • 2:CNN的模型確定的情況下只能接受固定大小的輸入(也即wraped region的大小固定)

優化思路:

既然所有的Region Proposal都在輸入圖像中,與其提取後分別作爲CNN的輸入,爲什麼不考慮將帶有Region Proposal的原圖像直接作爲CNN的輸入呢?原圖像在經過CNN的卷積層得到feature map,原圖像中的Region Proposal經過特徵映射(也即CNN的卷積下采樣等操作)也與feature map中的一塊兒區域相對應。


SPP net

簡述:SPP net中Region Proposal仍然是在原始輸入圖像中選取的,不過是通過CNN映射到了feature map中的一片區域。

SPP-NET的主要思想是:

  • 1.對卷積層的feature map上的Region Proposal映射區域分別劃分成1×1,2×2,4×4的窗口(window),
  • 2.在每個窗口內做max pooling,這樣對於一個卷積核產生的feature map,就可以由SPP得到一個(1×1+2×2+4×4)維的特徵向量。
  • 3.論文中採用的網絡結構最後一層卷積層共有256個卷積核,所以最後會得到一個固定維度的特徵向量(1×1+2×2+4×4)×256維),並用此特徵向量作爲全連接層的輸入後做分類。

相對於R-CNN,SPP-net的優勢是:

  • 1.使用原始圖像作爲CNN網絡的輸入來計算feature map(R-CNN中是每個Region Proposal都要經歷一次CNN計算),大大減少了計算量。
  • 2.R-cnn要resize,易於失真,
  • 3.而SPP-net 不需要,原因是,SPP net中Region Proposal仍然是通過選擇性搜索等算法在輸入圖像中生成的,通過映射的方式得到feature map中對應的區域,並對Region Proposal在feature map中對應區域做空間金字塔池化。通過空間金字塔池化操作,對於任意尺寸的候選區域,經過SPP後都會得到固定長度的特徵向量。

SPP-net缺點是:

  • 1.訓練分多個階段,步驟繁瑣(微調網絡+訓練SVM+訓練邊框迴歸器)
  • 2.SPP net在微調網絡的時候固定了卷積層,只對全連接層進行微調

fast R-CNN

性能:在VOC2007上的mAP也提高到了68%

其效果是:

  • 1.比R-CNN和SPP net更高的檢測精度(mAP)
  • 2.訓練過程是端到端的(Sigle-stage),並使用了一個多任務的損失函數(也即將邊框迴歸直接加入到CNN網絡中後,Fast R-CNN網絡的損失函數包含了Softmax的損失和Regressor的損失)
  • 3.訓練過程可以更新所有的網絡層;

優化處是:

  • 1.Fast R-CNN引入了RoI 池化層(相當於是一層SPP),對於圖像中的Region Poposal(也即RoI),通過映射關係(圖中的RoI projection)可以得到feature map中Region Proposal對應的區域。
  • 2.RoI Pooling層的操作是將feature map上的RoI區域劃分爲7×7的窗口,在每個窗口內進行max pooling,然後得到(7×7)×256的輸出,最後連接到全連接層得到固定長度的RoI特徵向量。
  • 3.前面得到的RoI特徵向量再通過全連接層作爲Softmax和Regressor的輸入。
    這裏寫圖片描述

小結:

在前面三種目標檢測框架中(R-CNN,SPP net,Fast R-CNN),Region Proposal都是通過區域生成的算法(選擇性搜索等)在原始輸入圖像中產生的,不過在SPP net及Fast R-CNN中都是輸入圖像中的Region Proposal通過映射關係映射到CNN中feature map上再操作的。Fast R-CNN中RoI池化的對象是輸入圖像中產生的proposal在feature map上的映射區域


Faster R-CNN

性能:Fater-RCNN速度更快了,而且用VGG net作爲feature extractor時在VOC2007上mAP能到73%。

優化處:

  • 1.Faster R-CNN相比於Fast R-CNN做的改進則是利用RPN來產生候選區域(也即通過RPN產生的Region Proposal映射到feature map中再作爲RoI池化層的輸入
  • 2.RPN網絡產生Region Proposal的方式是在feature map中採用滑動窗口的方式在每個滑動位置上產生大小及長寬比不同的9個錨點框(其實就是在原始輸入圖像上)。3×3的滑動窗口對應的每個特徵區域同時預測輸入圖像3種尺度3種長寬比的Region Proposal,這種映射機制稱爲anchor。詳細點說就是這個RPN由兩部分構成:一個卷積層,一對全連接層分別輸出分類結果(cls layer)以及 座標迴歸結果(reg layer)。卷積層:stride爲1,卷積核大小爲3*3,輸出256張特徵圖(這一層實際參數爲3*3*256*256)。相當於一個sliding window 探索輸入特徵圖的每一個3*3的區域位置。當這個13*13*256特徵圖輸入到RPN網絡以後,通過卷積層得到13*13個 256特徵圖。也就是169個256維的特徵向量,每一個對應一個3*3的區域位置,每一個位置提供9個anchor。於是,對於每一個256維的特徵,經過一對 全連接網絡(也可以是1*1的卷積核的卷積網絡),一個輸出 前景還是背景的輸出2D;另一個輸出迴歸的座標信息(x,y,w, h,4*9D,但實際上是一個處理過的座標位置)。於是,在這9個位置附近求到了一個真實的候選位置。

簡述:

  • Fater-RCNN中的region proposal netwrok實質是一個Fast-RCNN,這個Fast-RCNN輸入的region proposal的是固定的(把一張圖片劃分成n*n個區域,每個區域給出9個不同ratio和scale的proposal),
  • 輸出的是對輸入的固定proposal是屬於背景還是前景的判斷和對齊位置的修正(regression)。
  • Region proposal network的輸出再輸入第二個Fast-RCNN做更精細的分類和Boundingbox的位置修正

這裏寫圖片描述

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章