[Transformer]MViTv1:Multiscale Vision Transformers

from FAIR,UC Berkerly
Paper
Code

Abstract

本文将多尺度特征与Transformer相结合,提出多尺度Vision Transformer用于图像识别和视频分类等任务。MViT不同stage具有不同的分辨率,最开始输入分辨率最大同时通道数最少,随着网络加深会扩展通道容量的同时降低空间分辨率,这样就搭建了一个多尺度的特征金字塔,早期基于较高分辨率可以建模简单的低级视觉信息,随着网络加深虽然空间信息较为粗糙但是却获得了更为复杂、维度更高的特征。
这个模型可以用来建模各种密集预测任务,如图像识别、视频分来,如果经过预训练后可以超过其他SOTA模型;并且在计算成本和参数量方面提升5-10x。本文进一步移除了时间维度后将模型应用于图像分类,也超过了其他Transformer模型。

Section I Introduction

首先介绍下用于计算机视觉任务的神经网络模型,LeCun等人提出是用反向传播更新权重,此后处理计算机视觉的主要流程已经建立:
(1)随着处理层次的加深,空间分辨率逐渐降低;
(2)通道数目不断增减,并且每个通道越来越对应专门的特征。
此外计算机视觉任务还发展出多尺度处理流程,也被称为金字塔策略。
主要由两点启发:
(1)使用较低分辨率可以减少计算成本;
(2)较低分辨率下可以更好的感知上下文,从而进一步指导在较高分辨率下的处理

Transforemr可以建模任意函数,在语言理解和机器翻译等序列任务中取得了成功,从根本上来说,Transformer有两个基本模块,首先是注意力模块用来建模元素之间的关系六七次MLP多层感知机用来建模元素内部的关系。结合标准化和残差连接,可以将Transformer应用到多种任务。


近期Transformer也被用于一些视觉任务,并且取得了与卷积网络接近的性能。一般在第一层使用卷积将输入切块,随后送入Transformer进行处理,显示出Transformer在不使用归纳偏置的前提下的强大的建模能力。
本文将多尺度特征的层次结构这一重要思想与Transformer结合。本文认为通过分辨率和通道数的多方可以在各种视觉任务中应用Transformer模型。
本文提出的多尺度视觉transformer(MViT)是一个通用的Transformer框架,如Fig 1所示。
与传统Transformer在整个网络中分辨率和通道容量不变不同,MViT在不同的stage其通道分辨率时不一样的,最考试输入的是高分辨率图像因此通道数较少;随着网络加深后面的stage会在降低空间分辨率的同时还会扩大通道分辨率,这样就在Transformer网络内部创建了一个多尺度的特征金字塔模型,可以有效的将Transformer与多尺度的特征层次结合起来。

本文的设想是早期在较高分辨率下建模低级视觉信息;而在深层次可以更加有效的关注空间信息粗糙但语义更加复杂的抽象特征信息;而Transformer的优势在于会密集计算每一个视觉信号,这种特征在视频任务需要捕捉时空视觉信号中尤其明显。


MViT的优势在于在视频的多尺度模型中包含隐式的时间偏置信息,因为ViT在训练视频Trabsformer模型时在打乱帧的视频上测试发现性能没有衰减,这说明ViT没有有效学习到时间信息,而是严重依赖于图像内容;而本文的MViT进行同样测试时可以看到有显著的性能下降,说明充分学习到了时间信息。
本文的终点是视频识别,最终的结果是与u其他模型在精度相近的情况下具有更少的计算量和参数量;本文还进一步进行了图像分类任务,发现比单尺度的Transformer具有更好的性能增益。

Section II Related Work

Convolutional networks
目前处理图像和视频的主流框架还是卷积神经网络。而也有诸多工作在卷积网络中引入注意力机制用于图像识别、目标检测以及语言建模等。
Vision Transformer


将Transformer用于视觉任务是一大热门研究方向,本文直接在ViT的基础上引入通道扩展和降采样搭建了一个多尺度模型;DeiT中提出了一种高效的ViT训练方式,本文也使用相同的训练设置。

Efficient Transformer

也有的工作致力于减少Transformer平方的计算复杂度,也可以做为本文方法的补充。
此外也有3篇研究是与本文类似的,但是他们都依赖于大规模数据集上预训练的结果;相比之下本文的MViT为Transformer引入了多尺度特征层次,不依赖于大规模数据集就可以进行密集预测。

Section III Multiscale Vision Transformer

MViT架构的核心是stage,每一个stage包含多个特定时-空分辨率和通道维度的Transformer block,MViT会逐渐扩展通道维度同时通过池化操作来降低输入分辨率。

Part 1 Multi Head Pooling Attention

MHPA是一种SA operator,可以在Transformer模块中对不同分辨率进行建模,使得MViT可以处理不同时空分辨率的输入。原始的多头注意力(MHA)其空间分辨率和通道维度保持不变,但是MHPA对输入的序列向量进行了池化操作,从而减少了序列长度(即降低了分辨率),详情参见Fig 3.
在这里插入图片描述

具体来说,对于一个D维度的输入向量X,序列长度为L,在进行MHA后,MHPA会将输入首先线性投射为Q,K,V矩阵。

要学习的Wq,Wk,Wv维度都是DxD,P则代表池化操作。
在这里插入图片描述

Pooling Operator

在Q,K,V进行SA操作之前糊进行池化操作,这一步也是MHPA,MViT的基石。
pooling operator会在输入张量的每一个维度上以一定的步长进行池化,从而减少输出的维度:

在这里插入图片描述

最终的效果就是输出序列长度减少为:

Pooling Attention
Q,K,V都会被选定的池化核进行池化操作,然后将长度压缩后的Q,K,V进行注意力的计算:

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

依旧会除以维度进行归一化,和标准注意力的区别在于序列长度减少了:

在这里插入图片描述
Multiple heads
在Transformer中多个注意力头可以并行计算,即每个头占据D/h个通道数。

Computational Analysis
因为SA的计算复杂度是输入序列长度的平方,因此使用池化后的Q,K,V计算会显著压缩计算成本和内存需求,本文用fQ,fK,fV表示序列长度压缩因子。
则MHPA的计算复杂度为:
在这里插入图片描述

per-head:
在这里插入图片描述
total:
在这里插入图片描述

在设计时主要通过调节通道数目D和压缩序列长度THW/fQfK

Part 2 Multi-scale Transformer Networks

下面介绍MViT的整体架构,还是建立的MHPA和MLP层的基础上。
在这里插入图片描述

首先回顾一下ViT架构,输入为TxHxW分别代表帧数、高度和宽度,映射到1x16x16大小的patch,并且进行位置嵌入。然后送入Transformer Block进行处理。
因此输入序列长度为L+1
在这里插入图片描述

MViT


MViT的核心就是逐渐扩充通道维度,同时减少空间维度(也就是序列长度),因此在MViT的早期空间维度粒度更细通道维度比较粗糙,随着网络加深空间分辨率下降但通道维度上升。


在这里插入图片描述

Table 2展示了具体的通道维数,MHPA负责空间降采样,MLP负责通道扩展。
Scale stage
一个stage包含多个transformer block,但同一个stage具有相同的分辨率,比如Table 2中的cube1,会将patch投射到比原始ViT通道数减少8倍但是序列长度是原始ViT相同stage的16倍。



在transition阶段通道数会进行上采样同时对序列长度进行下采样,这样一方面有效的降低了低层视觉数据的时空分辨率,另一方便允许网络表示更复杂的特征。
Channel Expansion
通道扩展主要通过MLP层完成,一般如果时空分辨率下降了4倍,就会将通道数翻倍,这样大致保证计算复杂度在一个截断,类似ConvNet中的设计原则。

Query Pooling
池化操作不仅对K,V十分灵活,在Query length上也很灵活,一般会在stage开始就进行池化降分辨率,然后在整个stage中保持统一的分辨率。
K-V pooling

与query不同的是,改变key和value的序列长度并不会改变输出序列的长度也不会改变时空分辨率,但是k,v的长度却影响总体的计算复杂度,因此本文在stage最开始进行Q pooling但是在其他层使用K,V pooling。

此外为了保证K,V序列长度相同,因此二者的池化步幅是相同的。

Skip connections

由于在一个残差快内通道维度和空间分辨率发生了变化,因此本文也使用了pool skip connection来解决两端维度不一致的问题,参考Fig 3,并不是将输入X与MHPA的结果直接相加,而是现将X进行池化,使得二者维度一致后再进行残差连接,因此这并不是标准的skip connection。

Part 3 网络实例化细节

Table 3展示了三种不同规格的MViT,比如MViT-B包含4个stage,每一个stage中包含多个block,首先将输入投递到D=96个通道,此时空分辨率为3x7x7,对应的序列长度为25089,随后每一个stage会将序列长度压缩4倍,最终序列长度为393;而通道数最终也变成了768.注意所有的池化操作都是在数据序列上做的,不会将cls token考虑其中。


MHPA中head number = 1然后随着通道尺寸的增加,head number也会增加,保证D/H = 96.
在所有MHPA模块中均使用K,V pooling,但是会在不停阶段自适应的调整池化步幅。

Section IV Experiments:Video Recognition

数据集:
Kinetics-400,-600

训练细节:从头训练 不使用预训练的结果

ViT则测试在ImageNet上预训练后进行微调的结果。


推理:采用两种评估方法:



(1)时间上均匀采样如采样步长=5真 每一帧center crop 224x224大小



(2)依旧在时间轴上均匀CIA杨凡是裁剪3次从而获得更大的空间覆盖域。


在这里插入图片描述

Main results



Table 4展示了最终的对比结果,分别对比了CNN网络、Transformer网络,最后是本文的4种模型。
第三部分是ViT基准模型,可以看到预训练后达到了79.3%的精度;但如果不加预训练精度就会下将的比较厉害。
最后一部分是MViT的结果,可以看到全部是从头训练的,一方面参数量比较少但是精度可很优秀比如与ViT-B相比精度提升了9.9%同时FLOPs减少了2.6x.
Ablations on Kinitics

本文还进行了消融时间,对比了对视频帧进行shuffle的效果,可以看到如果在测试阶段对采样的帧进行shuffle ViT的性能几乎没有改变说明ViT在视频任务中并没有有效的建模时间信息,而MViT-B的性能显著下降,说明它充分学习到了时间信息。
在这里插入图片描述

Two scales in ViT


本文还验证了scale设计的有效性,对比了使用single scale和mulit-scale的效果,并没有改变通道数,可以看到如果在ViT-B增加一个stage精度会提升1.5%,FLOPs和memory分别增加38%和41%,如果在使用K-V pooling会降低计算和内存成本 同时也会略微提升精度。


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

Separate space & time embedding in MViT




Table 11展示了不使用位置嵌入、只对空间信息进行嵌入、时空嵌入和本文的时空独立嵌入方式,发现不使用嵌入精度会下降0.9%而本文的嵌入方法效果最好同时参数量也减少了2.1M。




在这里插入图片描述

K-V pooling





Table 14分析了使用不同池化步长对最终性能的影响,可以看到如果不使用K-V pooling并且固定步长以及会自适应调整步长,发现固定步长虽然会减少FLOPs和内存但是精度会下降,从77.6%下降到74.8%;而进行自适应调整准确率能达到77.2%同时也大大减少了FLOPs和memory.






在这里插入图片描述

Table 15则对比了使用不同下采样方式的区别,如平均池化、最大池化和conv卷积。实验发现卷积效果最好。





在这里插入图片描述

Speed-Accuracy trade-off
Table 16展示了进行精度和速度权衡的效果,可以看到MViT-S和B不仅精度更高而且比ViT-B更快,以MViT-S为例吞吐量提升了3.4x,精度提升了5.8%,参数量减少了3.3.如果在MHSA中使用卷积而不是最大池化,那么训练速度会下降20%.

# Section V Experiments:Image Recognition


将MViT用于图像分类有以下实验现象:
(1)轻量级的MViT-B精度达到了82.5%,同时FLOPs只有7.8,如果将最大池化换为卷积精度将提升到83%.

(2)随着模型深度的增加,模型精度会进一步提升
;

(3)更大的模型规模(MViT-B-24-Wide)

比对应的DeiT-B在计算量上减少了1.7x,精度可达84.3%;同样将池化替换为卷积后精度将提升到84.8%。
这些实验结果表明MViT比原始的ViT更有优势。

Section VI Conclusion

本文提出的MViT-多尺度视觉Transformer目的是将多尺度特征这一概念与Transformer模型融合,通过层次化的设计可以拓展模型能力,同时降低了空间分辨率;实验结果也表明MViT在视频和图像识别任务中比单尺度的ViT具有更大的优势。

本文希望MViT可以促进Transformer在视觉领域的研究。

### MViT Version 1 Introduction and Implementation MViT (Multiscale Vision Transformers) is a transformer-based architecture designed specifically for computer vision tasks, such as image classification and video understanding. The first version of MViT introduces several key innovations that enhance the performance of transformers when applied to visual data. #### Key Features of MViT v1 The primary features include multiscale feature extraction and hierarchical tokenization mechanisms: - **Hierarchical Tokenization**: This mechanism allows the model to process input images at multiple scales simultaneously by dividing them into patches of varying sizes. It ensures richer representations are captured from both local details and global structures within an image[^4]. - **Efficient Attention Mechanism**: To address computational challenges associated with applying attention over large inputs like high-resolution videos or images, efficient strategies were implemented where only relevant regions receive detailed focus while less critical areas undergo coarser processing steps[^5]. #### Example Code Snippet Demonstrating Basic Usage in PyTorch Framework Below demonstrates how one might implement parts related directly towards constructing similar architectures using modern deep learning frameworks. ```python import torch.nn as nn class MultiScaleBlock(nn.Module): def __init__(self, dim_in, dim_out, num_heads=8, mlp_ratio=4., qkv_bias=False): super().__init__() self.norm1 = nn.LayerNorm(dim_in) self.attn = nn.MultiheadAttention(embed_dim=dim_in, num_heads=num_heads, bias=qkv_bias) hidden_features = int(dim_in * mlp_ratio) self.mlp = nn.Sequential( nn.Linear(dim_in, hidden_features), nn.GELU(), nn.Dropout(0.1), # Dropout rate can be adjusted based on experiments nn.Linear(hidden_features, dim_out), nn.Dropout(0.1) ) def forward(self, x): residual = x x = self.norm1(x.permute(1, 0, 2)).permute(1, 0, 2) attn_output, _ = self.attn(x, x, x) x = residual + attn_output residual = x x = self.mlp(x) x = residual + x return x ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值