[Transformer]BoTNet:Bottleneck Transformers for Visual Recognition

from UC berkerly ,Google
Paper

Abstract

本文提出的BoTNet是一种简单高效的网络,有效的将SA应用到多种视觉任务,如图像识别、目标检测、实例分割任务。通过将ResNet50中最后三个bottleneck模块的空间卷积替换为全局的SA操作,有效提升了基线模型在签署任务上的性能。

Section I

常用的CNN大多采用3x3的卷积核,鉴于卷积操作可以有效的不糊哦局部信息,但是对于一些视觉任务如目标检测、实例分割、关键点检测还需要建立长程依赖关系。比如实例分割中需要收集场景相关的信息才能学习物体之间的关系;那么为了吧局部信息聚合就需要堆叠多个卷积层。但基于non-local操作可以更有效,也不需要堆叠那么多层。
而建模长程依赖对NLP任务也十分重要,Self-Attention可以有效学习每一对实体之间的关联,基于SA组成的Transformer已经成为NLP的主流,如GPT和BERT。




在这里插入图片描述

SA应用于视觉的一种简便方法及时将卷积层替换为MHSA层,参见Fig 1。按照这种思路有两种改进方向,一是将Resnet中的卷积层替换为各种SA操作,比如SASA,AACN,SANet;二是将图像切分成互补重叠的patch然后送入堆叠的Transformer模块。



在这里插入图片描述

虽然看起来是两种不同类型的体系结构,但是事实并非如此。本文提出ResNet 模块中使用MHSA层可以看做是一种带有瓶颈结构的Transformer模块,只不过有细微的变化比如残差连接、归一化层的选择上。因此本文将带有MHSA层的ResNet模块称之为BoT模块,具体结构参见Fig3.
将注意力应用到视觉领域有以下挑战:
(1)图像一般比用于分类的图像更大,分类一般(224,224)就够了,用于目标检测和实例分割的图像分辨率更高。

(2)SA的计算是输入分辨率的平方项,因此对内存和算力有要求

为了克服以上挑战本文进行以下设计:

(1)使用卷积来高效学习低分辨率、抽象的特征

(2)使用SA来处理、聚合卷积提取到的特征

这种混合设计可以有效利用卷积和SA的优点,同通过卷积进行下采样可以有效处理较高分辨率的输入图像。

因此本文的提出一种简单的设计方案:将ResNet最后三个block替换为BoT模块,其余不做任何改动。再说明白点,只将ResNet最后三个3x3卷积替换为MHSA层。


只做这一小小的改动,就将COCO上目标检测精度提升了1.2%;并且BoTNet在结构上并没什么新颖之处因此本文相信这种简洁性使其可以作为一个值得进一步研究的backbone。
使用BoTNet做实例分割,效果也有显著提升,尤其对小物体有显著提升。



最后本文还对BoTNet进行了放缩,发现BoTNet在更小数据集上没有什么实质性提升,但在ImageNet上达到了84.7%的top-1精度;在TPU-V3硬件测试上比目前流行的EfficientNet块1.64倍。基于BoTNet展现的结果本文希望SA未来可以在视觉任务中广泛使用。


在这里插入图片描述

Section II Related Work

Fig 2总结了计算机视觉任务中的注意力,本节主要关注:

(1)Transformer vs BoTNet


(2)DETR vs BoTNet

 
(3)Bon-Local vs BoTNet

Fig 3中左侧是Transformer ,中间是本文定义的BoT模块,右侧就是ResNet Block中将卷积层替换为MHSA后的结果

Connection to the Transformer


正如标题提到的本文的关键是将ResNet中的block替换为MHSA层,但BoT的架构设计并不是本文的贡献,本文只是指出MHSA ResNet Bottleneck与Transformer之间的关系,从而能够提升对计算机视觉中SA的理解和设计。



除了在Fig 3中恒看出的区别,如残差连接还有一些区别如:




(1)归一化 Transformer使用的是LN而ResNet使用的是BN

(2)非线性 Transforemr在FFN层引入非线性,ResNet则在BoT中使用了3个非线性变换

(3)输出映射 Transformer中的MHSA包含一个输出投影而BoT中没有

(4)一般视觉任务常使用SGD Optimizer而Transformer通常使用Adam Optimizer
Connection to DETR


DETR是基于Transformer的目标检测框架,DETR和BoTNet都尝试使用SA来提升目标检测和实例分割的性能,不同之处在于DETR是在主干之外使用了SA模块,主要目的是为了避免使用RP和非极大值抑制;


BoTNet目的是为了提出一个主干框架直接进行目标检测和实例分割。实验结果显示BoTNet对小物体的检测提升效果明显,相信在未来可以解决DETR对小物体检测不佳的问题。



Connection to Non-Local Neural Nets



Non-Local Nets主要是将Transformer与非局部算法结合,比如在ResNet最后的1-2个stage中引入非局部模块,来提升实例分割、视频分类的效果,BoT是一种混合设计,同时使用了卷积核SA。




Fig 4展示了Non-Local层和SA层的区别:





(1)MHSA中包含多个头来进行Q,K,V的映射





(2)NL Block中通常包含一个通道缩放因子对通道进行缩放,因子通常设置为2,而MHSA中设置为4





(3)NL Block是作为一个额外的模块插入到ResNet Block中 但是BoTNet是直接替换




在这里插入图片描述

Section III Method

BoTNet的设计很简单,将ResNet的最后三个3x3卷积替换为MHSA,这样就实现了featuremap的全局计算。通常ResNet包含4个stage[c2,c3,c4,c5],每一个stage中堆叠不同的block,并且使用残差连接。




 
本文的目标就是使用将SA用于高分辨率的实例分割,因此最简单的方法就是在主干网路低分辨率特征图中加入注意力,即c5阶段,c5一般包含3个残差快,因此将这3个残差快替换为MHSA模块就组成了BoTNet。



 
在这里插入图片描述

Table 1展示了BoTNet的网络结构,Fig 4展示了MHSA的结构。涉及到步长卷积的操作在本文都替换为了池化操作。




 
Relative Position Encodings



 
近期研究表明相对位置编码更有效,因为考虑了不同位置特征之间的相对距离,从而能够有效的将不同内容之间的相对距离考虑进来,因此BoTNet使用的是2D相对位置编码。

Section IV Experiments

本文测试了BoTNet在实例分割、目标检测上的效果

训练基于v3-8 Cloud-TPU进行 8核每核16GB

Part 1 Instance Segmentation

本文选用最常用的backbone-ResNet-50,输入图像分辨率为1024*1024,替换之后的网络称之为BoT50
。
在这里插入图片描述

Table 2比较了训练不同epoch之后的效果,可以看到在12epoch后BoT50性能超过了R50,这说明BoT50需要更长的训练时间,此外本文还看到72rpocj的改进比36epoch更差这说明使用默认的jitter可能会影响性能。
在这里插入图片描述

这一问题的解决办法是增加多尺度抖动的量,可以看到借助Multi-scale jitter可以限制提升BoT50的性能,参见Table 3.

Part 2 Relative Position Encoding

在这里插入图片描述

BoTNet中使用了相对位置编码,Table 4展示了使用不同位置编码方案的对比结果,可以看到qrT(基于内容的交互)和qkt(基于内容-位置的交互)二者是互补的,同时也能看到使用绝对位置编码带来的增益不如相对位置编码那么明显,这表明在DETR这样的框架中引入相对位置编码是一个有前景的方向。
在这里插入图片描述

从Table 5的实验结果也能看出,BoTNet适合作为任意ResNet-backbone的替代品,这也证明了本文最初的假设,通过注意力比堆叠卷积层可以更好的捕获长程依赖关系。

Part 3 BoTNet scales well with larger images

本文还测试了使用不同scale的输入,可以看到在1024x1024上训练的基准明显优于1280*1280的极限,并且在1280上训练的结果达到了49.7%的APbb充分说明是SA的效果,因为没有使用其他改进,Rubicon改进FPN或者级联RCNN等,这一实验结果超过了之前ResNeST在COCO数据集上达到的最佳单模型单尺度实例分割的效果——44.2%。

Part 4 Image Classification

本文还测试了BoTNet是否适合分类任务,之前的工作表示通过向ResNet中添加non-local模块并没有带来很大的提升,本文在BoT上也观察到相似的结果,从Table 9的结果可以看出BoTNet并没有在ImageNet显示出比ResNet更优异的性能,但是一定程度减少了参数量。

在这里插入图片描述

通常解决这种增益不明显的情况通常是利用图像尺寸,因为与目标检测或者分割相比分类的图像尺寸更小,因此BoT操作的featuremap也就更小。
在参数量相同的情况家同时不显著增加计算量,C5中的具体结构可以被改变,本文设置为所有MHSA的stride=1,将这种设计称之为BoTNet-S1.
本文发现这种结构与ViT中探索的混合模型十分相似,混合模型糊在堆叠Transforemr block之前使用ResNet指导C4阶段,主要区别在于使用的是BoT Block而不是原始的Transformer block.
对比结果参见Table 9可以看到比R50提升了0.9%,但是也要注意到这种提升是以增加计算为代价的,但也给我们提供了一种信号就是通过设计模型处理更大尺寸的图像以及改进训练条件可以进一步提升性能,这也是自EfficientNet之后越来越长用的一种手段。

Part 5 Scaling BoTNet

本文还探究了进一步扩大模型容量和图像分辨率的效果,之前已经有一些基于卷积的工作通过增加模型深度和提高图像分辨率获得了性能提升,本文采用类似的缩放规则,设计了一系列BoT模型,并与SENet、Efficientnet和Deit做比对。

BoTNet达到了83%de top-1精度,并且BoTnET可以很好的扩展到更大图像尺寸,并且比纯Transformer的DeiT表现更好,显示出同时使用卷积核自注意力的优势。
在这里插入图片描述

在这里插入图片描述

# Section V Conclusion


使用自注意力机制来设计视觉任务的主干框架是一个令人兴奋的话题,希望本文的BoTNet能加深这一方面的理解,并将自注意力用到其他视觉任务,如关键点检测、形状预测等以及如何进行注意力的自监督学习、扩展到更大的数据集都是未来值得探索的方向。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值