
Transformer 是 Google 團隊在 2017 年 6 月提出的 NLP 經典之作,由 Ashish Vaswani 等人在發表的論文《Attention Is All You Need》中提出。自從 Transformer 被提出以來,得益于其強大的注意力機制,便開始在 NLP 領域一統江湖。但令人意外的是,Transformer 在 CV 界卻反響平平,一度認為不适合 CV 領域,直到最近計算機視覺領域出來幾篇 Transformer 文章,性能直逼 CNN 的 SOTA,給予了計算機視覺領域新的想象空間,Transformer 在計算機視覺領域的範式已經初具雛形。
在計算機視覺領域,目标檢測發展迅速,出現了以 R-CNN、Faster R-CNN、Mask RCNN 為代表的 two-stage 網絡架構,以及以 YOLO、SSD 為代表的 one-stage 網絡架構。如果将在 NLP 領域表現超越的 Transformer 用于目标檢測,其效果又如何?現階段研究者已嘗試将 Transformer 用于目标檢測任務,填補了 Transformer 用于目标檢測的空白。
本文我們将要介紹的是用 Transformer 進行目标檢測任務,主要包括以下内容:
- 論文 1:《End-to-End Object Detection with Transformers》,來自 Facebook AI 的研究者推出的 Transformer 視覺版本——Detection Transformer(DETR),可用于目标檢測和全景分割。
- 論文 2:《DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION》,來自商湯科技研究院、中國科學技術大學以及香港中文大學的研究者提出了 Deformable DETR,解決了 DETR 收斂慢、計算複雜度高這兩大問題。
- 論文 3:《UP-DETR: Unsupervised Pre-training for Object Detection with Transformers》,來自華南理工大學以及騰訊 Wechat AI 的研究者提出了一種稱為随機查詢 patch 檢測的前置任務,以無監督的預訓練 DETR(UP-DETR)進行目标檢測。
- 論文 4:《End-to-End Object Detection with Adaptive Clustering Transformer》,來自北京大學與香港中文大學的研究者提出了一種新的 transformer 變體:自适應聚類 Transformer(ACT),解決了 DETR 需要大量的計算資源來進行訓練和推理的計算成本。
論文 1:End-to-End Object Detection with Transformers
由于 Transformer 廣泛應用于序列資料的處理任務,尤其是在語言模組化、機器翻譯等任務中表現出良好的性能,那麼在 NLP 領域表現良好的模型是否可以用到視覺領域?來自 Facebook AI 的研究者實作了這一功能。
Facebook AI 的研究者把 Transformer 用到了目标檢測任務中,還取得了媲美 Faster R-CNN 的效果。該研究推出的 Transformer 視覺版本——Detection Transformer(DETR),可用于目标檢測和全景分割。與之前的目标檢測相比,DETR 的架構有了根本上的改變,也是第一個将 Transformer 成功整合為檢測 pipeline 中心建構塊的目标檢測架構。基于 Transformer 的端到端目标檢測,沒有 NMS 後處理步驟、真正的沒有 anchor,且對标超越 Faster R-CNN。
算法實作:處理目标檢測任務的全新架構
DETR 通過将常見的 CNN 與 Transformer 架構相結合,直接(并行)預測最終的檢測結果。在訓練階段,二分比對将唯一的預測配置設定給 GT 框。不比對的預測産生無目标(∅)類預測。
DETR 的工作流程可以歸為以下步驟:Backbone -> Transformer -> detect header。
将 DETR 的結構具體化,如下圖所示:
DETR 使用正常的 CNN 主幹來學習輸入圖像的 2D 表示。模型将其展平并傳遞到 transformer 編碼器之前進行位置編碼補充。然後,transformer 解碼器将少量固定數量的位置嵌入作為輸入,稱為目标查詢,并另外參與編碼器的輸出。将解碼器的每個輸出嵌入傳遞到預測檢測(類和邊界框)或無目标類的共享前饋網絡(FFN)。
更為具體的 DETR 架構如下:
上圖給出了 DETR 中使用 transformer 的詳細說明,并在每個注意力層傳遞了位置編碼。來自 CNN 主幹的圖像特征通過了 transformer 編碼器,并将空間位置編碼與添加到查詢和鍵處的空間編碼一起傳遞。然後,解碼器接收查詢(最初設定為零),輸出位置編碼(目标查詢)和編碼器記憶體,并通過多個多頭自注意力和解碼器 - 編碼器注意力來生成最終的一組預測類标簽和邊界框。此外可以跳過第一解碼器層中的第一自注意力層。
雖然 DETR 性能良好,但其自身也存在着如下兩個問題:
- 與現有的目标檢測器相比,它需要更長的訓練輪數才能收斂。比如,在 COCO 基準上,DETR 需要 500 個 epoch 才能收斂,這比 Faster R-CNN 慢了 10 到 20 倍;
- DETR 在檢測小物體上性能較差。當今的目标檢測器通常利用了多尺度的特征,進而小物體可以從高分辨率的特征圖中檢測。但是對于 DETR 來說,高分辨率的特征圖将帶來不可接受的計算複雜度和記憶體複雜度。
論文 2:DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION
今年 5 月底,Facebook AI 提出了 DETR(論文 1),利用 Transformer 去做目标檢測,該方法去除了許多目标檢測中的人工設計元件,同時展現了非常好的性能。但是,DETR 存在收斂速度慢和特征分辨率有限、訓練時間慢等缺陷。為了解決這些問題,來自商湯研究院、中科大和港中文的研究者提出了 Deformable DETR,解決了 DETR 收斂慢、計算複雜度高這兩大問題。其注意力子產品僅關注于參考點附近的一小部分采樣點作為注意力子產品中的 key 元素。Deformable DETR 可以在比 DETR 少 9/10 的訓練輪數下,達到更好的性能(尤其是在小物體上),在 COCO 基準上的大量實驗驗證了該方法的有效性。
Deformable DETR 提出的可形變注意力可以緩解 DETR 收斂速度慢和複雜度高的問題,同時結合了可形變卷積的稀疏空間采樣能力和 transformer 的關系模組化能力。可形變注意力可以考慮小的采樣位置集作為一個 pre-filter 突出所有特征圖的關鍵特征,并且可以自然地擴充到融合多尺度特征,這樣多尺度可形變注意力本身就可以在多尺度特征圖之間進行交換資訊,不需要 FPN 操作。
論文位址:
https://arxiv.org/pdf/2010.04159.pdfDeformable DETR 方法和模型解讀
Deformable DETR 結合了可形變卷積中的稀疏空間采樣的優勢以及 Transformer 中的關系模組化能力。研究者提出了可形變注意力子產品(如下公式(2)所示),它關注一小部分采樣的位置,作為從特征圖所有像素中預先篩選出顯著的 key 元素。
這一子產品可以被擴充到聚合多尺度特征上(如下公式(3)所示),而不需要 FPN。
Deformable DETR 将 DETR 中的 attention 替換成 Deformable Attention,使 DETR 範式的檢測器更加高效,收斂速度提升 10 倍,如下圖所示:
由于 Deformable DETR 的快速收斂性和計算記憶體高效性,它打開了探索端到端目标檢測器變種的可能。此外,研究者探索了一個簡單而有效的疊代式物體邊界框細化機制來進一步提高檢測性能。同時也嘗試了 two-stage 網絡架構的 Deformable DETR,其中第一階段的 region proposals 也是由 Deformable DETR 的一個變種生成,然後進一步被輸入到解碼器進行疊代式物體邊界框細化。
論文 3:UP-DETR: Unsupervised Pre-training for Object Detection with Transformers
受預訓練 transformer 在 NLP 任務中巨大成功的啟發,來自華南理工大學以及騰訊 Wechat AI 的研究者提出了一種被稱為随機查詢 patch 檢測的前置任務,以無監督預訓練 DETR(UP-DETR)進行目标檢測。特别地,研究者從給定的圖像中随機裁剪 patches,然後将裁剪 patches 作為查詢提供給解碼器。
該模型經過預訓練可以從原始圖像中檢測出這些查詢 patches。預訓練期間需要解決兩個關鍵問題:多任務學習和多查詢定位。一方面,為了在前置任務中權衡分類和定位的多任務學習,該研究當機了 CNN 主幹,并提出了一個與 patch 檢測聯合優化的 patch 特征重構分支。另一方面,為了執行多查詢定位,該研究從單查詢 patch 引入了 UP-DETR,并将其擴充到具有目标查詢 shuffle 和注意力掩碼的多查詢 patch 。在實驗中,UP-DETR 在 PASCAL VOC 和 COCO 資料集上以更快的收斂速度和更高的準确率顯著提高了 DETR 的性能。
在預訓練過程中,研究者主要解決以下兩個關鍵問題:
- 多任務學習:目标檢測是目标分類和定位的耦合。為了避免查詢 patch 檢測破壞分類特征,研究者引入當機的預訓練主幹和 patch 特征重構來保持 transformer 的特征識别;
- 多查詢定位:不同的目标查詢聚焦于不同的位置區域和檢測框大小。為了說明這一性質,研究者提出了簡單的單查詢預訓練,并将其擴充到多查詢版本。對于多查詢 patches,研究者設計了目标查詢 shuffle 和注意掩碼,解決了查詢 patches 和目标查詢之間的配置設定問題。
算法介紹
UP-DETR 包括預訓練與微調過程:在沒有任何人工标注的大型資料集上對 transformer 進行了無監督的預訓練;使用與下遊任務原始 DETR 相同的标記資料對整個模型進行微調。
如上圖 2 所示,随機查詢 patch 檢測是簡單而有效的。首先,利用當機的 CNN 主幹提取輸入圖像的特征映射 f∈R^C×H×W,其中 C 為通道維數,H×W 為特征映射大小。然後,在 DETR 中将特征映射與位置編碼相結合并傳遞給多層 transformer 編碼器。對于随機裁剪的查詢 patch,采用全局平均池化(GAP)的 CNN 主幹網提取出 patch 特征 p∈R^C,并對其進行扁平化處理,并輔以目标查詢 q∈R^C,然後将其傳遞給 transformer 解碼器。注意,查詢 patch 是指從原始圖像中裁剪出來的 patch,而目标查詢是指位置嵌入,并将其傳遞給解碼器。CNN 參數在整個模型中是共享的。
單查詢 Patch:DETR 為每個目标查詢學習不同的空間專有化(spatial specialization),這表明不同的目标查詢關注不同的位置區域和邊框大小。當從圖像中随機裁剪 patch 時,沒有任何關于查詢 patch 的位置區域和邊框大小的先驗資訊。為了保持不同的空間專有化,該研究顯式地為所有目标查詢(N=3)指定單個查詢塊(M=1),如上圖 2(a)所示。
圖 2b 示出了具有注意力掩碼和目标查詢 shuffle 的多查詢 patches 的預訓練。為了提高泛化能力,研究人員在預訓練期間随機地将 10% 的查詢 patche 掩碼為零,這類似于 dropout 方法。在實驗中,兩個典型值被設定為 N=100 和 M=10。
論文 4:End-to-End Object Detection with Adaptive Clustering Transformer
使用 Transformer 進行端到端的目标檢測(DETR),可以達到與 two-stage 網絡架構(如 Faster R-CNN)相媲美的性能。然而,由于高分辨率的空間輸入,DETR 需要大量的計算資源來進行訓練和推理。
為了降低高分辨率輸入的計算成本,來自北京大學與香港中文大學的研究者提出了一種新的 transformer 變體:自适應聚類 Transformer(Adaptive Clustering Transformer, ACT)。ACT 使用局部敏感哈希(LSH)自适應地對查詢特征進行聚類,并利用 prototype-key 互動近似 query-key 互動。ACT 可以将自注意力内部的二次 O(N^2)複雜度降低為 O(NK),其中 K 是每層原型的數量。在不影響預訓練 DETR 模型性能的前提下,ACT 可以替代 DETR 中原有的自注意子產品。ACT 在準确率和計算成本(FLOPs)之間實作了很好的平衡。
該研究的主要貢獻如下:
- 提出了一種新的自适應聚類 Transformer(ACT)方法,可以降低 DETR 的推理成本。ACT 旨在使用輕量級 LSH 從查詢中選擇具有代表性的原型,然後将所選原型的特征更新傳遞到最近的查詢中。ACT 可以降低原始 transformer 的二次複雜度,同時與原始 transformer 完全相容;
- 在不經過任何訓練的情況下,該研究将 DETR 中的 FLOPS 從 73.4 Gflops 減少到 58.2 Gflops(排除主幹 Resnet FLOPs),而 AP 中損失僅為 0.7%;
- 通過多任務知識蒸餾 (MTKD) 将 AP 中損失降低到 0.2%,進而實作了 ACT 和原始 transform 之間的無縫轉換。
下圖 3 展示了 DETR 的三個階段。在編碼器中,使用 ImageNet 預訓練的 ResNet 模型從輸入圖像中提取 2D 特征。位置編碼子產品使用不同頻率的正弦和餘弦函數對空間資訊進行編碼。DETR 将 2D 特性扁平化,用位置編碼進行補充,并傳遞給 6 層 transformer 編碼器。編碼器的每一層結構相同,包括 8 頭自注意力子產品和 FFN 子產品。然後解碼器将少量固定數量的學習位置嵌入作為輸入,這些嵌入被稱為目标查詢,并額外關注編碼器輸出。解碼器同樣有 6 層,每一層包含 8 頭自注意力子產品和 8 頭共同注意力子產品,以及 FFN 子產品。最後,DETR 将解碼器的每個輸出傳遞給共享的前饋網絡,該網絡預測檢測 (類和邊框) 或無目标類。
參考連結:
https://blog.csdn.net/irving512/article/details/109713148 https://jishuin.proginn.com/p/763bfbd2ee77一場屬于蓉城的“鮮香”盛宴,DevRun開發者沙龍邀您開啟“麻辣”開發之旅行至西南,遇見成都。12月12日,DevRun開發者沙龍華為雲成都專場将帶你逐一解鎖:AI開發與雲原生DevOps的進階之旅、華為雲技術專家面對面的教學指導、技術瓶頸突破與核心效能提升的關鍵要義以及擁抱變革與自我進階的最佳姿勢。精彩不容錯過!識别二維碼,立即報名。
© THE END
轉載請聯系本公衆号獲得授權
投稿或尋求報道:[email protected]