论文链接:https://arxiv.org/abs/2206.07692 CVPR2022
Abstract
论文重点研究了数据混合在自监督设置中的有效性,注意到共享相同源图像的混合图像之间存在内在联系,提出了SDMP(简单数据混合先验),并将这些混合图像视为额外的正样本对,以促进自监督表示学习。
注:SDMP使数据混合能够帮助自监督学习框架(例如MoCo)实现更好的准确性和鲁棒性。并且SDMP是第一种成功利用数据混合来提高(而不是损害)ViT在自监督中性能的方法。
Introduction
数据混合可以有效地改进识别模型。Mixup论文中引入了第一个数据混合策略,它根据图像对及其标签的凸组合来训练模型。这个想法随后激发了几个后续的想法:
- mixing images and cropped patches
- mixing images and thumbnails
- mixing among cropped patches
有趣的事情是:将原始图像替换为混合图像可以大大改善监督设置下的ViTs,但它不能改善自监督设置下的ViTs。
尽管目前有不少论文做出了改进,开发了更复杂的数据混合训练策略,如下:
- Hard negative mixing for contrastive learning NeurIPS, 2020
- A domain-agnostic strategy for contrastive representation learning ICLR, 202
- Towards domain-agnostic contrastive learning ICML, 2021
注:上述论文提出的方法均是基于CNNs的,故仍然不能帮助,甚至会降低ViT性能。
SDMP论文的目标是在数据混合中开发一种通用的训练策略,可以改善CNNs和ViTs的自监督表示学习。
目前流行的数据混合方法,一般所做内容为:将其中一个图像与另一个从同一批中抽样的图像进行混合,比如下图所示,将狗头与猫进行混合,猫腿与狗进行混合,这些得到的混合图片,天生成对相关。
注:对于共享同一源的混合图像(例如猫和狗),它们在语义上是相关的,可以在自监督学习中被视为额外的正对。
这说明对于一幅混合图像,在同一个训练批中存在三个相关的样本,即一对源图像和用不同的混合系数生成的混合图像。这种内在关系使得这对混合图像在自监督学习中被视为额外的正样本,以促进表征学习。
注:传统的数据混合实现是随机抽取两批数据进行混合,而上述数据混合方法只对一个批进行采样,然后混合来自同一批的图像对。它通常不会影响性能,并且计算速度更快。
基于上述观察结果,在此提出利用简单数据混合先验(SDMP)来整体建模样本之间的关系,以增强自监督学习。不同于以往的方法,SDMP不仅考虑了源图像和混合对之间的关系,而且在表示学习中对混合样本之间的联系进行编码。SDMP进一步增强了表示学习,通过语义加权损失,以准确捕获样本之间的关系。
实验结果验证了SDMP成功帮助自监督学习框架在基准上获得更好的准确性和分布外样本的鲁棒性,且SDMP是使用数据混合方法改善自监督中ViT的第一个策略。例如,在MoCo v3的基础上,现有的数据混合策略都降低了ViT-S的top-1 ImageNet精度0.2%-1.6%,但SDMP成功地提高了ViT-S的0.6%,达到73.8%的top-1 ImageNet精度。
Related Work
1.Self-supervised learning
自监督学习的目的是让模型在没有人工标注的情况下获得有语义的表示。
传统的pretext任务包括自编码器重建,着色,旋转预测等以及这些方法的组合。
旨在区别不同样本的对比学习是最成功的pretext任务之一。其核心思想是使正样本对的相似性最大化,使负样本对的相似性最小化。例如SimCLR需要大的batch sieze,MoCo需要momory bank,SwAV需要聚类。而后续出现的对比学习方法更是直接去除了负样本的需要,实现了小批量训练。
在该论文中,其专注于通过数据混合生成额外的正样本对来改进自监督学习。
2.Data mixing
Mixup是第一个关于数据混合的工作,它将数据对及其对应的标签进行凸组合,使网络训练更加规范化,并激发了许多后续方法,包括Cutout,CutMix,SaliencyMix,PuzzleMix。
数据混合也可以规范自监督学习。Verma等人利用Mixup通过不同的混合数据样本来创建相似和不同的示例,无论是在输入或隐藏状态级别。Mixco与i-mix论文探索了正负对样本混合的半对比编码。
3.Transformers
最近,Dosovitskiy等人成功地为计算机视觉引入了Transformer架构,在一系列视觉基准上获得了与cnn相比具有竞争力的识别性能。然而原始的ViT训练框架在训练中要求数亿张图像,这是需要解决的约束。
Touvron等人通过将一组强正则化技术整合到ViT训练框架中来缓解上述提到的训练约束,其中数据混合(更具体地是指Mixup和CutMix)发挥着至关重要的作用。
Method
1.Which Images For Mixing?
传统上,数据混合通过混合两个随机抽样图像(通常从两个不同的最小批)来生成混合数据。
该论文遵循了深度学习包(timm)中的混合策略:将第i张图像与另一张随机选择的来自同一批的第j张图像混合。
注:为了便于实现,默认设置j等于n-i,其中n为这批图像的数量。
注:将这种混合策略称为intra-batch混合,或者称为批内混合?..
2.How To Mix?
对于图像的混合,主要考虑:
- 基于元素的数据混合方法,Mixup
- 基于区域的数据混合方法,CutMix和ResizeMix
1)Mixup
具体过程为取权重λi,遵循Beta分布即Beta(α,α),将数据混合如下:
其中xi和xn-i表示第i和(n-i)个图像,Xi‘和xn?i’是源图像xi和xn?i的增强图片,由数据增强(例如color jittering)创建。
2)CutMix
CutMix通过将一个特定的patch从一个图像粘贴到另一个图像来组合数据,也就是说混合数据来自一个完整的图像和另一个图像的局部区域。默认情况下,Mixup和CutMix都包含在ViT的监督训练设置中。
3)ResizeMix
CutMix的一个潜在问题是裁剪的patch和图像本身可能与标签无关。为了让裁剪后的patch能够准确地传递相应的语义,ResizeMix建议将调整后的源图像作为patch,并像下面这样混合数据:
R(xi,h,w)表示应用高度为h,宽度为w的图像调整函数;
Paste(P, x)表示将patch粘贴到图像xi的随机位置上;
Hi, Wi是第i个图像xi的高和宽;
Hpi, Wpi为第i张图像xi的随机采样patch高度和patch宽度。
4)SDMP通过组合上述方法来获得额外的正样本对
SDMP可以得到三种正样本对,个人解析如下:
- 一个批内随机取两张不同图片,假设为猫的源图以及狗的源图
- 猫进行两种不同的Aug,得到两种对应源图的数据增强图,记为第一种正样本对Naive(狗同理)
- 猫的源图与狗的源图进行混合,得到混合图(两个个混合图),然后对混合图分别进行数据增强处理,记为第二种正样本对Intra Batch Positive
- Naive中的增强图与Intra Batch Positive中的混合增强图形成第三种正样本对Source Positive
SDMP大致算法如下(官方给的):
a, b = aug(x), aug(x)
lam = Beta(alpha, alpha).sample()
a = mix(a, a.flip(), lam)
a = normalize(model(a))
x_one_hot = one_hot(arange(len(x)))
logits1 = matmul(a, normalize(model(b)).T) / t
label1 = lam * x_one_hot + (1-lam) * x_one_hot.flip()
loss1 = CrossEntropyLoss(logits1, label1)
clam = min(lam, 1-lam.flip()) + min(1-lam, lam.flip())
logits2 = matmul(a, normalize(model(mix(b, b.flip(), lam))).T) / t
label2 = 1/(1+clam) * x_one_hot + clam/(1+clam) * x_one_hot.flip()
loss2 = CrossEntropyLoss(logits2, label2)
loss = loss1 + loss2
3.What Is the Label?
假设在自监督设置中没有真实的标签,接下来将展示如何相应地分配虚拟标签。
详解两个自监督学习框架(contrastive learning以及knowledge distillation)的虚拟标签分配。
1)contrastive learning
对比学习将自监督学习定位为实例分类任务,一张源图只产生一对正样本对,并将其余所有样本设置为负样本。
SDMP通过引入额外的正样本对,放宽了这个限制,具体操作是通过将虚拟正标签附加给以下两组:
- 源数据和混合对应数据
- 源数据相同但混合系数不同的一对混合数据
这种标签分配使得模型学习到一种能力:最小化多个样本对之间的距离。
使用MoCo框架作为对比学习的具体实例
将混合数据xim作为query输入至编码器f,将源图像的另一个视图xi‘和xn?i’(通过数据增强获得)作为key输入至动量编码器fk
这部分损失(源损失)可以写成:
注:其中τ是将输出y归一化的温度,而召回λi是创建混合数据xim的混合系数。
在timm中遵循intra-batch策略来混合一批数据及其相应的反向顺序对应数据。注意,这种混合图像自然是成对相关的,例如xim和xn-im是相关的,因为它们都是由xi和xn?i混合创建的。
因此这里的损失(混合损失),它旨在从混合数据之间的关系中学习,可以写成:
注:其中λc系数旨在捕捉两个混合数据之间的共享语义。
综上所述,MoCo中SDMP的全部损失:
2)knowledge distillation
最近的研究表明在自监督学习中,负样本可以被舍去,即只使用正样本构建模型。
在此重点研究DINO中引入的知识蒸馏框架,相应的蒸馏损失为: H(Pt(x),Ps(x)) = ?Pt(x)*logPs(x),记为LDINO
注:LDINO是原始的DINO损失,适用于没有数据混合的knowledge distillation
添加了数据混合后,额外得到两种损失:
综上所述,在DINO的SDMP总损失为:L = LDINO + LDINOs + LDINOm
注:关于引入SDMP的DINO细节请看原论文…
Experiment
1.details
数据集使用ImageNet和CIFAR-10/100
由于以往的研究没有成功地将数据混合用于改进自监督ViTs,故实验将ViT-S作为基准。
ViT-S的输入patch大小为16×16,因此对于一个224×224的输入图像,序列长度为196
ViT-S共有12个transformer blocks,每个块的特征维数为384
对于数据增强,遵循BYOL中的设置,其中包括random resize and crop, color jittering, Gaussian Blurring, and solarization,即随机调整大小和裁剪、颜色抖动、高斯模糊和日光化。
使用具有权值衰减的Adam作为优化器,并按照线性缩放规则设置学习率,即lr=0.0005*batchsize/256
默认的训练batch大小是1024
2.Data Mixing Strategies(消融实验的部分内容)
对于每个batch,SDMP中的默认设置是从集合{Mixup, Cutmix, ResizeMix}中均匀随机地选择一个数据混合策略。
为了消除应用不同数据混合策略的影响,我们将默认设置与两个附加设置进行比较:
- 专门应用基于元素的数据混合Mixup
- 专用于区域数据混合Resizemix
注意到即使只应用了一种数据混合策略,SDMP始终优于普通MoCo v3或DINO基线
当{Mixup, Cutmix, ResizeMix}都被使用时,SDMP达到了最好的结果。
3.main results
ImageNet:线性评估(Linear Evaluation)不同预训练方法的ImageNet性能
CIFAR-10/100:选择ResNet-50和ResNet-101作为CNN预训练的主要架构,并且稍微修改了ResNet架构,使其更适合CIFAR-10/100训练,具体改变见原论文;同时选择了最新的MoCo v3作为自监督学习框架。
注:论文还做了如下内容:End-to-End Fintuning,Semi-Supervised Learning,Robustness on Out-of-Distribution Datasets以及一大堆消融实验,具体见原论文。
Conclusion
论文开发了一种通用的训练策略,使数据混合能够有效地帮助自监督训练,特别是使用Vision Transformers。
通过遵循timm中的intra-batch数据混合策略,提出的SDMP以精确的方式捕获混合数据之间的内在关系。
|