注意力機制BAM和CBAM詳細解析(附代碼)

點擊上方「計算機視覺cv」便可「進入公衆號」
node

重磅乾貨第一時間送達git

  • 論文題目①:BAM: Bottleneck Attention Module
  • 論文題目②:CBAM:CBAM: Convolutional Block Attention Module

Bottlenet attention Module(BAM)

依據

人看東西時不可能把注意力放在全部的圖像上,會把焦點目光彙集在圖像的重要物體上。所以,做者提出了BAM注意力機制,仿照人的眼睛聚焦在圖像幾個重要的點上。github

BAM介紹

在這項工做中,咱們把重心放在了Attention對於通常深度神經網絡的影響上,咱們提出了一個簡單可是有效的Attention模型—BAM,它能夠結合到任何前向傳播卷積神經網絡中,咱們的模型經過兩個分離的路徑 channel和spatial, 獲得一個Attention Map。web

BAM具體結構

對於給定的feature map ,BAM能夠獲得一個3D的Attention map ,計算refine feature map F' ,其中是逐元素相乘。微信

網絡

其中, 是通道注意力; 是空間注意力。架構

channel attention branch

其中app

spatial attention branch

其中,f是卷積操做,1* 1表示filter size爲1,其它相似。BN是batch normalization;3* 3是dilated convolution,即空洞卷積。編輯器

兩種attention的結合方式

由一系列的實驗可得,element-wise summation即逐元素相加perform是最好的。最後再經過sigmoid函數。具體能夠參照下圖:svg

Convolutional Block Attention Module(CBAM)

簡介

做者提出了一個簡單但有效的注意力模塊 CBAM,給定一箇中間特徵圖,咱們沿着空間和通道兩個維度依次推斷出注意力權重,而後與原特徵圖相乘來對特徵進行自適應調整。因爲 CBAM 是一個輕量級的通用模塊,它能夠無縫地集成到任何 CNN 架構中,額外開銷忽略不計,而且能夠與基本 CNN 一塊兒進行端到端的訓練。在不一樣的分類和檢測數據集上,將 CBAM 集成到不一樣的模型中後,模型的表現都有了一致的提高,展現了其普遍的可應用性。

CBAM整體視圖

CBAM結構介紹

做者將注意力過程分爲兩個獨立的部分,通道注意力模塊和空間注意力模塊。這樣不只能夠節約參數和計算力,並且保證了其能夠做爲即插即用的模塊集成到現有的網絡架構中去。

通道注意力模塊

特徵的每個通道都表明着一個專門的檢測器,所以,通道注意力是關注什麼樣的特徵是有意義的。爲了彙總空間特徵,做者採用了全局平均池化和最大池化兩種方式來分別利用不一樣的信息。


輸入是一個 H×W×C 的特徵 F,咱們先分別進行一個空間的全局平均池化和最大池化獲得兩個 1×1×C 的通道描述。接着,再將它們分別送入一個兩層的神經網絡,第一層神經元個數爲 C/r,激活函數爲 Relu,第二層神經元個數爲 C。這個兩層的神經網絡是共享的。而後,再將獲得的兩個特徵相加後通過一個 Sigmoid 激活函數獲得權重係數 Mc。最後,拿權重係數和原來的特徵 F 相乘便可獲得縮放後的新特徵。

空間注意力模塊

在通道注意力模塊以後,咱們再引入空間注意力模塊來關注哪裏的特徵是有意義的。

與通道注意力類似,給定一個 H×W×C 的特徵 F‘,咱們先分別進行一個通道維度的平均池化和最大池化獲得兩個 H×W×1 的通道描述,並將這兩個描述按照通道拼接在一塊兒。而後,通過一個 7×7 的卷積層,激活函數爲 Sigmoid,獲得權重係數 Ms。最後,拿權重係數和特徵 F’ 相乘便可獲得縮放後的新特徵。

兩個注意力通道組合形式

通道注意力和空間注意力這兩個模塊能夠以並行或者順序的方式組合在一塊兒,可是做者發現順序組合而且將通道注意力放在前面能夠取得更好的效果。

實驗結果

CBAM與ResNet網絡結構組合

CBAM可視化

利用 Grad-CAM 對不一樣的網絡進行可視化後,能夠發現,引入 CBAM 後,特徵覆蓋到了待識別物體的更多部位,而且最終判別物體的機率也更高,這代表注意力機制的確讓網絡學會了關注重點信息。

BAM在目標檢測

結論(CBAM和BAM)

由上述及論文更多實驗結果代表,不論是引入BAM仍是引入CBAM都能提升目標檢測和物體分類的精度,所以能夠在神經網絡中引入這一機制,並且花費的計算開銷和參數大小都比較少。

代碼解析及開源地址

https://github.com/Jongchan/attention-module

可對照着代碼看注意力機制的詳細過程,會有一個更好的理解。


AI研究學術交流羣已成立啦!


掃碼可添加博主微信,微信羣有國際頂級Top期刊做者、高等學府博士生、碩士生等多位學者,本羣致力於純學術探討,方向不限(一個好的學者一定是交叉學科下的產物)。想要進羣一塊兒學習探討的童鞋能夠加博主微信,備註學術交流、你也能夠選擇技術交流


▲掃碼加羣

本文分享自微信公衆號 - 計算機視覺CV(jsjsjcv)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索