©作者 |小欣
今天和大家分享一篇关于“Vision Transformer的自监督学习”的文章,文章来源是BEiT(BERT Pre-Training of Image Transformers),文章的出品方是微软,感兴趣的小伙伴可以自行去下载阅读哦!好的,接下来,我们就简单地“解剖”一下这篇文章吧!
Transformer 在计算机视觉领域已经获得巨大的成功。然而,大量的实验研究表明,训练Vision Transformer 需要比训练卷积神经网络(CNN)更多的数据。
为了解决这个问题,自监督预训练这种方式,即可以利用大规模的无标注数据。近期研究,比如对比学习或者自蒸馏,都揭示了在vision Transformer上进行预训练的可行性。
这篇文章引入了一种自监督的视觉表示模型 BEIT,它代表Vision Transformer的双向编码表示。这是继在自然语言处理领域开发的 BERT (Devlin等人在2019年提出) 之后,通过图像掩码建模任务来预训练视觉转换器的模型。
01 文章的主要贡献
● 提出了一个图像掩码建模任务,以自我监督的方式预训练视觉转换器。还从变分自编码器的角度提供了理论解释。
● 预训练 BEIT 模型,并对下游任务进行广泛的微调实验,例如图像分类和语义分割。
● 展示自监督 BEIT 的自注意力机制可以区分语义区域和物体边界,并且不需要使用任何人工注释。
02 文章的研究方法(Methods)
文章借鉴了自然语言处理中BERT的训练方法,首次提出了图像掩码建模对vision transformer进行预训练的方法。首先将原始图像“标记”为视觉标记。
然后随机掩盖一些图像块并将它们输入到主干Transformer 中。预训练的目标是恢复原始基于损坏的图像补丁的视觉标记。
文章中提出的BEIT如下图所示。给定输入图像 ,BEIT 将其编码为上下文向量表示。BEIT 通过遮掩图像建模(MIM)任务以自监督学习的方式进行预训练。
MIM 旨在基于编码向量恢复被屏蔽的图像块。对于下游任务(例如图像分类和语义分割),则在预训练的 BEIT 上附加任务层并微调特定数据集上的参数。
对于一个二维的图像,先将其分割成个patch,然后将每个patch经过线性映射,得到patch的向量表示。接下来,需要对每个patch的向量表示进行标记。
先将patch的向量表示为一个tokenizer(也可以认为是一个encoder),从而得到图像标记(visual token)。然后把visual token 送到相应的解码器中(decoder),得到一个生成的图像。用重构损失来学习tokenizer和decoder的参数。
拥有了经过学习而得到的visual token之后,可以进一步来预训练Vision Transformer。该预训练方法依赖于此前提出的MIM。
对于输入图中的图像内容,先分割成个patch。然后随机掩盖40%的patch。这些掩盖的patch进一步设置成可学习的向量。接着,将所有patch再一起送到Vision Transformer。由此可见,该预训练是去预测被掩盖的patch的标记(token)。
预训练的目标为:
为被掩盖的patch,为预测被掩盖patch的标记。
下图描述了输入图像被掩盖的算法:
具体来说,每个图像在预训练中有两个视图,即图像块(例如 16×16 像素)和视觉标记(即离散标记)。首先将原始图像“标记”为视觉标记,然后随机屏蔽一些图像块并将它们输入到主干 Transformer 中。
预训练的目标是恢复原始基于损坏的图像补丁的视觉标记。在预训练 BEIT 之后,可以通过在预训练的编码器上,附加任务层来直接微调下游任务的模型参数。
03 文章的研究结果(Result)
文章将BEiT预训练得到的模型应用在“图像分类”和“语义分割”等下游视觉任务进行测评,与现有的预训练模型对比,得到了具有竞争力的结果。
例如,基本大小的 BEIT 在 ImageNet-1K 上实现了 83:2% 的 top-1 准确率,明显优于使用相同设置的从头开始的 DeiT 训练 (81:8%; Touvron et al., 2020)。此外,大尺寸 BEIT 仅使用 ImageNet-1K 获得 86:3%,甚至在 ImageNet-22K 上进行监督预训练时的性能甚至优于 ViT-L(85:2%;Dosovitskiy 等人,2020)。
下面的表格比较了文章提出的BEiT和现有的预训练模型在“图像分类”上的精度。我们能够发现文章提出的模型,可以达到最高的精度。
与此同时,继续比较“图像语义”在分割上的精度,可以发现文章提出的BEiT,同样比现有模型的精度要高。
文章进一步研究各种模型变体的结果,也有了新的发现。
首先,通过随机采样掩盖位置来消融块状掩码,能发现分块掩盖对这两个任务都有好处,尤其是在“语义分割”方面。
其次,可以通过预测掩盖patch的原始像素来消除视觉标记的使用,即预训练任务成为恢复掩盖patch的像素回归问题。文章中提出的掩码图像建模任务明显优于一般的像素级自动编码。
第三,将视觉标记和块状掩码的使用结合在一起,可以发现块状掩码对像素级自动编码更有帮助,减轻了短距离依赖的缺陷。
第四,将 BEIT 与不同的训练步骤进行比较,进一步发现对模型进行更长时间的预训练可以提高下游任务的性能。
04 文章的研究结论(Conlcusion)
这篇文章描述了一种用于vision Transformer的自监督预训练框架,在下游任务(例如图像分类和语义分割)上实现了强大的微调结果。
文章中提出的方法,能够帮助大多数 BERT 的预训练(即使用掩码输入进行自动编码)进一步开展图像转换器工作。
文章还展示了一些有趣的特性,如自动获取有关语义区域的知识,而无需使用任何人工注释的数据。
代码和预训练模型可从https://aka.ms/beit获得。
私信我领取目标检测与R-CNN/数据分析的应用/电商数据分析/数据分析在医疗领域的应用/NLP学员项目展示/中文NLP的介绍与实际应用/NLP系列直播课/NLP前沿模型训练营等干货学习资源。