DECO: 純卷積Query-Based檢測器超越DETR!
本文經自動駕駛之心公眾號授權轉載,轉載請聯系出處。
標題:DECO: Query-Based End-to-End Object Detection with ConvNets
論文:https://arxiv.org/pdf/2312.13735.pdf
源碼:https://github.com/xinghaochen/DECO
原文:https://zhuanlan.zhihu.com/p/686011746@王云鶴
引言
Detection Transformer(DETR)推出之后,迅速引發了目標檢測領域的一股熱潮,很多的后續工作也從精度和速度方面對原始的 DETR 進行了改進。然而,Transformer 是否真的大一統視覺領域呢,至少從 ConvNeXt 和 RepLKNet 等工作表明,CNN 結構在視覺領域還是有很大的潛力的。
我們這個工作探究的就是如何利用純卷積的架構,來得到一個性能能打的類 DETR 框架的檢測器。致敬 DETR,我們稱我們的方法為DECO
(Detection ConvNets)。采用 DETR 類似的結構設定,搭配不同的 Backbone,DECO 在 COCO 上取得了38.6%和40.8%的AP,在V100上取得了35 FPS和28 FPS的速度,取得比DETR更好的性能。搭配類似RT-DETR的多尺度特征等模塊,DECO取得了47.8% AP和34 FPS的速度,總體性能跟很多DETR改進方法比都有不錯的優勢。
方法
網絡架構
DETR的主要特點是利用Transformer Encoder-Decoder的結構,對一張輸入圖像,利用一組Query跟圖像特征進行交互,可以直接輸出指定數量的檢測框,從而可以擺脫對NMS等后處理操作的依賴。我們提出的DECO總體架構上跟DETR類似,也包括了Backbone來進行圖像特征提取,一個Encoder-Decoder的結構跟Query進行交互,最后輸出特定數量的檢測結果。唯一的不同在于,DECO的Encoder和Decoder是純卷積的結構,因此DECO是一個由純卷積構成的Query-Based端對端檢測器。
編碼器
DETR 的 Encoder 結構替換相對比較直接,我們選擇使用4個ConvNeXt Block來構成Encoder結構。具體來說,Encoder的每一層都是通過疊加一個7x7的深度卷積、一個LayerNorm層、一個1x1的卷積、一個GELU激活函數以及另一個1x1卷積來實現的。此外,在DETR中,因為Transformer架構對輸入具有排列不變性,所以每層編碼器的輸入都需要添加位置編碼,但是對于卷積組成的Encoder來說,則無需添加任何位置編碼
解碼器
相比而言,Decoder的替換則復雜得多。Decoder的主要作用為對圖像特征和Query進行充分的交互,使得Query可以充分感知到圖像特征信息,從而對圖像中的目標進行坐標和類別的預測。Decoder主要包括兩個輸入:Encoder的特征輸出和一組可學的查詢向量(Query)。我們把Decoder的主要結構分為兩個模塊:自交互模塊(Self-Interaction Module, SIM)和交叉交互模塊(Cross-Interaction Module, CIM)。
這里,SIM模塊主要融合Query和上層Decoder層的輸出,這部分的結構,可以利用若干個卷積層來組成,使用9x9 depthwise卷積和1x1卷積分別在空間維度和通道維度進行信息交互,充分獲取所需的目標信息以送到后面的CIM模塊進行進一步的目標檢測特征提取。Query為一組隨機初始化的向量,該數量決定了檢測器最終輸出的檢測框數量,其具體的值可以隨實際需要進行調節。對DECO來說,因為所有的結構都是由卷積構成的,因此我們把Query變成二維,比如100個Query,則可以變成10x10的維度。
CIM模塊的主要作用是讓圖像特征和Query進行充分的交互,使得Query可以充分感知到圖像特征信息,從而對圖像中的目標進行坐標和類別的預測。對于Transformer結構來說,利用cross attention機制可以很方便實現這一目的,但對于卷積結構來說,如何讓兩個特征進行充分交互,則是一個最大的難點。
要把大小不同的SIM輸出和encoder輸出全局特征進行融合,必須先把兩者進行空間對齊然后進行融合,首先我們對SIM的輸出進行最近鄰上采樣:
使得上采樣后的特征與Encoder輸出的全局特征有相同的尺寸,然后將上采樣后的特征和encoder輸出的全局特征進行融合,然后進入深度卷積進行特征交互后加上殘差輸入:
最后將交互后的特征通過FNN進行通道信息交互,之后pooling到目標數量大小得到decoder的輸出embedding:
最后我們將得到的輸出embedding送入檢測頭,以進行后續的分類和回歸。
多尺度特征
跟原始的DETR一樣,上述框架得到的DECO有個共同的短板,即缺少多尺度特征,而這對于高精度目標檢測來說是影響很大的。Deformable DETR通過使用一個多尺度的可變形注意力模塊來整合不同尺度的特征,但這個方法是跟Attention算子強耦合的,因此沒法直接用在我們的DECO上。為了讓DECO也能處理多尺度特征,我們在Decoder輸出的特征之后,采用了RT-DETR提出的一個跨尺度特征融合模塊。實際上,DETR誕生之后衍生了一系列的改進方法,我們相信很多策略對于DECO來說同樣是適用的,這也希望感興趣的人共同來探討。
實驗
我們在COCO上進行了實驗,在保持主要架構不變的情況下將DECO和DETR進行了比較,比如保持Query數量一致,保持Decoder層數不變等,僅將DETR中的Transformer結構按上文所述換成我們的卷積結構。可以看出,DECO取得了比DETR更好的精度和速度的Tradeoff。
我們也把搭配了多尺度特征后的DECO跟更多目標檢測方法進行了對比,其中包括了很多DETR的變體,從下圖中可以看到,DECO取得了很不錯的效果,比很多以前的檢測器都取得了更好的性能。
文章中DECO的結構進行了很多的消融實驗及可視化,包括在Decoder中選用的具體融合策略(相加、點乘、Concat),以及Query的維度怎么設置才有最優的效果等,也有一些比較有趣的發現,更詳細的結果和討論請參看原文。
總結
本文旨在研究是否能夠構建一種基于查詢的端到端目標檢測框架,而不采用復雜的Transformer架構。提出了一種名為Detection ConvNet(DECO)的新型檢測框架,包括主干網絡和卷積編碼器-解碼器結構。通過精心設計DECO編碼器和引入一種新穎的機制,使DECO解碼器能夠通過卷積層實現目標查詢和圖像特征之間的交互。在COCO基準上與先前檢測器進行了比較,盡管簡單,DECO在檢測準確度和運行速度方面取得了競爭性表現。具體來說,使用ResNet-50和ConvNeXt-Tiny主干,DECO在COCO驗證集上分別以35和28 FPS獲得了38.6%和40.8%的AP,優于DET模型。希望DECO提供了設計目標檢測框架的新視角。