ViT: An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

Vision Transformer

以下内容是对原文章些许解读:
论文地址:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
代码: https://github.com/google-research/vision_transformer

文章贡献:探索将Transformer直接应用于图像分类任务,首先在大量数据上进行预训练随后将其迁移到多个中型和小型基准上进行测试,Vision Transformer取得了出色的结果,并且需要的计算资源大大减少。

方法:

模型的设计尽可能的遵循原始Transformer,这种有意简化设置的优点有: NLP Transformer结构具备良好扩展性、高效实现、几乎可以开箱即用。

1.模型架构:

模型结构图
将图像分割成固定大小的图像块,线性嵌入每个块,添加位置嵌入,然后将产生的向量序列输入到标准的Transformer编码器。为了执行分类,使用标准的方法向向量序列添加一个额外的可学习的分类标签。

  • Patch Embedding: 标准的Transformer接收符号嵌入的1D序列作为输入。为了处理2D的图像,我们将图像 x p ∈ R H × W × C x_{p}\in \mathbb{R}^{H\times W\times C} xpRH×W×C重塑为拉平的2D图像块序列 x p ∈ R N × ( P 2 ⋅ C ) x_{p}\in \mathbb{R}^{N\times \left ( P^{2} \cdot C\right )} xpRN×(P2C),其中 ( H , W ) (H,W) (H,W)是原始图像的分辨率, C C C是通道的数量, ( P , P ) (P,P) (P,P)是每个图像块的分辨率, N = H W P 2 N=\frac{HW}{P^{2}} N=P2HW是图像块的数量,也是Transformer有效输入序列的长度。Transformer在其所有层中使用大小为D的恒定向量,所以将patches拉平并使用一个可训练的线性投影层将其映射到D维。(使用公式1)将该投影层的输出作为patch embeddings。
  • Learnable Embedding: 与BERT的标记类似,我们在图像块嵌入序列前添加一个可学习的嵌入 ( z 0 0 = x c l a s s ) (z_0^0=x_class) (z00=xclass),其在Transformer编码器输出 ( z L 0 ) (z_L^0) (zL0)处的状态作为图像表示 y y y(公式4)。在预训练和微调期间,分类头被附加到 z L 0 z_L^0 zL0。分类头在预训练时由一个隐层的MLP实现,在微调时由单个线性层实现。
  • Position Embedding:
    位置嵌入被添加到图像块嵌入中以保留位置信息。由于我们没有观察到使用更先进的2D感知位置嵌入能带来显著的性能提升,因此我们使用标准可学习的1D位置嵌入。所得到的嵌入向量序列作为编码器的输入。
  • Transformer Encoder:
    由交替的多头自注意力块和MLP块组成。每个块之前应用Layernorm(LN),每个块之后应用残差连接。MLP包含两层和一个GELU非线性激活。

模型公式

归纳偏置:注意到Vision Transformer比CNN拥有更少的特定于图像的归纳偏置。在CNN中局部性、二维邻域结构和平移不变性贯穿整个模型的每一层。在ViT中,只有MLP是局部的、平移不变的,而自注意层时全局的。二维邻域结构使用的非常少,在模型开始时将图像分割成小块,在微调时调整不同分辨率的图像的位置嵌入。除此之外,初始化的位置嵌入不包含任何的位置信息,所有图像块之间的空间信息需要从头学习。
混合模型:将从CNN特征图中提取的patches作为patch embedding投影层的输入。

2.微调和更高的分辨率:

通常我们在大型数据集上进行预训练ViT,并对下游任务进行微调。为此,我们去掉预训练的预测头并附加一个零初始化的D×K的前馈层,K是下游类别的数量。它通常有利于在比预训练更高的分辨率下进行微调。当输入较高分辨率图像时,我们保持图像块大小不变,从而得到更大的有效序列长度。Vision Transformer能够处理任意序列长度(直到内存限制),但是预训练的位置编码可能不再有意义。因此根据他们在原始图像中的位置,我们对预训练的position embedding执行了2D插值。注意分辨率调整和图像块提取是手动将图像二维结构的归纳偏置注入到Vision Transformer中的唯一一点。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值