Vision Transformer(VIT)是Google提出的基于Transformer的图片分类模型。在VIT模型中图像被表示为序列,图像的类标签被预测,这允许模型独立学习图像结构。输入图像被视为一系列补丁,其中通过连接补丁中所有像素的通道然后将其线性投影到所需的输入维度,将每个补丁展平为单个向量。
Vision Transformer模型在图像识别任务中有广泛的应用,例如对象检测、图像分割、图像分类和动作识别。此外,Vision Transformer还应用于生成建模和多模型任务,包括视觉基础、视觉问答和视觉推理等。
Vision Transformer是如何进行图片分类的?
在深入研究Vision Transformers的工作原理之前,我们必须了解原始Transformer中的注意力和多头注意力的基础知识。
Transformer是一种使用称为自注意力机制的模型,既不是CNN也不是LSTM,它构建了一个Transformer模型并显着优于这些方法。
Transformer模型的注意力机制使用了三个变量:Q(Query)、K(Key)和V(Value)。简单地说,它计算一个Query token和一个Key token的注意力权重,并乘以每个Key关联的Value。即Transformer模型计算Query token和Key token之间的关联(注意力权重),并将与每个Key关联的Value相乘。
定义Q、K、V计算为单头,在多头注意力机制中,每个头都有自己的投影矩阵W_i^Q、W_i^K、W_i^V,它们分别计算使用这些矩阵投影的特征值的注意力权重。
多头注意力机制允许每次都以不同的方式关注序列的不同部分。这意味着:
该模型可以更好地捕获位置信息,因为每个头将关注不同的输入部分。它们的组合将提供更强大的表示。
每个头还将通过唯一关联的单词来捕获不同的上下文信息。
到此我们知道了Transformer模型的工作机制,再回过头看看Vision Transformer模型。
Vision Transformer是将Transformer应用于图像分类任务的模型,于2020年10月提出。模型架构与原始Transformer几乎相同,它允许将图像视为输入,就像自然语言处理一样。
Vision Transformer模型使用Transformer Encoder作为基础模型从图像中提取特征,并将这些处理过的特征传递到多层感知器(MLP)头部模型中进行分类。由于基础模型Transformer的计算量已经非常大,因此Vision Transformer将图像分解成方形块,作为一种轻量级“窗口化”注意力机制来解决此类问题。
然后图像会被转换为方形补丁,这些补丁被展平并通过单个前馈层发送以获得线性补丁投影。为了帮助分类位,通过将可学习的类嵌入与其他补丁投影连接起来。
总之,这些补丁投影和位置嵌入形成了一个更大的矩阵,很快就会通过Transformer编码器。然后将Transformer编码器的输出发送到多层感知器以进行图像分类。输入特征很好地捕捉了图像的本质,使MLP头的分类任务简单得多。
ViT与ResNet与MobileNet的性能基准比较
虽然ViT在学习高质量图像特征方面显示出卓越的潜力,但它在性能与精度增益方面较差。准确性的小幅提高并不能证明ViT的运行时间较差。
Vision Transformer模型相关
- 微调代码和预训练的Vision Transformer模型可在Google Research的GitHub上访问。
- Vision Transformer模型在ImageNet和ImageNet-21k数据集上进行预训练。
- Vision Transformer(ViT)模型在ICLR 2021上发表的标题为“An Image is Worth 16*16 Words:Transformers for Image Recognition at Scale”的会议研究论文中被引入。