FasterRCNN 理解與總結

RCNN系列的內容已經有非常多同學分享出來了,這裏做個簡單的總結,和相關的理解。主要是概括算法流程以及特點,做個記錄,方便回顧。先簡單介紹下RCNN和Fast RCNN,在詳細記錄faster rcnn的RPN網絡的理解。

RCNN:

1. 流程

(1). 採用傳統方法Selective Search產生目標候選框

(2). 對每個候選框,用深度卷積神經網絡提取特徵得到feature map

(3). 每個框得到的feature map餵給SVM分類器,並通過線性迴歸調整bounding box的位置和大小,使得更接近 gt

2. 缺點:

(1)CNN網絡參數不共享

(2)採用SVM分類器,速度慢

(3)產生後選框ROI的大小不一樣,這樣導致CNN輸出與FC維度不統一

 

總的來說,RCNN比較笨,比較慢,進而提出SPP-net。SPP-net用CNN一次性提取特徵,並利用空間金字塔池化(spatial pyramid pooling)將大小不一致的proposal變成大小一樣的。

Fast RCNN

1. 流程:

(1)CNN提取輸入圖像特徵,得到feature map

(2)從feature map得到ROIs

(3)ROI pooling之後通過softmax 對每個ROI進行分類,並通過BBox reg調整bbox的位置

2. 缺點:

(1)通過Selective Search得到ROI十分耗時

 

Faster RCNN

1. 流程:

(1)同樣的用CNN提取輸入圖像的特徵,得到feature map

(2)通過RPN網絡對候選框進行二分類,判別候選框內容是前景還是背景,留下前景的候選框,拋棄背景候選框,並通過迴歸微調前景的BBox與標註gt接近。關於RPN網絡的操作流程及細節,下文會闡述

(3)ROI pooling

(4)通過多分類器對候選框進行多分類,即gt有幾類,這個就會分成相應的類別

(5)再進行BBox reg

2. loss的組成部分:

由上述總體流程,可以得知faster rcnn整體的loss由四個部分組成:

(1)RPN網絡進行二分類的loss(候選框是前景 or 背景)

(2)RPN網絡前景BBox與gt微調的loss,BBox reg loss

(3)多分類的loss,從RPN網絡得到的bbox進行多類別判斷的loss

(4)最後每個類別BBox reg微調的loss

3. RPN網絡

(1)RPN網絡的輸入是CNN得到的feature map,RPN在feature map上用3*3的滑動窗得到對應原圖的多個候選框。

什麼意思呢?feature map上的每一個點,都可以映射到原圖的一個區域(即感受野)。對feature map 每個點,對應原圖的區域,進行不同的形狀變換,得到不同大小形狀的框就是anchor box。feature map上的每一個點就是原圖區域anchoe box的中心點。爲了使得覆蓋範圍更廣,檢測的物體更多,並保證效率,faster rcnn基於3個不同尺寸大小,3種不同尺度變換的anchor box做變換,對於feature map的每一個點,在原圖區域得到9個anchor box。

(2)去掉超出圖像邊界的anchor box,把所有anchor box送入二分類層,判斷每個anchor box是前景還是背景;同時把anchor box送入迴歸層,調整box與gt接近。

 

 

4. 關於RPN的補充

(1)cls 和reg層都是全卷積網絡,用1*1的卷積核代替全連接

(2)anchor 具有平移不變性

(3)anchor的二分類時,有兩個方法判斷爲正例:與gt有最大的IOU的anchor認爲是正例;與gt的IOU大於0.7的anchor認爲是正例

(4)對重複的box,用nms進行合併進行篩選。若box1和box2重複IOU大於0.7,看box1與box2哪個二分類正例的得分高,誰高保留誰

(5)關於感受野理解補充可參考這位博主:https://blog.csdn.net/program_developer/article/details/80958716

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