ICML2021|超越SE、CBAM,中山大学开源SAM:无参Attention!
本文首發于極市平臺,作者: @Happy ,轉載須經授權并注明來源
code: https://github.com/ZjjConan/SimAM
本文是中山大學在注意力機制方面的嘗試,從神經科學理論出發,構建了一種能量函數挖掘神經元重要性,并對此推導出了解析解以加速計算。通過ImageNet分類、COCO檢測與分割等任務驗證了所提SimAM的靈活性與有效性。值得一提的是,所提SimAM是一種無參數注意力模塊。
Abstract
本文提出一種概念簡單且非常有效的注意力模塊。不同于現有的通道/空域注意力模塊,該模塊無需額外參數為特征圖推導出3D注意力權值。具體來說,本文基于著名的神經科學理論提出優化能量函數以挖掘神經元的重要性。本文進一步針對該能量函數推導出一種快速解析解并表明:該解析解僅需不超過10行代碼即可實現。該模塊的另一個優勢在于:大部分操作均基于所定義的能量函數選擇,避免了過多的結構調整。最后,本文在不同的任務上對所提注意力模塊的有效性、靈活性進行驗證。
本文主要貢獻包含以下幾點:
- 受啟發于人腦注意力機制,本文提出一種3D注意力模塊并設計了一種能量函數用于計算注意力權值;
- 本文推導出了能量函數的解析解加速了注意力權值的計算并得到了一種輕量型注意力模塊;
- 將所提注意力嵌入到現有ConvNet中在不同任務上進行了靈活性與有效性的驗證。
Method
在正式介紹本文所提注意力模塊之前,我們先對現有代表性注意力模塊(比如SE、CBAM、GC)進行簡要總結;然后,我們再引出本文所提完全不同架構的注意力模塊。
Overview of Existing Attention Modules
上圖a與b列出了現有兩種類型的注意力模塊:
- 通道注意力:1D注意力,它對不同通道區別對待,對所有位置同等對待;
- 空域注意力:2D注意力,它對不同位置區別對待,對所有通道同等對待。
以下圖為例,SE缺失了關于"grey_whale"的某些重要成分。我們認為3D注意力比1D和2D更佳,進而提出了上圖c的3D注意力模塊。
現有注意力模塊的另一個重要影響因素:權值生成方法。現有注意力往往采用額外的子網絡生成注意力權值,比如SE的GAP+FC+ReLU+FC+Sigmoid。更多注意力模塊的操作、參數量可參考下表。總而言之,現有注意力的結構設計需要大量的工程性實驗。我們認為:注意力機制的實現應當通過神經科學中的某些統一原則引導設計。
Our Attention Module
已有研究BAM、CBAM分別將空域注意力與通道注意力進行并行或串行組合。然而,人腦的兩種注意力往往是協同工作,因此,我們提出了統一權值的注意力模塊。
為更好的實現注意力,我們需要評估每個神經元的重要性。在神經科學中,信息豐富的神經元通常表現出與周圍神經元不同的放電模式。而且,激活神經元通常會抑制周圍神經元,即空域抑制。換句話說,具有空域抑制效應的神經元應當賦予更高的重要性。最簡單的尋找重要神經元的方法:度量神經元之間的線性可分性。因此,我們定義了如下能量函數:
et(wt,bt,y,xi)=(yt?t^)2+1M?1∑i=1M?1(yo?xi^)2e_t(w_t, b_t, y, x_i) = (y_t - \hat{t})^2 + \frac{1}{M-1}\sum_{i=1}^{M-1}(y_o - \hat{x_i})^2 et?(wt?,bt?,y,xi?)=(yt??t^)2+M?11?i=1∑M?1?(yo??xi?^?)2
其中,t^=wtt+bt,xi^=wtxi+bt\hat{t} = w_t t + b_t, \hat{x_i} = w_t x_i + b_tt^=wt?t+bt?,xi?^?=wt?xi?+bt?。最小化上述公式等價于訓練同一通道內神經元t與其他神經元之間的線性可分性。為簡單起見,我們采用二值標簽,并添加正則項,最終的能量函數定義如下:
et(wt,bt,y,xi)=1M?1∑i=1M?1(?1?(wtxi+bt))2+(1?(wtt+bt))2+λwt2e_t(w_t, b_t, y, x_i) = \frac{1}{M-1} \sum_{i=1}^{M-1}(-1-(w_t x_i+b_t))^2 + (1-(w_t t + b_t))^2 + \lambda w_t^2 et?(wt?,bt?,y,xi?)=M?11?i=1∑M?1?(?1?(wt?xi?+bt?))2+(1?(wt?t+bt?))2+λwt2?
理論上,每個通道有M=H×WM=H \times WM=H×W個能量函數。幸運的是,上述公式具有如下解析解:
wt=?2(t?ut)(t?ut)2+2σt2+2λbt=?12(t+ut)wtw_t = -\frac{2(t-u_t)}{(t-u_t)^2 + 2\sigma_t^2 + 2\lambda} \\ b_t = -\frac{1}{2}(t+u_t) w_t wt?=?(t?ut?)2+2σt2?+2λ2(t?ut?)?bt?=?21?(t+ut?)wt?
其中,ut=1M?1∑i=1M?1xi,σt2=1M?1∑i=1M?1(xi?ut)2u_t = \frac{1}{M-1}\sum_{i=1}^{M-1} x_i, \sigma_t^2 = \frac{1}{M-1} \sum_{i=1}^{M-1}(x_i - u_t)^2ut?=M?11?∑i=1M?1?xi?,σt2?=M?11?∑i=1M?1?(xi??ut?)2。因此,最小能量可以通過如下公式得到:
et?=4(σ2^+λ)(t?u^)2+2σ^2+2λe^{*}_t = \frac{4(\hat{\sigma^2} + \lambda)}{(t-\hat{u})^2 + 2\hat{\sigma}^2 + 2\lambda} et??=(t?u^)2+2σ^2+2λ4(σ2^+λ)?
上述公式意味著:能量越低,神經元t與周圍神經元的區別越大,重要性越高。因此,神經元的重要性可以通過1/et?1/e^{*}_t1/et??得到。
到目前為止,我們推導了能量函數并挖掘了神經元的重要性。按照注意力機制的定義,我們需要對特征進行增強處理:
X~=sigmoid(1E)⊙X\tilde{X} = sigmoid(\frac{1}{E}) \odot X X~=sigmoid(E1?)⊙X
下圖給出了SimAM的pytorch風格實現code。
Experiments
上表給出了Cifar數據集上的性能對比,從中可以看到:
- 相比其他注意力機制,所提SimAM取得了最佳性能;
- 在小網絡方面,PreResNet56在CIFAR10數據集上取得了最佳性能(92.47/69.13),顯著優于其他注意力;
- 在大網絡方面,所提SimAM同樣優于SE與CBAM等注意力機制;
- 上述實驗結果均表明:所提無參注意力SimAM是一種通用注意力機制,并不局限于特定網絡。
上表給出了ImageNet數據集上不同注意力機制的性能對比,從中可以看到:
- 所有注意力模塊均可以提升基線模型的性能;
- 所提SimAM在ResNet18與ResNet101基線上取得了最佳性能提升;
- 對于ResNet34、ResNet50、ResNeXt50、MobileNetV2,所提SimAM仍可取得與其他注意力相當性能;
- 值得一提的是,所提SimAM并不會引入額外的參數;
- 在推理速度方面,所提SimAM與SE、ECA相當,優于CBAM、SRM。
上圖對比了不同λ\lambdaλ的性能對比,從中可以看到:
- 所提注意力機制對于超參非常魯棒;
- λ=0.0001\lambda=0.0001λ=0.0001時取得了最佳的性能均衡。
上圖采用Grad-CAM對所提SimAM進行了可視化,可以看到:經由SimAM提煉的特征可以更好的聚焦主體目標。
上表對比了COCO檢測、分割任務上的性能,可以看到:
- SE與SimAM均可大幅提升基線模型的性能;
- 對于檢測任務,兩種注意力模塊取得了非常相似的性能;
- 對于實例分割任務,所提SimAM取得了稍優性能。
- 值得一提,SimAM不會引入額外參數量,而SE則會引入額外的參數量。比如,SE-ResNet50引入了2.5M參數量,SE-ResNet101引入了4.7M參數量。
總結
以上是生活随笔為你收集整理的ICML2021|超越SE、CBAM,中山大学开源SAM:无参Attention!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 100万+奖金池!目标检测、车牌识别、人
- 下一篇: 还在魔改Transformer结构吗?微