文章目录
ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks(2020)
注意力模块比较
纵坐标为准确性,横坐标为模型参数量(复杂度)。
ECA模块
Avoiding Dimensionality Reduction(避免维度减少)
SE-Net
SE模块的通道注意力通过下式计算:
ω
=
σ
(
f
{
W
1
,
W
2
}
(
g
(
χ
)
)
)
\omega = \sigma(f_{\{W_1,W_2\}}(g(\chi)))
ω=σ(f{W1,W2}(g(χ))),
其中,
g
(
χ
)
=
1
W
H
∑
i
=
1
,
j
=
1
W
,
H
χ
i
j
g(\chi) = \frac{1}{WH}\sum^{W,H}_{i=1,j=1}\chi_{ij}
g(χ)=WH1∑i=1,j=1W,Hχij为全局平均池化函数,
σ
\sigma
σ为Sigmoid函数。
在SE-Net中,通道注意力模块通过公式(2)进行降维(简单来说,就是SE-Net模块中的全连接层),这样让通道和权值之间没有直接联系。下表中的SE-Var1(无参数)、SE-Var2(独立学习各通道的权重)、SE-Var3(采用一个FC)均为不降维的变形,表中结果清楚的表明,避免降维的作用。
Local Cross-Channel Interaction(局部跨通道交互)
对于SE-Var2、SE-Var3,权重式:
两者之间区别在于,SE-Var3考虑了不同通道之间的交互,SE-Var2则没有;但是SE-Var3的需要大量参数,这样复杂性较高。
SE-Var2+SE-Var3
→
\to
→块对角矩阵。
每个组包括
C
G
\frac{C}{G}
GC个通道,有
C
2
G
\frac{C^2}{G}
GC2个参数。然而,由上表可以看出,这样做并没有给SE-Var2带来增益,表明它不能捕获局部通道之间的相互作用,而且过多的组卷及将层架内存访问成本,从而降低计算效率。
ECA-Net中利用矩阵如下
W
k
W_k
Wk,来学习通道注意力:
W
k
W_k
Wk由
k
∗
C
k*C
k∗C个参数,小于
W
G
W_G
WG,
W
k
W_k
Wk避免了不同通道之间完全独立,考虑到了不同通道之间的相互作用。
所以,如上式仅考虑
y
i
y_i
yi和它的紧邻的通道之间的相互作用而计算
y
i
y_i
yi的权重。
加:一种更有效地方式,通过共享相同的学习参数,通过内核大小为k的快速1维卷积来实现(一维卷积和
1
×
1
1\times1
1×1卷积是不同的,一维指的是
1
×
k
1\times k
1×k的卷积)
如上表,k=3的ECA模块和SE-Var3取得了相似的结果,而且具有更低的模型复杂度。
Coverage of Local Cross-Channel Interaction(局部跨通道交互覆盖)
ECA模块的k如何取值?
通过交叉验证进行手动调整不仅仅会很慢,而且消耗大量计算资源浪费。
ECA-Net采用Group convolutions。分组卷积用于改进CNN架构,其中高维(低维)信道在固定分组数量的情况下包括长(短)卷积。换句话说,就是通道维度
C
C
C和卷积核大小
k
k
k成比例。采用非线性函数,而且卷积核数量设为2的
k
k
k次方(因为通常通道尺寸是2)。公式如下:
卷积尺寸:
∣
t
∣
o
d
d
\lvert t\rvert_{odd}
∣t∣odd表示距离
t
t
t最近的奇数,ECA-Net中
γ
\gamma
γ和KaTeX parse error: Undefined control sequence: \b at position 1: \̲b̲分别取2和1.
实验结果
上图,网络参数(Param)、每秒浮点运算(FLOPS)、训练/参考速度(FPS)、top-1/top-5准确率。
实验结果
k值的影响如下图,ResNet-50和ResNet-101为主干,对照SENet。可以看出,ECA-Net相较于SENet,准确率有了极大的提升。
与不同的CNN对比
总结
ECA-Net提出了一种高效的相关性通道(ECA)模块。模块通过非线性自适应确定的一维卷积组成。ECA是一种非常轻量级的即插即用块,可以调高各种CNN的性能。