CBAM:Convolutional Block Attention Module(注意力機制)+TensorFlow2.0復現!
一. 論文摘要
深度神經網絡的最新進展是通過架構搜索來獲得更強的表示能力。在本文中,我們重點研究了一般深度神經網絡中注意力 的影響。我們提出了一個簡單有效的注意力模塊,稱爲瓶頸注意模塊(BAM: Bottleneck Attention Module),它可以整合到任何前饋卷積神經網絡當中。我們的模型通過兩個分離的路徑channel和spatial, 得到一個Attention Map。我們將此模塊放在模型的每個瓶頸處,在那裏發生了特徵圖的下采樣。我們的模塊在瓶頸處構造了一個具有多個參數的層次注意,它可以與任何前饋模型以端到端的方式聯合訓練。我們通過在CIFAR-100、ImageNet-1K、VOC 2007和MS COCO基準上的大量實驗來驗證BAM。實驗結果表明,在分類和檢測性能的不斷改善與各種模型,證明了廣泛的適用性BAM。
二. BAM的網絡結構
2.1. 總體的描述
對於一箇中間層的Feature map F ∈ R C × H × W \mathbf F \in \mathbb{R}^{C \times H \times W} F ∈ R C × H × W ,BAM將會得到一個3D的attention map M ( F ) ∈ R C × H × W \mathbf{M}(\mathbf{F}) \in \mathbb{R}^{C \times H \times W} M ( F ) ∈ R C × H × W ,細化後的feature map F ′ \mathbf{F}^{\prime} F ′ 能被表示爲:
F ′ = F + F ⊗ M ( F ) (1)
\mathbf{F}^{\prime}=\mathbf{F}+\mathbf{F} \otimes \mathbf{M}(\mathbf{F})\tag{1}
F ′ = F + F ⊗ M ( F ) ( 1 ) 其中: ⊗ ⊗ ⊗ 爲element-wise multiplication。爲了設計一個高效而強大的模塊,我們首先在2個分支分別計算通道注意力 M c ( F ) ∈ R C \mathbf{M}_{\mathbf{c}}(\mathbf{F}) \in \mathbb{R}^{C} M c ( F ) ∈ R C 和空間注意力 M s ( F ) ∈ R H × W \mathbf{M}_{\mathbf{s}}(\mathbf{F}) \in \mathbb{R}^{H \times W} M s ( F ) ∈ R H × W ,然後計算attention map M ( F ) \mathbf{M}(\mathbf{F}) M ( F ) :
M ( F ) = σ ( M c ( F ) + M s ( F ) ) (2)
\mathbf{M}(\mathbf{F})=\sigma\left(\mathbf{M}_{\mathbf{c}}(\mathbf{F})+\mathbf{M}_{\mathbf{s}}(\mathbf{F})\right)\tag{2}
M ( F ) = σ ( M c ( F ) + M s ( F ) ) ( 2 ) 其中: σ \sigma σ 表示Sigmoid 函數 ,在進行上面add之前兩個分支輸出都被resize爲 R C × H × W \mathbb{R}^{C \times H \times W} R C × H × W 。
2.2. 通道注意力機制
爲了聚合feature map在每個通道維度,我們對feature map F \mathbf{F} F 進行全局平均池化 得到,得到一個通道向量 F c ∈ R C × 1 × 1 \mathbf{F}_{\mathbf{c}} \in \mathbb{R}^{C \times 1 \times 1} F c ∈ R C × 1 × 1 ,這個向量對全局信息在每個通道進行軟編碼。爲了評估Attention在每個通道的效果?我們使用了一個多層感知(MLP)用一層隱藏層。爲了節省參數開銷,將隱藏的激活大小設置爲 R C / r × 1 × 1 \mathbb{R}^{C / r \times 1 \times 1} R C / r × 1 × 1 ,其中 r r r 爲比例。在MLP之後,我們增加了BN去調整規模和空間分支一樣的輸出,channel attention可以被計算爲:
M c ( F ) = BN ( MLP ( AvgPool ( F ) ) ) = BN ( W 1 ( W 0 AvgPool ( F ) + b 0 ) + b 1 ) (3)
\begin{aligned}
\mathbf{M}_{\mathbf{c}}(\mathbf{F}) &=\text {BN}(\operatorname{MLP}(\text {AvgPool}(\mathbf{F}))) \\
&=\text {BN}\left(\mathbf{W}_{\mathbf{1}}\left(\mathbf{W}_{0} \text {AvgPool}(\mathbf{F})+\mathbf{b}_{0}\right)+\mathbf{b}_{1}\right)\tag{3}
\end{aligned}
M c ( F ) = BN ( M L P ( AvgPool ( F ) ) ) = BN ( W 1 ( W 0 AvgPool ( F ) + b 0 ) + b 1 ) ( 3 ) 其中: W 0 ∈ R C / r × C , b 0 ∈ R C / r , W 1 ∈ R C × C / r , b 1 ∈ R C \mathbf{W}_{0} \in \mathbb{R}^{C / r \times C}, \mathbf{b}_{0} \in \mathbb{R}^{C / r}, \mathbf{W}_{1} \in \mathbb{R}^{C \times C / r}, \mathbf{b}_{1} \in \mathbb{R}^{C} W 0 ∈ R C / r × C , b 0 ∈ R C / r , W 1 ∈ R C × C / r , b 1 ∈ R C 。
2.3. 空間注意力機制
這個空間分支產生了空間Attention去增強或者抑制特徵在不同的空間位置 ,衆所周知,利用上下文信息是去知道應該關注哪些位置的關鍵點。在這裏我們爲了高效性運用空洞卷積 去增大感受野。我們觀察到與標準卷積相比,空洞卷積有助於構造更有效的spatial map。空間分支通過產生一個空間spatial map M s ( F ) ∈ R H × W \mathbf{M}_{\mathbf{s}}(\mathbf{F}) \in \mathbb{R}^{H \times W} M s ( F ) ∈ R H × W 去強調或壓制不同空間位置的特徵。
M s ( F ) = BN ( f 3 1 × 1 ( f 2 3 × 3 ( f 1 3 × 3 ( f 0 1 × 1 ( F ) ) ) ) ) (4)
\mathbf{M}_{\mathbf{s}}(\mathbf{F})=\text {BN}\left(f_{3}^{1 \times 1}\left(f_{2}^{3 \times 3}\left(f_{1}^{3 \times 3}\left(f_{0}^{1 \times 1}(\mathbf{F})\right)\right)\right)\right)\tag{4}
M s ( F ) = BN ( f 3 1 × 1 ( f 2 3 × 3 ( f 1 3 × 3 ( f 0 1 × 1 ( F ) ) ) ) ) ( 4 ) 其中: f f f 表示卷積運算,BN表示批量歸一化運算,上標表示卷積濾波器大小。 通道縮減有兩個 1 × 1 1×1 1 × 1 卷積。中間 3 × 3 3×3 3 × 3 擴張卷積用於聚合具有較大感受野的上下文信息。
參考文獻