paper:Multiscale Vision Transformers
official implementation:https://github.com/facebookresearch/SlowFast
背景和出发点
这篇文章提出了多尺度视觉Transformer(Multiscale Vision Transformers, MViT)的概念,用于视频和图像识别。作者从多尺度特征层次结构的核心思想出发,结合Transformer模型,提出了一种新的架构。
解决了什么问题
MViT解决了现有视觉Transformer依赖大量外部预训练数据且计算和参数消耗大的问题。该模型在无需大规模外部预训练数据的情况下,显著提升了视频识别任务的性能。
创新点
- 多尺度特征层次结构:MViT通过多个通道-分辨率缩放阶段来实现多尺度特征金字塔。这些阶段从输入分辨率和较小的通道维度开始,逐步扩大通道容量,同时减少空间分辨率,从而创建了一个从高空间分辨率到低空间分辨率的多尺度特征金字塔。
- 有效的时空建模:MViT在视频识别任务中表现出色,利用时空信息来提高识别准确性。相比之下,其他视觉Transformer在帧序打乱的视频上表现较差,表明MViT更好地利用了时间信息。
- 计算效率高:与当前其他视频变压器模型相比,MViT在计算和参数消耗方面更加高效,能够在相同的准确性下显著减少计算量和参数数量。
方法介绍
这里的逐阶段降低分辨率增大通道数其实就是普通的ConvNets的做法,作者将其引入到Transformer结构中。作者首先提出了Multi Head Pooling Attention(MHPA)如图3所示,通过MHPA可以在Transformer block中实现灵活的分辨率建模,与分辨率和通道数都保持不变的原始的Multi Head Attention不同,MHPA通过池化操作减小 \(Q,K,V\) 的序列长度(即分辨率)实现对原始输入分辨率的降低。
通道数的增加是通过MLP实现的,当从一个stage过渡到下一个stage时,通过增加前一个stage最后一个MLP的输出来扩展通道维度。具体和卷积网络一样,当分辨率降低4倍时,通道数增加2倍。
作者通道MHPA构建了Multiscale Vision Transformer(MViT)如表2所示。
在MHPA中,分辨率的降维具体是通过对 \(Q\) 池化实现的,因此我们在每个stage的第一个pooling attention中设置pooling query的步长>1,其它的所有步长都设置=1。
和query pooling不同,改变key、value张量的sequence length不会影响输出的序列长度,即空间分辨率。但它们对池化注意力整体的计算量起着关键作用。因此作者解耦了 \(Q,K,V\) pooling的使用,只在每个stage的第一层使用query pooling,而在所有其它的层中使用key pooling和value pooling。
由于存在skip connection,当分辨率发生变化时,我们对residual path也进行池化来匹配维度的变化,如图3所示。当通道数发生变化时,我们通过一个额外的线性层来对齐通道维度。
实验结果
这篇文章主要是应用于视频分析的,因此除了空间分辨率外还有一个temporal维度,不过我们这里只关注2D图像识别。
在ImageNet上和其它模型的对比如下表所示