赞
踩
本文的主要工作:
提出GC block并将该模块应用到骨干网络中。而GC block的提出,是由NL block和SE block结合而来。
1)NL block的提出:事实证明,捕获远距离依赖性有益于各种识别任务,而传统的卷积神经网络中,卷积层在局部区域建立像素关系,远距离依赖只能通过堆叠卷积层来进行建模。但是该方法的计算量大且效率低下。为解决该问题,提出了NL block,该方法可以捕获远程依赖关系,并通过注意力机制进行建模。
具体方法:计算查询位置与所有位置的成对关系,形成注意力图将所有位置特征与注意力图加权聚合利用聚合后的特征和每个查询位置的特征得到输出。
在该方法中,特定查询位置的注意力权重反映了该位置对查询位置的重要性。
2)简化NL block: 通过实验发现对于不同查询位置的注意力图几乎相同,说明该注意力图所学习的依赖关系与查询位置无关。基于该发现来简化 NL block。
通过简化后的NL block,可以得出一个三步通用框架:
(1)上下文建模块:形成上下文相关的特征;
(2)特征转换模块:用于捕获通道方式的依赖关系;
(3)融合模块:将全局上下文特征融合到所有位置的特征中。
3)GC block的形成:现有的NL block和SE block 均可视作该框架的两个实例。但这两个实例均不是最优的。通过结合NL block和SE block的最优部分,可以得出效果更好的GC block。
1) 深度架构:通常通过改进原始体系结构,来获得更高的准确率。其中改进基本组件的功能公式是一个主要的方向。
2) 远程依赖性建模:主要有两类方法,一类是通过自注意机制,来模拟两两特征之间的关系;另外一个是对独立于查询的全局上下文进行建模。
设NL block 输入实例的特征图为:
x
=
{
x
i
}
i
=
1
N
p
x=\{{x_{i}}\}^{N_{p}}_{i=1}
x={xi}i=1Np ,其中当输入实例为图像时,
N
p
=
H
∗
W
Np=H*W
Np=H∗W,当输入实例为视频时,
N
p
=
H
∗
W
∗
T
Np=H*W*T
Np=H∗W∗T,NL block 的输出特征图为z。则z和x的关系是:
其中,
i
i
i为查询索引的位置,j为所有可能枚举的位置。而
f
(
x
i
,
x
j
)
f(x_i,x_j)
f(xi,xj)表示位置i与j之间的关系。
C
(
x
)
C(x)
C(x)是归一化因子,
W
z
、
W
v
W_z、W_v
Wz、Wv是线性变换矩阵,
ω
i
j
=
f
(
x
i
,
x
j
)
C
(
x
)
ω_{ij}=\frac{f(x_i, x_j)}{C(x)}
ωij=C(x)f(xi,xj):表示位置i,j之间的标准化成对关系。
而为了满足不同工作的需要,需采用不同的
ω
i
j
ω_{ij}
ωij,
ω
i
j
ω_{ij}
ωij共有以下几种:
1)Gaussian
2)Embeded Gaussian
3)Dot-production
4)Concat
NL block可被视为全局上下文建模块,它将特定于查询的全局上下文特征(通过特定于查询的注意力图从所有位置进行加权平均)聚合到每个查询位置。 由于针对每个查询位置计算了注意力图,因此非本地块的时间和空间复杂度都与位置数Np呈平方关系。
首先,通过可视化不同查询位置上的注意力图,可以发现,对于不同的查询位置,其注意力图大致相同。
另外通过从统计角度验证可知,尽管非本地块打算计算特定于每个查询位置的全局上下文,但是训练后的全局上下文实际上独立于查询位置。 因此,无需为每个查询位置计算特定于查询的全局上下文,从而使我们可以简化非本地块。
首先是对Non-Local的改进。NL模块中其实包含了一个自注意的操作,计算复杂。但是因为基于不同查询位置的注意力图几乎相同,所以选择通过计算全局注意力图并为所有位置共享。直接将HWHW1的不同位置的关系图
f
(
x
i
,
x
j
)
f(x_i,x_j)
f(xi,xj)降为了
H
W
∗
1
∗
1
HW*1*1
HW∗1∗1,所以相应的特征最终的大小也变成了
C
∗
1
∗
1
C*1*1
C∗1∗1。此外,由前人的工作得知,是否含Wz的工作中的结果差异不大,所以省略该参数。则NL block的结构发生了从下图 a到 b 的变化:
z
z
z和
x
x
x的关系则转化为:
进一步将Wv移至注意力层外,则可以进一步减少计算消耗。形成下面的结构:
对应该结构的
z
z
z和
x
x
x的关系为:
对比SE net和SNL 的结构发现,他们都可以抽象为context modeling+transform+fusion三个阶段。由此得出了下面的通用结构:
在SNL中,转换模块具有最大数量的参数,包括使用C·C参数进行的1x1卷积。当将此SNL块添加到更高层时,例如 res5,此1x1卷积的参数数量 C ⋅ C = 2048 ⋅ 2048 C·C = 2048·2048 C⋅C=2048⋅2048,决定了该块的参数数量。 为了获得SE块的轻量级特性,此1x1卷积被瓶颈转换模块代替,该模块将参数数量从 C ⋅ C C·C C⋅C减少到 2 ⋅ C ⋅ C / r 2·C·C / r 2⋅C⋅C/r,其中 r r r是瓶颈比率, C / r C/ r C/r表示瓶颈的隐藏表示维。 通过将默认缩小率设置为 r = 16 r = 16 r=16,可以将转换模块的参数数量减少到原始SNL块的1/8。
由于两层瓶颈变换增加了优化的难度,因此在瓶颈变换内(在ReLU之前)添加了层归一化,以简化优化并充当可有益于通用化的正则化器。层归一化可以显着增强对象检测和对COCO的实例分割。
则最后GC block的结构如下:
GC block公式为:
可以看出相对于原来的NL block,GC block虽然增加了参数量,但是计算量没有明显的增加,同时其准确率也有所提高,所以符合论文中的预期。
最近所看的论文中含有的几种结构:SE block、GE block、GC block和NL block。GE block和GC block都可以视作SE block工作的延伸。
SE 模块的 主要目标是通过显式建模通道间的相互依赖关系来自适应的重新校准通道方式的特征响应,该实验表明根据上下文的全部范围对特征通道进行加权可以改善分类性能。
而GE block可以视作其延伸,该方法重点在于探索将上下文信息纳入深度网络体系结构的机制,并将上下文模块公式化为聚集运算符和激发运算符的组合,并且将SE 模块视为该机制的一种实例,其中聚集运算符是无参数运算(全局平均池),而激发运算符是完全连接的子网。
GC block是NL block和SE block工作的集合优化。在其工作中,首先对NL block的工作进行了简化,然后提出全局上下文建模框架(SE block和NL block都可以视作其实例),最后将SE block中的bottleneck与SNL block结合,得出了GC block。
总的来说,SE block和GCT block更加偏向于通道间关系的建模,而GC block、NL block和GE block则更加偏向于将全局上下文信息融合到通道中来提升性能。
参考:
[1]:https://www.jianshu.com/p/9f952f3108f7
[2]:https://blog.csdn.net/chrisitian666/article/details/107952414
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。