論文提出了實時的超輕量級two-stage detector ThunderNet,靠着精心設計的主幹網絡以及提升特徵表達能力的CEM和SAM模塊,使用不多的計算量就能超越目前的one-stage detectors,在ARM平臺也達到了實時性,GPU的速度更是達到267fps
來源:【曉飛的算法工程筆記】 公衆號
論文: ThunderNet: Towards Real-time Generic Object Detection算法
one-stage detector和two-stage detector分別有着實時優點和準確率優點。two-stage detector實時性較差,幾乎不能在移動設備上運行,儘管已經有了light-head版本,但對於小主幹網絡而言,這依然是過分設計的。而one-stage因爲缺乏ROI-wise的特徵提取,準確率一直較差 微信
爲此,論文提出TunderNet,一個超輕量級的two-stage detector。在綜合考慮輸入分辨率,主幹網絡和detection head後,總體架構如圖2,主要有兩部分創新:網絡
ThunderNet準確率比目前的輕量級one-stage detector都要高,且僅用了不多的計算量,在ARM和x86設備上分別達到了24.1fps和47.3fps架構
two-stage detector的輸入一般都很大,爲了減小計算量,ThunderNet使用$320\times 320$的輸入分辨率。須要注意,輸入分辨率應該與主幹網絡的能力匹配函數
因爲圖像分類和圖像檢測須要主幹網絡用不一樣的屬性,簡單地直接應用圖像分類的網絡做爲主幹不是最優的:性能
目前的輕量級主幹網絡都不符合上面的因素:ShuffleNetV1/V2限制了感覺域的大小(121 pixels vs. 320 pixels,(這裏的計算方法暫時不瞭解,另外下面說V2爲121 pixels,跟這裏不一致,但願瞭解的讀者能留言告知)),ShuffleNetV2和MobileNetV2則缺乏了early-stage的特徵,而Xception則沒有足夠的高層特徵 測試
基於以上的觀察,論文改造ShuffleNetV2,設計了輕量級主幹網絡SNet用於實時檢測,共3個版本: SNet49更快速推理;SNet535更準確;SNet146是耗時和準確率的折中,結構如表1所示,主要改進以下:優化
Light-Head R-CNN雖然已經夠輕量級了,可是相對於小主幹網絡,仍然是過分設計的。爲了解決這一問題,論文將256-channel 3x3卷積壓縮爲5x5深度卷積和256-channel 1x1卷積的組合,加大卷積核大小來增長感覺域,而anchor box的尺寸和長寬比分別爲$\{32^2,64^2,128^2,256^2,512^2\}$和$\{1:2,3:4,1:1,4:3,2:1\}$
對於detection head,Light-Head R-CNN在RoI warping前生成很精簡特徵圖(thin feature map)大小$\alpha\times p\times p$ ,$\alpha=10$,$p=7$爲池化大小。因爲主幹網絡更小,縮小$\alpha=5$來移除多餘的計算,用PSRoI align($(p\times p\times c)\times w\times h$ to$c\times p\times p$)進行RoI warping,將245-d的RoI特徵輸出爲$\alpha$-d,以後在R-CNN子網接一個1024-d全鏈接spa
Light-Head R-CNN使用Global Convolutional Network(GCN)來產生精簡特徵圖,GCN使用$k\times 1 + 1\times k$和$1\times k + k\times 1$卷積代替$k\times k$卷積,這樣能提高感覺域,但會帶來兩倍的計算量,不能採用。所以,論文借鑑FPN的思想,提出了Context Enhancement Module(CEM)來整合多尺度的局部上下文信息和全局的上下文信息 設計
CEM融合$C_4$,$C_5$和$C_{glb}$,其中$C_{glb}$爲global average pooling的全局特徵,而後用1x1卷積將每組特徵圖壓縮至$\alpha\times p\times p=245$,再$C_5$和$C_{glb}$進行2x上採樣和直接複製(broadcast),最後進行融合。經過利用局部和全局信息,CEM可以有效地擴大感覺域和改善精簡特徵圖的表達能力。對比FPN,CEM精算量至關小
因爲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,通常用1x1卷積,最後的Sigmoid將數值限制在$[0,1]$
SAM包含兩個函數,第一個是推理函數,用來增強前景特徵同時抑制背景特徵。另外一個是反向傳播函數,由於SAM增長了額外的R-CNN梯度到RPN,須要穩定RPN的訓練,RPN特徵$i$與所有SAM特徵$j$相關
每張圖訓練和測試分別有2000和200 RoIs,輸入分辨率爲$320\times 320$,使用多尺寸訓練$\{240,320,480\}$,使用SSD的數據加強,在VOC和COCO分別訓練62.5K和375K,使用OHEM和Soft-NMS
能夠看到,ThunderNet能達到SOTA,並且相對於同準確率的模型,計算量下降了不少
MS COCO數據集包含不少小物體,儘管ThunderNet輸入分辨率和主幹網絡都較小,可是準確率依然能在大幅減小參數量的狀況下達到目前的SOTA
能夠看到,小主幹網絡與大輸入分辨率和大主幹網絡和小輸入分辨率都達不到最優的結果,二者須要match
論文將SNet146和SNet49做爲baselines,對主幹網絡的設計進行實驗對比:
論文將壓縮後的Light-Head R-CNN with SNet146做爲baseline,對ThunderNet的detection part的設計進行對比:
論文對比了主幹網絡和head的關係,large-backbone-small-head的準確率要高點,可能因爲small-backbone-large-head的主幹網絡的特徵太弱了,致使head過分設計
論文對比了不一樣設備上的不一樣網絡的推理速度,Yhunder with SNet49在ARM和CPU上都能達到實時性,而全部的網絡在GPU上都大於200fps,速度至關勁爆
論文提出了實時的輕量級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
寫做不易,未經容許不得轉載~
更多內容請關注 微信公衆號【曉飛的算法工程筆記】