重磅開源!目標檢測新網絡 DetectoRS:54.7 AP,特徵金字塔與空洞卷積的完美結合

原文鏈接:重磅開源!目標檢測新網絡 DetectoRS:54.7 AP,特徵金字塔與空洞卷積的完美結合file

論文地址:https://arxiv.org/abs/2006.02334

代碼地址(基於mmdetection實現):

https://github.com/joe-siyuan-qiao/DetectoRS

本文是谷歌團隊提出的最新的目標檢測方案,並且已經完全開源。整個算法將遞歸特徵金字塔(RFP,Recursive Feature Pyramid)和可切換的空洞卷積(SAC,Switchable Atrous Convolution)結合在一起,在COCO test-dev目標檢測任務中,達到了54.7% box AP,相比之前提升1.4 AP,性能強悍。

簡介

目標檢測一直都是計算機視覺中最值得關注的領域,從經典的兩階段(論文中將其概括爲兩次looking和thinking機制)方法Faster RCNN、單階段的YOLO系列、SSD系列,到近段時間性能卓越的EfficientDet、CBNet、ResNeSt等,可以看出,通過backbone結構的改進來提升目標檢測的性能是目前漲點和研究的新熱點,值得大家關注與創新。

而在本文中,DetectoRS同樣從backbone的角度出發,對目標檢測性能進行強化,具體來說有兩大部分的創新:

1、首先,DetectoRS在宏觀層面上,提出了遞歸特徵金字塔(RFP,Recursive Feature Pyramid),它將特徵金字塔網絡(Feature Pyramid Networks)的額外反饋連接加入到在自下而上的骨backbone層中。

2、其次,DetectoRS在微觀層面上,提出了可切換的空洞卷積(SAC,Switchable Atrous Convolution),它以不同的空洞率(rate)對特徵進行卷積,並使用switch函數合併卷積後的結果,SAC可以實現從標準卷積到Contional卷積的有效轉換,而無需更改任何預訓練模型。

file

將遞歸特徵金字塔(RFP,Recursive Feature Pyramid)和可切換的空洞卷積(SAC,Switchable Atrous Convolution)合併形成了DetectoRS,大大增強了目標檢測的性能。具體來說,在COCO test-dev數據集上達到了54.7% box AP的SOTA性能,同時在COCO實例分割任務上達到47.1% mask AP的的性能,在COCO全景分割任務上達到49.6% AQ的性能。

DetectoRS的baseline:HTC(Hybrid Task Cascade)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-9BdgVbaG-1591350773431)(https://bbs.cvmart.net/uploads/images/202006/04/3/NQXjvtgfzC.gif?imageView2/2/w/1240/h/0)]

首先,來介紹一下Cascade RCNN。2018年CVPR上的Cascade RCNN算法通過級聯多個檢測器來不斷優化結果,每個檢測器都基於不同的IoU閾值來界定正負樣本,前一個檢測器的輸出作爲後一個檢測器的輸入,並且檢測器越靠後,IoU的閾值越高。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ZyEIrqpZ-1591350773433)(https://bbs.cvmart.net/uploads/images/202006/04/3/6pwV0TRlDU.gif?imageView2/2/w/1240/h/0)]

Cascade RCNN具體結構

上圖是Cascade RCNN採用的級聯方法,可以看到每一個檢測器的邊框輸出作爲下一個檢測器的輸入,並且檢測器的IoU閾值是逐漸提升的,因此這種方法可以逐步過濾掉一些誤檢框,並且提升邊框的定位精度。Cascade RCNN算法深入探討了IoU閾值對檢測器性能的影響,並且在不增加任何tricks的前提下,在多個數據集上都有了明顯的精度提升。

接下來,來看HTC(Hybrid Task Cascade),HTC可以看作是在cascade R-CNN和mask R-CNN的基礎上,作者想通過級聯和來實現實例分割,進而找出一種最好的級聯結構,來實現檢測,提高mAP。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Nx5z82B2-1591350773435)(https://bbs.cvmart.net/uploads/images/202006/04/3/EQllaMKQKW.gif?imageView2/2/w/1240/h/0)]

HTC是一種多任務多階段的混合級聯結構,融合了一個語義分割的分支來增強 spatial context。整個框架的演進可以用上面的四張圖來表示,其中 M 表示 mask 分支,B 表示 box 分支,數字表示 stage,M1 即爲第一個 stage 的 mask 分支。HTC這種框架取得了明顯優於 Mask R-CNN 和 Cascade Mask R-CNN 的結果。

HTC的關鍵思想是:通過在每個階段結合級聯和多任務來改善信息流,並利用空間背景來進一步提高準確性。整個網絡是多任務多階段的混合級聯結構,訓練時每個 stage 內 box 和 mask 分支採用交替執行,並在不同 stage 的 mask 分支之間引入直接的信息流

HTC在相鄰的 stage 的 mask 分支之間增加一條連接,提供 mask 分支的信息流,讓Mi+1M_{i+1}能知道 MiM_i的特徵。

file
同時,HTC將語義分割引入到實例分割框架中,以獲得更好的 spatial context。

file

宏觀角度:RFP(遞歸特徵金字塔)

RFP(遞歸特徵金字塔)= Recursive Structure + Bottom-up Backbone Layers + Top-down FPN Layers + ASPP as the Connecting Module

RFP提出的遞歸方法與最近提出的CBNet 中的遞歸方法相似,CBNet方法中將多個主幹級聯以輸出特徵作爲FPN的輸入。相比之下,RFP通過包含ASPP結構的FPN和有效的融合模塊一起來執行遞歸計算。
file

1、Recursive Feature Pyramid

遞歸特徵金字塔(RFP)主要將反饋連接添加到FPN自下而上的過程中(FPN結構最左側爲普通的卷積網絡,默認使用ResNet結構,用作提取語義信息)

在RFP環節對ResNet進行了改進,以使其同時接受原來的特徵圖輸入和反饋信息作爲RFP結構的輸入。一般來說,ResNet具有四個階段,每個階段都由幾個相似的基本殘差block組成。這裏僅對每個階段的第一個塊進行更改,如圖3所示。整體的改進結構比較簡單,很好地融合了輸入Input和RFP的特徵。

file

那麼,如何實現級聯呢? 主要來看下面這兩個模塊。

2、ASPP as the Connecting Module

使用帶有空洞卷積的空間金字塔池化(ASPP)模塊來實現兩個遞歸特徵金字塔的級聯連接,該連接模塊以其特徵爲輸入並將其轉換爲圖3中使用的RFP的特徵(RFP Feature)。

file
ASPP結構示意圖,本文中有所修改去除了1x1卷積分支

本文中的ASPP有四個並行分支對其輸入進行擴展,然後將它們的輸出沿通道維連接在一起,以形成的最終輸出。它們的三個分支使用卷積層,然後是ReLU層,輸出通道數是輸入通道數的1/4。最後一個分支使用全局平均池化層來壓縮特徵,然後使用1x1卷積層和ReLU層將壓縮後的特徵轉換爲1/4尺寸(逐通道)的特徵。最後,將其調整大小並與其他三個分支的特徵進行連接。**三個空洞模塊的配置:kernel size = [1, 3, 3], atrous rate =[1, 3, 6], padding = [0, 3, 6]。**四個分支中的每個分支都產生一個具有輸入特徵通道數量1/4的通道的特徵,將它們連接起來將生成與RFP的輸入特徵尺寸相同的特徵。

3、Output Update by the Fusion Module

file

融合模塊與循環神經網絡中的更新過程非常相似。融合模塊通過卷積層和Sigmoid運算來計算注意力圖,然後將結果注意力圖用於計算更新後的加權和。

微觀角度:SAC(Switchable Atrous Convolution)

SAC(可切換的空洞卷積)= Different atrous rates + Switch functions

1、SAC(可切換的空洞卷積)結構

file

作者將主幹網絡ResNet中的每個3x3卷積層都轉換爲SAC,從而在不同的空洞率之間實現對卷積計算的軟切換。上圖中的鎖表示權重相同,只是訓練的細節差異有所不同。兩個全局上下文模塊將圖像級信息添加到特徵中。
file

SAC的計算過程可以用上面的式子來表示,其中x爲輸入,w爲權重,r爲空洞卷積的空洞率rate,這也是SAC的超參數。Δw表示具有可訓練的權重,並且switch切換函數S(·)由5x5的平均池化層和1x1卷積層組成,其與輸入和位置相關。

SAC中鎖定機制,通過將一個權重設置爲w而另一個權重設置爲w +Δw,其原因如下:目標檢測器通常使用預訓練的checkpoint來初始化權重。但是,**對於從標準卷積層轉換而來的SAC層,較大的空洞率rate的權重通常是缺失的。由於可以通過相同的權重以不同的粗略度粗略地檢測出不同比例的物體,因此用預訓練模型中的權重來初始化丟失的權重是可以的。本文使用w + ∆w表示從預訓練checkpoint開始的缺失的權重,並使用0初始化∆wi。**當固定Δw= 0時,通過實驗觀察到AP下降了0.1%,但是沒有鎖定機制的∆w會使AP降低很多。

2、SAC中的全局上下文模塊(Global Context)

如圖4所示,作者在SAC的主要組件之前和之後插入兩個全局上下文模塊。當輸入特徵首先被全局平均池化層壓縮時,這兩個模塊的權重就降低了。全局上下文模塊與SENet相似,但有兩個主要區別:(1)全局上下文模塊只有一個卷積層,沒有任何非線性層;(2)輸出被回到主幹中,而不是將輸入乘以通過Sigmoid重標定操作後的值。

從實驗上發現在SAC組件之前添加全局上下文信息(即在switch函數功能中添加全局信息)對檢測性能有積極影響。作者推測這是因爲在可以獲得全局信息時,switch函數可以做出更穩定的切換預測。然後,將全局信息移至切換功能之外,並將其放置在主體之前和之後,以便卷積層和switch函數都能獲取全局上下文信息。

3、SAC的實現細節

使用可變形卷積替換圖4中的卷積運算,通過SAC替換骨幹網絡ResNet中的所有3x3卷積層,全局上下文模塊中的權重和偏差用0初始化。switch函數中的權重用0初始化,偏置設置爲1。Δw用0初始化。

實驗與結果

訓練數據集作者採用的COCO數據集。作者使用mmdetection 實現了Detec-toRS。baseline模型是HTC ,在單個NVIDIA TITAN RTX顯卡上測試。爲了方便對比,整體的實驗配置和HTC網絡保持一致。

消融實驗:

baseline:HTC + ResNet-50 + FPN

將提出的RFP和SAC添加到baseline,這兩者都能夠將AP提高4%以上,而速度不會降低太多。將它們組合在一起的DetectoRS可以以3.9 fps的速度獲得49%的box AP和42.1%的Mask AP。
file

下表是RFP和SAC各個模塊的作用,驗證了結構設計的優勢。

[
file
file

從上面的可視化對比圖可以看出,RFP與選擇性增強或抑制神經元激活的人類視覺類似,能夠更輕鬆地找到被遮擋的對象,而附近的上下文信息則更爲關鍵。由於SAC可以根據需要增加感受野,因此它更有能力檢測圖像中的大物體。

對比實驗

在COCO test-dev 目標檢測中,DetectoRS在使用ResNet-50和ResNeXt-101-32x4d作爲主幹網絡時達到54.7% AP,超越了其他的算法。

file

擴展實驗

在COCO test-dev 實例分割中,DetectoRS在使用ResNet-50和ResNeXt-101-32x4d作爲主幹網絡時達到47.1% AP,目前與ResNeSt並列排名第一。

file

在COCO test-dev 全景分割中,DetectoRS達到49.6% PQ,相比於其他算法有將近兩個點的提升。

file

更多實驗細節可以參考原文的代碼。

◎作者檔案

Rocky X,一個樂於分享技術乾貨的AI愛好者

個人公衆號:AI算法修煉營

歡迎大家聯繫極市小編(微信ID:fengcall19)加入極市原創作者行列

關注極市平臺公衆號(ID:extrememart),獲取計算機視覺前沿資訊/技術乾貨/招聘面經等
在這裏插入圖片描述

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