CoTNet-重磅開源!京東AI Research提出新的主幹網絡CoTNet,在CVPR上獲得開放域圖像識別競賽冠軍

點擊下方AI算法與圖像處理”,一起進步!

重磅乾貨,第一時間送達



0


寫在前面


基於Self-Attention的Transformer結構,首先在NLP任務中被提出,最近在CV任務中展現出了非常好的效果。然而,大多數現有的Transformer直接在二維特徵圖上的進行Self-Attention,基於每個空間位置的query和key獲得注意力矩陣,但相鄰的key之間的上下文信息未得到充分利用。

本文設計了一種新的注意力結構CoT Block,這種結構充分利用了key的上下文信息,以指導動態注意力矩陣的學習,從而增強了視覺表示的能力。
作者將CoT Block代替了ResNet結構中的3x3卷積,來形成CoTNet,最終在一系列視覺任務(分類、檢測、分割)上取得了非常好的性能,此外,CoTNet在CVPR上獲得開放域圖像識別競賽冠軍。




1


論文和代碼地址



論文地址:https://arxiv.org/abs/2107.12292代碼地址:https://github.com/JDAI-CV/CoTNet核心代碼:https://github.com/xmu-xiaoma666/External-Attention-pytorch#22-CoTAttention-Usage




2


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的上下文信息。

因此作者首先在key上採用3x3的卷積來建模靜態上下文信息,然後將query和上下文信息建模之後的key進行concat,再使用兩個連續的1x1卷積來自我注意,生成動態上下文。靜態和動態上下文信息最終被融合爲輸出。(簡單的說,就是作者先用卷積來提取了局部了信息,從而充分發掘了key內部的靜態上下文信息




3


方法

3.1. Multi-head Self-attention

目前在視覺的backbone中,通用的可擴展的局部多頭自我注意(scalable local multi-head self-attention),如上圖所示。首先用1x1的卷積上X映射到Q、K、V三個不同的空間,Q和K進行相乘獲得局部的關係矩陣:

由於原始的Self-Attention對輸入特徵的位置是不敏感的,所以還需要在Q上加上位置信息,然後將結果與關係矩陣相加:

接着,我們還需要對上面得到的結果進行歸一化,得到Attention Map:

得到Attention Map之後,我們需要將kxk的局部信息進行聚合,然後與V相乘,得到Attention之後的結果:

3.2. Contextual Transformer Block

傳統的Self-Attention可以很好地觸發不同空間位置的特徵交互。然而,在傳統的Self-Attention機制中,所有的query-key關係都是通過獨立的quey-key pair學習的,沒有探索兩者之間的豐富上下文,這極大的限制了視覺表示學習。

因此,作者提出了CoT Block,如上圖所示,這個結構將上下文信息的挖掘和Self-Attention的學習聚合到了一個結構中。
首先對於輸入特徵 ,首先定義了三個變量 這裏只是將V進行了特徵的映射,Q和K還是採用了原來的X值
作者首先在K上進行了kxk的分組卷積,來獲得具備局部上下文信息表示的K,(記作 ),這個 可以看做是在局部信息上進行了靜態的建模。
接着作者將 和Q進行了concat,然後對concat的結果進行了兩次連續的卷積操作:
不同於傳統的Self-Attention,這裏的A矩陣是由query信息和局部上下文信息 交互得到的,而不只是建模了query和key之間的關係。換句話說,就是通過局部上下文建模的引導,增強了自注意力機制。
然後,作者將這個Attention Map和V進行了相乘,得到了動態上下文建模的
最後CoT的結果爲局部靜態上下文建模的 和全局動態上下文建模的 fuse之後的結果。

3.3. Contextual Transformer Networks

CoT的設計是一個統一的自我關注的構建塊,可以作爲ConvNet中標準卷積的替代品。

因此,作者用CoT代替了ResNet和ResNeXt結構中的3x3卷積,形成了CoTNet和CoTNeXt。
可以看出,CoTNet-50的參數和計算量比ResNet-50略小。
與ResNeXt-50相比,CoTNeXt-50的參數數量稍多,但與FLOPs相似。




4


實驗

4.1. Image Recognition

4.1.1. Performance

如上表所示,在相同深度(50層或101層)下,top-1和top-5結果都表明本文的方法比卷積網絡和Attention-based網絡性能更好。
上表表明了,本文方法相比於一些SOTA方法,也有比較大的性能優勢。

4.1.2. Inference Time vs. Accuracy

上表圖展示了CoTNet和SOTA視覺backbone的inference time-accuracy 曲線。可以看出,CoTNet可以在更少的inference時間上達到更高的top-1準確率。

4.1.3. Ablation Study

上表展示了不同模塊ablation的實驗結果,可以看出,靜態上下文、動態上下文和線性融合都有各自的作用。

4.2. Object Detection

上表展示了COCO數據集上在不同預訓練backbone中使用Faster-RCNN和Cascade-RCNN進行目標檢測的性能比較,可以看出CoTNet相比於ResNet,性能提升明顯。

4.3. Instance Segmentation

上表展示了具有不同預訓練的視覺backbone的Mask-RCNN,在COCO數據集上的實例分割的性能。 可以看出CoTNet相比於ResNet,性能提升明顯。




5


總結


作者任務傳統的Self-Attention在進行計算Attention Map的時候,只考慮了Q和K的關係,而忽略了K內部的上下文信息,因此作者提出了CoT 模塊,利用輸入key的上下文信息來指導自注意力的學習。

通過將ResNet結構中的3x3卷積替換成CoT模塊,作者提出了CoTNet,並在分類、檢測、分割任務上都做了實驗,都取得了不錯的性能。

努力分享優質的計算機視覺相關內容,歡迎關注:

  
      
      
      
個人微信(如果沒有備註不拉羣!
請註明: 地區+學校/企業+研究方向+暱稱



下載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源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章