點擊下方“AI算法與圖像處理”,一起進步!
重磅乾貨,第一時間送達
寫在前面
基於Self-Attention的Transformer結構,首先在NLP任務中被提出,最近在CV任務中展現出了非常好的效果。然而,大多數現有的Transformer直接在二維特徵圖上的進行Self-Attention,基於每個空間位置的query和key獲得注意力矩陣,但相鄰的key之間的上下文信息未得到充分利用。
論文和代碼地址
論文地址:https://arxiv.org/abs/2107.12292
代碼地址:https://github.com/JDAI-CV/CoTNet
核心代碼:https://github.com/xmu-xiaoma666/External-Attention-pytorch#22-CoTAttention-Usage
Motivation
起初,CNN由於其強大的視覺表示學習能力,被廣泛使用在各種CV任務中,CNN這種局部信息建模的結構充分使用了空間局部性和平移等邊性。但是同樣的,CNN由於只能對局部信息建模,就缺少了長距離建模和感知的能力,而這種能力在很多視覺任務中又是非常重要的。
Transformer由於其強大的全局建模能力,被廣泛使用在了各種NLP任務中。受到Transformer結構的啓發,ViT、DETR等模型也借鑑了Transformer的結構來進行長距離的建模。然而,原始Transformer中的Self-Attention結構(如上圖所示)只是根據query和key的交互來計算注意力矩陣,因此忽略了相鄰key之間的聯繫。
基於此,作者提出了這樣一個問題——“有沒有一種優雅的方法可以通過利用二維特徵圖中輸入key之間的上下文來增強Transformer結構?”因此作者就提出了上面的結構CoT block。傳統的Self-Attention只是根據query和key來計算注意力矩陣,從而導致沒有充分利用key的上下文信息。
方法
3.1. Multi-head Self-attention
由於原始的Self-Attention對輸入特徵的位置是不敏感的,所以還需要在Q上加上位置信息,然後將結果與關係矩陣相加:
接着,我們還需要對上面得到的結果進行歸一化,得到Attention Map:
得到Attention Map之後,我們需要將kxk的局部信息進行聚合,然後與V相乘,得到Attention之後的結果:
3.2. Contextual Transformer Block
傳統的Self-Attention可以很好地觸發不同空間位置的特徵交互。然而,在傳統的Self-Attention機制中,所有的query-key關係都是通過獨立的quey-key pair學習的,沒有探索兩者之間的豐富上下文,這極大的限制了視覺表示學習。
3.3. Contextual Transformer Networks
CoT的設計是一個統一的自我關注的構建塊,可以作爲ConvNet中標準卷積的替代品。
實驗
4.1. Image Recognition
4.1.1. Performance
4.1.2. Inference Time vs. Accuracy
4.1.3. Ablation Study
4.2. Object Detection
4.3. Instance Segmentation
總結
作者任務傳統的Self-Attention在進行計算Attention Map的時候,只考慮了Q和K的關係,而忽略了K內部的上下文信息,因此作者提出了CoT 模塊,利用輸入key的上下文信息來指導自注意力的學習。
努力分享優質的計算機視覺相關內容,歡迎關注:
個人微信(如果沒有備註不拉羣!)
請註明:
地區+學校/企業+研究方向+暱稱
下載1:何愷明頂會分享
在「AI算法與圖像處理」公衆號後臺回覆:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經典工作的總結分析
下載2:終身受益的編程指南:Google編程風格指南
在「AI算法與圖像處理」公衆號後臺回覆:c++,即可下載。歷經十年考驗,最權威的編程規範!
下載3 CVPR2021
在「AI算法與圖像處理」公衆號後臺回覆:
CVPR
,即可下載1467篇CVPR 2020論文 和 CVPR 2021 最新論文
點亮 ,告訴大家你也在看
本文分享自微信公衆號 - AI算法與圖像處理(AI_study)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。