来源:知乎—rainforest wang地址:https://zhuanlan.zhihu.com/p/377961269本文主要介绍刚刚被NeurIPS-2021会议录用的一篇关于动态Transformer的最新工作:Not All Images are Worth 16x16 Words: Dynamic Vision Transformers with Adaptive Sequence Length,全部代码和预训练模型已经在Github上开源。论文地址:https://arxiv.org/abs/2105.15075代码:https://github.com/blackfeather-wang/Dynamic-Vision-Transformer太长不看版:以ViT为代表的视觉Transformer通常将所有输入图像表征为固定数目的tokens(例如16x16和14x14)。这项工作发现采用定长的token序列表征数据集中所有的图像是一种低效且次优的做法,并提出一种可针对每个样本自适应地使用最合适的token数目进行表征的动态ViT模型。该方法在ImageNet上将T2T-ViT的平均推理速度(GPU实测)加快了1.4-1.7倍。其主要思想在于利用级联的ViT模型自动区分“简单”与“困难”样本,实现自适应的样本推理。为了减少级联模型中的冗余计算,文章还提出了特征重用与关系重用的模型设计思路。
01
Introduction(研究动机及简介)近半年来,以Google的工作《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》为代表的Vision Transformer(ViT)系列视觉模型受到了学界的广泛关注,这些模型通常将图像数据划分为固定数目的patch,并将每个patch对应的像素值采用线性映射等方式嵌入为一维的token,作为Transformer模型的输入,示意图如下所示。假设模型结构固定,即每个token的维度大小固定,将输入表征为更多的token可以实现对图片更为细粒度的建模,往往可以有效提升模型的测试准确率;然而与此相对,由于Transformer的计算开销随token数目成二次方增长,增多token将导致大量增长的计算开销。为了在精度和效率之间取得一个合适的平衡,现有的ViT模型一般将token数设置为14x14或16x16。而论文则提出,一个更合适的方法应当是,根据每个输入的具体特征,对每张图片设置对其最合适的token数目。具体而言,不同图片在内容、远近、物体大小、背景、光照等诸多方面均存在较大的差异,将其切分为相同数目和大小的patch没有考虑适应这些要素的变化,因而极有可能是次优的。以下图为例,左侧的苹果图片构图简单且物体尺寸较大,右侧图片则包含复杂的人群、建筑、草坪等内容且物体尺寸均较小。显然,前者只需要少量token就可以有效表征其内容,后者则需要更多的token描述不同构图要素之间的复杂关系。这一问题对于网络的推理效率是非常关键的。在下表中,文章使用比原文推荐值(14x14)更少的token数目训练了一个T2T-ViT-12模型,并报告了对应的测试精度和计算开销。从结果中可以看到,若将token数目设置为4x4,准确率仅仅下降了15.9%(76.7% v.s. 60.8%),但计算开销下降了8.5倍(1.78G v.s. 0.21G)。这一结果表明,正确识别占数据大多数的较“简单”的样本只需4x4或更少的token,相当多的计算浪费在了使用存在大量冗余的14x14 token表征他们。