共计 10210 个字符,预计需要花费 26 分钟才能阅读完成。
作者|Maximilian Schambach
OneFlow 编译
翻译|胡燕君、杨婷
在 NLP 畛域获得巨大成功后,Transformer 架构在计算机视觉方面的作用日渐凸显,成为越来越广泛的 CV 工具。自 2020 年 10 月 Vision Transformer 模型推出以来,人们开始高度关注 Transformer 模型在计算机视觉上的利用。
图 1:各类 Vision Transformer 模型的推出工夫(此处以论文在 arXiv 平台上的发表工夫为准)
恰逢 Vision Transformer 推出两周年之际,借此机会咱们对其稍作介绍,并探讨这两年来倒退出的多种 Vision Transformer 模型变体以及 Transformer 在计算机视觉利用方面面临的各种挑战。本文由 OneFlow 社区编译。
1
自注意力机制和 Transformer 架构
从 NLP 说起,2017 年,Attention is all you need 一文提出了 Transformer 架构(Vaswani et al. 2017)。Transformer 架构的实质是一个序列到序列模型:输出的是一种称为 token 的序列,token 在 NLP 中是指对句子的数学示意。将句子转化为序列,要将句子中的每个词(或子词)映射为一个向量示意,该向量示意称为对应词的 embedding(嵌入)。
生成的 embedding token 序列由 Transformer 编码器在几个自注意力层和全连贯层中解决,而后输入一个与输出长度雷同的高级 token 示意序列。翻译等工作须要应用残缺的输入序列,而分类等工作则只需用到单个示意。在分类工作中,要为整个句子或整个段落生成单个示意用于分类,通常会为序列附加一个非凡的可学习嵌入向量 Class_Token([CLS] token)。能够将[CLS] token 的示意传入 classfier head(分类器头)。
下图是 Transformer 架构的总览,图左展现了 Transformer 编码器。自注意力机制是 Transformer 架构的要害。自注意力层中的所有两头 token 示意会通过计算成对相似性(pairwise similarities)进行互动,这些成对相似性会成为上一层相应 token 示意的权重。
图 2:Transformer 编码器和自注意力机制(图片来自原论文)
为了计算成对相似性,通常会通过简略可学习的线性层从 embedding 中计算 query (Q)、key (K)和 value (V)向量,而后所有 K 和 Q 之间进行双向 softmax 自注意力计算,取得各自的相似性,而后将相似性与 V 相乘。也就是说,在自注意力层中,每个 token 都通过各自 K 和 Q 的简略点积与其余 token 进行比拟,随后再运行(scaled) softmax 操作。
如图 2 左边所示,为了可能在每个阶段学习不同模式的自注意力,Transformer 架构应用了多个 self-attention head(自注意力头)。具体来说,每个 head 都映射了来自输出示意的不同 Q、K、V 向量。例如,在 Transformer 的某个固定级别,不同的 attention head 能够关注 token 之间的短、长距离或语义和句法关系。不同的 attention head 的输入由线性层进行连贯和解决,以便从新取得通过 skip connection 传递的输出示意的维度。不相熟 Transformers 基本概念的读者能够参考原论文获取更多详细信息(https://proceedings.neurips.c…)。
2
Vision Transformer 模型
从 Transformer 架构被引进 NLP 到它在计算机视觉畛域(ImageNet 图像识别工作)获得 SOTA 性能,中距离了 3 年,这和深度学习钻研的迅猛停顿相比显得较为迟缓。但从形象的角度讲,这并不令人意外。毕竟 Transformer 是序列模型,无奈间接兼容图像和视频等高维且近似间断的输出数据类型。与序列不同,图像和视频可被视为从底层间断信号中离散采样的数据。
此外,Transformer 模型没有局部性(locality)和平移不变性(translational equivariance)等演绎偏置(inductive bias),但演绎偏置在解决图像等数据时非常有用。要让 Transformer 模型习得这些属性,须要应用大量的训练数据。相同,卷积神经网络(CNN)履行演绎偏置,CNN 过来十年在视觉畛域获得的胜利很大水平归功于此。
不过,也有观点认为,没有演绎偏置能够让 Transformer 架构更具通用性。例如,Transformer 模型的浅层即可提取全局信息,但 CNN 因为感触野(receptive field)较小,只能在神经网络的深层提取全局信息。
从实际角度讲,Transformer 模型在计算机视觉畛域利用停顿迟缓的另一个起因是:Transformer 模型的输出序列长度不足可扩展性。因为规范的双向自注意力机制中所有 token 示意都是成对比拟的,所以规范的 Transformer 模型中,随着 input token 序列变长,计算所需工夫和内存会呈二次方增长。因而,即便是分辨率只有 256 × 256 的小型图像,每个像素点为一个 input token,总共就造成含 65,000 个 token 的超长序列,导致操作可行性极低。
为了解决上述难题,Dosovitskiy 等人提出了 Vision Transformer 模型(ViT,图 3),该模型应用的是一种“简略粗犷”的办法:
首先,一张大小为 X × X × C 的输出图像被分成 M × M 个图像块(patch),每个图像块为固定大小 P × P(为了简化问题,此处假设输出图像都是正方形)。每个图像块(P × P × C)被展平(flatten)为一个形态为 P ⋅ P ⋅ C 的向量,而后使用可训练的线性层将该向量映射为一个维度为 D 的 embedding。展平失去的向量为图像块 embedding,即 input token,其中蕴含了每个图像块的信息。
最初,一个 M × M 的图像块 embedding 阵列被展平为一个长度为 N = M ⋅ M 的 token 序列,而后喂入 Transformer 模型中。能够将分块、展平和线性映射操作视为一个如下的 2D 卷积操作:应用 D 个形态为 P × P × C 的卷积核(kernel),步长(stride)为(P, P),无填充(padding)。
图 3:ViT 模型架构。仅[CLS] token 的输入示意被用于分类工作和有监督训练(图源:https://openreview.net/forum?…)
与 NLP 畛域的规范 Transformer 模型雷同,embedding token 和附加的[CLS] token 一起传入 Transformer 编码器,编码器(图 3 右)蕴含几个多头自注意力机制(multi-headed self-attention)与 MLP 层。规范的 ViT 中,潜在的维度 D 从头到尾都是固定的。[CLS] token 的输入被输出到 classification head 中,[CLS] token 的输入示意蕴含输出图像的所有必要信息,即[CLS] token 的输入示意被用作潜在图像表征,与 CNN 自编码器中的瓶颈表征(bottleneck representation)类似。[CLS] token 在有监督分类工作中训练时须要与高度依赖图像的 token embedding 交互。
规范的 ViT (ViT-B)中,图像块大小为 P = 16,因而一张大小为 64 × 64 × 3 的 RGB 图像会被分为 16 个图像块。每个图像块被展平为一个长度为 16 ⋅ 16 ⋅ 3 = 768 的向量,向量被线性层映射为一个维度 D = 768 的向量。长度为 1 + 16 的 input token 序列被传入蕴含 12 层组件的编码器中进行解决,每个自注意力模块有 12 个 head。ViT 模型中约有 8600 万参数,更大型的 ViT 模型变体,如 ViT- L 和 ViT- H 别离有 3 亿和 6 亿参数。根底 ViT 模型的大小相当于规范 ResNet-152 模型(6000 万参数),而 SOTA CNN 模型的大小则相当于 ViT- L 和 ViT-H。Dosovitskiy 等人在论文中将 ViT 与 ResNet-152×4 和 Efficientnet-L2 这两种 CNN 模型比照,前者有 9 亿参数,后者有 5 亿参数。
总体而言,ViT 模型,特地是 ViT- L 和 ViT-H,在 JFT-300M 大型数据集上预训练,而后迁徙到 ImageNet 和 CIFAR 等中小型数据集上,都获得了 SOTA 性能体现。与基于 CNN 的视觉畛域大型骨干网络(backbone)相同,ViT 须要的训练资源较少。不过,即使是绝对较少的训练资源,中小型钻研机构也难以累赘。此外,尽管上述办法在原理上能使 Transformer 模型更好地利用于视觉畛域,但还存在其余难点,ViT 原始论文和后续论文也提出了相应的解决办法。
3
Transformer 模型在视觉畛域的利用难点
第一个难点是,Transformer 模型无奈辨别 input token 的排列地位变动。也就是说,Transformer 模型不能了解 input token 之间的地位关系。 在 NLP 工作中,token 在序列中的 1D 地位信息十分重要,因为地位信息代表了语序,对此,Transformer 的解决办法是对 token embedding 进行地位编码。
将地位信息编码到一个 token embedding,即为每个 token 的地位信息独自生成一个维度为 D 的向量,称为 positional embedding,而后将它增加到 token embedding 中,再传入 Transformer 模型。Positional embedding 可能是可学习的,也可能是固定的,它的生成形式是依据相应 token 的地位在不同频率的正弦曲线上的不同地位采点(Vaswani et al. 2017)。
Positional embedding 也称为傅里叶特色。通过上述办法,能够为任意长度的序列生成 positional embedding,因而,Transformer 模型能够解决任意长度的句子。
然而,ViT 模型更为辣手,因为它须要复原图像块的 2D 地位信息——即该图像块截取自原图像的哪一个区域。要做到这一点,ViT 对每 N 个 input token 应用可学习的 1D positional embedding,由 N 个可学习的维度为 D 的向量组成。训练时,对 positional embedding 没有显式监督,也就是说,ViT 并不能了解 input token 之间的理论 2D 关系。
不过,Dosovitzky 等人通过计算每对 positional embedding 之间的相似性后发现,ViT 习得的 positional embedding 的确蕴含相应图像块的 2D 地位信息。这一重大发现证实了 Transformer 架构的弱小性能和通用性。
然而,这种办法须要在训练中将输出序列的长度 N 调整为固定值。图像块的大小也须要固定(否则就会影响 linear embedding 层),这意味着要将输出图像调整为固定分辨率能力用于训练,因为小批次训练要求每批次中所有输出图像的分辨率雷同,在 CNN 模型中则不须要这样做。在 ViT 模型中,推理时也须要调整图像块大小,即调整输出图像的分辨率,因为分辨率过大会导致 input token 序列过长。
如图 4 中的例子,图像块大小仍然是后面提到的 16 × 16,那么一张大小为 128 × 128 的图像就会被分为 64 个图像块。后面提到,训练时一张大小为 64 × 64 的图像被分成 16 个图像块,那么 ViT 模型就只习得 16 个 positional embedding,这时模型须要将这 16 个 positional embedding 泛化从而适应不同的分辨率,同时保障它们所代表的 2D 地位信息仍然残缺。
好在,代表同一 2D 地位关系的各个 positional embedding 具备相似性,因而能够采纳 2D 插值(interpolation)将它们泛化,以适应任意分辨率,同时保留所习得的地位信息(图 4)。这一办法由 Dosovitskiy 等人提出,它看似可行,但原始论文并没有对这种办法进行量化预计。原始论文中,所有用于训练的图像被升高至罕用的 224 × 224 分辨率,用于微调(fine-tuning)的图像则调至更高分辨率。
图 4:将 positional embedding 从 4 × 4 个图像块重采样为 8 × 8 个图像块
其次,这种办法会导致每个图像块内像素点之间的地位关系失落,还会导致密集预测(dense prediction)工作只能在图像块档次实现。 例如语义宰割中的逐像素点分类工作。这就要求咱们在表现力和吞吐量之间做出取舍:图像块尺寸较小(最小尺寸为 1 × 1 px)能够更大程度地保留原图像的底层空间关系,取得密集的潜在表征(latent representation),但会导致吞吐量变小,所需内存空间也会大得难以实现。
为了解决这个问题,一些晚期论文提出将注意力机制限度在本地像素邻域中(http://proceedings.mlr.press/…),或者采纳下采样(downsampling),将输出图像的分辨率调整得十分小(http://proceedings.mlr.press/…;https://openreview.net/forum?…)。如果图像块大小达到最高限度,即单个图像块即蕴含整张原图,则没有可用的地位信息,这时 token embedding 层就会成为模型架构中的瓶颈,重大影响模型性能。
同样,各图像块边缘的邻近像素点之间的地位关系也会失落。分块操作不受图像内容的影响,也就是说,图像的分块形式是随便的,有可能导致分出的每个图像块中各个像素点之间的情境关联并不大,进而导致从输出图像中习得的重要特色无奈间接利用到图像块上,须要通过相应的 token embedding 进行重组。这就减少了上游工作(downstream task)的难度,也对 patch embedding 层提出了更高要求,还导致难以实现平移不变性。
最初,如前所述,规范的 Transformer 架构中,随着输出序列变长,运行所消耗的工夫和内存空间都会呈二次方增长。 因而,ViT 模型不适宜解决高分辨率图像和其余高维数据,也不宜将图像块设置得太小。为了解决以上难题,ViT 模型首度公开不久后就呈现了许多变体。
4
Vision Transformer 模型倒退现状
接下来咱们将介绍一些 ViT 模型变体,它们进一步推动了计算机视觉的 SOTA 性能,并解决了局部上述提到计算机视觉利用难题。
DeiT 模型(Data-Efficient Image Transformer)
Touvron 等人通过数据加强(data augmentation)等精密训练策略,在不依附大型专有数据集的状况下实现了杰出的模型性能(仍然以 ImageNet 图像分类工作为衡量标准),这一点与原始 ViT 模型相同,ViT 模型是在 Google 的 JFT-300M 闭源数据集上训练的。
Touvron 等人还应用一种专门针对 Transformer 模型的蒸馏(distillation)技术进一步改良 ViT 模型。将一个性能弱小,但可能宏大而难以训练的 teacher 模型“蒸馏”为一个基于 Transformer 架构的 student 模型,做法和 Hinton 等人提出的”常识蒸馏“类似(Hinton et al. 2014)。这种模型称为 DeiT 模型(Data-Efficient Image Transformer)。
与图 5 所示类似,distillation token 的输入示意被输出到额定的 classification head 中用于预测 teacher 模型的输入标签。[CLS] token 依照惯常做法被传入(另一个)classifier head 取得实在分类标签。总损失函数是应用实在标签计算出的惯例穿插熵损失的加权平均值和基于 distillation classifier head 的 logit 输入与 teacher 模型 logit 输入的 KL 散度 (Kullback Leibler divergence) 的损失项。这样,Transformer 中,student 模型就能够借助 teacher 模型来晋升本身的训练速度和品质。
图 5: DeiT 的特色蒸馏(图片来自相应论文)
此外,更强的数据加强可能会导致图片不合乎其实在标签,例如当裁剪出的图像块没有蕴含原图标签所指物体(图 6)。为了缓解这个问题,能够应用一个不仅基于实在标签,而且基于 teacher 模型所预测标签的损失。此外,一些图像的分类标签可能不够明确,因为只管图像可能蕴含多种物体,但每张图像只关联一个标签。
他们应用弱小的 CNN 分类器显著进步了 student 模型的基准体现,这可能是利用了 teacher 模型中蕴含的演绎偏置,采纳这种形式能够在不须要太多的训练数据的状况下从头开始训练 Transformer 模型。事实上,蒸馏得出的模型性能优于 teacher 模型,并在 ImageNet 图像分类工作上获得了 SOTA 性能,放大了 Transformer 模型和 CNN 模型之间的差距。
DeiT 模型放慢了训练速度,用 ImageNet 训练 DeiT 只需 4 块 GPU 训练 3 天。尽管它的性能不如那些在 JFT-300M 等更大型数据集上预训练的 ViT 模型,但它的计算成本要小得多。
图 6:来自 ImageNet 数据集的示例图像(左),对其进行裁剪会产生不同的标签(右)
Swin Transformer 模型(Shifted Windows Transformer)
为了解决 ViT 模型中图像块边缘空间信息局部失落和计算复杂度二次方增长的问题,Liu 等人引入了一种基于分层特色图和移位窗口(shifted window, Swin)的 ViT 模型(Liu et al. 2021)。Swin Transformer 有两个外围奉献,如图 7 所示。
图 7:Swin 中的分级特色图(上)与后续神经网络层窗口移位(下)(图源:https://openaccess.thecvf.com…)
首先,为了升高计算复杂度,自注意力机制的计算范畴限度在非重叠层本地窗口内,每个窗口默认蕴含 7×7 个图像块。(图 3 为了不便图解,将窗口描述为 4×4 个图像块。)Swin Transformer 模型共有 4 个阶段,为了解决输出图像中的非本地大型空间关系信息,图像块序列通过每个阶段时都会被下采样。下采样由可训练的线性层实现,将 2×2 个图像块连接起来进行下采样,将特色维度扩充 2 倍,使下采样效率晋升 2 倍。
由此造成了一个特色金字塔,能够用在须要密集本地计算和全局特色的工作中,与传统 U -Net 架构中生成的特色金字塔类似(Ronneberger et al. 2015)。与特色金字塔相似,SIFT 和 SURF 等经典图像处理算法中会应用图像金字塔来获取尺度不变特色(scale-invariant feature)。默认状况下,Swin Transformer 并不解决[CLS] token,而是将最初一个阶段已均匀的特色喂入 classification head,后者用于依据 ImageNet 数据集对模型进行有监督训练。
此外,每个阶段中,基于移位窗口有两种不同的图像块切分形式(图 7)。此处,移位窗口蕴含之前已拆散且不参加自注意力机制计算的图像块。论文显示,在 ImageNet 图像分类工作、COCO 指标检测工作和 ADE20k 语义宰割工作中应用移位窗口,都能够实现比动态窗口高得多的性能。总体而言,因为每个窗口的图像块数量固定,因而 Swin Transformer 的内存和计算复杂度从二次方增长升高为线性增长,性能比原始 ViT 模型和 DeiT 模型更加杰出。
除了 Swin Transformer,NLP 和计算机视觉畛域还有很多办法能够基于规范双向 softmax 自注意力机制升高 Transformer 模型的计算复杂度,包含应用 softmax 自注意力机制的稠密近似或低秩近似(low-rank approximation)(Wang et al. 2020, Zaheer et al. 2020, Kitaev et al. 2020, Choromanski et al. 2021),调整注意力机制(Ali et al. 2021, Jaegle et al. 2021, Lu et al. 2021, Jaegle et al. 2022),优化规范办法——例如优化 IO 操作等(Dao et al 2022)。为了对不同的 Transformer 架构进行深度比拟,咱们应用的是 Long Range Arena 这一较新的评估基准(Tay et al. 2021)。
DINO 模型(Self-distillation with no labels)
目前谈及的 ViT 模型都通过有监督的分类工作(预)训练。Caron 等人从另一个方向进行钻研,在 DeiT 的根底上构建了一种自监督训练 ViT 模型,也获得了良好成绩。这种模型无需应用 DeiT 所用的显式 teacher 模型,而是引入了一种无标签自蒸馏(self-distillation with no labels, DINO,https://openaccess.thecvf.com…)办法。
图 8:DINO 架构。图源 Meta AI 文章
如图 8 所示,teacher 模型被定义为 student 模型的指数挪动平均值(EMA),student 模型是一个规范的 ViT 模型。NLP 畛域常见的自监督训练方法应用遮罩(masking)和 input token 序列补全办法来防止模型坍塌(Devlin et al. 2019, Brown et al. 2020),而视觉畛域的自监督学习通常应用的是比照损失(contrastive loss)。在比照学习框架中,两个版本的神经网络解决雷同(或不同)的加强图像,经过训练致力输入雷同(或不同)的示意。
然而,与近来的 BYOL (Grill et al. 2020)、Barlow Twins (Zbontar et al. 2021)和 VICReg (Bardes et al. 2022)等自监督学习办法类似,DINO 并不通过比照损失显式利用负样本。相同,DINO 将同一输出图像的两个加强版本别离传入 student 模型和 teacher 模型,teacher 模型解决一张原图像的全局裁剪(涵盖输出图像的较大区域),student 模型解决一张原图像的部分裁剪(涵盖输出图像的较小区域)。应用简略的 MLP projection head 从[CLS] token 的输入示意中失去预测的 softmax logit,而后用穿插熵损失与 teacher 模型中的 logit 进行比拟。梯度只在 student 模型网络中流传。
还有其余工程办法能够防止模型坍塌,这些办法的外围概念都是使 student 模型预测出一个与 teacher 模型的预测后果类似的图像示意——teacher 模型解决的输出图像与 student 模型的略有不同——这样能够晋升从部分到全局的关联性。用 ImageNet 图像和自蒸馏办法训练 DINO(不应用标签),后果发现 DINO 能够在无监督的状况下为同一标签下的图像生成类似的示意。DINO 通过简略的 KNN 分类器和潜在图像表征就在无监督 ImageNet 图像分类工作上获得了杰出体现。
论文还显示,DINO 能够高效学习蕴含输出图像语义宰割信息的示意(图 9)。为了提供正当分辨率的语义宰割映射,DINO 中的图像块尺寸为 4×4,比 ViT 和 DeiT 的都小得多。基于 DINO 示意的天然语义集群,近期一些论文还探讨了自监督语义宰割(Hamilton et al. 2022)。
图 9:规范视觉骨干网络无监督训练失去的宰割图(上)DINO 无监督训练失去的宰割图(下)(图片来自相应论文)
5
总结
多年来,Transformer 模型成为 NLP 的首选模型,现在,Transformer 也逐步取代 CNN 成为计算机视觉畛域的 SOTA 模型。ViT- L 和 ViT- H 等大型 Transformer 模型也被视为根底模型,它们在作为通用型视觉骨干网络应用时也体现出优异性能,特地是利用大型数据集训练之后。
然而,Transformer 模型利用于图像和视频时还存在不少难点,业内正在进行踊跃钻研。咱们还须摸索高样本效率的自监督学习策略和使 Transformer 模型更适应特定畛域或数据集的办法,置信也会引发更多应用型计算机视觉钻研。
许多支流的 Vision Transformer 架构都由 Google (原始 ViT)、Microsoft (Swin)、Huawei (TNT)、OpenAI (iGPT)、Meta (DINO)等科技巨头研发,须要应用大量计算资源。为了升高从零开始训练 Vision Transformer 的计算复杂度、硬件要求和数据要求,业内进行了大量钻研。本文介绍了一部分但未能穷举。置信 Vision Transformer 在视觉畛域的使用将会越来越胜利。
(本文经受权后由 OneFlow 编译公布,译文转载请分割 OneFlow 取得受权。原文:1. https://medium.com/merantix-l…;2. Merantix Momentum GitHub: https://github.com/merantix-m…)
欢送下载体验 OneFlow v0.8.0 最新版本:https://github.com/Oneflow-In…