vision transformer(vit)笔记
一张图片相当于16×16个单词:用于图像尺度识别的Transformer模型
3.模型

3.1第一部分
目的:得到transformer的输入(Z0)

在NLP领域中,在模型处理过程中采用tokens(词元)作为输入形式即每一个单独的单词以确保最大限度地利用transformer模型的能力我们首先要对图片进行预处理。

1. 我们接收的图片具有[H,W,C](长、宽、通道数)的空间维度结构
首先需要将其转换为N×(P×P×C)的空间表示形式(其中N代表分解成的小块数量)**
假设输入图像尺寸为224×224×3(RGB三通道),我们将图像划分为多个16×16大小的小块 patch(在公式中表示为x),则N=224×224/(16×16)=196个这样的小块**
2. 每个 patch 经过全连接层线性投影操作(Linear Projection),生成E空间中的表征
3. 将 patch embedding 与 class embedding 集成在一起
值得注意的是 class token 在分类任务中起着关键作用,在此场景中我们可采用全局平均池化替代方案(即将N设为196+1=197)**
4. 最终获得所有的 tokens 并对其进行位置编码以提升模型性能

在自然语言处理领域中采用了一种称为一维的位置编码的方法。研究者进行了多个实验比较:未加置位码的情况、采用一维置位码的方法、二维置位码策略以及相对置位码的设计。发现这些方法之间的差异并不显著。以保持一致性为目标,在本文的分析过程中将主要采用一维的位置编码策略。
为什么需要引入位置编码?由于自注意力机制本质上是基于元素之间的相互作用,并没有固有的顺序关系。例如,在自然语言处理任务中,“猫吃老鼠”与“老鼠吃猫”的语义差异微乎其微;而在图像处理任务中,“打乱图像块的顺序也不会对最终结果产生显著影响”。然而这显然不符合我们的预期目标——即需要能够反映元素间的相对顺序关系的技术手段就必须引入这一方法。
3.2第二部分transformer encorder


该文主要介绍了MSA(多头自注意力架构)、LN(层归一化)以及MLP(深度前馈网络)等关键组件的设计与实现。在本文中未作详细阐述,请具体可参考《attention is all you need》这篇论文中的相关内容。此外,在实验设计中仅采用了编码器结构而未采用解码器结构。
3.3MLP Head


经过L层循环后, 将Z_L^0(即最后一层输出的第一个位置上的值, 代表类token所对应的输出)作为整体图像的特征表示, 用于执行此分类任务; 其中MLP头部分由LayerNorm和两层全连接层组成, 并且采用了tanh激活函数。
4结果

针对不同尺寸的VIT架构展开测试的结果显示,在预训练于JFT时,采用超大型VIT架构与ResNet相比精度提升有限;然而,在TPUv3平台上仅需2500天即可完成训练(后者则需要持续9900天的训练周期)。

那么我们如何确定应用VIT所需的最少数据集数量?【
