文章地址:https://arxiv.org/abs/2101.11605 本文介绍了BoTNet,这是一个概念简单但功能强大的主干架构,它将自注意力整合到多个计算机视觉任务中,包括图像分类、对象检测和实例分割。通过在ResNet的最后三个瓶颈块中用全局自注意力替换空间卷积,而不做其他更改,本方法在实例分割和对象检测方面显著改进了基线,同时也减少了参数,延迟开销最小。作者还指出了如何将自注意力的ResNet瓶颈块视为转换器块。在没有任何提示的情况下,最后,作者还提出了一种简单的BoTNet网络图像分类设计。
一、文章简介:
左:ResNet瓶颈块,右:瓶颈转换器(BoT)块。唯一的区别是用多头自注意(MHSA)取代了空间3×3卷积层。自我注意层的结构如图4所示。 在视觉中使用自注意力时,有几个挑战: (1)与图像分类(224×224)相比,在目标检测和实例分割中,图像大小要大得多(1024×1024)。(2) 自注意力的记忆和计算与空间维度成二次比例,导致训练和推理的开销。 为了克服这些挑战,作者考虑以下设计: (1)使用卷积有效地从大型图像中学习抽象和低分辨率特征图; (2) 使用全局(all2all)自注意力来处理和聚合卷积捕获的特征图中包含的信息。这种混合设计使用现有的和优化良好的原语义空间进行卷积和所有的自注意力;(2) 通过让卷积进行空间下采样,并让注意力集中在较小的分辨率上,可以有效地处理大型图像。下面是这种混合设计的一个简单实用的实例:仅将ResNet的最后三个瓶颈块替换为BoT块,而不变化任何其他块。或者换句话说,使用ResNet,只使用MHSA层替换最后三个3×3卷积上图。这个简单的更改将COCO实例分割基准上的mask AP提高了1.2%,没有超参数差异,训练和推理的开销最小。这个简单的实例称为BoTNet,因为它通过BoT块连接到转换器。虽然它的构造没有什么新奇之处,但它的简单性和性能使它成为一个有用的参考主干架构,值得研究。
二、文章细节
下图给出了利用自注意力实现的深度学习体系结构的分类。在本节中,将重点介绍:(1)Transformer vs BoTNet;(2) DETR vs BoTNet;(3)Non-Local vs BoTNet。 利用自注意力进行视觉识别的深度学习体系结构分类。作者提出的BoTNet体系结构是一种混合模型,它同时使用卷积和自注意力。自注意力的具体实现类似于Transformer或Non-Local。BoTNet与DETR、VideoBERT、VILBERT、CCNet等架构不同,它在主干架构内使用自注意力,而不是在主干架构外使用它们。作为一种混合模式,BoTNet不同于纯粹的注意力模式,如SASA、LRNet、SANet、SASA和ViT。AA ResNet还试图用自我注意取代部分空间卷积通道。 正如本文的标题所示,本文的一个关键信息是,具有多头自注意力(MHSA)层的ResNet瓶颈块可以被视为具有瓶颈结构的Transformer。下图直观地解释了这一点,作者将此块命名为瓶颈转换器(BoT)。除了图中已经可见的差异(残差连接和块连接)之外,还有一些差异:(1)Normalization:Transformer使用LN,而BoT 使用BN,这在ResNet瓶颈块中是典型的;(2) 非线性:Transformer在FFN块中使用一个非线性函数,而ResNet结构允许BoT块使用三个非线性函数;(3) 输出投影:Transformer中的MHSA块包含输出投影,而BoT块(图1)中的MHSA层(图4)不包含输出投影;(4) 使用SGD和动量优化器(通常用于计算机视觉),而Transformer通常使用Adam优化器]进行训练。
左图:Transformer的标准结构。中间:Transformer的瓶颈视图,其描述了瓶颈变压器(BoT)。Transformer中已经存在的结构可以被解释为具有多头自我注意(MHSA)的ResNet瓶颈块,如图所示。右图:将BOT实例化为ResNet瓶颈块,与标准的ResNet块不同的是,用MHSA替换了3×3卷积。 非局部(NL)网络在Transformer和非局部均值算法之间建立连接。它们将NL块插入到ResNet中最后一个(或)两个块组(c4、c5)中,并提高视频识别和实例分割的性能。与NL网络]一样,BOT网络是一种混合设计,使用卷积和全局自我关注。 (1) NL层和MHSA层之间的三个区别(如下图所示):在MHSA中使用多个头、值投影和位置编码;(2) NL块使用通道因子减少2倍的瓶颈(而不是采用ResNet结构的BoT块中的4); (3) NL块作为附加块插入ResNet主干网,而不是像BoT那样替换现有的卷积块。 BoT块中使用的多头自我注意(MHSA)层。虽然使用4个头,但为了简单起见,就不在图上显示它们。all2all注意力都在2D feature map上执行,高度和宽度的相对位置编码分别为
R
h
R_h
Rh?和
R
w
R_w
Rw?。注意逻辑是
q
k
T
+
q
r
T
q^{kT}+q^{rT}
qkT+qrT,其中q、k、r分别表示查询、键和位置编码(这里使用相对距离编码)。L和N分别表示元素和矩阵乘法,而1×1表示点卷积。除了使用多个头部,高亮显示的蓝色框(位置编码和值投影)是非局部层中不存在的仅有三个元素。 本文的目标是在更真实的高性能实例分割模型设置中使用注意力,通常使用更高分辨率(1024×1024)的图像。考虑到在n个实体中全局执行的自注意力需要
O
(
n
2
d
)
O(n^2d)
O(n2d)内存和计算量,遵守上述因素的最简单设置是在主干中以最低分辨率的特征图(即c5堆栈中的残差块)合并自注意力。ResNet主干中的c5堆栈通常使用3个块,每个块中有一个3×3卷积。用MHSA层取代它们构成了BOT体系结构的基础。c5中的第一个块使用步幅2的3×3卷积,而其他两个块使用步幅1。由于all2all attention并不是一个跨步操作,在第一个BoT块中使用2×2的平均池化,跨步为2。BOT网络架构如下表所示,MHSA层如上图所示。 为了使注意力操作变成位置感知,基于Transformer的架构通常使用位置编码。最近有人观察到,相对距离感知位置编码更适合视觉任务。这可以归因于注意力不仅考虑了内容信息,还考虑了不同位置特征之间的相对距离,因此能够有效地将对象之间的信息与位置感知关联起来。在BOT中,采用了2D相对位置自注意力来实现。
三、实验细节
在1x(12个epochs)、3x(36个epochs)和6x(72个epochs)设置下比较R50和BoT50,使用1024×1024的图像分辨率和[0.8,1.25]的多尺度抖动进行训练。 在三种多尺度抖动设置下比较R50和BoT50,所有人都以1024×1024的图像分辨率进行72个epochs的训练(6倍训练计划)。 相对位置编码的消融实验:从MHSA层中两种类型的交互作用中获得的收益,即内容-内容(
q
k
T
qk^T
qkT)和内容-位置(
q
r
T
qr^T
qrT)。 比较R50、R101、R152、BoT50、BoT101和BoT152;所有6个设置都使用了36个epochs、1024×1024大小的图像、多尺度抖动[0.8,1.25]的标准训练方案。 所有模型都经过72个epochs的训练,多尺度抖动为[0.1,2.0]。 当在1280×1280图像上训练时,对BOT和基线ResNet进行基准测试,而在1024×1024图像上训练时,使用最佳配置:多尺度抖动[0.1,2.0],并训练72个epochs。结果如上。对于R50、R101和R152,BOT网络受益于在更大的图像上进行训练。在1024×1024(1280×1280)上训练的BOT明显优于在1280×1280上训练的基线ResNet。此外,用1280×1280训练的BoT200获得49.7%的APbb和44.4%的APmk。这一结果突出了注意力的能力,尤其是因为它在没有修改FPN和cascade RCNN等任何提示的情况下实现。这一结果超过了之前在COCO minival(44.2%APmk)上评估的ResNeSt中发布的最佳单模型单尺度实例分割结果。 BoTNet and Non-Local (NL)网络之间的比较:所有模型都经过了36个epochs的训练,图像大小为1024×1024,抖动[0.8,1.25]。 NL被插入到ResNet主干网的c4堆栈中,位于最开始的瓶颈块和最终瓶颈块之间。这为模型添加了更多参数,而BOT网络最终减少了模型参数。在NL中,以与NL块完全相同的方式在引入BoT块的地方添加。插入两个BOT模块,分别在c4和c5堆栈中。结果如上。添加一个NL会使APbb提高1.0,APbb提高0.7,而添加一个BoT块会使APbb提高+1.6,APmk提高+1.2,这表明BoT块的设计优于NL。此外,BoT-R50(替换而不是添加新块)提供+1.5 APbb和+1.2 APmk,与添加另一个BoT块一样好,并且比添加一个额外的NL块更好。
在图像分类中,与用于目标检测和分割的图像(1024×1024)相比,我们通常处理更小的图像大小(224×224)。因此,与实例分割和检测(例如64×64、32×32)中的特征图相比,BOT块操作的特征图要小得多(例如14×14、7×7)。使用相同数量的参数,并且在不显著增加计算的情况下,c5区块组中的BOT网络设计可以更改为在所有最终MHSA层中统一使用1的跨距。将这种设计称为BOTS1(S1用于描述最后一个区块组中的步幅1)。该体系结构在设计上与Vision Transformer(ViT)中探讨的混合模型类似,后者在堆叠Transformer块之前使用一个ResNet,直至c4级。BoTNet-S1和混合ViT模型之间的主要区别在于使用BoT块,而不是常规的Transformer块(其他区别包括规范化层、优化器等,如相关工作中提到的Transformer对比(第2节)。在最后一个区块组中,ResNet、BoTNet和BoTNet-S1之间的架构区别在附录中进行了直观解释)。附录中直观地解释了步态BPT块。 作者首先评估了这个设计,以及R50和BoT50,它训练了100epochs。在常规设置下,BoT-S1-50比R50提高了0.9%。然而,这种改进是以更多计算为代价的(m.adds)。然而,这种改进是一个很有希望的信号,可以设计出具有更大图像的模型,以及自EfficientNets以来更常用的改进训练条件。
|