[论文解读] BEIT:适用于Image Transformer的新型预训练方法 (上:论文翻译)[原始代码已开源]

BEIT: BERT Pre-Training of Image Transformer

​ 我们提出了一种具有代表性的自监督模型——BeiT,它代表了Image Transformer的双向编码器表示方法。随着BERT在自然语言处理邻域的发展,我们提出了一种遮盖式图像的建模任务来预训练Vision Transformer。具体来说就是,每张图像有两种表示,一种是图像的patch(如 16 × 16 16\times 16 16×16的像素patch),另一种是视觉token(如不连续的位置表示)。我们首先将原始图像“标记化”为视觉token。然后我们随机遮盖一些图像的patch,并把它送入到Transformer的backbone中。预训练的目的是根据损坏的图像patch来恢复原始的视觉token。ERIT完成预训练后,我们直接在预训练的编码器上附加任务层来微调模模型在下游任务上的参数。实验结果表明,我们的方法模型在图像分类和语义分割上比先前的预训练方法更有竞争力。例如,基础版本的BEIT在ImageNet上实现了83.2%的准确率,显著优于相同配置下从头开始的DeiT(81.8%)。此外,large版本的BEIT仅使用ImageNet-1K是取得了86.3%的准确率,甚至优于在ImageNet-22k上预训练的ViT-L模型(85.2%)。代码和预训练模型可以从下面的链接中获取:https://aka.ms/beit.

1.Introduction

​ Transformer在计算机视觉已经取得了可喜的表现。但是,实证表明vision Transformer需要远比CNN更多的数据来训练。为了解决需要大量数据来训练的这个问题,自监督式的预训练是一个很有前途的方式,它可以利用大规模的图像数据。多种在Visoin Transformer上具有代表性的训练方法已经被提出,如对比学习(Chen et al.,2021;Xie et al.,2021),自我蒸馏(Caron et al.,2021)。

​ 同时,BERT在自然语言处理(NLP)上已经取得了不错的进展。它遮盖语言建模任务的第一步是以某个比例随机遮盖文本中的token,然后根据损坏文本在Transformer编码后的结果来恢复被遮盖的token。收到BERT的影响,我们产生了将去噪自动编码的方法运用在vision Transforemr的预训练中,在视觉领域中还没有好好的研究过这个方法。想要把BERT中的预训练方法直接运用到图像数据中这对我们来说也是非常有挑战性的。首先,在vision Transformer中并没有预先的词汇作为输入单元,即图像patch。所以我们不能简单的使用softmax分类器来预测所有可能的被遮蔽斑块的候选人。与此相反,语言词汇(如单词和BPE),是定义明确且便于自动编码的。一个直接了当的做法是将此任务当作是一个回归任务来处理,来预测被遮挡的斑块的原始像素。然而,这种像素级的恢复任务往往会将建模能力浪费在预先训练短距离的以来和高频细节上。我们的目标是克服上述的问题使其能够在vision Transformer实现预训练。

​ 在这篇文章中,我们将介绍一种自监督的vision 表征模型——BEIT(基于图像Transformer的双向编码器表示)。收到BERT的启发,我们提出了一种名为遮盖图像建模(MIM)的预训练任务。如下图所示,MIM从图像中获取两种特征(图像patch,Vision token)。我们将图像分割成网格状的patch,并把它作为Transformer backbone的输入表征。此外,我们将原始的图像“标记化”为Vision token,这是由离散VAE(Ramesh et al.,2021)的潜在代码得到的。在与预训练过程中,我们按照某个比例随机的遮盖一些图像patch,并把残缺的图像输入到Transformer中。模型将去学着恢复原始图像的vision token来替代原始图像中被遮盖的部分。
在这里插入图片描述

​ 我们实验了自监督学,然后将预训练的BEIT模型在两个下游任务(图像分类,语义分割)上微调。实验结果表明,BEIT的结果优于从头开始训练和先前强大的预训练模型。此外,BEIT是对监督式预训练的一种补充。通过使用ImageNet标签进行中间微调,可以进一步提高BEIT的性能。消融研究表明,我们提出的技术对图像数据的BERT式预训练的有效性至关重要。除了性能之外,收敛速度的提升和微调的稳定性都可以减少在终端任务上的花费。另外,我们证明,自我监督的BEIT可以通过预训练学习合理的语义区域,释放出图像中包含的丰富的监督信号。

​ 我们的贡献总结如下:

​ 1.我们提出了一种遮盖图像的建模任务来自监督式的训练vision Transformer。我们还从变异自动编码器的角度提供了一个理论解释。

​ 2.我们预训练了BEIT并且在下游任务(图像分类、语义分割)上进行了广泛的微调实验。

​ 3.我们发现自监督式BEIT中的self-Attention机制可以学习区分语义区域和物体边界,尽管没有使用任何人类注释。

2. Methods

​ 给定一个输入图像 x x x​​​,BEIT将其编码为上下文的矢量表征。就如上图Figure.1展示的一样,BEIT以自我监督的学习方式,通过遮蔽图像建模(MIM)任务进行预训练。MIM的主要目的是从编码的矢量中恢复被遮盖的图像patch。对于下游任务(如:图像分类、语义分割),我们在预训练的BEIT后添加任务层,并且在特殊的数据集上进行参数的微调。

2.1 Image Representations

​ 在我们的方法中,图像有两种表征方式,分别是图像patch,vision token。这两种方式分别作为预训练过程中的输入和输出表征。

2.1.1 Image Patch

​ 一张2D图像将会被分成patch的序列([ h , w , c h,w,c h,w,c]->[ n , p a t c h L n,patch_L n,patchL​]),因此一个标准的Transformer可以直接接收这样的图像输入。正式的,我们将图像 x ∈ R H × W × C x \in R^{H \times W \times C} xRH×W×C​拆分成 N = H W p 2 N=\frac{HW}{p^2} N=p2HW​个patch,其中C是图像的通道数,(H,W)是图像的分辨率,(P,P)是每个patch的分辨率。图像的patch { x i p } i = 1 N \{x^p_i \}^N_{i=1} { xip}i=1N​​将会被展开成矢量,并且会被线性投影,这和BERT(Delib et al.,2019)中单词的处理方式很相似。​​图像patch保留了原始像素,在BEIT中将会作为输入的特征。

​ 在我们的实验中,我们以 14 × 14 14\times 14 14×14​的patch网格来划分 224 × 224 224\times 224 224×224​​的图像,每个patch的大小是$ 16\times 16$。​

2.1.2 Visual Token

​ 与自然语言相似,我们将图像表示为由 "图像标记器 "获得的离散标记序列,而不是原始像素。具体来说就是,我们将标记图像 x ∈ R H × W × C x \in R^{H \times W \times C} xRH×W×C Z = [ z 1 , . . . , z N ] ∈ V w × h Z=[z_1,...,z_N] \in V^{w \times h} Z=[z1,...,zN]Vw×h,其中词表 v = { 1 , . . . , ∣ V ∣ } v=\{1,...,|V|\} v={ 1,...,V}包含离散的标记索引。遵循前人(Ramesh et al.,2021)的方法,我们通过离散变异自动编码器学习图像标记器(dVAE)。在Visual token的学习过程中有两个模块,分别是tokenizer和encoder。标记器 q φ ( z ∣ x ) q_{\varphi}(z|x) qφ(zx)根据视觉编码簿(visual codebook)图像像素x映射成离散的标记z。编码器 p φ ( x ∣ z ) p_{\varphi}(x|z) pφ(xz)根据visual token z来学习去重建输入图像x。重建的对象可以被写成 E z − q φ ( z ∣ x ) [ l o g p φ ( x ∣ z ) ] E_{z-q_{\varphi}(z|x)}[logp_{\varphi}(x|z)] Ezqφ(zx)[logpφ(xz)]。由于潜在的visual token是离散的,模型的训练是无差异的。采用Gumbel-Softmax(Jang et al.,2017;Maddison et al.,2017)松弛法来训练模型参数。在dVAE训练过程中,一个统一的被事先放在 q φ q_{\varphi} qφ​上。更多关于image patch的信息可以从 Ramesh等人的论文中查看。

​ 我们将每张图像标记为一个 14 × 14 14 \times 14 14×14​的视觉标记token。请注意,一个图像的视觉标记数量和图像斑块数量是一样的。词表的尺寸被设置为 ∣ V ∣ = 8192 |V|=8192 V=8192​​。在我们的工作中,我们直接使用Ramesh等人论文中的描述的公开可以用的图像标记。

2.2 Backbone Network :Image Transformer

​ 遵循ViT的设计原则,我们使用标准的Transformer作为我们的骨干网络。因此,在网络结构方面,结果可以直接与以前的工作进行比较。

​ Transformer的输入是图像patch的列表 { x i p } i = 1 N \{x^p_i\}^N_{i=1} { xip}i=1N​。然后对这些patch进行线性投影,以获得patch的矢量 E x i p E_{x^p_i} Exip E ∈ R ( P 2 C ) × D E \in R^{(P^2C)\times D} ER(P2C)×D​)。此外,我们预加了一个特殊的token

  • 8
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值