ThunderNet :像閃電一樣,曠視再出超輕量級檢測器,高達267fps | ICCV 2019

論文提出了實時的超輕量級two-stage detector ThunderNet,靠著精心設計的主幹網路以及提高特徵表達能力的CEM和SAM模組,使用很少的計算量就能超越目前的one-stage detectors,在ARM平台也達到了實時性,GPU的速度更是達到267fps

來源:【曉飛的演算法工程筆記】 公眾號

論文: ThunderNet: Towards Real-time Generic Object Detection

Introduction


  one-stage detector和two-stage detector分別有著實時優勢和準確率優勢。two-stage detector實時性較差,幾乎不能在移動設備上運行,儘管已經有了light-head版本,但對於小主幹網路而言,這依然是過度設計的。而one-stage由於缺少ROI-wise的特徵提取,準確率一直較差

  為此,論文提出TunderNet,一個超輕量級的two-stage detector。在綜合考慮輸入解析度,主幹網路和detection head後,整體架構如圖2,主要有兩部分創新:

  • Backbone part,提出輕量級主幹網路SNet
  • Detection part,參考Light-Head R-CNN的設計,對RPN和R-CNN子網進一步壓縮。對於小主幹和小特徵圖產生的性能退化問題,提出兩個高效的block:Context Enhancement Module(CEM),組合多尺寸的特徵圖來整合本地和全局上下文資訊;Spatial Attention Module(SAM),使用RPN中的上下文資訊來優化RoI warping的特徵分布

  ThunderNet準確率比目前的輕量級one-stage detector都要高,且僅用了很少的計算量,在ARM和x86設備上分別達到了24.1fps和47.3fps

ThunderNet


Backbone Part

  • Input Resolution

  two-stage detector的輸入通常都很大,為了減少計算量,ThunderNet使用$320times 320$的輸入解析度。需要注意,輸入解析度應該與主幹網路的能力匹配

  • Backbone Networks

  由於影像分類和影像檢測需要主幹網路用不同的屬性,簡單地直接應用影像分類的網路作為主幹不是最優的:

  1. Receptive field:感受域是卷積網路中很重要的特性,大的感受域能更有效地利用更多的上下文資訊以及處理遠距離的像素間關係,這對定位任務相當重要,特別是大目標
  2. Early-stage and late-stage features:主幹網路的early-stage特徵圖較大,低層特徵能表達空間細節,而late-stage的特徵圖較小,高層特徵更具區分能力。一般定位任務對低層特徵更敏感,高層特徵對分類任務更重要。在實際中發現,在大網路中定位任務比分類任務要難,表明低層特徵對定位更重要,而過小的網路由於弱表達能力限制了兩種任務的準確率,表明低層和高層特徵都是重要的

  目前的輕量級主幹網路都不符合上面的因素:ShuffleNetV1/V2限制了感受域的大小(121 pixels vs. 320 pixels,(這裡的計算方法暫時不了解,另外下面說V2為121 pixels,跟這裡不一致,希望了解的讀者能留言告知)),ShuffleNetV2和MobileNetV2則缺少了early-stage的特徵,而Xception則沒有足夠的高層特徵

  基於以上的觀察,論文改造ShuffleNetV2,設計了輕量級主幹網路SNet用於實時檢測,共3個版本: SNet49更快速推理;SNet535更準確;SNet146是耗時和準確率的折中,結構如表1所示,主要改進如下:

  • 將所有3×3的深度卷積替換成5×5的深度卷積,擴大感受域(121 to 193 pixels)但不會帶來過多額外的計算
  • 對於SNet146和SNet535,移除Conv5,然後增加early-stage的層的channel數,這樣能不帶來過多額外的計算的情況下提供更多低層特徵
  • 對於SNet49,將conv5壓縮到512維,然後增加early-stage的層的channel數,這樣能很好地平衡低層特徵和高層特徵

Detection Part

  • Compressing RPN and Detection Head

  Light-Head R-CNN雖然已經夠輕量級了,但是相對於小主幹網路,仍然是過度設計的。為了解決這一問題,論文將256-channel 3×3卷積壓縮為5×5深度卷積和256-channel 1×1卷積的組合,加大卷積核大小來增加感受域,而anchor box的尺寸和長寬比分別為${322,642,1282,2562,512^2}$和${1:2,3:4,1:1,4:3,2:1}$
  對於detection head,Light-Head R-CNN在RoI warping前生成很精簡特徵圖(thin feature map)大小$alphatimes ptimes p$ ,$alpha=10$,$p=7$為池化大小。由於主幹網路更小,縮小$alpha=5$來移除多餘的計算,用PSRoI align($(ptimes ptimes c)times wtimes h$ to$ctimes ptimes p$)進行RoI warping,將245-d的RoI特徵輸出為$alpha$-d,之後在R-CNN子網接一個1024-d全連接

  • Context Enhancement Module(CEM)

  Light-Head R-CNN使用Global Convolutional Network(GCN)來產生精簡特徵圖,GCN使用$ktimes 1 + 1times k$和$1times k + ktimes 1$卷積代替$ktimes k$卷積,這樣能提升感受域,但會帶來兩倍的計算量,不能採用。因此,論文借鑒FPN的思想,提出了Context Enhancement Module(CEM)來整合多尺度的局部上下文資訊和全局的上下文資訊

  CEM融合$C_4$,$C_5$和$C_{glb}$,其中$C_{glb}$為global average pooling的全局特徵,然後用1×1卷積將每組特徵圖壓縮至$alphatimes ptimes p=245$,再$C_5$和$C_{glb}$進行2x上取樣和直接複製(broadcast),最後進行融合。通過利用局部和全局資訊,CEM能夠有效地擴大感受域和改善精簡特徵圖的表達能力。對比FPN,CEM精算量相當小

  • Spatial Attention Module

  由於ThunderNet使用了更小的主幹網路和輸入解析度,這增加了檢測的難度。論文提出Spatial Attention Module(SAM),在空間維度對RoI warping前的特徵圖進行re-weight,核心思想是利用RPN的資訊來優化特徵圖的特徵分布

  RPN能夠識別目標區域,因此,RPN的中間特徵能用來區分前景特徵。SAM接受RPN的中間特徵$mathcal{F}{RPN}$和來自CEM的特徵$mathcal{F}{CEM}$,輸出$mathcal{F}^{SAM}$。整體流程如圖4,$theta$為維度轉化函數,將特徵圖轉化為特定channel,一般用1×1卷積,最後的Sigmoid將數值限制在$[0,1]$

  SAM包含兩個函數,第一個是推理函數,用來加強前景特徵同時抑制背景特徵。另一個是反向傳播函數,因為SAM增加了額外的R-CNN梯度到RPN,需要穩定RPN的訓練,RPN特徵$i$與全部SAM特徵$j$相關

Experiments


Implementation Details

  每張圖訓練和測試分別有2000和200 RoIs,輸入解析度為$320times 320$,使用多尺寸訓練${240,320,480}$,使用SSD的數據增強,在VOC和COCO分別訓練62.5K和375K,使用OHEM和Soft-NMS

Results on PASCAL VOC

  可以看到,ThunderNet能達到SOTA,而且相對於同準確率的模型,計算量降低了很多

Results on MS COCO

  MS COCO數據集包含很多小物體,儘管ThunderNet輸入解析度和主幹網路都較小,但是準確率依然能在大幅減少參數量的情況下達到目前的SOTA

Ablation Experiments

  • Input Resolution

  可以看到,小主幹網路與大輸入解析度和大主幹網路和小輸入解析度都達不到最優的結果,兩者需要match

  • Backbone Networks

  論文將SNet146和SNet49作為baselines,對主幹網路的設計進行實驗對比:

  1. 5×5 Depthwise Convolutions,對比$5times 5$深度卷積和$3times 3$卷積。從5(b)和5(c)可以看出,$5times 5$卷積提供的大感受域對目標檢測很重要
  2. Early-stage and Late-stage Features,對比early-stage和late-stage特徵的平衡關係。從5(d)、5(f)和5(g)可以看出,高層特徵對分類有很多作用,但是對目標檢測則不一定作用。因此,需要平衡高低層特徵

  1. Comparison with Lightweight Backbones,將SNet與其它輕量級主幹網路進行對比,SNet檢測準確率是最好的
  • Detection Part

  論文將壓縮後的Light-Head R-CNN with SNet146作為baseline,對ThunderNet的detection part的設計進行對比:

  1. Baseline,性能達到21.9AP
  2. RPN and R-CNN subnet,用5×5深度卷積代替RPN中的3×3卷積,減少28%參數量,保持了差不多的準確率(7b)。將R-CNN子網的全連接輸出減半至1024,減少13%參數量,準確率降低0.2AP(7c)
  3. Context Enhancement Module,將CEM應用到RPN和RoI warping,對比7c能提升1.7AP(7d)

  1. Spatial Attention Module,僅使用SAM能提升1.3AP和增加5%計算量(7c),圖6可視化了7c和7e RoI warping前的特徵圖,SAM明顯能加強前景特徵
  2. 最後同時加入CEM和SAM,對比baseline能提升1.7AP(7f)
  • Balance between Backbone and Detection Head

  論文對比了主幹網路和head的關係,large-backbone-small-head的準確率要高點,可能由於small-backbone-large-head的主幹網路的特徵太弱了,導致head過度設計

  • Inference Speed

  論文對比了不同設備上的不同網路的推理速度,Yhunder with SNet49在ARM和CPU上都能達到實時性,而所有的網路在GPU上都大於200fps,速度相當勁爆

CONCLUSION


  論文提出了實時的輕量級two-stage detector ThunderNet,在backbone部分,使用一個精心設計的目標檢測專用的輕量級網路SNet,在detection部分,採用極度精簡的detection head和RPN,提出Context Enhancement Module和Spatial Attention Module用於增強特徵表達能力,最後對輸入解析度、backbone和detection head進行了縮減和平衡。ThunderNet使用很少量的計算量超越了目前的one-stage detectors,在ARM平台也達到了實時性,GPU的速度更是達到267fps

參考內容



寫作不易,未經允許不得轉載~
更多內容請關注 微信公眾號【曉飛的演算法工程筆記】

work-life balance.