(ML) CBAM : Convolutional Block Attention Module

YEN HUNG CHENG
7 min readFeb 19, 2023

--

CBAM (Convolutional Block Attention Module)

以下為 CBAM (Convolutional Block Attention Module) 的架構

source

從架構來看,其實蠻像 BAM(Bottleneck Attention Module),一樣有 Channel attention 和 Spatial attention 的模塊在裡面,而 CBAM (Convolutional Block Attention Module) 的流程如下

  1. input feature 通過 Channel attention 後得到 Mc(F),Mc(F) 與 F(input feature) 做 Element-wise product 得到 F’
  2. F’ 通過 Spatial attention 後得到 Ms(F),Ms(F) 與 F’(input feature) 做 Element-wise product 得到 F’’

最終的輸出為 F’’ = Ms(F’) ⊗F’ , F’ = Mc(F) ⊗ F (Input feature) 可以用以下公式來表示

source

Mc(F) Channel attention

在 CBAM (Convolutional Block Attention Module) 的通道注意力 (Channel attention),類似於 SENet 中的 Squeeze-and-Excitation,但是這裡來提取 Channel 重要的特徵則是同時使用 Max Pooling 與 Average Pooling

通道注意力 (Channel attention) 集中在給定輸入圖像的 “what” 是有意義的

source
source

公式步驟如下

  1. Input feature 分別通過 Max Pooling 與 Average Pooling 1x1xC
  2. 各別送入同一個 MLP (Multilayer perceptron) 第一層神經元個數為 C/r ,激活函數為 ReLU,第二層神經元個數為 C。注意,這個兩層的神經網絡是共享的
  3. 通過 MLP 後,做 element-wise summation
  4. 通過 σ (sigmoid) 得到輸出 H×W×C

Ms(F) Spatial attention

在 BAM(Bottleneck Attention Module)中的空間注意力 (Spatial attention) 會各別通過 Max Pooling 與 Average Pooling 取得特徵,再將它們連接起來做卷積(Convolution)

空間注意力 (Spatial attention) 集中在 “where” 是一個信息部分

source
source

公式步驟如下

  1. Input feature 分別通過 Max Pooling 與 Average Pooling HxWx1
  2. 通過 Max Pooling 與 Average Pooling 後做 concatenation HxWx2
  3. 通過一個 7×7 的捲積層(Convolutional layer)
  4. 通過 σ (sigmoid) 得到輸出 HxWx1

concatenation

CBAM (Convolutional Block Attention Module) 放置位置

使用 ResNet 做示範,也就是夾在 ResNet Block 中兩個 Convolution layer 之間

source

Experiments

Comparison of different channel attention methods

source

雖然在通道注意力 (Channel attention) 單獨使用 Average Pooling 或 Max Pooling ,都能提升網路的性能,但是同時使用時能得到最好的性能提升

Comparison of different spatial attention methods

source

使用通道注意力 (Channel attention) 後,最後使用空間注意力 (Spatial attention) 中提取特徵,可以發現使用 Average Pooling 與 Max Pooling 後做concatenation,再更大的卷積核(Convolution kernel)能夠得到更最好的性能提升

可能是因為在經過卷積(Convolution)前,通過 Max Pooling 和 Average Poolong 產生的 feature map 採用的是 concatenation,這意味著需要一個廣闊的視野(即大的感受野)來提取特徵

Grad-CAM visualization results

從實驗可以發現,使用 CBAM 集成網絡的 Grad-CAM 比其他方法更好地覆蓋了目標對象區域

Grad-CAM(Gradient-weighted Class Activation Mapping)是一種用於可視化卷積神經網絡(CNN)的激活區域的技術。該技術的主要目的是提供對CNN的決策過程的可解釋性,也就是哪些部分對於 CNN 的分類決策起到了關鍵作用

生成的熱度圖中的紅色區域代表對於 CNN 在進行分類時的決策起到關鍵作用的區域,熱度圖中的每個像素值反映了對應位置的特徵圖對於預測結果的重要性

Object detection mAP(%) on the MS COCO validation set

source

Faster R-CNN 作為我們的檢測方法和 ImageNet pre-trained ResNet-50 與 ResNet-101 作為基線網絡(baseline networks),與基線網路相比 mPA (mean Average Precision) 都有所提升

mPA (mean Average Precision)

Object detection mAP(%) on the VOC 2007 test set

source

SSD 與 StairNet 作為我們的檢測方法,與基線網路相比 mPA (mean Average Precision) 都有所提升

Conclusion

在 CBAM (Convolutional Block Attention Module) 中能發現,不管是在通道 (Channel) 還是空間 (Spatial) 中,同時使用 Average Pooling 與 Max Pooling 來提取特徵,都能得到最佳的性能提升,並且透過最後的 Grad-CAM(Gradient-weighted Class Activation Mapping)的熱度圖,可以看出 CBAM 能更好地覆蓋目標對象區域

--

--