图片mask任务和自监督损失函数MAE、Beit、MarkFeature、DINO、DINOv2

MAE (Masked Autoencoders Are Scalable Vision Learners)

来自Masked Autoencoders Are Scalable Vision Learners,Our loss function computes the mean squared error (MSE) between the reconstructed and original images in the pixel space. 几个关键点:

  • 需要Encoder和Decoder,encoder负责抽取高维表示,decoder则负责细粒度还原
  • 比较大的mask比例,甚至达到了75%

Beit

图片mask任务和自监督损失函数MAE、Beit、MarkFeature、DINO、DINOv2_第1张图片
图像块和 ViT 原文所描述的并无二致,而对于重建目标,BEiT 并没有使用原始的像素,而是通过一个 “image tokenizer” 进行离散化,遵循的是 dVAE 的思路,在 BEiT 预训练之前,先构建 “tokenizer” 和 “decoder” 进行 dVAE 的训练,并构建视觉词汇表。在 BEiT 中是直接采用 Zero-shot text-to-image generation 文章开源的代码进行训练。

对于预训练的主干网络,则是标准的 ViT,每个图像块会被线性投射为对应的 embedding 向量,同时再加上标准的可学习的绝对位置编码。而与之不同的是,BEiT 采用了 Blockwise Masking 的方式,对大约 40% 的图像块进行了掩码操作,而预训练的目标便是期望能够正确预测掩码图像块的视觉标记,从而获得可以提取图像特征向量的编码器。
部分摘自https://zhuanlan.zhihu.com/p/475952825

Masked Feature Prediction for Self-Supervised Visual Pre-Training

MaskFeat 算法在整体思路上依然是重建掩码图像块的思路,只不过它的重建目标从原始像素值变成了 HOG 特征描述器。通过作者的实验,在五种不同类型的特征描述中,HOG 可使网络获得最好的结果,且训练更加高效,算法总览图如下:

DINO(self-DIstillation with NO labels)

来自于Emerging Properties in Self-Supervised Vision Transformers,DINO 本质上是一种自监督学习方法,通过无监督的方式学习图像特征表示,可用于计算机视觉的其他下游任务,例如分类和检测等。该方法的核心思想是使用一种叫做自蒸馏的方法,即将一个学生模型的表示与一个动量化的教师模型的表示进行比较,以学习出更好的特征表示。
图片mask任务和自监督损失函数MAE、Beit、MarkFeature、DINO、DINOv2_第2张图片
然而,这种学生和教师网络均输出相同 embeddings 的情况容易出现模式崩塌(mode collapse)的现象(在自监督学习中,mode collapse 是指网络的学习过程中出现了多样性减少的现象。具体来说,当网络学习到一组特征表示时,往往会出现多个输入数据映射到相同的特征表示的情况,这就是所谓的模式崩塌。这种现象通常是由于网络在优化过程中陷入了局部最优解,只能考虑到一部分数据的特征表示,而忽略了其它数据样本的模式和特征,从而导致了多样性缺失的现象,因此会对模型的鲁棒性产生很大的负面影响。)。在《Momentum Contrast for Unsupervised Visual Representation Learning》一文中提出了一种解决方案,即应用“动量教师”(momentum tearcher)模型,可以简单地理解为就是教师的模型不是基于反向传播更新的,而是再对学生模型进行梯度回传后,在通过指数移动平均(Exponentially Weighted Average, EWA),直接将学生网络学习到的模型参数更新给教师网络,换句话就是教师网络的权重更新自学生网络。
在 DINO 论文中,还有两个不得不提的点便是 Centering 和 Sharpening,这是用于防止模式崩塌的两种有效方式。

  • Centering:首先,教师模型的输出经过一个 EMA 的操作,从原始激活值中减去得到一个新的结果。简单来说,可以表述为 l o g i t s = l o g i t s − l o g i t s m e a n logits=logits-logits_{mean} logits=logitslogitsmean。这个操作的目的是使得激活值有时候是正的(当它们高于平均值时),有时候是负的(当它们低于平均值时)。由于 softmax 函数在处理负数时会给出较小的概率值,而在处理正数时会给出较大的概率值,因此这种操作能够防止任何一个特征占据统治地位,因为平均值会在值的范围中间。
  • Sharpening: 这种技巧通过在 softmax 函数中加入一个 temperature 参数,来强制让模型将概率分布更加尖锐化。由于小差异会被夸大,这会防止所有激活值都是相同的,因为小的差异也会被放大。这个技巧和中心化操作搭配使用,可以使得激活值不断变化,从而引导学生模型更好地了解哪些特征应该变得更加强大。

部分摘自https://mp.weixin.qq.com/s/EGCAX51FTyZrO7-e4y9Egg

DINOv2

来自DINOv2: Learning Robust Visual Features
without Supervision,摘自原文We learn our features with a discriminative self-supervised method that can be seen as a combination of DINO and iBOT losses with the centering of SwAV。简单点理解就是,这种自监督方法是由多个损失函数组成的,包括 DINO(Transformers之间的局部信息最大化),iBOT(特征之间的相似度最小化)和 SwAV(样本中心化)。同时,添加了一个正则项,以使特征在特征空间中更加均匀地分布。此外,DINOv2 中还进行了一个短暂的高分辨率训练阶段,以进一步提高特征的鲁棒性。

Image-level objective

这个方法被称为图像级目标,是一种用于学习特征的判别式自监督方法。其基本思想是将来自同一图像不同裁剪的视图作为正样本,将来自不同图像的视图作为负样本,使用交叉熵损失函数来衡量这些视图之间的相似性和差异性,从而训练一个学生网络。另外,我们使用指数移动平均方法构建一个教师网络,其参数是过去迭代的加权平均值,以减少训练中的波动。最终,我们使用这两个网络的类令牌特征作为特征表示。

Patch-level objective

这个方法是另一种用于学习特征的自监督方法,称为 Patch 级目标。在这种方法中,作者将输入的一些 Patch 随机地遮盖掉,只将未被遮盖的 Patch 提供给教师网络,然后使用交叉熵损失函数来衡量学生和教师网络在每个被遮盖的 Patch 上的特征表示的相似性和差异性,从而训练学生网络。同时,我们可以将 Patch 级别的损失与图像级别的损失相结合,以便在训练过程中兼顾整体和局部特征。

Untying head weights between both objectives

此方法是针对前两个方法的实验发现进行的改进。在前两个方法中,图像级别和Patch级别的损失函数都共享了一个网络的参数(权重)。但是经过实验观察发现,当两个级别的损失函数共享同样的参数时,模型在Patch级别会欠拟合,在图像级别会过拟合。因此,我们可以考虑将这些参数(权重)解绑,使得模型在两个级别都能够更好地学习特征表示。这个方法的优化目标是在两个级别都得到最佳的结果。

Sinkhorn-Knopp centering

这个方法是对 DINO 和 iBot 两种方法中的一些步骤进行改进。在原来的方法中,教师模型中的 softmax-centering 步骤在某些情况下可能导致不稳定性,因此本文采用了 Sinkhorn-Knopp(SK)批量归一化方法来代替。这个方法的核心思想是通过正则化来使学生和教师网络在特征表示上更加接近。在这个方法中,作者使用了 3 次 Sinkhorn-Knopp 算法迭代来实现归一化。对于学生网络,则仍然使用 softmax 归一化。通过这个方法,我们可以更好地训练学生模型,并获得更好的性能。

KoLeo regularizer

KoLeo regularizer 是一种正则化方法,它通过计算特征向量之间的差异来确保它们在批次内均匀分布。具体来说,它使用了一种名为 Kozachenko-Leonenko 差分熵估计的技术,这是一种估计随机样本密度的方法。在计算这个正则化器之前,特征向量会被进行“2-范数归一化”(将每个向量的所有元素平方和开根号并除以该和),以确保它们具有相同的长度。这个正则化器的作用是减少特征向量之间的差异,从而使它们在整个批次内均匀分布。

Adapting the resolution

这一步主要是涉及在预训练的最后一段时间内,将图像的分辨率提高到 518×518 ,便在下游任务中更好地处理像素级别的信息,例如分割或检测任务。高分辨率的图像通常需要更多的计算资源和存储空间,因此只在预训练的最后阶段使用这种方法,以减少时间和资源成本。

部分摘自https://zhuanlan.zhihu.com/p/623274167

你可能感兴趣的:(人工智能,深度学习,机器学习)