[圖解]FASTER R-CNN圖文詳解
- 2020 年 3 月 27 日
- 筆記
文章來自於www.xyu.ink/blog
論文原文
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
網路結構
Faster R-CNN 使用了注意力(attention)機制,它由兩個模組組成。 1. RPN(region proposal network) 作用是推薦影像中的有物體區域。 2. Fast R-CNN檢測器 作用是檢測是什麼物體。

RPN
RPN 網路的輸入是任意大小的影像,輸出是一些矩形以及這些矩形中是否有物體的得分。如下圖所示。

在原文中,RPN網路為CNN後面接一個3×3的卷積層,再接兩個並列的(sibling)1×1的卷積層,其中一個是用來給softmax層進行分類(2分類,有物體還是沒有物體),另一個用於給候選區域精確定位(框位置的偏移)。
Anchors
Anchors是一些預設大小的框,原文中Anchors的面積有三種 ANCHOR_AREAS = [128**2,256**2,512**2], 長寬比也有三種 ANCHOR_RATIOS = [0.5,1,2],所以一共有9種大小的Anchors,即k=9。Anchors的大小如下圖所示:

原本中Anchors的stride為16,也就是Anchor以步長16在原圖中滑動。對於一張1000*600的影像,總共大約有20000個anchors(≈60×40×9),如果忽略越過影像邊界的anchor,在訓練時每張影像總共有約6000個anchor。
如何確定一個anchor是正樣本還是負樣本
一個anchor如果滿足以下兩個條件之一的被認為是正樣本:
(i) 這個anchor和ground truth的方框有著最大的IoU重疊。
(ii) 這個anchor和ground truth的方框有超過0.7的IoU重疊。

一個anchor如果滿足以下條件的被認為是負樣本:
(i) 這個anchor和ground truth的方框的IoU重疊小於0.3。

既不是正樣本也不是負樣本的anchor在訓練中不被使用。
參考資料
https://github.com/endernewton/tf-faster-rcnn
https://web.cs.hacettepe.edu.tr/~aykut/classes/spring2016/bil722/slides/w05-FasterR-CNN.pdf https://zhuanlan.zhihu.com/p/31426458