引言
論文:《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》
詳細內容可以參看博客,我只記錄一些我自己的理解。
摘要
1.提出使用RPN網絡替代R-CNN和Fast R-CNN中的區域提取Selective Search
2.採用RPN和Fast R-CNN交替訓練的方式
RPN網絡
網絡結構大致如下,就是傳統的CNN網絡進行multi-task。可以採用ZFnet或者是VGG16net兩種架構。
Anchor
主要記錄一下anchor的概念。
Anchor是設置在原圖上的一些矩形框。RPN進行ROI提取的大致思路就是:對CNN最後一層的feature map進行3*3的滑窗,feature map的每一個節點可以對應原圖上的一個感知區,逐個判斷Anchor是否包含ROI。
論文爲了解決多尺度的問題,設置了9種不同的Anchor。9的來源是:ratio [1:1,1:2,2:1]和scale [128,256,512]的全排列。
Feature Map的每一個節點都對應一個Anchor的中心點,因此,對於ZFnet網絡的Feature Map最後一層輸出是40*60,因此會對應40*60*9=21600個Anchors。需要對每一個anchor判斷是否包含ROI。爲了解決Anchors太多的問題,論文提出使用如下兩個方式進行解決:
1.忽略cross boundary的Anchor。意思就是,如果某一個Anchor與邊緣交叉了,那麼就將這個anchor去掉。這樣的做法是可以理解的,不想將某一個cross boundary的anchor刪除的一個原因是可能這裏出現了obj,但是由於各種scale的anchor遍佈整個原圖,完全會有其他更合適的非cross-boundary的anchor標註該obj,因此刪除。
通過這樣的方式可以將Anchor下降到6000個左右
2.通過非極大抑制算法NMS可以將Anchor 下降到約2000個左右
NMS算法介紹
損失函數
RPN網絡的損失函數介紹如下:
由分類的損失函數和迴歸的損失函數組成(PS: 分類的損失函數指的是判斷anchor內部)
下面分別進行介紹
分類損失函數
其中,
迴歸損失函數
其中
其中