Rotate to Attend: Convolutional Triplet Attention Module



在本文中,研究了輕量級但有效的注意力機制,並提出了 Triplet Attention,一種通過使用三支結構捕獲跨維交互來計算權重。 對於輸入張量,Triplet Attention通過旋轉操作和殘差變換建立維度間的依賴關系,並以可忽略的計算開銷對通道和空間信息進行編碼。該方法既簡單又有效,並且可以輕松地插入經典Backbone中。


本文方法

​ 所提出的Triplet Attention如下圖所示,Triplet Attention由3個平行的Branch組成,其中兩個負責捕獲通道C和空間H或W之間的跨維交互。最后一個Branch類似於CBAM,用於構建Spatial Attention,最終3個Branch的輸出使用平均求和。

本文的目的是研究如何建立廉價但有效的通道注意力模型,而又不涉及任何降維。

1、Cross-Dimension Interaction

​ 傳統的計算通道注意力的方法為了計算這些通道的權值,輸入張量在空間上通過全局平均池化分解為一個像素。這導致了空間信息的大量丟失,因此在單像素通道上計算注意力時,通道維數和空間維數之間的相互依賴性也不存在。后面提出基於Spatial和Channel的CBAM模型緩解了空間相互依賴的問題,但是通道注意和空間注意是分離的,計算是相互獨立的。基於建立空間注意力的方法,本文提出了跨維度交互作用(cross dimension interaction)的概念,通過捕捉空間維度和輸入張量通道維度之間的交互作用,解決了這一問題。

​ 這里是通過三個分支分別捕捉輸入張量的(C, H),(C, W)和(H, W)維間的依賴關系來引入Triplet Attention中的跨維交互作用。

2、Z-pool

​ Z-pool層負責將C維度的Tensor縮減到2維,將該維上的平均池化特征和最大池化特征連接起來。這使得該層能夠保留實際張量的豐富表示,同時縮小其深度以使進一步的計算量更輕。可以用下式表示:

3、Triplet Attention

給定一個輸入張量χ RC×H×W,首先將其傳遞到Triplet Attention模塊中的三個分支中。

在第1個分支中,在H維度和C維度之間建立了交互:

  1. 輸入張量χ沿H軸逆時針旋轉90°,這個旋轉張量表示為 χˆ1 的形狀為(W×H×C);
  2. 然后經過Z-Pool后的張量χˆ*1的shape為(2×H×C);
  3. 接着通過大小為k×k的標准卷積層,再通過批處理歸一化層,得到(1×H×C)的中間輸出;
  4. 然后,通過將張量通過sigmoid來生成的注意力權值;
  5. 在最后輸出是沿着H軸進行順時針旋轉90°保持和輸入的shape一致。

在第2個分支中,在C維度和W維度之間建立了交互:

​ 第二個分支與第一個分支操作基本一樣,不同的是輸入張量先沿W軸逆時針,最后輸出也是沿W軸進行順時針旋轉保持和輸入的shape一樣,建立了C維度和W維度之間的交互。

在第3個分支中,在H維度和W維度之間建立了交互:

  1. 輸入張量X的通道通過Z-pool將變量簡化為2;
  2. 將這個形狀的簡化張量(2×H×W)簡化后通過核大小k定義的標准卷積層,然后通過批處理歸一化層。
  3. 輸出通過sigmoid激活層生成形狀為(1×H×W)的注意權值,並將其應用於輸入,得到結果。
  4. 然后通過簡單的平均將3個分支產生的精細張量(C×H×W)聚合在一起。

最終輸出的Tensor:

4、Complexity Analysis

通過與其他標准注意力機制的比較,驗證了Triplet Attention的效率,C為該層的輸入通道數,r為MLP在計算通道注意力時瓶頸處使用的縮減比,用於2D卷積的核大小用k表示,k<<<C。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM