天天看點

【論文閱讀筆記】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

論文位址:ECA-Net

論文代碼:https://github.com/BangguWu/ECANet

論文總結

  ECA-Net是基于SE-Net的擴充,其認為SE block的兩個FC層之間的次元縮減是不利于channel attention的權重學習的,這個權重學習的過程應該直接一一對應。作者做了一系列實驗來證明在attention block中保持channel數不變的重要性。

  ECA-Net的做法為:(1)Global Avg Pooling得到一個 1 ∗ 1 ∗ C 1*1*C 1∗1∗C的向量;(2)通過一維卷積1D-Conv來完成跨channel間的資訊互動。

  一維卷積的卷積核大小通過一個函數來自适應,使得channel數較大的層可以更多地進行cross channel 互動。自适應卷積核大小的計算公式為: k = ψ ( C ) = ∣ log ⁡ 2 ( C ) γ + b γ ∣ k=\psi(C)=|\frac{\log_2(C)}{\gamma}+\frac {b}{\gamma}| k=ψ(C)=∣γlog2​(C)​+γb​∣,其中 γ = 2 , b = 1 \gamma=2,b=1 γ=2,b=1。

論文内容

  作者表示,最近基于SE-Net的擴充,大多都隻緻力于開發複雜的attention模型,以得到更好的性能,這不可避免的增加了模型複雜度。而本文的方法ECA-Net隻涉及少數的參數,可以達到兩個目的:(1)避免特征次元的縮減;(2)增加channel間資訊的互動,在降低複雜度的同時保持性能(通過一維卷積)。

  SE block的結構由兩部分組成:(1)global avg pooling産生 1 ∗ 1 ∗ C 1*1*C 1∗1∗C大小的feature maps;(2)兩個fc層(中間有次元縮減)來産生每個channel的weight。

  

ECA-Net

的結構如下圖所示:(1)global avg pooling産生 1 ∗ 1 ∗ C 1*1*C 1∗1∗C大小的feature maps;(2)計算得到自适應的kernel_size;(3)應用kernel_size于一維卷積中,得到每個channel的weight。

【論文閱讀筆記】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
消融學習實驗

  作者對SE-Net的擴充嘗試如下圖所示:【前提知識 y y y為平均池化層的輸出】,有SE-Var1(直接對y進行非線性運算),SE-Var2(對y進行depth-wise卷積運算,即一個channel一個參數),SE-Var3(對y直接進行一個全連接配接運算),SE-GC(對y進行分組卷積運算),ECA-NS(每個channel使用k個參數進行channel之間的互動),ECA(共享k個參數,進行channel之間的互動,即一維卷積)。

【論文閱讀筆記】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

  由上圖可以得出以下結論:

  1. SE-Var1與Vanilla的結果表明,不添加參數的attention都是有效的;
  2. SE-Var2與SE的結果表明,盡管SE-Var2的參數較少,但SE-Var2的效果仍比原始的SE要好,這表明了維持通道數的重要性。這個重要性比考慮channel之間的資訊互動依賴的非線性還要重要;
  3. SE-Var3與SE的結果表明,SE-Var3隻是用一個FC都比帶次元縮減的兩個FC層的SE要好;
  4. SE-Var3與SE-Var2的結果表明,跨channel的資訊互動對于學習channel attention的重要性;
  5. Group Conv的使用是SE-Var3和SE-Var2的一個折中方法,但使用了Group Conv并沒有SE-Var2的效果好;這可能是由于Group Conv放棄了不同Group之間的依賴,因而導緻了錯誤的資訊互動;
  6. ECA-NS對于每個channel都有k個參數,這樣可以避免不同Group之間的資訊隔離問題,從結果來說是可以的;
  7. ECA使用共享權重,結果表明了該方法的可行性;同時,共享權重可以減少模型參數;
自适應kernel_size

  作者放棄了使用線性方法來得到kernel_size,認為這樣太過于局限了。由于channel數一般都是2的指數,是以有了如下公式:

【論文閱讀筆記】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
【論文閱讀筆記】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

  其中, ∣ x ∣ o d d |x|_{odd} ∣x∣odd​ 的意思為選擇最近的奇數; γ = 2 , b = 1 \gamma=2,b=1 γ=2,b=1

實驗結果

和其他的SE-Net擴充的性能對比展示:
【論文閱讀筆記】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
和其他的SE-Net擴充的結構對比展示:
【論文閱讀筆記】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
ECA-Net應用于各種架構的性能展示:
【論文閱讀筆記】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
【論文閱讀筆記】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
【論文閱讀筆記】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
kernel_size的手動選擇實驗
【論文閱讀筆記】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks
ECA-Net的性能展示
【論文閱讀筆記】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks

繼續閱讀