R-CNN, FastR-CNN, FasterR-CNN總結與比較

1. R-CNN

Rich feature hierarchies for accurate object detection and semantic segmentation [CVPR14] pdf
在這裏插入圖片描述

  1. 在輸入圖片上通過selective search方法選擇RoI,也就是Region Proposal(候選框),R-CNN中的R就來自於這個詞。
  2. 對於每個proposal,通過CNN提取特徵
  3. 對於提取的特徵,bbox迴歸確定邊界框位置,SVM用來做分類確定目標的類別。
    在這裏插入圖片描述

R-CNN問題:

  1. 要有專門的訓練目標函數:log loss, hinge loss, least squares
  2. 訓練麻煩而且時間長
  3. 推斷過程也很慢

對於每個候選區域用一個CNN,後來出現的SPPNet解決了輸入尺寸不確定的問題:
在這裏插入圖片描述
SPPNet提出了空間金字塔池化,將輸出不同尺寸的feature map通過SPP層變成固定的長度的全連接層輸入

2. Fast R-CNN

Fast R-CNN [ICCV15] pdf
在這裏插入圖片描述

  • 用一個convnet施加在輸入圖片上(卷積共享,提升速度)。
  • 在這個convnet輸出的feature map上找到輸入圖片上對應的RoI,特徵圖上的區域就是輸入圖像上RoI的特徵。
  • 將這些區域的特徵分別通過RoI pooling層(借鑑SSPNet的思想),變成固定長度的全連接層輸入
  • 分類和迴歸也放入到網絡中去。

Fast R-CNN問題:

圖像進入網絡之前還需要在CPU上用傳統算法ss找RoI,這步操作佔據了檢測時間的大部分,差不多兩秒。

3. Faster R-CNN

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks [NIPS15] pdf在這裏插入圖片描述

  • 用一個convnet施加在原始輸入圖片上
  • 在這個convnet輸出的feature map上施加一個Region Proposal Network (RPN),用來代替之前在原始圖像上的傳統方法。產生很多個候選框。RPN後接也兩個loss,classification loss爲二分類,判斷這個框是不是物體,用來過濾不要的候選框,bbox regression loss微調給定的邊框,使之anchor box可以更接近gt的框。
  • 後面的步驟和RCNN一樣,classification loss爲多分類。

RPN

在這裏插入圖片描述

  • 經過VGG或者ZFNet產生的特徵圖作爲RPN的輸入。
  • 在特徵圖上執行3x3的滑窗操作,每個滑窗對應的區域映射爲低維特徵(256-d for ZF and 512-d for VGG, with ReLU following),後接兩個全連接分支:一個分類一個迴歸。
  • 每個3x3滑窗的中心,在原始圖像上對應的感受野上有kk個anchor boxes(論文中是9個:3個尺度和對應的3個長寬比),所以每個滑窗會得到2k個分類結果和4k個迴歸結果。
  • 假如特徵圖大小有W×HW\times H,則會產生W×H×kW\times H\times k個anchors.
    論文輸出特徵圖60x40,大概要2w個框
    RPN具有平移不變性

訓練RPN

爲了訓練RPN,需要對每個anchor構造一個二分類的label,即這個框是不是物體。
標記爲正標籤:i)跟gt的IOU最大的框爲正. ii)跟gt的IOU大於0.7的爲正。
標記爲負標籤:跟gt的IOU小於於0.3的爲負。大於0.3小於0.7的對損失函數不做貢獻。
損失函數:
在這裏插入圖片描述
LclsL_{cls}:log loss,
LregL_{reg}:smooth L1.
λ=10\lambda =10
迴歸的損失求的是預測和真實之間一種變換的因子,tit_i,tit_i^*由下面公式給出:
在這裏插入圖片描述

RPN訓練細節

SGD
mini-batch爲1,因爲一張圖像就產生很多個框。在一張圖像中隨機選256個anchor
將特徵圖上超過邊界的框過濾掉,不過在測試過程中,超過邊界的框不過濾,需要clip,也就是超出的部分切掉。
通過NMS,設置閾值0.7,將重疊的框再過濾掉。
然後再在這些框中取top128做正樣本。


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