文章目錄
主要工作
提出了一種具有注意力機制的前饋卷積神經網絡——Convolutional Block Attention Module(CBAM)
method
注意力機制是人類視覺所特有的大腦信號處理機制。人類視覺通過快速掃描全局圖像,獲得需要重點關注的目標區域,也就是一般所說的注意力焦點,而後對這一區域投入更多注意力資源,以獲取更多所需要關注目標的細節信息,而抑制其他無用信息[摘自深度學習中的注意力機制],作者希望CNN也能獲得此類能力,實際上,通過grad-CAM對CNN可視化,優秀的網絡結構往往能正確定位圖中目標所在區域,也即優秀的網絡本身就具有注意力機制,作者希望通過強化這一概念,讓網絡性能更加優異,並且對於噪聲輸入更加健壯
CNN的卷積操作從channel與spatial兩個維度提取特徵,因此,論文從channel與spatial兩個維度提取具有意義的注意力特徵,motivation如下:
- 由於每個feature map相當於捕獲了原圖中的某一個特徵,channel attention有助於篩選出有意義的特徵,即告訴CNN原圖哪一部分特徵具有意義(what)
- 由於feature map中一個像素代表原圖中某個區域的某種特徵,spatial attention相當於告訴網絡應該注意原圖中哪個區域的特徵(where)
CBAM將某一層的特徵圖抽取出來,接着進行channel attention與spatial attention的提取後,與原特徵圖進行結合作爲下一層卷積層的輸入,具體流程如下:
channel attention module
總體流程如下:
對輸入的特徵圖使用全局平均池化與全局最大池化,分別輸入到MLP中,將結果進行element-wise add,經過激活函數後輸出channel attention module,如下:
表示sigmoid激活函數,設的大小爲,爲的矩陣,爲的矩陣,大小爲,即的channel個數。
spatial attention module
總體流程如下:
沿着通道方向對特徵圖施加全局平均池化與全局最大池化,將的特徵圖轉變爲的特徵圖,什麼是通道方向的全局池化呢?若特徵圖的大小爲,則池化層的大小爲,即可得到的特徵圖。的特徵圖後接一個7卷積層,卷積大小通過實驗後確定爲7*7,得到的特徵圖,經過激活函數後輸出spatial attention module,如下:
如何結合spatial attention module與channel attention module
對原圖施加channel attention module,即在通道方向將channel attention module廣播爲大小的特徵圖後,與原特徵圖進行element-wise multiplication。
對原圖施加spatial attention module,即將的spatial attention module與大小的原特徵圖集合中的每一張特徵圖進行element-wise multiplication。
我們有三個策略:
- 先對原特徵圖施加channel attention module 後 spatial attention module
- 先對原特徵圖施加spatial attention module 後 channel attention module
- 分別對原特徵圖施加spatial attention module 與 channel attention module,將兩者進行element-wise add後用sigmoid函數激活後輸出
經過試驗,發現第一個策略效果最佳,試驗結果如下:
策略一的圖示如下,無需改變原神經網絡原有的參數(由於Input Feature與Refined Feature大小一致)
數學表示
實驗
數值上看,提升不大,個人認爲無注意力機制的網絡本身具有較好的focus目標的能力,因此從分類準確率上看不太出區別,但是使用grad-CAM可視化後,區別就出來了,如下:
顏色越深,表示神經網絡越注意該區域,可以看到,含有注意力機制的網絡注意到的目標相關區域更廣,並且softmax輸出的值也更大,這些特性是無法從分類準確率看出來的。