ICLR2022 ViDT | 檢測超越YOLOS,實例分割超越SOLOv2,同時達到...


Transformers被廣泛應用于許多視覺問題,特別是視覺識別和檢測。Detection Transformers是第一個完全端到端的目標檢測學習系統(tǒng),而Vision Transformers是第一個完全基于Transformer的圖像分類體系結構。在本文中,整合
Vision和DetectionTransformers(ViDT)來構造一個有效且高效的目標檢測器。ViDT引入了一個重新設計的注意力模塊,將最近的Swin Transformer擴展為一個獨立的目標檢測器,然后是一個計算高效的Transformer解碼器,利用多尺度特征和輔助技術,在不增加太多計算負載的情況下提高檢測性能。此外,將
ViDT擴展到ViDT+,以支持聯(lián)合任務學習的目標檢測和實例分割。具體地說,附加了一個高效的多尺度特征融合層,并利用另外兩個輔助訓練損失,IoU-aware loss和token labeling loss。在Microsoft COCO基準數(shù)據(jù)集上的大量評估結果表明,
ViDT在現(xiàn)有的完全基于Transformer的目標檢測器中獲得了最好的AP和延遲權衡,其擴展的ViDT+由于其對大型模型的高可伸縮性,實現(xiàn)了53.2AP。
1Vision And Detection Transformers
ViDT首先重新配置Swin Transformer的注意力模型,以支持獨立的目標檢測,同時完全重用Swin Transformer的參數(shù)。接下來,它結合了一個Encoder-free neck layer來利用多尺度特征和兩種基本技術:Auxiliary decoding loss和Iterative Box Refinement。
Reconfigured Attention Module(RAM)
將Swin Transformer的Patch reduction和Local attention方案應用于序列到序列的范例是具有挑戰(zhàn)性的,因為:
[DET] token的數(shù)量必須保持在fixed-scale上[DET] token之間缺乏局部性
為了解決這些問題,作者引入了一個重新配置的注意力模塊(RAM),它將與[PATCH]和[DET] token相關的單個全局注意力分解為3個不同的注意力,即[PATCH]×[PATCH],[DET]×[DET]和[DET]×[PATCH]注意力。
基于分解,Swin Transformer的有效方案只適用于[PATCH]×[PATCH]注意力,這是計算復雜度最高的部分,不破壞對[DET] token的兩個約束。如圖3所示,通過共享[DET]和[PATCH] token的投影層,這些修改完全重用了Swin Transformer的所有參數(shù),并執(zhí)行3個不同的注意力操作。
圖3作為一個獨立的目標檢測器,RAM必須伴隨3個注意力操作:
[PATCH]×[PATCH] Attention
初始的
[PATCH] token在Attention層之間逐步校準,使它們根據(jù)Attention權重聚合全局特征圖中的關鍵內(nèi)容(即[PATCH] token的空間形式)。對于[PATCH]×[PATCH]Attention,Swin Transformer對每個窗口分區(qū)都進行局部注意力計算,其連續(xù)塊的移位窗口分區(qū)會連接上一層的窗口,提供分區(qū)之間的連接以獲取全局信息。使用類似的策略來生成分層的
[PATCH] token。因此,每個階段[PATCH] token的數(shù)量減少4倍;特征圖的分辨率從H/4×W/4下降到H/32×W/32,總共經(jīng)過4個階段,其中H和W分別表示輸入圖像的寬度和高度。
[DET]×[DET] Attention
與YOLOS類似,添加了100個可學習的
[DET] token作為Swin Transformer的額外輸入。由于[DET] token的數(shù)量指定了要檢測目標的數(shù)量,它們的數(shù)量必須在Transformer層上以固定的規(guī)模進行維護。此外,
[DET] token與[PATCH] token不同,沒有任何局部性。因此,對于[DET]×[DET]Attention,在保持其數(shù)量的同時進行全局自注意力;這種注意力幫助每個[DET] token通過捕獲它們之間的關系來定位不同的目標。
[DET]×[PATCH] Attention
考慮到
[DET]和[PATCH] token之間的交叉注意力,并為每個[DET] token對象生成一個嵌入。對于每個[DET] token,[PATCH] token中的關鍵內(nèi)容被聚合以表示目標對象。由于[DET] token指定了不同的目標,它為圖像中的不同目標生成不同的目標嵌入。如果沒有交叉注意力,就無法實現(xiàn)獨立的目標檢測。如圖3所示,ViDT綁定[DET]×[DET]和[DET]×[PATCH]注意力處理它們以提高效率。

作者將Swin Transformer中的所有注意力模塊替換為RAM,它接收[PATCH]和[DET] token(如圖2(c)的“body”所示),然后通過并行執(zhí)行3種不同的注意力操作來輸出經(jīng)過校準的新token。
位置編碼
對于不同類型的注意力,
ViDT采用不同的位置編碼:
對于
[PATCH]×[PATCH] Attention,使用最初在Swin Transformer中使用的相對位置偏差。對于
[DET]×[DET] Attention,[DET] token添加了可學習的位置編碼,因為[DET] token之間沒有特定的順序。對于
[DET]×[PATCH] Attention,向[PATCH] token注入了基于正弦的空間位置編碼,因為Transformer中的permutation-equivariant忽略了特征圖的空間信息。
使用[DET]×[PATCH] Attention
在
[DET]和[PATCH] token之間應用交叉注意力會給Swin Transformer增加額外的計算開銷,特別是當它在底層被激活時帶來了大量的[PATCH] tokens。為了最小化這種計算開銷,
ViDT只在Swin Transformer的最后階段(金字塔的頂層)激活交叉注意力,該階段由2個Transformer層組成,輸入token大小為H/32 × W/32的[PATCH] token。因此,除了最后一個階段,其余階段只對[DET]和[PATCH] token進行自注意力操作。
綁定[DET]×[DET] Attention和[DET]×[PATCH] Attention
在這項工作中,
[DET]×[DET] Attention和[DET]×[patch] Attention產(chǎn)生了新的[DET] token,它們分別聚合了[DET] token和[PATCH] token中的相關內(nèi)容。因為2個注意力模塊共享完全相同的
[DET] query embedding,投影如圖3所示,可以通過對和Embedding執(zhí)行矩陣乘法,其中Q,K是key和query,[·]是concat。然后,將得到的注意力映射應用于
Embedding,其中V為value,d為Embedding維數(shù),
[DET] token Embedding的維度
在
ViDT中,[DET]×[DET] Attention貫穿于每個階段,[DET] token的Embedding維度與[PATCH] token一樣逐漸增加。對于一個[PATCH] token,它的嵌入維度通過在網(wǎng)格中concat附近的[PATCH] token來增加。然而,這種機制不適用于
[DET] token,因為ViDT需要維護相同數(shù)量的[DET] token來檢測場景中固定數(shù)量的目標。因此,只需沿著嵌入維度重復多次[DET] token以增加其大小。這使得[DET] token可以重用Swin Transformer中的所有投影和規(guī)范化層,而無需任何修改。
Encoder-free Neck Structure
為了利用多尺度特征映射,ViDT集成了一個多層可變形的Transformer解碼器。在DETR系列中(圖2(a)),Neck需要一個Transformer編碼器,將從圖像分類Backbone提取的特征轉(zhuǎn)換為適合目標檢測的特征;
編碼器通常是計算昂貴的,因為它涉及[PATCH]×[PATCH] Attention。然而,ViDT只維護一個Transformer解碼器作為它的Neck,因為帶有RAM的Swin transformer作為獨立的目標檢測器可以直接提取適合目標檢測的細粒度特征。因此,ViDT的Neck結構具有很高計算效率。
解碼器接收來自具有RAM的Swin transformer的2個輸入:
- 每個階段生成的
[PATCH] token,
- 最后一個階段生成的
[DET] token
如圖2(c)中的Neck所示在每個可變形的Transformer層中,[DET]×[DET] Attention是在最前面的。對于每個[DET] token,應用多尺度可變形的注意力來聚合從多尺度特征映射中采樣的一小部分關鍵內(nèi)容,以產(chǎn)生一個新的[DET] token,

其中,m表示注意力頭,K為內(nèi)容聚合的采樣key總數(shù)。此外,是為第級特征圖重新縮放的[DET] token的參考點,而是可變形注意力的采樣偏移量;而是K個采樣內(nèi)容的注意力權值。和是多頭注意力的投影矩陣。
附加改進的輔助技術
ViDT的解碼器遵循多層transformer的標準結構,在每一層生成細化的[DET] token。因此,ViDT利用在(可變形)DETR中使用的2種輔助技術來進行額外的改進:
- Auxiliary Decoding Loss
檢測頭由2個用于框回歸和分類的前饋網(wǎng)絡組成,分別附著在每個解碼層上。將不同尺度下檢測頭的訓練損失相加。這有助于模型輸出正確的對象數(shù)量,而無需非最大抑制。
- Iterative Box Refinement
每個解碼層根據(jù)來自前一層檢測頭的預測來細化邊界框。因此,邊界框回歸過程需要通過解碼層逐步Refinement。
這2種技術對于基于transformer的目標檢測器至關重要,因為它們在不影響檢測效率的情況下顯著提高了檢測性能。
2ViDT+
前面所提出的ViDT顯著提高了端到端transformer檢測器的計算復雜度和性能。此外,還分析了ViDT的2個缺點:
- 多尺度
[PATCH] token線性融合,無法提取復雜的互補信息; ViDT不適用于其他任務,如實例分段。
圖4解決這兩個問題并非易事。對于前者,需要開發(fā)一種不影響推理速度的非線性融合特征的有效方法。對于后者,現(xiàn)有的用于DETR族檢測器的fpn型網(wǎng)絡不能以端到端方式進行多任務學習。作者通過添加3個組件來解決這些缺陷,即Efficient Pyramid Feature Fusion(EPFF)、Unified Query Representation(UQR)以及IoU-aware and Token Labeling Losses。合并3個組件的方法稱為ViDT+,如圖4(c)所示。
Efficient Pyramid Feature Fusion Module
所有ViDT的多尺度[PATCH] token都不經(jīng)過任何處理,直接送入ViDT的Encoder-free Neck組件。然后,[PATCH] token被解碼為目標嵌入,即最終的[DET] token。如公式(2)所示,解碼器的多尺度可變形注意力通過加權聚合線性融合多尺度[PATCH] token,但為了提高計算效率,只使用少量采樣的[PATCH] token(每個尺度K個token)。
因此,引入了一個簡單但高效的金字塔特征融合(EPFF)模塊,該模塊在將所有可用的多尺度token放入解碼器之前,使用多個CNN融合塊非線性融合所有可用的多尺度token,如圖4(a)和4(b)所示。該方法比以往的簡單線性聚合方法更有效地從不同尺度的特征映射中提取互補信息。
具體來說,將來自Body不同階段的所有多尺度[PATCH] token集合起來,形成通道維數(shù)4大小相同的多尺度特征圖。隨后,它們以自頂向下的方式融合。圖4(a)中的每個融合塊接收2個用于金字塔特征融合的輸入特征圖:
用于目標l級(高分辨率)的特征圖
feature map (較低分辨率)的前一個融合塊的融合feature map

其中,Upsample算子通過雙線性插值調(diào)整低分辨率特征映射的大小與高分辨率特征映射融合,2個ResUnits分別作為特征變換和特征平滑的Bottleneck Residual Block。結果得到融合的多尺度特征,沿空間維數(shù)flattened,并將所有尺度的特征拼接起來作為Neck decoder的輸入,如圖4(b)所示。該模塊只增加了1M的參數(shù),在不影響推理速度的前提下,大大提高了檢測和分割的準確性。
Unified Query Representation Module
目標檢測有助于多任務學習和實例分割的聯(lián)合監(jiān)督。因此,在預測頭的開頭添加了Unified Query Representation Module,如圖4(c)的右側(cè)所示。
但是,基于detr方法的[DET] token只對應于要檢測的目標。因此,[DET] token無法轉(zhuǎn)換為2D分割任務,使得基于detr的方法無法同時執(zhí)行目標檢測和實例分割任務。
為了解決這個問題,Dong等人提出了UQR模塊,該模塊利用離散余弦變換(DCT)將每個目標的GT二維二進制Mask變換到頻域,生成每個目標的GT Mask向量進行預測。給定一個GT Mask S,對中的低頻分量進行采樣,對一個GT Mask向量v進行編碼,其中A為變換矩陣。
最終的[DET] token直接使用FFN來預測GT Mask向量,該FFN輸出預測的Mask向量。該過程與分類和bbox回歸的多任務學習并行進行。
因此,聯(lián)合監(jiān)督的整體損失函數(shù)可以表述為,其中是實例分割任務的系數(shù)。另外,在求值和測試時,通過反采樣和變換,可以將預測的Mask向量轉(zhuǎn)換為估計的二維二進制Mask S,其中為的反采樣結果。
IoU-aware and Token Labeling Losses
對于密集預測任務,當適當?shù)睾喜⒍鄠€獨立目標時,該模型可以捕獲所提供輸入的更多不同方面。因此,引入了2個額外的訓練目標函數(shù),即IoU-aware Loss和Token Labeling Loss,最終使用提出的ViDT+模型獲得可觀的性能收益。
注意,它們在測試時不會降低模型推理的速度,因為它們只在訓練時被激活。
IoU-aware Loss
直接使用最終的[DET] token預測IoU分數(shù)有助于提高檢測的可信度,減輕預測與GT框之間的不匹配。因此,添加一個新的FFN分支來預測預測邊界框和GT 之間的IoU得分;
IoU-aware loss為:

其中是與第i個目標對應的最終[DET] token(從Neck解碼器返回);
Token Labeling Loss
Token Labeling允許解決多個token級別的識別問題,方法是為每個[PATCH] token分配一個由機器注釋器生成的特定位置的監(jiān)督。在這里,利用GT Mask為每個[PATCH] token分配特定于位置的類標簽。首先,對GT Mask進行插值,使其與Backbone第階段生成的特征映射的分辨率對齊;
Token Labeling Loss為:

其中是Backbone第階段的特征映射中的第i個[PATCH] token,返回與 token相對應的token級 soft label;和是特征映射中的比例和 token的數(shù)量,Focal是Focal Loss,F(xiàn)FN是分類層。
3實驗
目標檢測SOTA對比

實例分割SOTA對比

4參考
[1].An Extendable, Efficient and Effective Transformer-based Object Detector
5推薦閱讀
CenterNet++ | CenterNet攜手CornerNet終于殺回來了,實時高精度檢測值得擁有!
YOLOv5永不缺席 | YOLO-Pose帶來實時性高且易部署的姿態(tài)估計模型!?。?/a>
Transformer崛起| TopFormer打造Arm端實時分割與檢測模型,完美超越MobileNet!
長按掃描下方二維碼添加小助手。
可以一起討論遇到的問題
聲明:轉(zhuǎn)載請說明出處
掃描下方二維碼關注【集智書童】公眾號,獲取更多實踐項目源碼和論文解讀,非常期待你我的相遇,讓我們以夢為馬,砥礪前行!


