ViT论文解读


论文: 《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》
代码: https://github.com/google-research/vision_transformer

创新点

作者表明在视觉任务上,CNN并不是必须的,Transformer也可以很好的执行分类任务;与CNN SOTA方法相比,ViT使用更少训练资源,取得不错结果;

算法

CNN具有两个归纳偏置:
局部性:比如椅子桌子在一起;
平移不变性;
transformer不具有这些性质,因此当数据量不充足时
,无法很好泛化;但是我们发现大规模训练胜过归纳偏置
;最好的模型在 ImageNet 上达到 88.55%,在 ImageNet-ReaL 上达到 90.72%,在 CIFAR-100 上达到 94.55%,
ViT结构如图1所示,
在这里插入图片描述
ViT过程如式1,2,3,4;MSA结构参考Transformer结构解读
在这里插入图片描述
ViT标准输入图片为 C ∗ H ∗ W C*H*W CHW,将其转化为二维向量 x p , x p ∈ N × ( P 2 ∙ C ) , N = H W / P 2 x_p,x_p\in N\times(P^2\bullet C),N = HW/P^2 xp,xpN×(P2C)N=HW/P2,每个Patch经过embedding矩阵 E 转化为 N ∗ D N*D ND x c l a s s x_{class} xclass表示class token,用于图片分类,纬度为(1,D), E p o s E_{pos} Epos表示位置编码,防止patch顺序打乱输出结果相同,维度为(N+1,D),如式1,得到 z 0 ∈ ( N + 1 , D ) z_0\in(N+1,D) z0(N+1,D)
式2、式3为Transformer结构中Multi-Head self-Attention模块及MLP模块,如图1右侧,得到 z l ∈ ( N + 1 , D ) z_l\in(N+1,D) zl(N+1,D),L表示Layer数;
式4中LN为Linear层,将 x L 0 x_L^0 xL0的D维向量映射为 N c l a s s N_{class} Nclass维,表示总类别数,其输出为该图预测类别标签;

大分辨率finetune
当处理大分辨率图片时,若patch保持不变,序列长度将增加,预训练中位置编码Epos可能不再有意义,因此通过通过2D插值实现;

class token

为了尽可能接近原始Transformer模型,我们使用额外class token,作为图像表征;
作者比较GAP结果与class token结果,如图9,发现学习率设置合适,两结果差异不大。
在这里插入图片描述

位置编码

作者将输入视为二维的patch网格。 分别学习X方向及Y方向embedding ,每组的大小为 D/2。基于输入中路径上的坐标,我们连接 X 和 Y方向embedding以获得该patch的最终位置嵌入。

实验

ViT变体如表1在这里插入图片描述

与SOTA比较

在JFT数据集预训练后,在分类数据集上性能如表2,
在这里插入图片描述

结论

作者将Transformer成功应用到视觉分类任务,且取得SOTA性能,
挑战:ViT应用于视觉检测、分割任务;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值