一.Abstract
- two-stage
- lightweighted backbone for object detection
- efficient rpn and detection head design
- To generate more discriminative feature representation, we design two efficient architecture blocks, Context Enhancement Module and Spatial Attention Module.
- 在ARM平臺上達到了24.1 fps
二.Introduction
- 基於CNN的目標檢測分爲特徵提取的backbone和檢測部分。backbone部分:ResNet 101等大型和state-of-the art的輕量級的目標分類backbone。存在問題:detection和分類有諸多不同,目標檢測需要大的感受野和低水平的特徵去提升定位能力,而這些對於分類都不重要,這兩種任務之間的gap阻礙了在不損失檢測精度下的模型壓縮
- Light-Head R-CNN實現了輕量級的檢測,但是耦合了一個小的backbone時,Light-weighted R-CNN在檢測部分消耗了比backbone部分更多的計算,這會導致a mismatch between a weak backbone and a strong detection par,這種不平衡不僅會導致很大的冗餘,而且會使網絡易於過度擬合。
- one-stage直接用一些layer產生預測,所以速度很快,但是精度欠缺
- 我們使用two-stage的網絡,設計了一個輕量級的backbone叫做SNet,在檢測部分,對於RPN和R -CNN的subnet做了進一步的壓縮,爲了降低小的backbone和featuremap所帶來的效果降低,我們設計了兩個高效的結構block,CEM和SAM。CEM整合多尺度的信息,包含局部和全局的信息,SAM 使用從RPN中學習到的信息去提煉ROI warping中的特徵分佈。
三.模型詳解
模型整體結構如下:
1.backbone部分
backbone部分結構如下:
Input Resolution:
輸入的尺度要與模型的容量相匹配,ThunderNet使用的輸入大小爲320×320
Backbone Networks
1.Receptive field
一個大的感受野可以利用更多上下文信息並更有效地編碼像素之間的遠程關係,這對物體的定位很重要,尤其是大物體的定位。
2.Early-stage and late-stage features
對於大的backbone,定位比分類更困難,而對於小的backbone,分類和定位同樣重要。在shuffnet基礎上提出SNet的backbone,一共提出三種SNet,SNet49爲了更快的inference,SNet535爲了更好的accuracy,SNet146更好的平衡了速度和精度。
2.Detection部分
2.1壓縮RPN和detection head
two-stage的檢測器通常的rpn和detection head都很大,而light-weighted rcnn使用了一個輕量級的detection head,但是其backbone很小,這就導致了backbone和detection head的不平衡,不僅額外消耗運算,而且還增加了過擬合的風險。
使用一個5×5的深度可分離卷積和256維的1×1卷積,替換原始RPN網絡中的3×3的卷積。增加kernel size以擴大感受野並且編碼更多的文本信息。五種尺度{32*32,64*64,128*128,256*256,512*512},五種比例{1:2,3:4,1:1,4:3,2:1}去產生anchors。在Lighted-Head中,輸入roi warping的featuremap的channel大小爲10*7*7=490,在ThunderNet中,運用PSRoI將其channel壓縮爲5*7*7=245,由於這個channel比較小,所以我們在R-CNN之後接了一個1024維的fc層。這種設計在不損失精度的情況下極大的降低了運算量。其次,由於小的featuremap,檢測時所需roi的數量也降低了。
2.2Context Enhancement Module
Light-Head R-CNN運用GCN去產生thin featuremaps,提升了感受野,但是顯著提升了計算量,本文中捨棄了GCN,然而,感受野小且在沒有GCN的情況下網絡很難提取到足夠的可分辨的特徵信息。 爲了解決這個問題,本文使用了特徵金字塔網絡FPN,然而,原始的FPN結構涉及許多額外的卷積和多個檢測分支,這增加了計算成本並且引起了巨大的運行時間延遲。因此,基於FPN,本文提出了Context Enhancement Module (CEM),如下:
CEM的關鍵思想是聚合多尺度局部信息和全局信息,以生成區分性更強的特徵。在CEM中,合併三個尺度的特徵圖:C4,C5和Cglb(在C5上應用全局平均池化得到Cglb作爲全局特徵信息)。
- 尺度一:C4特徵圖上應用1×1卷積以將通道數量壓縮爲α×p×p = 245
- 尺度二:C5進行上採樣 + C5特徵圖上應用1×1卷積以將通道數量壓縮爲α×p×p = 245
- 尺度三:Cglb進行Broadcast + Cglb特徵圖上應用1×1卷積以將通道數量壓縮爲α×p×p = 245
通過利用局部和全局信息,CEM有效地擴大了感受野,並細化了薄特徵圖的表示能力。與先前的FPN結構相比,CEM僅涉及兩個1×1卷積和fc層,這更加計算友好。
2.3Spatial Attention Module
在roi wraping期間,我們期望背景的區域小一些,而前景的區域要大一些,但是,相比較大的模型,由於ThunderNet利用輕量級的backbones和小的輸入尺度,而這些這些對於網絡本身去學習一個合適的特徵分佈是困難的。所以設計了一個計算友好的SAM模塊去在roi warping之前實現在空間維度上對於featuremap的權重調整。SAM的關鍵idea就在於使用RPN中的知識去提煉featuremap中的特徵分佈。因爲訓練RPN網絡時,網絡就是以前景目標作爲監督來訓練的。 因此,RPN網絡中的特性可以用於區分前景特徵和背景特徵。
SAM有兩個輸入,分別來自於CEM和RPN,而輸出如下公式所示:
這裏θ(·)是一個尺寸變換,以匹配兩組特徵圖中的通道數。 sigmoid函數用於限制值的大小位於[0,1]。 最後,通過生成的特徵映射對,使得CEM進行重新加權,以獲得更好的特徵分佈。 爲了計算效率,我們將1×1卷積應用於θ(·),因此CEM的計算成本可以忽略不計。
SAM有兩個作用:
- 通過加強前景特徵,壓縮背景特徵來提煉特徵分佈。
- 穩定RPN的訓練,因爲SAM使得有了額外的梯度從R-CNN的子網絡流向RPN,如下圖所示:
也就是說R-CNN接受了額外的R-CNN子網絡的監督,而這有助於訓練RPN。
四.Experiments
實施細節:synchronized SGD,weight decay=0.0001,momentum=0.9,batchsize=16 per GPU,4GPU,每張圖有2000個RoI for training,200個RoI for testing,輸入圖片大小320×320,多尺度的訓練包含240, 320, 480三種尺度,由於輸入圖像很小,所以採用較強的數據增強,網絡在VOC 數據集上那個訓練62.5k,在coco上訓練375k,學習率從0.01開始,在50%和75%迭代次數的時候分別下降0.1。使用了在線的hard example mining和soft nms,並且使用CGBN。
1.在VOC2007數據集上的結果
2.COCO數據集
3.AblationExperiments
small image + large backbone和large image + small backbone效果都不好,圖片的大小與模型的容量應該相匹配。
3.1BackboneNetworks
- 5*5的深度可分離卷積比3*3的深度可分離卷積表現更好。5*5卷積提供了更大的有效感受野,而這對於目標檢測很重要
- Increasing the channels in early stages encodes more detail information, which is beneficial for localization.
- Comparison with Lightweight Backbones
3.2Detection Part
3.2.1Baseline,RPN and R-CNN subnet,Context Enhancement Module,Spatial Attention Module
同時multi-scaletraining, CGBN, and Soft-NMS gradually improve the baseline by 1.4 AP (from 20.5 to 21.9 AP)。
3.2.2 BalancebetweenBackboneandDetectionHead
large-backbone-small-head design is better than the small-backbone-large-head design for lightweight two-stage detectors。
backbone和detection head的容量應該相互匹配。
3.3Inference speed
用proceedeing conv代替了BN以提升速度。
在arm平臺上實現了目前最快的單線程性能。