Faster R-CNN解讀

引言

論文:《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網絡的損失函數介紹如下:

L(pi,ti)=1NclsiLcls(pi,pi)+λ1NregipiLreg(ti,ti)

由分類的損失函數和迴歸的損失函數組成(PS: 分類的損失函數指的是判斷anchor內部)
下面分別進行介紹

分類損失函數

1NclsiLcls(pi,pi)

其中,
{pi預測概率pi{1正例0反例Ncls1個minibatch中的anchor數量

Lcls函數是Softmax 函數

迴歸損失函數

λ1NregipiLreg(ti,ti)

其中
{pi{1正例0反例目的是計算正例anchorNreganchor的總數量

Lreg=smoothL1(ti,ti)

其中
smoothL1(x)={0.5x2當|x|<1|x|0.5
發佈了60 篇原創文章 · 獲贊 37 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章