关于人工智能:超越所有MIM模型的BEiT-v2来了微软使用矢量量化视觉Tokenizers的掩码图像建模

2次阅读

共计 6731 个字符,预计需要花费 17 分钟才能阅读完成。

【写在后面】

蒙面图像建模 (MIM) 通过复原损坏的图像 patch,在自监督示意学习中展现了令人印象粗浅的后果。然而,大多数办法依然对低级图像像素进行操作,这妨碍了对示意模型的高级语义的利用。在这项钻研中,作者提出应用语义丰盛的视觉标记器作为掩码预测的重建指标,为将 MIM 从像素级晋升到语义级提供了一种零碎的办法。具体来说,作者 引入向量量化常识蒸馏来训练 tokenizer,它将间断的语义空间离散化为紧凑的代码。而后,通过预测 mask 图像块的原始视觉 token 来预训练视觉 Transformer。此外,作者激励模型将 patch 信息显式聚合到全局图像示意中,这有助于 linear probing。图像分类和语义宰割的试验表明,本文的办法优于所有比拟的 MIM 办法。图像分类和语义宰割的试验表明,本文的办法优于所有比拟的 MIM 办法。在 ImageNet-1K(224 大小)上,根本大小的 BEIT V2 在微调时达到 85.5% 的 top-1 精度,在线性探测(linear probing)时达到 80.1% 的 top-1 精度。大尺寸 BEIT V2 在 ImageNet-1K(224 大小)微调上取得 87.3% 的 top-1 准确率,在 ADE20K 上取得 56.7% 的 mIoU 用于语义宰割。

1. 论文和代码地址

BEIT V2: Masked Image Modeling with Vector-Quantized Visual Tokenizers

论文地址:https://arxiv.org/pdf/2208.06366.pdf

代码地址:https://github.com/microsoft/unilm

2. 动机

蒙面图像建模 (Masked image modeling) 在学习视觉示意方面显示出令人印象粗浅的后果,这极大地缓解了视觉 Transformer 的正文饥饿问题。给定一张图像,这些办法通常首先通过屏蔽一些 patch 来毁坏它。以开创性的工作 BEiT 为例,每张图像在预训练期间都有两个视图,即图像块和视觉 token。原始图像首先被标记为离散标记。随机采样的图像块在被馈送到视觉 Transformer 之前被屏蔽。预训练的指标是依据损坏的图像块复原原始视觉 token。在预训练视觉编码器后,能够通过附加轻量级工作层间接在各种上游工作上微调模型。

在 mask-then-predict 框架下,与以往工作的次要区别在于重建指标,例如视觉 token、原始像素和手工制作的 HOG 特色。然而,复原低级监督往往会节约建模能力来预训练高频细节和短程依赖关系。例如,当 mask 戴在男人头上的“帽子”时,咱们更喜爱模型在给定整个上下文的状况下学习被覆盖的“帽子”的高级概念,而不是在像素级细节上苦苦挣扎。相比之下,语言建模中的掩码词通常被认为具备比像素更多的语义。这促使通过在预训练期间利用语义感知监督来开掘 MIM 的后劲。

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

此外,作者提出通过明确激励 CLS token 聚合所有 patch 来预训练全局图像示意。该机制解决了 mask 图像建模仅预训练 patch 级示意的问题。后果,在聚合全局示意的帮忙下,线性探测的性能失去了进步。

作者在 ImageNet-1k 上对根本和大型视觉 Transformer 进行自监督学习,并在多个上游工作上进行评估,例如图像分类、线性探测和语义宰割。如上图所示,BEIT V2 在 ImageNet 微调上大大优于以前的自监督学习算法,例如,在 ViT-B/16 和 ViT-L/16。本文的办法在 ImageNet 线性探测上优于所有比拟的 MIM 办法,同时在 ADE20k 上实现语义宰割的微小性能晋升。

本钻研的奉献总结如下:

  • 作者引入向量量化常识蒸馏,将掩码图像建模从像素级晋升到语义级,以进行自监督示意学习。
  • 作者提出了一种补丁聚合策略,该策略在给定补丁级掩码图像建模的状况下强制执行全局示意。
  • 作者对上游工作进行了宽泛的试验,例如 ImageNet 微调、线性探测和语义宰割。试验结果表明,本文的办法显着进步了模型大小、训练步骤和上游工作的性能。

3. 办法

BEIT V2 继承了 BEIT 的蒙幅员像建模框架。具体来说,给定输出图像,作者应用视觉 tokenizer 将图像标记为离散的视觉 token。而后 mask 一部分图像块并将其输出视觉 Transformer。预训练任务是依据损坏的图像复原蒙面的视觉标记。在 3.2 节中,将介绍向量量化常识蒸馏算法,并用它来训练视觉 tokenizer。在第 3.3 节中,应用视觉 tokenizer 进行 BEIT 预训练。此外,作者提出通过构建架构瓶颈来明确激励模型预训练全局图像示意。

3.1 图像示意

作者应用视觉 Transformer (ViTs) 作为骨干网络来取得图像示意。给定输出图像 $\boldsymbol{x} \in \mathbb{R}^{H \times W \times C}$,作者将图像 x reshape 为 $N=H W / P^{2}$ 个 patch$\left\{\boldsymbol{x}_{i}^{p}\right\}_{i=1}^{N}$,其中 $\boldsymbol{x}^{p} \in \mathbb{R} ^{N \times\left(P^{2} C\right)}$ 和 $ (P, P) $ 是 patch 大小。在试验中,作者将每个 224 × 224 的图像宰割成一个 14 × 14 的图像块网格,其中每个块是 16 × 16。而后图像块 $\left\{\boldsymbol{x}_{i}^{p}\right\}_{i=1}^{N}$ 被展平并线性投影到 Transformers 的输出嵌入中。对于 N 个图像块,将编码向量示意为 $\left\{\boldsymbol{h}_{i}\right\}_{i=1}^{N}$。

3.2 训练 Visual Tokenizer

视觉 tokenizer 将图像映射到一系列离散标记。具体来说,图像 x 被标记为 $z=\left[z_{1}, \cdots, z_{N}\right] \in \mathcal{V}^{(H / P) \times(W / P)}$,其中词汇 V(即视觉码本)蕴含 |V| 个离散码。请留神,token 的数量与本文工作中图像块的数量雷同。作者提出向量量化常识蒸馏(VQ-KD)来训练视觉标记器。如上图所示,VQ-KD 在训练过程中有两个模块,即 视觉标记器 解码器

标记器由视觉 Transformer 编码器和量化器组成。标记器首先将输出图像编码为向量。接下来,向量量化器在码本中查找每个 patch 示意 $h_{i}$ 的最近邻。让 $\left\{\boldsymbol{e}_{1}, \cdots, \boldsymbol{e}_{|\mathcal{\nu}|}\right\}$ 示意码本嵌入。对于第 i 个图像块,其量化代码由下式取得:

$$
z_{i}=\underset{j}{\arg \min}\left\|\ell_{2}\left(\boldsymbol{h}_{i}\right)-\ell_{2}\left(\boldsymbol{e}_{j}\right)\right\|_{2}
$$

其中 $\ell_{2}$ 归一化用于码本查找。上述间隔相当于依据余弦类似度找码。

在将图像量化为视觉标记后,作者将 l2-normalized codebook embeddings$\left\{\ell_{2}\left(\boldsymbol{e}_{z_{i}}\right)\right\}_{i=1}^{N}$ 提供给解码器。解码器也是一个多层 Transformer 网络。输入向量 $\left\{\boldsymbol{o}_{i}\right\}_{i=1}^{N}$ 旨在重建老师模型的语义特色,例如 DINO 和 CLIP。让 $\boldsymbol{t}_{i}$ 示意第 i 个图像块的老师模型的特征向量。作者最大化解码器输入 $o_{i}$ 和老师领导 $t_{i}$ 之间的余弦类似度。

因为量化过程是不可微分的。如上图所示,为了将梯度反向流传到编码器,梯度间接从解码器输出复制到编码器输入。直观地说,量化器为每个编码器输入查找最近的代码,因而码本嵌入的梯度批示了编码器的有用优化方向。

VQ-KD 的训练指标是:

$$
\max \sum_{x \in \mathcal{D}} \sum_{i=1}^{N} \cos \left(\boldsymbol{o}_{i}, \boldsymbol{t}_{i}\right)-\left\|\operatorname{sg}\left[\ell_{2}\left(\boldsymbol{h}_{i}\right)\right]-\ell_{2}\left(\boldsymbol{e}_{z_{i}}\right)\right\|_{2}^{2}-\left\|\ell_{2}\left(\boldsymbol{h}_{i}\right)-\operatorname{sg}\left[\ell_{2}\left(\boldsymbol{e}_{z_{i}}\right)\right]\right\|_{2}^{2},
$$

其中 sg[·] 代表进行梯度算子,它在前向传递中是一个身份,而在后向传递期间具备零梯度,D 代表用于标记器训练的图像数据。

3.3 预训练 BEIT V2

作者遵循 BEIT 中的掩蔽图像建模 (MIM) 设置来预训练视觉 Transformer 以进行图像示意。给定输出图像 x,作者逐块抉择大概 40% 的图像块进行 mask。将 mask 地位称为 M,而后应用共享的可学习嵌入 $e_{[M]}$ 替换原始图像块嵌入 $e_{i}^{p}$ 如果 $i \in \mathcal{M}$,$\boldsymbol{x}_{i}^{\mathcal{M}}=\delta(i \in\mathcal{M}) \odot \boldsymbol{e}_{[\mathrm{M}]}+(1-\delta(i \in \mathcal{M})) \odot \boldsymbol{x}_{i}^{p}$,其中 δ(·) 是批示函数。随后,作者在输出前增加一个可学习的 CLS token,即 $\left[e_{\mathrm{CLS}},\left\{\boldsymbol{x}_{i}^{\mathcal{M}}\right\}_{i=1}^{N}\right]$,并将它们提供给视觉 Transformer。最终的编码向量示意为 $\left\{\boldsymbol{h}_{i}\right\}_{i=0}^{N}$,其中 $h_{0}$ 示意 CLS token。

接下来,应用 mask 图像建模头依据损坏的图像 $x^{\mathcal{M}}$ 预测 mask 地位的视觉 token。对于每个掩码地位 $\left\{\boldsymbol{h}_{i}: i \in \mathcal{M}\right\}_{i=1}^{N}$,softmax 分类器预测视觉标记 $p\left(z^{\prime} \mid x^{\mathcal{M}}\right)=\operatorname{softmax}_{z^{\prime}}\left(\boldsymbol{W}_{c} \boldsymbol{h}_{i}+\boldsymbol{b}_{c}\right)$,其中 $w^{x}$ 是掩码图像,$\boldsymbol{W}_{c}, \boldsymbol{b}_{c}$ 是分类器权重。视觉标记由第 3.2 节中训练的 tokenizer 取得,该标记器为 mask 图像建模提供监督。最初,MIM 的训练损失能够示意为:

$$
\mathcal{L}_{\mathrm{MIM}}=-\sum_{x \in \mathcal{D}} \sum_{i \in \mathcal{M}} \log p\left(z_{i} \mid x^{\mathcal{M}}\right)
$$

其中 $z_{i}$ 示意原始图像的视觉标记,$\mathcal{D}$ 示意预训练图像。

预训练全局示意

作者显式地预训练 CLS token 以进行全局示意。本文的指标是加重 patch 级预训练和图像级示意聚合之间的差别。如上图所示,作者构建了一个示意瓶颈来领导 CLS token 收集信息。对于 L 层 Transformer,令 $\left\{h_{i}^{l}\right\}_{i=1}^{N}$ 示意第 l 层的输入向量,其中 $l=1, \cdots, L$。为了预训练最初一层的 CLS token $h_{\mathrm{CLS}}^{L}$,作者将其与两头第 l 层的 patch 向量 $\left\{h_{i}^{l}\right\}_{i=1}^{N}$ 进行 concat,即 $\boldsymbol{S}=\left[h_{\mathrm{CLS}}^{L}, h_{1}^{l}, \cdots, h_{N}^{l}\right]$。而后将 S 馈送到一个浅层(例如两层)Transformer 解码器并进行 mask 预测。作者还计算了第 L 层的 MIM 损失。所以最终的训练损失是两项的总和,即第 L 层的原始损失和浅层 Transformer 解码器的 MIM 损失。在本文的实现中,作者还共享两个头部的 MIM softmax 权重。

4. 试验

上表报告了 top-1 的微调精度后果。从上表中能够看出,具备 300 个 epoch 预训练打算的根本尺寸 BEIT V2 达到 85.0% 的 top-1 准确率,将 BEIT、CAE、SplitMask 和 PeCo 别离克制了 2.1%、1.7%、1.4% 和 0.9%。此外,BEIT V2 比 iBoT 高 1.2%,data2vec 高 0.8%。

上表展现了线性探测的 top-1 精度。作者将 BEIT V2 与 MIM 办法 BEIT、MAE、CAE、MVP 和比照办法 MoCo v3 进行比拟。所有办法都基于 ViT-B/16 并预训练了 300 个 epoch,但 MAE 为 1600 个 epoch。

作者评估了 BEIT V2 在各种 ImageNet 验证集上的鲁棒性,在上表中报告了后果。与 MAE 相比,BEIT V2 在数据集上获得了微小的提高,证实了所提出的办法在泛化方面的优越性。

从上表能够看出,VQ-KD 的更深解码器取得了更好的重构,但码本使用率和上游工作性能更低。此外,试验表明缩小码本查找的维度能够进步码本的利用率。

上表展现了对于 CLS token 预训练的融化钻研。较浅的头部(1/2 层)比拟深的头部(3 层)体现更好,这表明较浅的头部(较低的模型容量)比拟深的头部(较高的模型容量)更关注输出 CLS token。

上表展现了 VQ-KD target 的融化钻研。

5. 总结

在本文中,作者提出了向量量化常识蒸馏(VQ-KD)来训练视觉 Transformer 预训练的视觉标记器。VQ-KD 离散化间断语义空间,为 mask 图像建模提供监督,而不是依赖图像像素。语义视觉标记器极大地改良了 BEIT 预训练并显着进步了上游工作的传输性能。此外,引入了 CLS token 预训练机制,以明确激励模型生成全局图像示意,放大补丁级预训练和图像级示意聚合之间的差距。

【技术交换】

已建设深度学习公众号——FightingCV,关注于最新论文解读、基础知识坚固、学术科研交换,欢送大家关注!!!

举荐退出 FightingCV交换群 ,每日会发送论文解析、算法和代码的干货分享,进行学术交流,加群请增加小助手 wx:FightngCV666,备注: 地区 - 学校(公司)- 名称

面向小白的顶会论文外围代码库:https://github.com/xmu-xiaoma666/External-Attention-pytorch

面向科研小白的 YOLO 指标检测库:https://github.com/iscyy/yoloair

【赠书流动】

为感激各位老粉和新粉的反对,FightingCV 公众号 将在 9 月 10 日包邮送出 4 本 《深度学习与指标检测:工具、原理与算法》 来帮忙大家学习,赠书对象为当日浏览榜和分享榜前两名。想要参加赠书流动的敌人,请增加小助手微信FightngCV666(备注“城市 - 方向 -ID”),不便分割取得邮寄地址。

本文由 mdnice 多平台公布

正文完
 0