Transformer-ViT: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

ABSTRACT
在视觉上,注意力要么与卷积网络结合使用,要么用于替换卷积网络的某些组件,同时保持它们的整体结构不变。我们表明,这种对神经网络的依赖是不必要的,直接应用于图像块序列的纯transformer可以很好地执行图像分类任务。在图像识别benchmark上可以去到优秀的结果且消耗较少的资源。

INTRODUCTION
由于transformer的计算效率和可扩展性,它已经成为可能训练模型的空前规模,超过100B参数。随着模型和数据集的增长,性能仍没有饱和的迹象。

在计算机视觉中,卷积架构仍然占主导地位。受NLP成功的启发,多部作品尝试将cnn式架构与自注意力相结合(non-local),一些则完全取代了卷积。后一种模式虽然理论上是有效的,但由于使用了专门的注意模式,在现代硬件加速器上还没有得到有效的扩展。

受NLP中Transformer伸缩性scaling成功的启发,我们尝试将标准Transformer直接应用于图像,并尽可能少地进行修改。为此,我们将图像分割成补丁,并提供这些补丁的线性嵌入序列作为Transformer的输入。在NLP应用程序中,图像补丁与标记(单词)的处理方式相同。

在ImageNet等中等规模的数据集上进行训练时,这些模型产生的精度较同等规模的ResNets低几个百分点。然而,如果在更大的数据集(14M-300M图像)上训练模型,图像就会发生变化。我们发现,大规模训练优于归纳偏差。我们的Vision Transformer (ViT)在进行足够规模的预训练和转移到数据点更少的任务时,取得了很好的效果。在公共ImageNet-21k数据集或内部JFT-300M数据集上进行预训练后,ViT在多个图像识别基准上接近或超过了最先进的水平。

METHOD
在模型设计中,我们尽可能遵循最初的Transformer 。这种有意简化的设置的一个优点是,可伸缩(scaling)的NLP Transformer体系结构及其高效实现几乎可以开箱即用。

在这里插入图片描述
VISION TRANSFORMER (VIT)
模型的概述如图所示。标准Transformer接收1D作为输入token嵌入序列。为了处理二维图像,我们将图像HWC重塑成一个扁平的2D序列N*(p^ 2 * C),其中(P*P)为每个图像patch的分辨率,N = HW/ (P^2)为
得到的patch数量,也作为变压器的有效输入序列长度。Transformer的所有层都使用大小为D的常数隐藏向量,所以我们用可训练的线性投影将patch压平并映射到D维。我们将这个投影的输出作为补丁嵌入。

与BERT标记类似,我们在嵌入补丁序列中添加一个可学习的嵌入,其在Transformer编码器输出处的状态为图像表示y。在预处理和微调过程中,该分类head在训练前由带有一个隐含层的MLP实现,在微调时由一个单一的线性层实现。

位置嵌入被添加到补丁嵌入中以保留位置信息。我们使用标准的可学习的一维位置嵌入,因为我们没有观察到使用更高级的2d感知位置嵌入的显著性能提高。所得到的嵌入向量序列作为编码器的输入。

Transformer编码器由多头自注意(MSA)和MLP块的交互层组成。在每个块之前应用Layernorm (LN),在每个块之后应用残差连接。MLP由包含GELU的非线性两层实现:
在这里插入图片描述
Hybrid Architecture
作为一种原始图像patch的替代方法,输入序列可以由CNN的feature maps构成。在该混合模型中,将patch嵌入投影应用于从CNN特征地图中提取的patch。作为一种特殊情况,patch的空间大小可以为1x1,这意味着输入序列只需简单地获取扁平化特征图的空间维度并投射到Transformer维度。分类输入嵌入和位置嵌入的添加与上述一致。

通常,我们对大型数据集进行预先训练,并对(较小的)下游任务进行微调。为此,我们去掉预先训练的预测头,并附加一个零初始化的D*K前馈层,其中K是下游类的数量。与训练前相比,在更高的分辨率下进行微调通常是有益的。在输入分辨率较高的图像时,保持patch大小不变,有效序列长度较大。Vision Transformer可以处理任意序列长度(不超过内存限制),然而,预先训练的位置嵌入可能不再有意义。因此,我们根据它们在原始图像中的位置,对预训练的位置嵌入进行2D插值。请注意,只有在分辨率调整和色块提取中,会将有关图像的2D结构的感应偏差手动注入到Vision Transformer中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值