视觉变压器 (ViT)

这是论文《图像值得 16x16 Words:大规模图像识别的变形金刚》的 PyTorc h 实现。

视觉变换器将纯变换器应用于没有任何卷积层的图像。他们将图像拆分为补丁,然后在补丁嵌入上应用变换器。补丁嵌入是通过对面片的扁平化像素值应用简单的线性变换来生成的。然后将标准变压器编码器与补丁嵌入以及分类令牌一起馈送[CLS][CLS] 令牌上的编码用于使用 MLP 对图像进行分类。

向@@

变压器提供补丁时,学习的位置嵌入会添加到补丁嵌入中,因为补丁嵌入没有关于补丁来自何处的任何信息。位置嵌入是每个面片位置的一组向量,这些向量通过梯度下降以及其他参数进行训练。

VIT 在大型数据集上进行预训练时表现良好。本文建议使用 MLP 分类头对它们进行预训练,然后在微调时使用单个线性层。该论文在3亿张图像数据集上预先训练了ViT,击败了SOTA。它们还在推理过程中使用更高分辨率的图像,同时保持补丁大小不变。新面片位置的位置嵌入是通过插值学习位置嵌入来计算的。

这是一个在 CIFAR-10 上训练 ViT 的实验。这样做不太好,因为它是在一个小数据集上训练的。这是一个简单的实验,任何人都可以运行和玩VIT。