卷積塊注意模組 CBAM: Convolutional Block Attention Module

ai52learn發表於2020-12-05

簡介

本文利用attention機制,使得針對網路有了更好的特徵表示,這種結構通過支路學習到通道間關係的權重和畫素間關係的權重,然後乘回到原特徵圖,使得特徵圖可以更好的表示。

Convolutional Block Attention Module

這裡的結構有點類似與SENet裡的支路結構。

對於Channel attention module,先將原feature map分別做global avg pooling 和global max pooling,然後將兩pooling後的向量分別連線一個FC層,之後point-wise相加。啟用。

這裡用global pooling的作用是捕捉全域性特徵,因為得到的權重描述的是通道間的關係,所以必須要全域性特徵才能學習到這種關係。

之所以avg pooling和max pooling一起用,是因為作者發現max pooling能夠捕捉特徵差異,avg pooling能捕捉一般資訊,兩者一起用的效果要比單獨用的實驗結果要好,。

結構如圖:

對於Spatial attention module,作者使用了1×1的pooling,與上面一樣,使用的是1×1的avg pooling和1×1的max pooling,而沒有用1×1卷積,兩者concat,緊接著是一層7×7卷積,然後啟用。最後輸出就是1×h×w。

結構如圖:

作者提到了兩者的順序,先做channel attention比先做spatial attention要好很多。

後面作者實驗了spatial attention module裡1×1conv、1×1pooling的效果,最後發現pooing的效果要比卷積的效果要好,因此上面的結構採用的是pooling而不是卷積結構。

後面就是一些結構了。

獲取程式碼

相關文章