【论文阅读笔记】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 11C的向量;(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 11C大小的feature maps;(2)两个fc层(中间有维度缩减)来产生每个channel的weight。
  ECA-Net的结构如下图所示:(1)global avg pooling产生 1 ∗ 1 ∗ C 1*1*C 11C大小的feature maps;(2)计算得到自适应的kernel_size;(3)应用kernel_size于一维卷积中,得到每个channel的weight。

【论文阅读笔记】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks_第1张图片
消融学习实验

  作者对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_第2张图片

  由上图可以得出以下结论:

  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的指数,所以有了如下公式:

  其中, ∣ x ∣ o d d |x|_{odd} xodd 的意思为选择最近的奇数; γ = 2 , b = 1 \gamma=2,b=1 γ=2,b=1

实验结果

和其他的SE-Net扩展的性能对比展示:
【论文阅读笔记】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks_第3张图片
和其他的SE-Net扩展的结构对比展示:
【论文阅读笔记】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks_第4张图片
ECA-Net应用于各种框架的性能展示:
【论文阅读笔记】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks_第5张图片
【论文阅读笔记】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks_第6张图片
【论文阅读笔记】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks_第7张图片
kernel_size的手动选择实验
【论文阅读笔记】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks_第8张图片
ECA-Net的性能展示
【论文阅读笔记】ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks_第9张图片

你可能感兴趣的:(深度学习,论文,读书笔记)