[Paper Share - 3]Light-Head R-CNN: In Defense of Two-Stage Object Detector

姓名:崔少杰 ? ? ? 學號:16040510021

轉載自:http://www.itdecent.cn/p/3c448a02f6a8=有修改

【嵌牛導讀】:論文針對two-stage的目標檢測框架中,回歸坐標和分類的子網(wǎng)絡進行優(yōu)化,主要結合Faster RCNN和RFCN兩個網(wǎng)絡有點,同時提出自己的改進,最終在Accuracy和Speed上都取得了state-of-the-art的表現(xiàn)。

【嵌牛鼻子】:Introduction、Related works、Our Approach、Experiments

【嵌牛提問】:對比試驗R-CNN subnet是什么?

【嵌牛正文】:1.Introduction

一般來說Two-Stage的檢測框架,第一步是產(chǎn)生足夠多的候選框,作者稱之為Body;第二步是對候選框進行識別,作者稱為Head,像大腦做出判斷。通常,想要取得最好的準確率,Head的設計一般比較Heavy,就是計算量參數(shù)較多,計算量比較大。作者發(fā)現(xiàn),像Faster RCNN和R-FCN都有共同點,就是一個非常Heavy的Head接到主體框架上。Faster RCNN就接了兩個全連接層在ResNet 的第5個Stage后面。并且,ROI Pooling后的特征非常大,所以第一個全連接層非常耗內(nèi)存,并且影響速度。并且,每個Region Proposal都要經(jīng)過兩個全連接層,計算量非常大。而在R-FCN中,雖然少了兩個全連接層,但是,需要構建一個Classes×p×p大小的Score Map,也是需要非常大的內(nèi)存和計算量。所以本文結合兩者優(yōu)點,提出一些改進,主要如下兩點:

使用Large-Kernel Seperable Convolution來產(chǎn)生一個“Thin”的Score Map,Score Map只有a×p×p通道。在論文中,作者用了a=10。

在ROI Pooling后接上一個全連接層。為什么要接上這個全連接層呢?因為原來的R-FCN的Score Map是Classes×p×p通道,正好對應Classes的預測,現(xiàn)在沒有這么多個通道了,沒辦法用原來的投票方法了,所以接上一個全連接層也是為了后面能夠接上Faster RCNN的回歸和分類。

2.Related works

這個沒啥好說的,就是大體說了下目標檢測的近況。挺全面的。

3.Our Approach

橋黑板!劃重點!

事實上,論文的一張彩圖已經(jīng)說明了一切。好像已經(jīng)不用費口舌去解釋。

網(wǎng)絡對比2

不過,作者還是做了些解釋。

從Accuracy角度來看,F(xiàn)aster R-CNN為了減少第一層全連接層的計算量,引入global average pooling,雖然對ROI的分類有好處,但是損失了空間信息,對目標回歸不好。而R-FCN直接對position-sensetive pooling后的結果進行Pooling,沒有ROI-Wise層,所以效果沒有Faster RCNN好。

從速度來看,F(xiàn)aster RCNN的每個Roi都要經(jīng)過R-CNN子網(wǎng)絡(R-CNN subnet),見圖,所以計算量非常大。R-FCN雖然R-CNN subnet很小,但是他要生成一個非常大的Score Map,整個網(wǎng)絡依然很消耗時間和內(nèi)存。

3.2Light-Head R-CNN

文章使用“L”表示用一個大的主體網(wǎng)絡,用“S”表示用一個小的主體網(wǎng)絡。

Basic feature extractor

對于“L”網(wǎng)絡,文章使用ResNet101作為基礎的特征提取網(wǎng)絡,對于“S”,文章使用類似于Xception的小網(wǎng)絡。上面圖中的“conv layes”表示基礎網(wǎng)絡?!癝” 網(wǎng)絡如下表格。

S網(wǎng)絡

Thin feature maps

作者使用large separable convolution,接在基礎網(wǎng)絡的C5上。如下所示,k=15,對于S網(wǎng)絡,Cmid=64,對于L網(wǎng)絡,Cmid=256。Cout=10×p×p。

large separable convolution

R-CCN subnet

這里作者接了一個2048通道的全連接層,沒有使用dropout。

RPN

RPN使用C4層的特征。ratios 取{1:2, 2:1}并且有五個scales {32 , 64 , 128 , 256 , 512 }。NMS閾值取0.7.

4.Experiments

作者在COCO數(shù)據(jù)集上做實驗,訓練集115K,測試集5K。當然還有些細節(jié),OHEM,data augment之類不扯了。

4.2.1Baselines

B1:是R-FCN,直接用R-FCN跑出來的結果。

B2:也是R-FCN,不過做了些改進,

1.圖片resize成最短邊800,最長邊1200,5個anchors {32 , 64 , 128 , 256 , 512 }

2.對位置回歸的loss比分類的小,所以訓練時,對回歸的loss進行了double

3.訓練時將box的loss排序,將loss表較大的前256個box作為反向傳播的loss。并且訓練時每張圖像用了2000個ROIs,測試時用1000個Rois。這樣mmAP提高了3個點。事實上我不太確定這個mmAP是啥意思。文章說,“We use mmAP to indicate results of mAP@[0.5:0.95]”難道是說對PR曲線積分時,積分范圍是0.5-0.95?有懂得請在下方評論,讓咱們學習學習。

Baseline

4.2.2Thin Feature maps for RoI warping

這里作者想對比,Thin Feature會帶來什么影響。作者設計了對比試驗。網(wǎng)絡如下圖。

輸出的Feature maps的通道數(shù)減少為490(1077)

由于修改了輸出Feature map的通道數(shù),所以R-FCN不能通過投票的方式進行預測,所以作者加了一個全連接層。(這里,其實我是有點不明白的??催@里的描述,下圖如果和上面的網(wǎng)絡對比圖2是一樣的話,那么后面4.2.3的對比試驗R-CNN subnet是什么?4.2.3節(jié)改進了什么。)

reduce Feature map

可以看到,這樣修改后,效果略微下降了。作者指出如果將PSROI Pooling改為ROI Pooling會獲得0.3的增益。但是計算量增加了49倍。

large separable convolution

上一步中使用的是普通的1*1的卷積,這里作者改用large separable convolution,k = 15, Cmid = 256, Cout = 490。這樣子,相比B2提升了0.7個點。

large separable

4.2.3 RCNN subnet

文中提到的Figure3呢?并沒有看到,這里應該有錯誤。文章這里再次提到加入一個額外的全連接層。(我就奇怪了,上面一節(jié)在說thin featrue的時候不是加了嗎?)

然后這里效果突然就飛起來了。我表示很困惑。

R-CNN subnet

4.3 Light-Head R-CNN: High Accuracy

這一節(jié)作者提到一些技巧。比如PSROI Pooling換成 RoIAlign ,多尺度訓練,NMS的閾值改為0.5之類。

技巧

當然,因為Thin Feature,就有可能使用FPN了。下面對比了和其他one stage和two stage的方法。都是state-of-the-art。

image.png

4.4 Light-Head R-CNN: High Accuracy

然后是對比速度。

使用上面提到的S網(wǎng)絡。

將RPN網(wǎng)絡的卷積改成原來的Faster RCNN的一般,256.

使用large separable convolution其中kernel size = 15, C mid = 64, C out = 490 (10 × 7 × 7)

使用PSPooling with alignment

然后結果如下,完虐一切one stage和two stage的方法。YOLO,SSD不在話下。好厲害的樣子。

速度對比

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容