[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection

MViT:优化的多尺度Transformer用于分类和检测

  • Abstract
  • Section I Introduction
  • Section II Related Work
  • Section III Revisting Mulit Scale Vision Transformer
  • Section IV Improved MViT
    • Part 1 Improved Pooling Attention
    • Part 2 MViT for Object Detection
    • Part 3 MViT for Video Recognition
    • Part 4 MViT Architecture Variants
  • Section V Experiments Image Classification
    • Part 1 Comparison results
    • Part 2 消融实验
  • Section VI Conclusion

From FAIR,UC Berkerly

Abstract

本文提出了多尺度的Transformer(MViT)作为一个通用的图像和视频分类以及目标检测的架构。这种优化的多尺度ViT使用了分解的相对位置嵌入以及残差实话连接。本文在ImageNet,COCOhe Kinetics数据集上将5种规模的MViT与其他工作对比,均优于之前的工作。

此外本文还进一步比较了MViT中的池化注意力和window attention,发现本文的池化注意力在准确率和计算量上均优于后者。目前MViT在3个领域达到了SOTA:ImageNey分类88.8%,COCO目标检测56.1AP以及Kinetics86.1%。

Section I Introduction

不同视觉任务设计一般采用不同的架构,一般会将最简单和最有效的网络结合一下,如VGGNet和ResNet.最近ViT在诸多领域展现出可以与CNN相媲美的性能,虽然ViT在 图像分类中表现优异但是将其应用在高分辨率目标检测和时空视频理解任务中依然具有挑战性。因为SA的计算复杂度是分辨率的平方项,目前主流的两种优化方法是:


(1)将注意力局限在窗口内
;


(2)在视频任务中使用池化注意力聚合局部特征



后者启发本文提出MViT框架,这是一种简单易扩展的框架:它再网络中没有使用固定分辨率,不同的stage对应着从高到低的分辨率。
本文引入了两个简单的设计来进一步提升MViT的性能,通过在图像分类、目标检测和视频分类三种任务上的性能探究MViT是否可以作为一个通用的视觉和时空识别任务的骨干框架。


本文的贡献总结如下:



(1)本文提出使用可分解的相对位置编码来注入位置信息,这种位置编码的方式是位置不变的;



(2)本文使用残差池化连接来弥补SA计算中步长的损失;




(3)经过上述优化后的MViT被用于密集预测任务:结合特征金字塔和FPN用于目标检测和实例分割。





本文还探究了MVIt是否可以通过池化注意力来处理高分辨率输入同时解决计算成本和内存问题。实验结果显示池化注意力比局部注意力(Swin Transformer)更有效;本文还进一步提出一种简单但有效的混合窗口注意力策略作为池化注意力的补充,来进一步权衡准确性和计算效率。




(4)本文还搭建了5中不同规模的MvIt,分别测试了进行图像分类、目标检测和实例分割的效果。




目前MViT在3个领域达到了SOTA:ImageNey分类88.8%,COCO目标检测56.1AP以及Kinetics86.1%。

Section II Related Work

CNN目前是视觉任务的主流框架。但近期许多Transformer应用到图像分类也取得了可以与CNN媲美的性能。因此也有一系列研究致力于改进Transformer框架,比如更好地训练策略、多尺度的Transforme框架以及更先进的注意力机制。本文提出的多尺度的Transformer框架(MViT)致力于作为不同视觉任务的主干。







ViT用于目标检测
目标检测任务需要较高分辨率的输入才能进行精确的定位,而SA的计算复杂度是分辨率的平方项,近期这方面的工作主要通过shifted window或者Longformer注意力来减轻计算量,MViT中的池化注意力也是一种高效计算注意力的方式。
ViT用于视频分类
ViT用于视频识别也显示出优异的性能,但大多数依赖于大规模数据集上的预训练,本文的MVit虽然简单但十分有效,同时也研究了在ImageNet上预训练后的效果。

Section III Revisting Mulit Scale Vision Transformer

MViTv1中在不同的stage建立不同分辨率的模块,而不像原始Transformer所有block的分辨率时相同的。因此MViT的通道数D会逐渐增多,同时分辨率L会逐渐下降(对应的是序列长度)。
为了在Transformer模块中实现下采样操作,MViT提出了池化注意力(Pooling Attention)。


对于任意输入序列,会进行线性映射得到Q,K,V,Q,K,V再经过池化处理,主要是为了缩短K,V序列的长度,然后在池化后的基础上进行注意力的计算。
其中下采样的系数Pk和Pq可以与Q的池化系数Pq不同。

在这里插入图片描述
在这里插入图片描述

Pooling Attention可以在每个stage都进行池化,这样可以大大减少Q-K-V计算时的内存成本和计算量。

Section IV Improved MViT

Part 1 Improved Pooling Attention

[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection_第1张图片
Decomposed relative position embedding
虽然MViT在捕捉token之间关系方面已经展示了优异的性能,但是这种注意力更关注内容而不是空间结构。通过绝对位置编码只能提供位置信息却忽略了图像中很重要的一点,就是特征的平移不变性。因此在原始MViT中如果两个patch的绝对位置发生变化那么他们之间的依赖关系就会发生变化,虽然这两个patch的相对位置并没有发生变化。

在这里插入图片描述
为了解决这一问题本文使用了相对位置编码,即计算两个patch的相对位置信息,然后进行位置信息嵌入。但是这样要嵌入的数目太多了O(TWH),因此本文进一步将i,j之间的距离计算沿着时空轴进行分解,即分别沿着长、宽和空间轴进行计算,这样将复杂度降到O(T+W+H).

在这里插入图片描述

[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection_第2张图片

Residual pooling connection

MViTv1中引入的MSPA池化注意力可以大大减少SA的计算量,主要会在Q-K-V进行线性映射后在进行一步池化操作,但是在v1中K,V采用的步长更大,Q只有在输出序列发生变化时才进行降采样,这就需要在pooling attention module的计算中加入残差连接来增加信息流动。本文(MViTv2)在注意力模块中引入一种新的残差池化连接,表示为以下公式:
’
在这里插入图片描述

会在注意力计算后与pooled Q进行残差连接作为最终的输出,注意到输出Z与Q的长度一样。
消融实验表明,使用残差连接和对Q进行池化都是很有比较的,一方面可以降低SA的计算复杂福一方面可以提升性能。

Part 2 MViT for Object Detection

本节介绍MViT如何应用到目标检测。
Fig 3展示了MViT作为backbone结合FPN进行目标检测任务,MViT会分四个stage生成特征图,然后集成到特征金字塔网络中,FPN具有横向连接,使用MViT输出的具有很强语义信息的特征图。
[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection_第3张图片
Hybrid window Attention
Transformer中SA的计算复杂度与token数目有关,在目标检测通常需要高分辨率的输入和特征图。本文研究了两种降低计算和内存的方法:

一是在MViT注意力模块中使用pooling attention,

二是Swin Transformer中使用的窗口注意力。


二者都是通过限制Q,K,V向量来降低计算量,但是他们的本质确实不同的。
pooling是局部聚合后通过下采样来汇聚特征,依旧保持了全局的注意力计算;
window attention虽然保持了tensor的分辨率但是输入被划分到不同窗口中在局部执行注意力的计算,这两种方法的内在差异促使我们去探究是否可以在目标检测任务中进行互补。
因为window attention在窗口内计算注意力,默认缺乏窗口之间的联系;与SwinTransformer中使用shiftwindow来解决这一问题不同,本文提出使用一个简单的混合窗口注意力来进行跨窗口连接。

HWin会计算每一个stage除最后一个block其余所有窗口的注意力,然后将包含全局信息的特征送入FPN。
消融实验结果表明这种简单的HWin在分类和目标检测任务上的表现始终优于SWin;本文还将池化注意力与HWin相结合在目标检测上达到了最佳性能。


Positional embedding in detection



与图像分类不同,目标检测通常包含不同大小的对象,因此本文在将MViT进行位置嵌入用于目标检测时会初始为化224x224大小然后通过插值到不同分辨率,用于目标检测的训练。

Part 3 MViT for Video Recognition

MViT可以轻易的用于视频分类任务,因为MViT中的模块很方便可以迁移到时空领域,本文还探究了预训练之后的效果。
与用于图像分类的MViT不同之处在于:





(1)MViT在进行投影的时候是投影到时空域而不是2Dpatch





(2)池化操作需要汇聚到时空图中






(3)相对位置嵌入也需要考虑时空信息

Part 4 MViT Architecture Variants

本文构建了不同规模的MViT模型,从而与其他框架进行公平比较,主要通过改变通道数、block数量、heads number等参数来构建Tiny,Small.Base,Large,Huge5种规模的网络,详细网络结构参数参见Table 1。
池化的步长设置为4,并且在stage中自适应衰减。





[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection_第4张图片

Section V Experiments Image Classification

Part 1 Comparison results

本文首先在ImageNet图像分类和COCO目标检测上检测了MViTv2的性能。
Table 2展示了与其他框架以及和MViTv1的性能对比。

[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection_第5张图片
Table2按照网络的计算量对所有参加比较的网络进行了分组,可以看到与NViTv1比,本文的v2具有更高的分类精度,甚至MViTv2-B比MViTv1-B更加轻量级。
并且MViTv2的性能也优于其他Transformer模型,比如DeiT和Swin,尤其随着网络规模逐渐增大时,比如MViTv2-B达到了84.8%的准确率,分别超过DeiT-B和Swin-B 2.6%和1.1%,同时参数量也减少了33%.

除了使用center-crop进行测试,本文还测试了在全尺寸输入下的性能,发现性能可以从86%提升到86.3%,这是迄今为止最高的精度(在不使用外部数据或模型蒸馏的前提下)

[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection_第6张图片

Table 3则显示在ImageNet-21K预训练后的结果,可以看到预训练为MViT-L精度提升了2.2%.
Part 2 Object Deteciton
目标检测在COCO数据集上进行测试 目标检测框架使用Mask R-CNN以及Cascaded R-CNN.出于公平比较本文遵循与Swin相同的设置,前36epoch在IN数据集上预训练然后在COCO上微调,并且测试使用本文提出HWin的效果,窗口大小设置为[56,28,14,7]
.
[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection_第7张图片

Table 5展示了在COCO数据集上两种目标检测框架的效果,MViT的性能超过了CNN以及Transformer的其他网路,比如MVit-B在模型更小参数量更小的前提下比Swin-B提升了2.5APbox,在Cascaded R-CNN结果与此类似。

Part 2 消融实验

不同的注意力机制
本文研究了不同的注意力机制的效果,分别是pooling attention和Hwin自注意力,Table 4展示了对比结果,根据实验结果由以下发现:
(1)对于ViT-B模型,默认的基于窗口的方法确实减少了计算量和内存,但是由于缺少跨窗口之间的交互 使得top-1精度也下降了2.0%;Swin window可以提升0.4%的精度。
本文的HWin则与full attention性能相近,比Swin Window提升1.7%,结合pooling attention则在计算量减少38%d的情况家达到了最佳精度。

(2)对于MViT-S默认使用pooling attention,本文观察到添加Swin和HWin都可以降低模型的复杂度 但是性能会略有衰减;通过进一步增加池化的步幅可以实现最佳的精度/算力权衡。
[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection_第8张图片
[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection_第9张图片
[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection_第10张图片

Positional embeddings
Table 6则是使用不同位置嵌入的对比结果,可以看到使用绝对位置编码比不使用位置嵌入有明显改善,这是因为池化操作已经建模了位置信息;而相对位置编码可以大幅提升性能,因为在池化操作之前引入了平移不变性,如果使用本文的分解相对位置嵌入可以实现3.9x的加速。

Residual pooling connection
Table 7展示的则是使用残差池化连接的效果,可以看到只引入残差连接就已经对性能有所提升,增加的计算成本可以忽略不计;如果使用残差池化并对所有层应用会有较大提升,尤其COCO数据集会有1.4AP的提升,这表明在MViT中使用Qpooling block和残差连接式十分有必要的。

Runtime Compression
Table 8则是运行时对比,可以看到MViT比Swin有更高的吞吐率。

Table 9则比较了做目标检测时使用单尺度检测和多尺度检测器的区别,可以看到FFN显著提升了两个backbone的性能,而MViT-B显著优于ViT-B,这说明使用多尺度的层次化设计非常适合密集预测的目标检测任务。
[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection_第11张图片

[Transformer]MViTv2:Improved Multiscale Vision Transformers for Classification and Detection_第12张图片

Section VI Conclusion

本文提出了一种改进的多尺度视觉Transformer-MViT-可以作为视觉任务的通用性框架结构,在图像分类、实例分割、视频分类等领域均展现了优异的性能。本文希望这一框架未来在其他视觉任务中做进一步研究。

你可能感兴趣的:(CV,transformer,深度学习,计算机视觉)