ViT的baseline
论文研究的是谷歌ViT论文提出的两个原生ViT模型:ViT-B/16和ViT-L/16,同时加上DeiT论文中提出的两个更小的模型:ViT-Ti/16和ViT-S/16,这4个模型的patch_size均为16x16,主要的区别在于模型的参数设置,即采用不同的depth,width和heads:
其原始架构图如下所示
- 可以看到首先输入图片分为很多 patch。
- 将 patch 输入一个 Linear Projection of Flattened Patches 这个 Embedding 层,就会得到一个个向量,通常就称作 token。
- 紧接着在一系列 token 的前面加上加上一个新的 token(类别token,有点像输入给 Transformer Decoder 的 START,就是对应着 * 那个位置),
- 此外还需要加上位置的信息,对应着 0~9。
- 然后输入到 Transformer Encoder 中,对应着右边的图,将 block 重复堆叠 L 次。
- Transformer Encoder 有多少个输入就有多少个输出。
- 最后只进行分类,所以将 class 位置对应的输出输入 MLP Head 进行预测分类输出。
ViT B 对应的就是 ViT-Base,ViT L 对应的是 ViT-Large,ViT H 对应的是 ViT-Huge
the smallest model (ViT-B) containing 86M parameters.