天天看點

CBAM: Convolutional Block Attention Module論文筆記

論文連結:CBAM: Convolutional Block Attention Module

摘要:

提出了卷積注意子產品(CBAM),這是一種簡單有效的卷積神經網絡注意子產品。在給定一個中間特征圖的情況下,該子產品對特征圖通道和空間兩個次元分别計算注意力,然後将注意圖乘到輸入的特征圖中。因為CBAM是一個輕量級的通用子產品,它可以無縫地內建到任何CNN架構中,開銷可以忽略不計,并且可以與基本CNNs一起端到端教育訓練。通過對ImageNet-1K、MS COCO檢測和VOC 2007檢測資料集的大量實驗驗證了CBAM的有效性。實驗結果表明,不同的模型在分類和性能上都有較大的提高,說明了CBAM具有廣泛的可移植性。

思路:

這篇論文是主要就是将通道注意力機制和空間注意力機制結合起來,通道間注意力機制負責告訴網絡哪個通道是重要的,空間注意力機制告訴網絡哪個區域是重要的。通過這樣方式,就能在網絡訓練的過程中增強重要的通道和區域,抑制不重要的通道和區域,進而提高性能。

網絡結構:

卷積注意子產品(CBAM):

CBAM: Convolutional Block Attention Module論文筆記

 這個就是網絡提出的卷積注意力子產品,對于輸入的特征圖

CBAM: Convolutional Block Attention Module論文筆記

,先用其求出通道間注意力,得出一個通道間注意力向量,向量長度為

CBAM: Convolutional Block Attention Module論文筆記

,用這C個值分别乘以輸入特征圖的C個通道,這樣,重要的通道對應的那個值就比較大,意味着權重比較大。然後用經過通道增強的特征圖沿着通道的次元計算空間注意力,得到一個

CBAM: Convolutional Block Attention Module論文筆記

的注意力矩陣,用這個矩陣去乘以經過通道增強的特征圖(将這個特征圖複制C遍(Python中叫做廣播),得到一個

CBAM: Convolutional Block Attention Module論文筆記

的特征圖,和經過通道增強的特征圖逐元素相乘即可),輸出最終的結果。計算公式如下:

CBAM: Convolutional Block Attention Module論文筆記
CBAM: Convolutional Block Attention Module論文筆記

分别代表全局最大池化和全局平均池化,

CBAM: Convolutional Block Attention Module論文筆記

分别代表輸入特征圖,經過通道優化的特征圖和經過通道,空間優化的特征圖。 

CBAM: Convolutional Block Attention Module論文筆記

表示逐像素相乘。

通道間注意力子產品:

CBAM: Convolutional Block Attention Module論文筆記

如圖,這是通道間注意力機制的具體操作,主要是全局池化操作,作者說SeNet僅僅采用全局平均池化得到的性能是次有的,是以呀作者采用了全局最大池化和全局平均池化的結合。這兩個池化的輸出都是一個C維向量。然後将這個兩個向量分别輸入同一個多層感覺機 (其實就是全連接配接層,這裡隻有一個隐藏層),将輸出來的結果進行逐元素相加,得到一個C維向量,就是最終的通道間注意力向量,然後用這個向量和特征圖逐通道相乘即可。作者強調了,這個感覺機是被這兩個池化結果共享的,也就是說,實際執行時,是順序執行,先對全局最大池化計算,然後再對全局平均池化計算。計算公式如下:

CBAM: Convolutional Block Attention Module論文筆記
CBAM: Convolutional Block Attention Module論文筆記

表示sigmoid激活函數,

CBAM: Convolutional Block Attention Module論文筆記

分别表示全局平均池化和全局最大池化操作,

CBAM: Convolutional Block Attention Module論文筆記

是全連接配接層的權重,并且使用Relu激活函數對

CBAM: Convolutional Block Attention Module論文筆記

進行處理,

CBAM: Convolutional Block Attention Module論文筆記

是壓縮率,和SeNet中的一樣,壓縮率越大,全連接配接層可學習參數越多,越難優化,同時參數越多,也說明模型的學習能力越強,根據自己的需求選取即可。

空間注意力子產品:

CBAM: Convolutional Block Attention Module論文筆記

上圖是空間注意力機制具體操作,也算是采用兩個池化操作,最大池化和平均池化,要注意的是,這裡是沿着通道這個次元來執行這兩個池化操作的,最大池化就是選取所有特征圖上同一個位置最大的值,作為該位置的最大池化結果,最大平均池化就是選取所有特征圖上同一個位置上所有值的平均值作為該位置的平均池化結果,每個特征圖總共有

CBAM: Convolutional Block Attention Module論文筆記

個值,也就有

CBAM: Convolutional Block Attention Module論文筆記

個位置,得到的結果是兩個

CBAM: Convolutional Block Attention Module論文筆記

的空間注意力矩陣,分别由最大池化和平均池化生成。然後将這兩個注意力矩陣拼接起來,如圖中連在一起的藍色和褐色特征圖,講拼接後的特征圖經過一個

CBAM: Convolutional Block Attention Module論文筆記

卷積操作,輸出一個

CBAM: Convolutional Block Attention Module論文筆記

矩陣作為最終的空間注意力矩陣,沿通道方向廣播後,與特征圖逐元素相乘即可,公式如下:

CBAM: Convolutional Block Attention Module論文筆記
CBAM: Convolutional Block Attention Module論文筆記

表示卷積操作時,卷積核大小為7。

兩個注意力子產品的管理:

作者說兩個子產品可以順序結合,也可以并列結合,但是順序結合效果會好一些,并且是先通道注意力子產品後空間注意力子產品。

實驗結果:

單獨驗證這兩個注意力子產品的性能:

CBAM: Convolutional Block Attention Module論文筆記

 比較不同空間注意力子產品的性能:

CBAM: Convolutional Block Attention Module論文筆記

兩個注意力子產品的結合方式對模型性能的影響: 

CBAM: Convolutional Block Attention Module論文筆記

繼續閱讀