赞
踩
论文地址: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。
作者对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之间的交互,即一维卷积)。
由上图可以得出以下结论:
作者放弃了使用线性方法来得到kernel_size,认为这样太过于局限了。由于channel数一般都是2的指数,所以有了如下公式:
其中, ∣ x ∣ o d d |x|_{odd} ∣x∣odd 的意思为选择最近的奇数; γ = 2 , b = 1 \gamma=2,b=1 γ=2,b=1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。