视觉变形器(ViT)--使用变形器进行图像识别
一张图片值多少字?这篇[论文]告诉我们,一张图片的价值是16×16个字。让我解释一下他们的意思,以帮助你更好地理解。
前提条件
为了理解这篇文章的内容,读者应该对自然语言处理(NLP)和卷积神经网络(CNN)有一个基本的了解。
绪论
变换器是在本文[中]提出的,用于机器翻译,但后来成为解决NLP任务的主要架构,如语音识别和文本总结。它们是NLP最近发展的背后,包括OpenAI的GPT-3和谷歌的BERT。
在此之前,已经有人尝试过将变换器用于图像识别任务。这些尝试要么是将变换器与卷积网络一起使用,要么是通过替换某些模块来改造卷积网络。在这篇发表的[论文]中,他们根本没有依赖CNN。
他们纯粹依靠标准的变换器架构,这是自然语言处理(NLP)中的主流架构。他们所做的唯一技巧是将输入图像分解为一连串的图像补丁(16 x 16),作为标准转化器输入。但转化器架构的其余部分保持不变。
这些图像斑块被视为与NLP背景下的单词(tokens)一样的方式。因此,将16×16的输入图像看作是16×16的单词之间的关系。
结果显示,这种新型架构的表现优于最先进的CNN,被称为图像识别的主流网络架构。
该模型的概述
该模型的第一步是将输入图像划分为一连串的图像斑块。本文将图像分为16 x 16个维度,因此论文的标题就是这样。
然后,这些图像斑块被传递到一个可训练的线性投影层。该层起到了嵌入层的作用,并输出固定大小的向量。
然后,位置嵌入被线性地添加到图像补丁的序列中,以便图像可以保留其位置信息。它注入了关于序列中图像斑块的相对或绝对位置的关键信息。
位置嵌入模块中需要注意的一个重要特征是第0类。这个第0类的概念是从BERT的类标记中借用的。像其他类一样,这个类也是学习的,但它并不是来自于它的图像。相反,它是在模型架构中硬编码的。
下面的图片展示了位置嵌入工作背后的想法。
如果我们不向转化器提供位置信息,它就不知道图像的顺序(哪个先来,哪个后来的图像)。然后,这个矢量图像的序列被送入转化器编码器。
变换器编码器模块包括一个多头注意层和一个多层感知器(MLP)层。虽然我们对MLP层很熟悉,但多头注意层在变换器中是一个新事物。
多头注意层将输入分成几个头,以便每个头可以学习不同程度的自我注意。然后,所有头的输出被串联起来并通过多层感知器。
同样重要的是要注意,转化器在每个块之前和残差块之后都会应用规范化层(层规范)。
最后,一个额外的可学习分类模块(MLP头)被添加到转化器编码器中,给出网络的输出类别。
结果
1.准确率
当ViT模型在ImageNet-21k数据集和JFT-300M数据集上进行预训练时,该模型在许多图像识别基准上战胜了最佳模型。
例如,ViT的最佳模型达到了以下精度。
- 在ImageNet上为88.55%。
- 在ImageNet-ReaL上为90.72%。
- 在CIFAR-100上为94.55%。
- 在VTAB的19项任务中达到77.63%。
2.数据集大小的影响
数据集的大小似乎在视觉转化器模型中起着重要作用。由于变换器缺乏CNN中存在的固有偏见,即位置性、等价性和平移性,它们在中等规模的数据集(如ImageNet)上往往概括性很差。
但是,当在ImageNet-21和JFT-300M(谷歌的内部数据集)上进行训练时,这些数据集是具有约1400万至30000万张图像的更大的数据集,发现归纳偏见的表现要好于它。他们还发现,随着数据集的扩大,准确率也会提高。
这些结果显示如下。
3.任务转移
任务转移指出,知识应该在任务之间转移。例如,如果第一个任务是对猫和狗进行分类,而第二个任务是对马和牛进行分类,你应该在这两个任务组之间进行知识转移。
这是因为它们都是四条腿的动物。因此,给猫和狗分类的知识也应该与给马和牛分类的知识相似。
在对视觉任务适应基准(VTAB)进行评估时,发现视觉转化器模型在自然、专业和结构化任务组上的表现优于以前的模型。
4.注意力图
他们使用本文提出的Attention Rollout来计算从输出词到输入空间的注意力图。
他们的实验结果显示如下。
模型的总结
- Vision Transformer(ViT)需要的训练计算能力大大降低。训练它需要2.5k TPUv3-天。这看起来很多,但与目前最先进的方法相比,它仍然较少。
- 巨大的模型(ViT-H)通常比大型模型(ViT-L)做得更好,并在与最先进的方法的竞争中获胜。
- 注意力滚球是用来计算注意力图的。
- 像GPT-3和BERT模型一样,视觉转化器模型也可以扩展。
- 大规模的训练优于归纳性偏差。
总结
在这篇文章中,我们已经探讨了如何将变换器直接应用于图像识别。这与之前提出的使用注意力与CNN或改变CNN中的模块的架构相比,是一个转变。我们已经看到,在该架构中没有引入任何归纳偏见,如定位和等值。
相反,只使用了一个标准的变换器编码器。他们使用的唯一技巧是将输入图像转化为16 x 16图像补丁的序列。这是一个简单的、可扩展的架构,并且优于最先进的架构,特别是在大型数据集(如JFT-300M数据集)上训练时。对模型进行预训练也相对便宜。
变形器完全取代了NLP中的长短时记忆(LSTM)。现在,他们的目标是取代卷积神经网络(CNN)。这是一个很有前途的模型,可能会在未来使CNN灭绝,但还没有。该模型要完成其他计算机视觉任务,如图像分割和检测,仍然是一个挑战。