完全基于Transformer的目標(biāo)檢測(cè)器,ICLR匿名論文實(shí)現(xiàn)視覺(jué)、檢測(cè)統(tǒng)一
點(diǎn)擊上方“程序員大白”,選擇“星標(biāo)”公眾號(hào)
重磅干貨,第一時(shí)間送達(dá)

導(dǎo)讀
?一種新的集成視覺(jué)和檢測(cè) Transformer 的目標(biāo)檢測(cè)器 ViDT。ViDT 在現(xiàn)有的完全基于 transformer 的目標(biāo)檢測(cè)器中獲得了最佳的 AP 和延遲權(quán)衡,其對(duì)大型模型的高可擴(kuò)展性,可達(dá) 49.2AP。
Transformer 在 NLP 任務(wù)中取得不錯(cuò)的發(fā)展,許多研究將其引入到計(jì)算機(jī)視覺(jué)任務(wù)中。毫不夸張的說(shuō),Transformer 正在改變計(jì)算機(jī)視覺(jué)的格局,尤其是在識(shí)別任務(wù)方面。例如 Detection transformer 是第一個(gè)用于目標(biāo)檢測(cè)的、端到端的學(xué)習(xí)系統(tǒng),而 vision transformer 是第一個(gè)完全基于 transformer 的圖像分類(lèi)架構(gòu)。在本文中,一篇被 ICLR 2022 接收的匿名論文集成了視覺(jué)和檢測(cè) Transformer (Vision and Detection Transformer,ViDT) 來(lái)構(gòu)建有效且高效的目標(biāo)檢測(cè)器。
ViDT 引入了一個(gè)重新配置的注意力模塊(reconfigured attention module),將 Swin Transformer 擴(kuò)展為一個(gè)獨(dú)立的目標(biāo)檢測(cè)器,之后是一個(gè)計(jì)算高效的 Transformer 解碼器,該解碼器利用多尺度特征和輔助(auxiliary)技術(shù),在不增加計(jì)算負(fù)載的情況下提高檢測(cè)性能。
在 Microsoft COCO 基準(zhǔn)數(shù)據(jù)集上的評(píng)估表明,ViDT 在現(xiàn)有的完全基于 transformer 的目標(biāo)檢測(cè)器中獲得了最佳的 AP 和延遲權(quán)衡,其對(duì)大型模型的高可擴(kuò)展性,可達(dá) 49.2AP。

論文地址:https://openreview.net/pdf?id=w4cXZDDib1H
ViDT:視覺(jué)與檢測(cè) Transformer
ViDT 架構(gòu)如下圖 2 (c) 所示:
首先,ViDT 引入了一種改進(jìn)的注意力機(jī)制,名為 Reconfigured Attention Module (RAM),該模塊有助于 ViT 變體處理附加的 [DET(detection tokens)] 和 [PATCH(patch tokens)] token 以進(jìn)行目標(biāo)檢測(cè)。因此,ViDT 可以將最新的帶有 RAM 的 Swin Transformer 主干修改為目標(biāo)檢測(cè)器,并利用其具有線(xiàn)性復(fù)雜度的局部注意力機(jī)制獲得高可擴(kuò)展性;
其次,ViDT 采用輕量級(jí)的無(wú)編碼器 neck 架構(gòu)來(lái)減少計(jì)算開(kāi)銷(xiāo),同時(shí)仍然在 neck 模塊上啟用額外的優(yōu)化技術(shù)。請(qǐng)注意,neck 編碼器是不必要的,因?yàn)?RAM 直接提取用于目標(biāo)檢測(cè)的細(xì)粒度表示,即 [DET ] token。結(jié)果,ViDT 獲得了比 neck-free 對(duì)應(yīng)物更好的性能;
最后,該研究引入了用于知識(shí)蒸餾的 token 匹配新概念,它可以在不影響檢測(cè)效率的情況下從大型模型到小型模型帶來(lái)額外的性能提升。

RAM 模塊
該研究引入了 RAM 模塊,它將與 [PATCH] 和 [DET] token 相關(guān)的單個(gè)全局注意力分解為三個(gè)不同的注意力,即 [PATCH]×[PATCH]、[DET]× [DET] 和 [DET] × [PATCH] 注意力。如圖 3 所示,通過(guò)共享 [DET] 和 [PATCH] token 的投影層,全部復(fù)用 Swin Transformer 的所有參數(shù),并執(zhí)行三種不同的注意力操作:

ENCODER-FREE ?neck 結(jié)構(gòu)
為了利用多尺度特征圖,ViDT 結(jié)合了多層可變形 transformer 解碼器。在 DETR 家族中(圖 2 (a)),其 neck 部分需要一個(gè) transformer 編碼器,用于將從骨干中提取的用于圖像分類(lèi)的特征轉(zhuǎn)換為適合目標(biāo)檢測(cè)的特征;編碼器通常在計(jì)算上很昂貴,因?yàn)樗婕?[PATCH] × [PATCH] 注意力。然而,ViDT 只保留了一個(gè) Transformer 解碼器作為其 neck,因?yàn)閹в?RAM 的 Swin Transformer 直接提取適合目標(biāo)檢測(cè)的細(xì)粒度特征作為獨(dú)立的目標(biāo)檢測(cè)器。因此,ViDT 的 neck 結(jié)構(gòu)在計(jì)算上是高效的。
解碼器從帶有 RAM 的 Swin Transformer 接收兩個(gè)輸入:(1)從每個(gè)階段生成的 [PATCH] token(2)從最后階段生成的 [DET ] token,如圖 2 (c) 的 Neck 所示。在每個(gè)可變形的 transformer 層中,首先執(zhí)行 [DET] × [DET] 注意力。對(duì)于每個(gè) [DET] token,應(yīng)用多尺度可變形注意力以生成一個(gè)新的 [DET] token,聚合從多尺度特征圖
中采樣的一小組關(guān)鍵內(nèi)容:

用于目標(biāo)檢測(cè)的 token 匹配知識(shí)蒸餾
雖然大型模型具有實(shí)現(xiàn)高性能的高容量,但在實(shí)際使用中它的計(jì)算成本可能很高。因此,該研究還提出了一種簡(jiǎn)單的知識(shí)蒸餾方法,可以通過(guò) token 匹配從大型 ViDT 模型中遷移知識(shí)。
匹配每一層的所有 token 在訓(xùn)練中非常低效,因此,該研究只匹配對(duì)預(yù)測(cè)貢獻(xiàn)最大的 token。兩組 token 直接相關(guān):(1)P:用作多尺度特征圖的 [PATCH] token 集合,由 body 中的每個(gè)階段生成,(2)D:[DET ] token 的集合,它們是從 neck 的每個(gè)解碼層生成的。因此,基于 token 匹配的蒸餾損失公式為:

評(píng)估
表 2 將 ViDT 與 DETR (ViT) 和 YOLOS 的 AP、FPS 等進(jìn)行了比較,其中 DETR (ViT) 有兩個(gè)變體:DETR 和 Deformable DETR。
實(shí)驗(yàn)結(jié)果表明:ViDT 實(shí)現(xiàn)了 AP 和 FPS 之間的最佳權(quán)衡。憑借其高可擴(kuò)展性,其性能優(yōu)于 1 億個(gè)參數(shù)的 Swin-base,在相似的 AP 的下,F(xiàn)PS 比 Deformable DETR 快 2 倍。此外,ViDT 參數(shù)為 16M,得到 40.4AP,比 DETR (swin-nano) 和 DETR (swin-tiny) 高分別高 6.3AP、12.6AP。


表 3 對(duì)比了不同空間位置編碼與 ViDT(w.o. Neck)的結(jié)果。結(jié)果表明:pre-addition 比 post-addition 帶來(lái)的性能提升更高,即 sinusoidal encoding 優(yōu)于 learnable 編碼;因此,正弦空間編碼的 2D 歸納偏置在目標(biāo)檢測(cè)中更有幫助。特別是,與不使用任何編碼相比,使用正弦編碼的預(yù)加法(pre-addition)將 AP 增加了 5.0。

表 4 總結(jié)了使用不同選擇策略進(jìn)行交叉注意力(cross-attention)時(shí)的 AP 和 FPS,其中 Swin Transformer 總共包含四個(gè)階段。有趣的是,只要在最后階段激活交叉注意力,所有策略都表現(xiàn)出相似的 AP。由于在各個(gè)階段中以自下而上的方式提取特征,因此在低級(jí)別階段很難直接獲得有關(guān)目標(biāo)對(duì)象的有用信息。因此,研究者想要獲得較高的 AP 和 FPS,只使用最后階段是最好的設(shè)計(jì)選擇,因?yàn)?[PATCH] token 的數(shù)量最少。

為了徹底驗(yàn)證輔助解碼損失(auxiliary decoding loss)和迭代框細(xì)化(iterative box refinement)的有效性,該研究甚至對(duì) YOLOS 等 neck-free 檢測(cè)器進(jìn)行了擴(kuò)展。表 5 顯示了兩種 neck-free 檢測(cè)器 YOLOS 和 ViDT (w.o. Neck) 性能。實(shí)驗(yàn)結(jié)果證明在 ViDT 中使用 Neck 解碼器來(lái)提高目標(biāo)檢測(cè)性能是合理的。

下圖表明:教師模型的規(guī)模越大,學(xué)生模型的收益越大。從系數(shù)來(lái)看,系數(shù)值越大,性能越好。模型蒸餾將 AP 提高了 1.0-1.7,而不會(huì)影響學(xué)生模型的推理速度。

研究者將所有提議的組件結(jié)合起來(lái),以實(shí)現(xiàn)目標(biāo)檢測(cè)的高精度和速度。如表 8 所示,有四個(gè)組件:(1) RAM 將 Swin Transformer 擴(kuò)展為獨(dú)立的目標(biāo)檢測(cè)器,(2) neck 解碼器利用多尺度特征和兩種輔助技術(shù),(3) 從大模型中獲益知識(shí)蒸餾,(4) 解碼層 drop 進(jìn)一步加快推理速度。結(jié)果表明:當(dāng)使用 Swin-nano 作為其主干時(shí),它僅使用 13M 參數(shù)就達(dá)到了 41.7AP 和合理的 FPS。此外,當(dāng)使用 Swin-tiny 時(shí),它僅損失了 2.7 FPS 而表現(xiàn)出 46.4AP。
推薦閱讀
關(guān)于程序員大白
程序員大白是一群哈工大,東北大學(xué),西湖大學(xué)和上海交通大學(xué)的碩士博士運(yùn)營(yíng)維護(hù)的號(hào),大家樂(lè)于分享高質(zhì)量文章,喜歡總結(jié)知識(shí),歡迎關(guān)注[程序員大白],大家一起學(xué)習(xí)進(jìn)步!

