ICLR2022 ViDT | 檢測(cè)超越Y(jié)OLOS,實(shí)例分割超越SOLOv2,同時(shí)達(dá)到實(shí)時(shí)?。?!


Transformers被廣泛應(yīng)用于許多視覺(jué)問(wèn)題,特別是視覺(jué)識(shí)別和檢測(cè)。Detection Transformers是第一個(gè)完全端到端的目標(biāo)檢測(cè)學(xué)習(xí)系統(tǒng),而Vision Transformers是第一個(gè)完全基于Transformer的圖像分類體系結(jié)構(gòu)。在本文中,整合
Vision和DetectionTransformers(ViDT)來(lái)構(gòu)造一個(gè)有效且高效的目標(biāo)檢測(cè)器。ViDT引入了一個(gè)重新設(shè)計(jì)的注意力模塊,將最近的Swin Transformer擴(kuò)展為一個(gè)獨(dú)立的目標(biāo)檢測(cè)器,然后是一個(gè)計(jì)算高效的Transformer解碼器,利用多尺度特征和輔助技術(shù),在不增加太多計(jì)算負(fù)載的情況下提高檢測(cè)性能。此外,將
ViDT擴(kuò)展到ViDT+,以支持聯(lián)合任務(wù)學(xué)習(xí)的目標(biāo)檢測(cè)和實(shí)例分割。具體地說(shuō),附加了一個(gè)高效的多尺度特征融合層,并利用另外兩個(gè)輔助訓(xùn)練損失,IoU-aware loss和token labeling loss。在Microsoft COCO基準(zhǔn)數(shù)據(jù)集上的大量評(píng)估結(jié)果表明,
ViDT在現(xiàn)有的完全基于Transformer的目標(biāo)檢測(cè)器中獲得了最好的AP和延遲權(quán)衡,其擴(kuò)展的ViDT+由于其對(duì)大型模型的高可伸縮性,實(shí)現(xiàn)了53.2AP。
1Vision And Detection Transformers
ViDT首先重新配置Swin Transformer的注意力模型,以支持獨(dú)立的目標(biāo)檢測(cè),同時(shí)完全重用Swin Transformer的參數(shù)。接下來(lái),它結(jié)合了一個(gè)Encoder-free neck layer來(lái)利用多尺度特征和兩種基本技術(shù):Auxiliary decoding loss和Iterative Box Refinement。
Reconfigured Attention Module(RAM)
將Swin Transformer的Patch reduction和Local attention方案應(yīng)用于序列到序列的范例是具有挑戰(zhàn)性的,因?yàn)?
[DET] token的數(shù)量必須保持在fixed-scale上[DET] token之間缺乏局部性
為了解決這些問(wèn)題,作者引入了一個(gè)重新配置的注意力模塊(RAM),它將與[PATCH]和[DET] token相關(guān)的單個(gè)全局注意力分解為3個(gè)不同的注意力,即[PATCH]×[PATCH],[DET]×[DET]和[DET]×[PATCH]注意力。
基于分解,Swin Transformer的有效方案只適用于[PATCH]×[PATCH]注意力,這是計(jì)算復(fù)雜度最高的部分,不破壞對(duì)[DET] token的兩個(gè)約束。如圖3所示,通過(guò)共享[DET]和[PATCH] token的投影層,這些修改完全重用了Swin Transformer的所有參數(shù),并執(zhí)行3個(gè)不同的注意力操作。

作為一個(gè)獨(dú)立的目標(biāo)檢測(cè)器,RAM必須伴隨3個(gè)注意力操作:
[PATCH]×[PATCH] Attention
初始的
[PATCH] token在Attention層之間逐步校準(zhǔn),使它們根據(jù)Attention權(quán)重聚合全局特征圖中的關(guān)鍵內(nèi)容(即[PATCH] token的空間形式)。對(duì)于[PATCH]×[PATCH]Attention,Swin Transformer對(duì)每個(gè)窗口分區(qū)都進(jìn)行局部注意力計(jì)算,其連續(xù)塊的移位窗口分區(qū)會(huì)連接上一層的窗口,提供分區(qū)之間的連接以獲取全局信息。使用類似的策略來(lái)生成分層的
[PATCH] token。因此,每個(gè)階段[PATCH] token的數(shù)量減少4倍;特征圖的分辨率從H/4×W/4下降到H/32×W/32,總共經(jīng)過(guò)4個(gè)階段,其中H和W分別表示輸入圖像的寬度和高度。
[DET]×[DET] Attention
與YOLOS類似,添加了100個(gè)可學(xué)習(xí)的
[DET] token作為Swin Transformer的額外輸入。由于[DET] token的數(shù)量指定了要檢測(cè)目標(biāo)的數(shù)量,它們的數(shù)量必須在Transformer層上以固定的規(guī)模進(jìn)行維護(hù)。此外,
[DET] token與[PATCH] token不同,沒(méi)有任何局部性。因此,對(duì)于[DET]×[DET]Attention,在保持其數(shù)量的同時(shí)進(jìn)行全局自注意力;這種注意力幫助每個(gè)[DET] token通過(guò)捕獲它們之間的關(guān)系來(lái)定位不同的目標(biāo)。
[DET]×[PATCH] Attention
考慮到
[DET]和[PATCH] token之間的交叉注意力,并為每個(gè)[DET] token對(duì)象生成一個(gè)嵌入。對(duì)于每個(gè)[DET] token,[PATCH] token中的關(guān)鍵內(nèi)容被聚合以表示目標(biāo)對(duì)象。由于[DET] token指定了不同的目標(biāo),它為圖像中的不同目標(biāo)生成不同的目標(biāo)嵌入。如果沒(méi)有交叉注意力,就無(wú)法實(shí)現(xiàn)獨(dú)立的目標(biāo)檢測(cè)。如圖3所示,ViDT綁定[DET]×[DET]和[DET]×[PATCH]注意力處理它們以提高效率。

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

其中,m表示注意力頭,K為內(nèi)容聚合的采樣key總數(shù)。此外,是為第級(jí)特征圖重新縮放的[DET] token的參考點(diǎn),而是可變形注意力的采樣偏移量;而是K個(gè)采樣內(nèi)容的注意力權(quán)值。和是多頭注意力的投影矩陣。
附加改進(jìn)的輔助技術(shù)
ViDT的解碼器遵循多層transformer的標(biāo)準(zhǔn)結(jié)構(gòu),在每一層生成細(xì)化的[DET] token。因此,ViDT利用在(可變形)DETR中使用的2種輔助技術(shù)來(lái)進(jìn)行額外的改進(jìn):
Auxiliary Decoding Loss 檢測(cè)頭由2個(gè)用于框回歸和分類的前饋網(wǎng)絡(luò)組成,分別附著在每個(gè)解碼層上。將不同尺度下檢測(cè)頭的訓(xùn)練損失相加。這有助于模型輸出正確的對(duì)象數(shù)量,而無(wú)需非最大抑制。
Iterative Box Refinement 每個(gè)解碼層根據(jù)來(lái)自前一層檢測(cè)頭的預(yù)測(cè)來(lái)細(xì)化邊界框。因此,邊界框回歸過(guò)程需要通過(guò)解碼層逐步Refinement。
這2種技術(shù)對(duì)于基于transformer的目標(biāo)檢測(cè)器至關(guān)重要,因?yàn)樗鼈冊(cè)诓挥绊憴z測(cè)效率的情況下顯著提高了檢測(cè)性能。
2ViDT+
前面所提出的ViDT顯著提高了端到端transformer檢測(cè)器的計(jì)算復(fù)雜度和性能。此外,還分析了ViDT的2個(gè)缺點(diǎn):
多尺度 [PATCH] token線性融合,無(wú)法提取復(fù)雜的互補(bǔ)信息;ViDT不適用于其他任務(wù),如實(shí)例分段。

解決這兩個(gè)問(wèn)題并非易事。對(duì)于前者,需要開(kāi)發(fā)一種不影響推理速度的非線性融合特征的有效方法。對(duì)于后者,現(xiàn)有的用于DETR族檢測(cè)器的fpn型網(wǎng)絡(luò)不能以端到端方式進(jìn)行多任務(wù)學(xué)習(xí)。作者通過(guò)添加3個(gè)組件來(lái)解決這些缺陷,即Efficient Pyramid Feature Fusion(EPFF)、Unified Query Representation(UQR)以及IoU-aware and Token Labeling Losses。合并3個(gè)組件的方法稱為ViDT+,如圖4(c)所示。
Efficient Pyramid Feature Fusion Module
所有ViDT的多尺度[PATCH] token都不經(jīng)過(guò)任何處理,直接送入ViDT的Encoder-free Neck組件。然后,[PATCH] token被解碼為目標(biāo)嵌入,即最終的[DET] token。如公式(2)所示,解碼器的多尺度可變形注意力通過(guò)加權(quán)聚合線性融合多尺度[PATCH] token,但為了提高計(jì)算效率,只使用少量采樣的[PATCH] token(每個(gè)尺度K個(gè)token)。
因此,引入了一個(gè)簡(jiǎn)單但高效的金字塔特征融合(EPFF)模塊,該模塊在將所有可用的多尺度token放入解碼器之前,使用多個(gè)CNN融合塊非線性融合所有可用的多尺度token,如圖4(a)和4(b)所示。該方法比以往的簡(jiǎn)單線性聚合方法更有效地從不同尺度的特征映射中提取互補(bǔ)信息。
具體來(lái)說(shuō),將來(lái)自Body不同階段的所有多尺度[PATCH] token集合起來(lái),形成通道維數(shù)4大小相同的多尺度特征圖。隨后,它們以自頂向下的方式融合。圖4(a)中的每個(gè)融合塊接收2個(gè)用于金字塔特征融合的輸入特征圖:
用于目標(biāo)l級(jí)(高分辨率)的特征圖
feature map (較低分辨率)的前一個(gè)融合塊的融合feature map

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

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

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

實(shí)例分割SOTA對(duì)比

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


