在本文中,研究了輕量級但有效的注意力機制,並提出了 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維度之間建立了交互:
- 輸入張量χ沿H軸逆時針旋轉90°,這個旋轉張量表示為 χˆ1 的形狀為(W×H×C);
- 然后經過Z-Pool后的張量χˆ*1的shape為(2×H×C);
- 接着通過大小為k×k的標准卷積層,再通過批處理歸一化層,得到(1×H×C)的中間輸出;
- 然后,通過將張量通過sigmoid來生成的注意力權值;
- 在最后輸出是沿着H軸進行順時針旋轉90°保持和輸入的shape一致。
在第2個分支中,在C維度和W維度之間建立了交互:
第二個分支與第一個分支操作基本一樣,不同的是輸入張量先沿W軸逆時針,最后輸出也是沿W軸進行順時針旋轉保持和輸入的shape一樣,建立了C維度和W維度之間的交互。
在第3個分支中,在H維度和W維度之間建立了交互:
- 輸入張量X的通道通過Z-pool將變量簡化為2;
- 將這個形狀的簡化張量(2×H×W)簡化后通過核大小k定義的標准卷積層,然后通過批處理歸一化層。
- 輸出通過sigmoid激活層生成形狀為(1×H×W)的注意權值,並將其應用於輸入,得到結果。
- 然后通過簡單的平均將3個分支產生的精細張量(C×H×W)聚合在一起。
最終輸出的Tensor:
4、Complexity Analysis
通過與其他標准注意力機制的比較,驗證了Triplet Attention的效率,C為該層的輸入通道數,r為MLP在計算通道注意力時瓶頸處使用的縮減比,用於2D卷積的核大小用k表示,k<<<C。