【论文阅读笔记】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得到一个的向量;(2)通过一维卷积1D-Conv来完成跨channel间的信息交互。
一维卷积的卷积核大小通过一个函数来自适应,使得channel数较大的层可以更多地进行cross channel 交互。自适应卷积核大小的计算公式为:,其中。
论文内容
作者表示,最近基于SE-Net的扩展,大多都只致力于开发复杂的attention模型,以得到更好的性能,这不可避免的增加了模型复杂度。而本文的方法ECA-Net只涉及少数的参数,可以达到两个目的:(1)避免特征维度的缩减;(2)增加channel间信息的交互,在降低复杂度的同时保持性能(通过一维卷积)。
SE block的结构由两部分组成:(1)global avg pooling产生大小的feature maps;(2)两个fc层(中间有维度缩减)来产生每个channel的weight。
ECA-Net的结构如下图所示:(1)global avg pooling产生大小的feature maps;(2)计算得到自适应的kernel_size;(3)应用kernel_size于一维卷积中,得到每个channel的weight。
消融学习实验
作者对SE-Net的扩展尝试如下图所示:【前提知识为平均池化层的输出】,有SE-Var1(直接对y进行非线性运算),SE-Var2(对y进行depth-wise卷积运算,即一个channel一个参数),SE-Var3(对y直接进行一个全连接运算),SE-GC(对y进行分组卷积运算),ECA-NS(每个channel使用k个参数进行channel之间的交互),ECA(共享k个参数,进行channel之间的交互,即一维卷积)。
- SE-Var1与Vanilla的结果表明,不添加参数的attention都是有效的;
- SE-Var2与SE的结果表明,尽管SE-Var2的参数较少,但SE-Var2的效果仍比原始的SE要好,这表明了维持通道数的重要性。这个重要性比考虑channel之间的信息交互依赖的非线性还要重要;
- SE-Var3与SE的结果表明,SE-Var3只是用一个FC都比带维度缩减的两个FC层的SE要好;
- SE-Var3与SE-Var2的结果表明,跨channel的信息交互对于学习channel attention的重要性;
- Group Conv的使用是SE-Var3和SE-Var2的一个折中方法,但使用了Group Conv并没有SE-Var2的效果好;这可能是由于Group Conv放弃了不同Group之间的依赖,因而导致了错误的信息交互;
- ECA-NS对于每个channel都有k个参数,这样可以避免不同Group之间的信息隔离问题,从结果来说是可以的;
- ECA使用共享权重,结果表明了该方法的可行性;同时,共享权重可以减少模型参数;
自适应kernel_size
作者放弃了使用线性方法来得到kernel_size,认为这样太过于局限了。由于channel数一般都是2的指数,所以有了如下公式:
其中, 的意思为选择最近的奇数;