ViT(Vison Transformer)学习
Paper:An image is worth 16×16 words: transformers for image recognition at scale. In ICLR, 2021.
Transformer 在 NLP领域大放异彩,并且随着模型和数据集的不断增长,仍然没有表现出饱和的迹象。这使得使用更大规模的数据对Transformer结构进行训练得到表现更优的模型成为了一种解决问题的方案。受 NLP 中 Transformer 成功的启发,作者尝试将标准 Transformer 直接应用于图像,并进行尽可能少的修改。为此,作者将图像拆分为补丁,并提供这些补丁的线性嵌入序列作为 Transformer 的输入。 在 NLP 应用程序中,图像补丁的处理方式与标记(单词)相同。 并以监督方式训练图像分类模型。
模型概述
主要流程如下:
- 将图像分割成固定大小的块,作为三维张量
- 将三维张量向量化为一维序列
- 对一维序列采用共享参数的Dense层进行嵌入
- 将线形层输出结果进行位置嵌入编码,输入给多层Transformer叠加的 Transformer Encoder 进行编码
- 对编码结果进行 Softmax,以输出作为分类矩阵
张量向量化
将分割的图像块张量扁平化为向量
对向量进行嵌入
采用Dense层对向量进行嵌入
同时,所有的 Dense 层共享参数信息
对 embedding 进行位置编码
即对位置信息进行编码并与 embedding 进行加和
使用Transformer Encoder 进行处理
将编码结果输入多层堆叠的 Transformer,并最终使用 [CLS] 的输出作为分类结果
大数据集预训练
模型在大规模数据集上进行预训练,在目标数据集上进行 finetuning ,并最终在目标数据集的测试集上进行测试