自监督预训练需要大规模数据集吗?这是2021年发布的一篇论文,它在自监督预训练场景中使用小数据集,如Stanford Cars, Sketch或COCO,它们比ImageNet小几个数量级。并提出了一种类似于BEiT的去噪自编码器的变体SplitMask,它对预训练数据的类型和大小具有更强的鲁棒性。
SplitMask
SplitMask是基于三个步骤:split, inpaint 和match。
split:与标准ViTs一样,图像首先被分解为16×16像素块。然后将图像分割为两个不相交的子集A和B,分别由共享深度ViT编码器进行独立处理。
Inpaint:接下来,使用子集A的patch表示和一个浅解码器(例如2层),通过解决掩码图像建模(MIM)任务(BEiT),子集B的patch被“填充”。
最后,对每个分支对应的解码器输出的patch表示进行平均池化,得到全局图像描述符。
Match:使用两个表示xa和xb,分别对应于观测patch的子集A和B来估计InfoNCE loss (CPCv1):
添加这种对比损失的动机是鼓励模型产生全局一致的特征,这些特征在不同选择的观察子集之间是一致的,而不依赖于任何手工设计的转换。
结果
1、消融研究
仅使用5%的ImageNet样本就能达到峰值性能,添加更多的样本并不能提供额外的提升。使用10% ImageNet子集。训练近3k个epoch的长时间,与完整ImageNet的300个epoch的总更新次数相匹配。
使用autoencoder**loss、BEiT和SplitMask**(如MIM)进行预训练对数据集大小的减小具有鲁棒性。而DINO则与监督预训练一样,当使用较小的数据集进行训练时,模型的性能会下降。
通过更简单的选择替换DALL-E标记器不会导致准确性的任何显着降低。
2、COCO
使用COCO图像对DINO进行类似的预训练则得到了相对较弱的性能,仅优于随机初始化。与BEiT基线相比,SplitMask带来了一致的改进,例如使用viti -small时的+0.6 box AP和使用viti -base的+0.3 mask AP。
3、ADE20K
即使使用相对较小的20k图像样本进行预训练,去噪自编码器也可以在这种具有挑战性的任务上提供非常有竞争力的性能。
4、小数据集
SplitMask可以进一步提高多个数据集的性能:例如,在iNaturalist 2018数据集上,可以看到基于vit的模型的精度提高了3.0。
5、ImageNet
SplitMask提供了强大的性能,在所有骨干网上都优于BEiT和MoCo v3。
论文地址:Are Large-scale Datasets Necessary for Self-Supervised Pre-training?
https://avoid.overfit.cn/post/21d79b50015d406694bcf063b12c02e3
作者:Sik-Ho Tsang