在本文中,作者提出了BoTNet,它结合了自注意来完成包括图像分类、目标检测和实例分割在内的多个计算机视觉任务。通过在ResNet的最后三个瓶颈块中,用全局自注意力替换空间卷积,BoTNet在实例分割和目标检测方面显著改善了baseline的性能,同时减少计算参数和计算时间bobty。
基于深层卷积的主干网络结构(比如ResNet、GoogLeNet等)在图像分类、目标检测、实例分割方面取得了重大进展。大多数主干网络都是基于3×3的卷积。虽然卷积运算可以有效地捕捉局部信息,但目标检测、实例分割、关键点检测等视觉任务需要对远程依赖关系进行建模。
为了能够通过聚合局部交互来获得全局依赖关系,基于卷积的网络结构通常需要堆叠多层。虽然堆叠更多的层确实提高了主干网络的性能,但直接建立一个能够建模全局依赖关系的模型显然是更加方便的,因为它不需要多层卷积的堆叠,只需要一个结构就能进行全局信息的建模。
对远程依赖关系进行建模对于自然语言处理(NLP)任务也很是非常重要的。因此,基于自注意力机制的Transformer首先被应用在NLP领域中,用来学习跨越长序列的丰富关联特征。
为了让CNN主干网络也能具备这样的性质,一种简单的方法是用Transformer中提出的多头自注意(MHSA)层代替CNN中的空间卷积层,如上图所示。这种思路已经在两个不同的方向上进行了实现。
这些方法看似是两类不同的结构,但作者指出事实并非如此。相反,具有MHSA层的ResNet Botteneck块可以看做是具有瓶颈结构和其他微小差异(例如残差连接、归一化层等)的Transformer块。(如上图中间部分所示)。鉴于这种等价性,作者将具有MHSA层的ResNet瓶颈块称为 Bottleneck Transformer(BOT)块。
在视觉中使用自注意力以下有几个挑战:(1)与图像分类(224×224)相比,目标检测和实例分割中的图像大小(1024×1024)要大得多。(2)自注意力的计算量和显存消耗与输入特征的长度呈二次关系,造成了巨大的训练和推理的开销。
为了克服这些挑战,作者考虑了以下设计:(1)使用卷积从大图像中有效地学习抽象和低分辨率的特征图;(2)使用全局自注意(all2all self-attention)对卷积捕获的特征图中包含的信息进行处理和聚合。这种混合结构聚合了CNN和Self-Attention各自的优点,利用卷积进行空间下采样,并将自注意力集中在较小的分辨率上,可以有效地处理大图像。在本文中,作者将这种混合设计实例化为:只将ResNet的最后三个瓶颈块替换为BOT块,而不替换任何其他块改变。
BoTNet的一个关键特征是具有多头自注意(MHSA)层的ResNet瓶颈块,也可以看作是具有瓶颈结构的Transformer块。BoT模块的设计并不是本文的重点,相反,作者在本文中指出了MHSA ResNet瓶颈块与Transformer之间的关系,以提高对计算机视觉中自注意的结构设计的理解。除了将ResNet中的3x3卷积换成Self-Attention,BotNet与Transformer还有一些微小的差异:
DETR是一种检测框架,它使用Transformer隐式地执行区域proposal和目标定位,而不使用R-CNN。DETR和BoTNet都使用自注意来提高目标检测和实例(或全景)分割的性能。
不同之处在于,DETR在主干网络之外使用Transformer块,其motivation是去掉区域proposal和非极大值抑制以实现更简单的目标检测。BoTNet的目标是提供一个主干网络,因此,BoTNet与检测框架(无论是DETR还是R-CNN)是无关的。在本文中,作者基于Mask R-CNN和 Faster R-CNN框架进行了实验。
Non-Local(NL)Net在Transformer和非局部均值算法之间建立了连接,它将NL块插入到ResNet的最后一个或两个块(C4,C5)中,提高了视频识别和实例分割的性能。与NL-Net一样,BoTNet也是一种使用卷积和全局自注意力的混合设计。NL层和本文MHSA层的三个不同之处:
本文的目标是在高性能实例分割模型的中使用注意力机制,这通常会使用更大分辨率(1024×1024)的图像。但是自注意力的计算复杂度和输入的特征长度是呈二次相关的,因此作者在本文中只在最低分辨率的特征图(C5)中用到了自注意力。
ResNet主干网络中的C5通常使用3个块,每个块中具有一个3×3空间卷积。BoTNet中用MHSA层替换了这些3×3空间卷积。C5中第一个3×3空间卷积采用的步长为2,由于all2all attention没有步长这个概念,因此作者在第一个BoT Block之后用了一个2 × 2 average-pooling来进行空间上的降采样。
为了让attention操作能够进行位置感知,基于Transformer的体系结构通常利用位置编码,目前也有工作表明相对距离感知的位置编码更适合于视觉任务。相对位置编码使得attention操作不仅关注到内容信息,而且能够关注到不同位置的特征之间的相对距离,从而能够有效地将跨对象的信息与位置感知相关联。因此在本文中,作者也采用了相对位置编码。
上表显示了两个网络在Mask R-CNN上进行实例分割的结果。可以看出,BoT50需要比较长的训练时间才能显示出比R50的明显性能提升。但是训练时间太长,这个优势又变小了。
为了解决训练时间变长之后,性能优势减小。作者加入了不同程度的multi-scale jitter,可以看出,加入multi-scale jitter之后,性能优势更加明显。
可以看出,加入相对位置编码和绝对位置编码都能提升性能,但是相对位置编码性能提升更大。
为了验证BoT模块在不同网络上的有效性,作者在ResNet50,101,152上都做了实验,发现都有不同程度上的性能提升。
上表结果表明,BoTNet能够促进对R50、R101上较大图像的训练。BoTNet在1024×1024上的训练结果上明显优于ResNet在1280×1280上的训练结果。
上表显示了本文的BoT Block和NL Block的性能对比,可以看出bobty,本文的方法比NL Block在性能上更好。
从上表可以看出,与ImageNet上的R50相比,BoT50没有显著提高性能。作者认为这是因为分类任务中输入的图片分辨率太低,因此C5层中的特征图的信息不足。因此,作者在分类任务中,将用于检测和分割的MHSA中的平均池化模块去掉了,得到了BoTNet-S1,并且参数量没有发生变化。可以看出BoTNet-S1能够进一步提升性能。
上表显示了加入数据增强和更长训练的时间的结果,可以看出BoTNet-S1相比于其他结构依旧具备性能上的优势,并且优势更加明显。
从上图可以看bobty出,BoTNets T7达到了84.7%的准确率,在相似性能下比B7-RA快了1.64倍。
目前Self-Attention和CNN都是深度学习网络中的基础组件,已经有很多的工作结合CNN和Self-Attention来构建建模能力更强、泛化性能更好的主干网络(比如CoATNet)。
在本文中,作者采用了一个非常简单的方式:直接将ResNet C5中的3x3卷积替换成了Self-Attention,来提升模型的性能bobty。本文的重点并不是提出一个全新的网络结构,所以作者在网络上的修改非常简单。相反,作者希望通过本文的分析,促进更多人能够更好的理解网络结构的设计。
Jupyter notebook 实现,慕尼黑工大220页免费书籍介绍基于物理的深度学习
ECML 2021 最佳论文!北大提出基于隐式重参数化MCMC的高效GAN采样算法
KDD 2021 Transformer、知识图谱等热点话题,微软亚洲研究院论文精选速看!