BeiT v2 来袭 | BeiT升级,全面超越 MAE,实现 Vision Transformer 微调自由!

技术

picture.image

picture.image

Masked image modeling 通过恢复损坏的图像块在自监督表示学习中展示了令人印象深刻的结果。然而,大多数方法仍然对 low-level 图像像素进行操作,这阻碍了对表示模型的 high-level 语义的利用。

在这项研究中,作者建议使用语义丰富的 visual tokenizer 作为 Mask 预测的重建目标,为将 MIM 从像素级提升到语义级提供了一种系统的方法。

具体来说,引入向量量化知识蒸馏来训练 tokenizer,它将连续的语义空间离散化为 compact codes。然后,通过预测 masked image patches 的原始 visual tokenizer 来预训练 Vision Transformers 。此外,作者鼓励模型将 patches信息显式聚合到全局图像表示中,这有助于线性预测。

图像分类和语义分割的实验表明,本文的方法优于所有比较的 MIM 方法。在 ImageNet-1K(224 大小)上, base-size BEIT V2 在微调时达到 85.5% 的 top-1 精度,在线性预测时达到 80.1% 的 top-1 精度。 large-size BEIT V2ImageNet-1K(224 大小)微调上获得 87.3% 的 top-1 准确率,在 ADE20K 上获得 56.7% 的 mIoU 用于语义分割。

1、简介

Masked image modeling 在学习视觉表示方面显示出令人印象深刻的结果,这极大地缓解了 Vision Transformer 的注释饥饿问题。给定一张图像,这些方法通常首先通过 mask一些 patches 来破坏原始图像,相关任务是恢复原始图像。以开创性工作 BEiT 为例,每张图像在预训练期间都有2个视图,即图像 patchesvisual tokenizer。原始图像首先被 tokenizer为离散 token。随机采样的图像 patches 在被馈送到 Vision Transformer 之前被 Masked。预训练的目标是根据损坏的图像 patches 恢复原始 visual tokenizer。在预训练视觉编码器后,可以通过附加轻量级任务层直接在各种下游任务上微调模型。

mask-then-predict 框架下,与之前工作的主要区别在于重建目标,例如 visual tokenizer、原始像素和手工制作的 HOG 特征。然而,恢复 low-level监督往往会浪费建模能力来预训练高频细节和短程依赖关系。例如,当掩盖戴在男人头上的“帽子”时,更喜欢模型在给定整个上下文的情况下学习被掩盖的“帽子”的高级概念,而不是在像素级细节上苦苦挣扎。相比之下,语言建模中的掩码词通常被认为具有比像素更多的语义。这促使通过在预训练期间利用语义感知监督来挖掘 MIM 的潜力。

在这项工作中,作者引入了一种自监督的视觉表示模型 BEIT V2,旨在通过学习语义感知的 visual tokenizer 来改进 BEIT 预训练。具体来说,提出了向量量化知识蒸馏( VQ-KD)算法来离散化语义空间。 VQ-KD 编码器首先根据可学习的 codebook 将输入图像转换为离散 token。然后解码器学习重建由教师模型编码的语义特征,以离散 token为条件。在训练 VQ-KD 后,其编码器用作 BEIT 预训练的 visual tokenizer,其中离散 code 用作监督信号。

此外,作者建议通过明确鼓励 CLS token 聚合所有 patches 来预训练全局图像表示。该机制解决了 Masked image modeling 仅预训练 patch-level 表示的问题。结果,在聚合全局表示的帮助下,线性预测的性能得到了提高。

picture.image

ImageNet-1k 上对 basebig Vision Transformer 进行自监督学习,并在多个下游任务上进行评估,例如图像分类、线性预测和语义分割。如图 1 所示, BEIT V2ImageNet 微调上大大优于以前的自监督学习算法,例如,在 ViT-B/16ViT-L/16 上都比 BEIT 提高了大约2个点。 BEIT V2ImageNet 线性预测上优于所有比较的 MIM 方法,同时在 ADE20k 上实现语义分割的巨大性能提升。

本研究的贡献总结如下:

• 引入向量量化知识蒸馏,将 Masked image modeling从像素级提升到语义级,以进行自监督表示学习。

• 提出了一种 Patch聚合策略,该策略在给定 Patch-Level Masked image modeling 的情况下强制执行全局表示。

• 对下游任务进行了广泛的实验,例如 ImageNet 微调、线性预测和语义分割。实验结果表明, BEIT V2显著提高了模型大小、训练步骤和下游任务的性能。

2、BeiT v2

BEIT V2 继承了用于 Masked image modelingBEIT 框架。具体来说,给定输入图像,使用 visual tokenizer将图像标记为离散的 visual token。然后屏蔽一部分图像 patch并将其输入 Vision Transformer。预训练任务是根据损坏的图像恢复 Mask的 visual token

2.1、Image Representations

使用Vision Transformer作为主干网络来获得图像表示。给定输入图像 ,将图像 reshape为 个patches ,其中 和 是patch-size。在实验中,将每个 224×224 的图像分割成一个 14×14 的图像patch网格,其中每个patch为 16×16。然后将图像patch 展平并线性投影到 Transformer 的输入嵌入中。对于 N 个图像块,将编码向量表示为 。

2.2、Training Visual Tokenizer

visual tokenizer 将图像映射到一系列离散 tokens。具体来说,图像 x 被标记为 ,其中 vocabulary V(即 visual codebook)包含 |V| 离散 code。请注意, token的数量与图像块的数量相同。本文提出向量量化知识蒸馏( VQ-KD)来训练 visual tokenizer。如图 2 所示, VQ-KD 在训练过程中有两个模块,即 visual tokenizer和解码器。

picture.image

visual tokenizerVision Transformer编码器和量化器组成。分词器首先将输入图像编码为向量。接下来,向量量化器在 codebook中查找每个 patch表示 的最近邻。让 表示 codebook 嵌入。对于第 i 个图像块,其量化代码由下式获得:

picture.image

其中 归一化用于 codebook查找。上述距离相当于根据余弦相似度找 code

在将图像量化为 visual token之后,将-normalized codebook embeddings 提供给解码器。解码器也是一个多层 Transformer 网络。输出向量 旨在重建教师模型的语义特征,例如 DINOCLIP。让 表示第 i 个图像块的教师模型的特征向量。最大化解码器输出 和教师指导 之间的余弦相似度。

因为量化过程(等式 1)是不可微分的。如图 2 所示,为了将梯度反向传播到编码器,梯度直接从解码器输入复制到编码器输出。直观地说,量化器为每个编码器输出查找最近的 code,因此 codebook embeddings的梯度指示了编码器的有用优化方向。

VQ-KD的训练目标是:

picture.image

其中,sg[·]表示停止梯度算子,它是向前传递时的一个身份,而在反向传递过程中梯度为零,D表示用于 tokenizer训练的图像数据。

提高codebook利用率

矢量量化训练的一个常见问题是 codebook 崩溃。换句话说,只使用了一小部分 code。作者凭经验发现有几种技术可用于提高 codebook 利用率。于等人建议对 codebook查找应用降维和 l2 归一化。等式 1 表明计算 l2 归一化距离以找到最近的 code。此外,将查找空间的维度减少到 32 维。低维 codebook嵌入在馈入解码器之前被映射回高维空间。此外,采用指数移动平均线来更新 codebook嵌入,这在实验中往往更加稳定。

2.3、Pretraining BEIT V2

遵循 BEIT中的 MIM设置,以预训练 Vision Transformers 的图像表示。给定一个输入图像 x,分块选择大约40%的图像 patch 进行 mask。如果 if ,其中δ(·)是指示函数,则使用共享的可学习嵌入来替换的原始图像 patch嵌入。随后,在输入前准备了一个可学习的 CLS token,即,并将它们提供给 vision Transformer。最终的编码向量记为,其中为 CLS token

接下来,使用一个 mask图像建模 head,基于损坏的图像来预测 mask位置的 visual tokens。对于每个 mask位置,一个 softmax分类器预测 visual tokens ,其中是 mask图像,,是分类器的权重。 visual tokens是由第2.2节中训练的标记器获得的,该节为 mask图像建模提供了监督。最后, MIM的训练损失可以表述为:

picture.image

其中表示原始图像的 visual tokens,D表示训练前的图像。

预训练全局表示

受(Gao和Callan,2021)的启发,明确地预训练了 CLS token以进行全局表示。目标是减轻 patch-level预训练和 image-level 表示聚合之间的差异。

picture.image

如图3所示,构建了一个 representation bottleneck 来指导 CLS token收集信息。对于 L-layer Transformer,让{h^l\_i\}^N\_{i=1}表示第层的输出向量,其中l=1····l。为了预先训练最后一层的 CLS token ,连接中间l层的 patch向量{h^l\_i\}^N\_{i=1},即S=[h^L\_{CLS},h^l\_1,···,h^l\_N]。然后,将S输入一个浅层(例如,两层) Transformer decoder,并进行mask预测。

注意,这里也计算了第l层的 MIM损失,如公式3所示。所以最终的训练损失是两项的总和,即,在第l层的原始损失,和浅层 Transformer decoder的MIM损失。在实现中还共享2个头的 MIM Softmax权重。

直观地看,该模型倾向于将全局信息推到,因为该模型倾向于充分利用从第1层到第l+1层的参数,以减少额外的 MIM损失。 information-flow bottleneck鼓励 CLS token比未经训练的对应 token获得更可靠的全局表示。新添加的浅层解码器仅用于对 CLS token进行预训练,经过预训练后将被丢弃。

3、实验

picture.image

picture.image

picture.image

picture.image

4、参考

[1].BEIT V2: Masked Image Modeling with Vector-Quantized Visual Tokenizers

5、推荐阅读

小目标绝技 | 用最简单的方式完成Yolov5的小目标检测升级!

Two-Stage目标检测困难负样本如何利用?大小目标如何同时优化?nRPN给你答案!

超越YOLO5-Face | YOLO-FaceV2正式开源Trick+学术点拉满,让你欲罢不能!!!

长按扫描下方二维码添加小助手并加入交流群,群里博士大佬云集,每日讨论话题有目标检测、语义分割、超分辨率、模型部署、数学基础知识、算法面试题分享的等等内容,当然也少不了搬砖人的扯犊子

长按扫描下方二维码添加小助手。

可以一起讨论遇到的问题

picture.image

声明:转载请说明出处

扫描下方二维码关注【 集智书童 】公众号,获取更多实践项目源码和论文解读,非常期待你我的相遇,让我们以梦为马,砥砺前行!

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
如何利用云原生构建 AIGC 业务基石
AIGC即AI Generated Content,是指利用人工智能技术来生成内容,AIGC也被认为是继UGC、PGC之后的新型内容生产方式,AI绘画、AI写作等都属于AIGC的分支。而 AIGC 业务的部署也面临着异构资源管理、机器学习流程管理等问题,本次分享将和大家分享如何使用云原生技术构建 AIGC 业务。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论