熟悉 ViT(Vision Transformer)训练视觉模型的基本原理以及其典型方法(如 MAE,Mask Autoencoding)
文中以下面形式引用 ChatGPT 答复:
提问
ChatGPT 的回答
ViT 模型出现的时间、paper、提出人
ViT 模型是由 Anish Athalye、Nicholas Carlini 和 David Wagner 等人于 2020 年在《Advances in Neural Information Processing Systems》会议上发布的论文**《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》**中提出的。该论文开创性地将 Transformer 应用于计算机视觉领域,提出了一种名为 Vision Transformer(ViT)的模型,用于图像分类等计算机视觉任务。
paper 链接:http://arxiv.org/abs/2010.11929: v1(2020.10), v2(2021.6)
摘要:
While the Transformer architecture has become the de-facto standard for natural language processing tasks, its applications to computer vision remain limited. In vision, attention is either applied in conjunction with convolutional networks, or used to replace certain components of convolutional networks while keeping their overall structure in place. We show that this reliance on CNNs is not necessary and a pure transformer applied directly to sequences of image patches can perform very well on image classification tasks. When pre-trained on large amounts of data and transferred to multiple mid-sized or small image recognition benchmarks (ImageNet, CIFAR-100, VTAB, etc.), Vision Transformer (ViT) attains excellent results compared to state-of-the-art convolutional networks while requiring substantially fewer computational resources to train.
虽然 Transformer 体系结构已经成为自然语言处理任务的事实上的标准,但它在计算机视觉方面的应用仍然有限。在视觉上,注意力要么与卷积网络结合使用,要么用于替换卷积网络的某些组件,同时保持其整体结构不变。我们表明,这种对 CNN 的依赖是不必要的,直接应用于图像块序列的纯变换可以很好地执行图像分类任务。在对大量数据进行预训练并传输到多个中型或小型图像识别基准(ImageNet、CIFAR-100、VTAB 等)时,Vision Transformer(VIT)与最先进的卷积网络相比获得了出色的结果,同时需要训练的计算资源大大减少。
在 ViT 出现之前,Transformer 在视觉领域上使用都有哪些难点、痛点
- 需要大量的计算资源:由于图像具有高分辨率和大量的像素,如果直接使用 Transformer 进行计算会产生庞大的计算量,因而需要大量的计算资源和更复杂的计算方法。
- 缺乏位置信息的输入:Transformer 主要是用于处理序列数据,在其应用于视觉任务时,需要将图像分成小块或将其压缩为一个向量,这样会导致一定程度上的信息丢失,尤其是位置信息的丢失,这在图像分类等任务中往往起着至关重要的作用。
- 对于输入序列的长度敏感:由于 Transformer 的计算复杂度与输入序列的长度相关,因而对于不同大小的图像,需要进行不同的调整来处理,这将会带来时空复杂度方面的问题。
- 无法处理变长输入:由于图像的大小和比例各不相同,需要根据实际情况对输入图像进行缩放和裁剪,这将使得数据的大小和形状不同,从而难以处理。
Transformer Paper: http://arxiv.org/abs/1706.03762
描述一下 Transformer 模型中的注意力机制
在 Transformer 模型中,注意力机制是其中非常重要的组成部分。注意力机制本质上是一种加权平均,可以将输入序列中每个位置的信息集成到其他位置上。以自注意力机制(self-attention)为例,它将输入序列中的每个元素(也就是向量)映射到三个向量上,分别是查询向量(query)、键向量(key)和值向量(value)。这些向量由输入序列的线性变换得到,不同的线性变换矩阵用于产生不同的查询、键和值向量。 接着,为了计算任何一个位置的表示,我们需要将该位置的查询向量与所有包括自身在内的键向量进行点积,然后再对这些结果进行归一化,形成一个权重分布。最后将该位置的值向量与这些归一化权重相乘,并将它们相加起来,这就产生了该位置的表示,如下述公式所示: 在 Transformer 模型中,自注意力机制不仅可以在编码器中使用,而且可以在解码器中使用,以实现对输入序列和已经生成的部分解码序列的强大的交互和联合建模能力。注意力机制的加入使得模型能够有效地处理各种序列数据,这也是 Transformer 模型在语言模型和其他自然语言处理任务上取得成功的原因之一。
介绍一下 ViT 模型的核心内容
ViT (Vision Transformer) 是一种使用 Transformer 结构进行图像分类的模型。该模型由 Google Brain 提出,旨在探索将 Transformer 应用于 计算机视觉任务的可能性。 ViT 模型首先将图像分解成一组固定大小的图块,每个图块通过预定义的线性投影映射到一个向量空间中。接下来,模型使用 Transformer 结构对这些向量执行自注意力操作,并在不同的 Transformer 块之间添加全局平均池化操作,最终将这些向量输入到一个全连接层进行分类。 与传统的卷积神经网络相比,ViT 模型的架构更加简单明了,并且具有更高的灵活性,能够处理输入图像的大小和分辨率的变化。此外,ViT 模型在一些计算机视觉基准测试上取得了与最先进的卷积神经网络相当的性能。 然而,相对于传统的卷积神经网络,ViT 模型需要更多的计算资源和更长的训练时间,因为它需要处理大量的小块图像,并且由于 ViT 排列成网格状,使得其对于一些位置相关性较强的视觉任务表现不如 CNN。 ViT 模型的出现和成功应用,为使用 Transformer 解决视觉领域的问题提供了新的思路和方法。
ViT 论文中最核心的结论是:当拥有足够多的数据进行预训练的时候,ViT 的表现就会超过 CNN,突破 transformer 缺少归纳偏置的限制,可以在下游任务中获得较好的迁移效果。
在 nlp 中,输入 transformer 中的是一个序列,而在视觉领域,需要考虑如何将一个 2d 图片转化为一个 1d 的序列,最直观的想法就是将图片中的像素点输入到 transformer 中,但是这样会有一个问题,因为模型训练中图片的大小是 224*224=50176,而正常的 bert 的序列长度是 512,是 bert 的 100 倍,这个的复杂度太高了。
ViT 怎么做前向(上图右侧):将图片切分成 16x16 的 patch,每一个 patch 作为一个 token 输入到 transformer
- 每个
224*224
的图片得到 196 个 patch - 每个 patch
16*16*3=768
维向量(3 是 RGB 通道个数) - 给每个 patch embedding 加上一个 position embedding(cls),196 个 patch 得到 196 个位置—— 借鉴 bert
- 所以整个输入是
197*768
维向量
ViT 模型对后续的 Transformer 视觉模型的影响和继承关系
ViT 模型作为一种将 Transformer 模型应用于计算机视觉任务的先驱,对后续的 Transformer 视觉模型有着重要的影响和启发作用。对于后续的 Transformer 视觉模型,可以总结出以下的继承和影响关系:
- 缩小网络规模:ViT 模型的提出标志着 Transformer 模型在视觉领域的应用实现。但是,由于 ViT 模型中需要划分为固定的图块以适应 Transformer,这会导致模型对输入分辨率的敏感度而不适用于高分辨率图像。后续的 Transformer 视觉模型例如 DETR 和 Swin Transformer 等,都在模型压缩和性能提升上做出了改进和优化,使得模型更加轻量化、高效。
- 使用不同的位置编码:ViT 模型中使用的绝对位置编码方式是基于位置信息的,每个位置的编码都是固定的,而这可能会对模型的泛化能力造成一定的影响。因此,一些后续的模型也尝试了使用相对位置编码等更加灵活、多样化的位置编码方式,来增强模型的泛化和适应能力,例如 Swin Transformer 和 PVT 等模型。
- 增加特征金字塔结构:ViT 模型在将高分辨率图像转换为小块特征表示上存在一定的局限性。一些后续模型,例如 Swin Transformer 就利用特征金字塔结构(FPN)来实现多层特征的融合,获取更全局和复杂的上下文信息,并进一步提升模型的性能。 总之,ViT 模型的提出为 Transformer 模型在视觉领域 的应用开启了新的方向和思路。后续的 Transformer 视觉模型在融合更多优秀技术的同时,也不断突破和完善着基于 Transformer 的计算机视觉模型框架。