Abstract
在自然语言处理方面的模型,可以产生通用视觉特征(即无需微调即可跨图像分布和任务工作的特征)来极大地简化任何系统中图像的使用。这些模型能够提取出一些可以在不同类型的图像和任务中通用的视觉特征。这意味着不管图像的来源(例如,来自不同的相机或场景)或者任务的具体需求(例如,分类、检测等),这些提取的特征都能有效工作。这种通用性能够减少针对具体任务进行模型微调的需求,从而简化了图像在系统中的处理流程。
那么通用的视觉特征比如:边缘和纹理、颜色和亮度分布等等。
如何产生这样的通用视觉特征呢?
答:现有的预训练方法,尤其是自监督方法,如果使用来自不同来源的足够的精选数据进行训练,可以产生此类特征。在数据方面,我们提出了一个自动管道(automatic pipeline)来构建专用的、多样化的和精选的图像数据集。
1.Introduction
- 无任务特定的预训练表示:模型并不是针对某一个特定的任务(例如情感分析或翻译),而是通过大量的文本数据学习语言的基本结构和语义。这种预训练使得模型能够掌握通用的语言特征,随后可以在多种下游任务中直接使用,而不需要再进行针对特定任务的训练,从而提高效率和性能。
- 无需微调的使用:这些预训练的特征可以“直接使用”,即在许多下游任务中,不需要针对特定任务进行微调。这意味着,研究者和开发者可以直接使用这些模型,而不必耗费时间和资源进行额外的训练。这些预训练模型甚至优于那些特定任务模型的性能。
- 成功的原因:①大量原始文本的预训练(数据层面):使用了非常大的文本数据集,而这些文本数据通常是没有标注的,让模型通过处理大量文本来学习语言的结构、词语的语义以及它们的相互关系②无需监督的预训练目标(任务层面):语言模型(Language Modeling)和词向量
- text-guided pretraining:模型通过图像和对应的文本描述(如图像的标题或注释)一起进行训练,文本为模型提供监督信号,帮助模型更好地理解和处理图像。
- 自监督学习代替text-guided pretraining:从图像本身(而不是文本描述)中学习特征。
3.Data Processing
筛选的几个目的:
①增强数据集规模:
- 人工筛选数据虽然质量高,但数量有限。而未筛选的数据通常规模非常庞大,尽管质量参差不齐。通过这个管道,可以从未筛选数据中提取更多有用的图像,从而扩大数据集的规模。
②保持数据多样性:
- 人工筛选数据的来源和内容可能有局限性,而未筛选数据可能包含更多种类的图像。通过管道的去重和匹配机制,可以从未筛选数据中获取与已筛选数据相似但又不重复的新图像,这样不仅可以扩大数据集,还可以增加图像的多样性,提升模型对不同场景的泛化能力。
③提高自监督学习效果:
- 自监督学习模型依赖大量未标注的数据来训练,如果仅依赖小规模的人工筛选数据,模型可能无法学到丰富的特征。通过这个管道从未筛选数据中筛选出有价值的部分,可以进一步增强模型的训练效果,尤其是在处理各种下游任务时。
④减少噪声,保证质量:
- 未筛选数据虽然数量庞大,但往往包含大量噪声(如重复、不相关或低质量图像)。通过管道的去重和检索步骤,可以过滤掉不相关或低质量的数据,确保未筛选数据中的有用信息能够补充到精心筛选的数据集中,而不会引入噪声。
处理的步骤:
去重的目的:
确保数据集的每一个样本都是独特的,避免模型在训练时学习到重复或冗余的信息。重复数据会导致模型过拟合,并减少模型从多样数据中学习到的潜在特征。通过去重,你可以:
- 提高数据的质量:去掉重复或高度相似的图片,使得数据集中每个样本对模型来说都是有独特价值的。
- 减少冗余:训练时不会因为相同的样本多次出现而浪费计算资源,优化模型的训练效率。
检索的目的:
虽然数据集经过去重,数据质量得到提升,但这并不意味着数据集已经足够多样化或覆盖足够广泛的场景。检索扩展数据集的目的是在去重后的基础上,增加新的数据,特别是那些与任务相关但还未包含在数据集中的样本。检索扩展可以:
- 增加数据的多样性:即使去重后的数据集独特,但可能在某些特定场景、特征或类别上仍然数据不足。通过检索,可以找到更多在这些方面有所补充的数据。
- 扩展数据规模:去重后,数据集的规模可能会缩小,而大规模的多样化数据对深度学习模型的训练是至关重要的。检索可以帮助扩展数据集规模,使其更具代表性和通用性。
- 发现未标注数据中的有用样本:从未标注的大规模图像数据中,可以检索出与现有数据集相关的样本,填补原始数据集中的不足。
为什么去重后又要扩展:假设你有一个用于识别不同品种猫的数据集,经过去重之后,你的猫的图片都不重复了,但这个数据集可能缺乏多样性,比如同一种猫都是在室内、白天的图片。通过检索,你可以从其他数据源中找到一些相似但具备差异化特征的图片,比如在不同环境下(如室外、夜晚)、不同角度拍摄的相同品种的猫。这样,你的数据集不仅覆盖了更多的场景,还能提升模型在现实世界中应对不同情况的能力。
显卡支持:
我们管道的重复数据删除和检索阶段依赖 Faiss 库(Johnson et al., 2019)来有效地索引和计算最近嵌入的批量搜索。 特别是,我们充分利用了它对 GPU 加速索引的支持,使用带有产品量化代码的倒排文件索引(Jegou 等人,2010)。 整个处理分布在配备 8 个 V100-32GB GPU 的 20 个节点的计算集群上,生成 LVD-142M 数据集需要不到两天的时间。
4 Discriminative Self-supervised Pre-training
我们通过一种有区别的自我监督方法来学习我们的特征,该方法可以被视为以 SwAV 为中心的 DINO 和 iBOT 损失的组合(Caron 等人,2020)。 我们还添加了一个正则化器来传播特征和一个简短的高分辨率训练阶段。 我们快速介绍每种方法.
1.图像级别目标 (Image-level objective):
- DINO损失:使用学生网络和教师网络的类标记(class token)来计算交叉熵损失。类标记来自图像的不同裁剪,通过ViT模型(视觉Transformer)提取。
- DINO头:学生网络的类标记经过学生的DINO头(一个MLP模型)输出一组分数,称为原型分数(prototype scores)。通过softmax得到学生网络的概率分布 psp_sps。
- 教师网络的类标记也通过教师的DINO头,生成教师网络的概率分布 ptp_tpt,这个分布经过移动平均中心化(或Sinkhorn-Knopp中心化)。
- DINO损失公式:通过交叉熵计算损失,公式为:
LDINO=−∑ptlogpsL_{DINO} = - \sum p_t \log p_sLDINO=−∑ptlogps
学生网络的参数是通过训练学习的,而教师网络的头是通过过去迭代的指数移动平均(EMA)构建的。
2. Patch级别目标 (Patch-level objective):
- iBOT损失:对学生网络的输入随机遮盖一些图像补丁(patch),而对教师网络不进行遮盖。将学生网络的遮盖补丁通过iBOT头处理,并对教师网络中对应的可见补丁应用同样的处理。
- 学生和教师的输出再进行softmax和中心化操作,计算得到iBOT损失:
LiBOT=−∑iptilogpsiL_{iBOT} = - \sum_i p_{t_i} \log p_{s_i}LiBOT=−∑iptilogpsi
其中 iii 是被遮盖的补丁的索引。
3. 分离头部权重 (Untying head weights):
- DINO和iBOT损失都使用了可学习的MLP投影头。文中提到,虽然早期研究表明共享DINO和iBOT的投影头会带来更好的性能,但在大规模实验中发现分离两个头的参数会有更好的效果。因此,作者在实验中使用了两个独立的投影头。
4. Sinkhorn-Knopp中心化 (Sinkhorn-Knopp centering):
- SwAV中的Sinkhorn-Knopp算法被用来代替教师网络中的softmax中心化步骤。Sinkhorn-Knopp算法能够更好地规范化输出。在学生网络中,依然使用softmax归一化。
5. KoLeo正则项:
- 这是一个基于Kozachenko-Leonenko微分熵估计器的正则化方法,目的是让特征在批次内的分布更加均匀。具体公式为:
LKoLeo=−1n∑i=1nlog(dn,i)L_{KoLeo} = - \frac{1}{n} \sum_{i=1}^{n} \log(d_{n,i})LKoLeo=−n1∑i=1nlog(dn,i)
其中 dn,id_{n,i}dn,i 是向量 xix_ixi 和其他向量之间的最小距离。为了计算这个正则项,特征会先进行 ℓ2\ell_2ℓ2-归一化。
6. 调整分辨率 (Adapting the resolution):
- 提高图像分辨率对于像素级别的下游任务(如语义分割、目标检测)非常重要,因为低分辨率会导致小物体的丢失。为了避免在整个训练过程中都使用高分辨率带来的计算开销,作者选择在预训练的最后阶段短期地将图像分辨率提升到518×518。这种策略类似于UniViT和FlexiViT的训练方法。
5 Efficient implementation
我们使用 PyTorch 2.0 在 A100 GPU 上训练模型。 代码和预训练模型在 Apache 2.0 许可证 1 下提供。我们模型的详细信息请参见附录表 17。在相同的硬件下,与 iBOT 实现相比,DINOv2 代码的运行速度大约快 2 倍,仅使用 1/ 3.内存。
Fast and memory-efficient attention:
- 每个头的嵌入维度(embedding dimension)为64的倍数时效率最佳。
- 当整体嵌入维度是256的倍数时,矩阵运算的效率更高。
sequence packing
DINO算法需要同时处理两种不同大小的图像裁剪:大的裁剪(分辨率224)和小的裁剪(分辨率98)。这些裁剪在转换为图像块(patches)后,形成了不同长度的序列,不能直接一起处理。为了加快训练,使用了来自自然语言处理(NLP)领域的“序列打包”技巧(Krell et al., 2022)。具体做法是将需要通过变换器(transformers)处理的多个序列连接成一个长序列。在自注意力层中,使用了一个块对角矩阵掩码(block-diagonal mask),以防止不同序列之间的注意力相互作用。这意味着尽管所有序列都在同一个长序列中处理,但实际上每个序列之间并不相互影响。这种方法使得前向传播(forward pass)与分别处理每个序列的效果严格等同,但相比于以前的实现,使用这种打包方式可以显著提高计算效率,避免了单独的前向和反向传播(backward pass)的开销。
FSDP有效地管理内存和提升计算效率
Model distillation
对于较小的模型,我们从最大的模型 ViT-g 中提取它们,而不是从头开始训练它们。知识蒸馏(Hinton et al., 2014)旨在通过最小化一组给定输入的两个输出之间的距离,用较小的模型再现大型模型的输出。
6 Ablation Studies
6.1 Improved Training Recipe
Table1:评估在iBOT方法基础上添加不同组件后的效果。具体来说,它比较了每次添加某个组件后,在ImageNet-1k数据集上的k-NN(k近邻)和linear probe(线性探测)评估方法的Top-1准确率
6.2Pretraining Data Source
6.3 Model Size and Data
模型规模与数据规模。 两个不同预训练数据集的性能随模型大小的变化:ImageNet-22k(14M 图像)和 LVD-142M(142M 图像)。 在大多数基准测试中,在 LVD-142M 上训练的 ViT-g 超过了在 ImageNet-22k 上训练的 ViT-g。
6.4 Loss Components
6.5 Impact of Knowledge Distillation
6.6 Impact of Resolution
7 Results
7.1 ImageNet Classification
研究人员通过在冻结的主干网络上训练一个简单的线性分类器来评估特征的质量,没有对主干权重进行微调。虽然类可能并不是线性可分的,但这种方法保证了可重现的评估。研究还报告了在ImageNet-ReaL和ImageNet-V2上的top-1准确率,以便与之前的自监督学习(SSL)方法进行比较。结果表明,所提出的方法在线性评估中相较于之前的最佳SSL特征(iBOT ViT-L/16训练于ImageNet-22k)有显著提高(+4.2%),同时在替代测试集上的性能提升更大,显示出更强的泛化能力。具体的线性评估细节可以在附录B.3中找到。
与最先进的弱监督模型的比较:研究人员在ImageNet-1k上使用线性评估方法,与三种现成的弱监督方法及其多种架构变体进行比较。所有模型的评估都是在确保结果与技术报告和论文中报告的数据相符的基础上进行的。结果显示,所提出的主干网络在性能上超越了OpenCLIP(ViT-G/14架构,+0.3%)和EVA-CLIP(ViT-g/14,+0.1%)。此外,在ImageNet-V2测试集上的性能提升显著(相比EVA-CLIP提高了+1.1%),表明了更好的泛化能力。接下来,这一部分将以OpenCLIP-G作为弱监督模型的参考。
7.2 Additional Image and Video classification Benchmarks
①研究了所提特征在下游分类基准上的泛化能力。评估分为两类:一类是大型细粒度数据集,如iNaturalist和Places205;另一类是SimCLR(Chen等,2020)提出的12个图像分类任务。在iNaturalist 2018、iNaturalist 2021和Places205上,研究人员使用数据增强技术训练线性分类器,并在表7中报告了这三个数据集的top-1准确率。结果显示,该模型在两个iNaturalist变体上显著优于OpenCLIP ViT-G/14(2018年和2021年分别提高了8.6%和9.7%),而在Places205上稍微落后(低2.3%)。
②模型在视频动作识别任务上的性能评估,尽管模型的特征并没有针对视频训练。研究人员在三个数据集上进行了评估:UCF-101、Kinetics-400和Something-Something v2(SSv2)。为了评估,研究者从视频中选择8帧均匀分布的帧(帮助模型捕捉视频中不同时间点的特征,而不是集中在某一特定时刻,从而更好地理解视频内容。),并对UCF和Kinetics使用特征平均的方式训练线性分类器,而对于SSv2,则采用拼接方式,以保留更多的时间信息。每个数据集的平均准确率被测量并在表7中报告。结果显示,在自监督学习方法中,所提模型显著创下新纪录。此外,在UCF和Kinetics数据集上,模型的准确率与OpenCLIP特征相当(分别提高了0.1%和0.5%),而在SSv2上则明显超越OpenCLIP(提高了2.5%)。这一点尤为重要,因为SSv2需要对视频帧有更丰富的理解。
7.3 Instance Recognition
在实例级识别任务中使用非参数方法评估模型的实验。研究人员通过计算查询图像与数据库中图像的余弦相似度,对图像进行排名。实验在Paris和Oxford这两个地标识别基准上进行比较,还评估了Met和AmsterTime,这是一组与阿姆斯特丹档案图像匹配的街景图像。通过计算平均精确度(mean average precision, mAP)来衡量性能,并在表9中报告结果。结果显示,所提特征在Oxford-Hard数据集上分别比自监督学习(SSL)高出41%的mAP,和弱监督学习高出34%的mAP,表现显著优于这两种方法。此外,所提特征在类别级别和实例级别的任务上均表现良好,这表明其具备强大的通用性,适合用作强大的计算机视觉特征。
7.4 Dense Recognition Tasks
Semantic segmentation
linear:其中通过训练一个线性层从补丁标记(patch tokens)预测类别 logits,生成低分辨率的 logits 图(例如,模型补丁大小为16时为32x32),然后将其上采样到全分辨率(512x512)以获得分割图。这种方法简单但难以产生高分辨率的分割结果。第二种是“+ms”设置,这是对线性设置的增强版本,通过拼接最后四层的补丁标记,使用640的更大图像分辨率,并在测试时使用多尺度增强来改善预测。研究人员在表10中报告了模型变体和基线在三个数据集上的性能。结果显示,所有设置和数据集上,模型表现都很好。尤其是使用“+ms”评估时,性能与全微调的MAE(使用Upernet解码器)相当(53.0与53.6 mIoU)。这一结果令人惊讶,因为所用的预测器显著简单。此外,在使用增强设置评估时,最佳模型的表现几乎与Pascal VOC的最先进水平相当(86.2与89.0 mIoU)。
Frozen backbone in a SOTA pipeline:
其中研究人员将其模型的主干网络(backbone)冻结,并将其集成到一个名为ViT-Adapter的架构中(由Chen等人于2023年提出),并使用了Mask2former头(由Cheng等人于2022年提出)。在这个设置中,研究人员调整适配器和头部的权重,但保持主干网络不变,因此66%的权重保持冻结。这种方法相比于完全的端到端微调,能实现更轻量的分割训练。
在这种设置下,模型在ADE20k数据集上达到了60.2的mIoU(平均交并比),接近竞争性的最先进水平62.9(由Wang等人于2022年获得)。尽管该实验的设置没有利用第5节中描述的优化方法,但分割训练仍然在16个V100 GPU上进行了28小时。这个实验展示了在保持大部分参数冻结的情况下,依然能取得接近最先进性能的成果。
Depth estimation:
使用了三个基准数据集:NYUd、KITTI,以及从NYUd到SUN3d的零样本迁移。研究人员遵循了Li等人(2022年)的评估协议,并考虑了三种不同的设置。
-
lin. 1:提取冻结变换器的最后一层,并将[CLS]标记与每个补丁标记连接,然后将标记双线性上采样4倍以提高分辨率。最后,使用分类损失训练一个简单的线性层,将深度预测范围划分为256个均匀分布的区间,并使用Bhat等人(2021年)的方法进行线性归一化。
-
lin. 4:使用与lin. 1相同的协议,但连接来自多个层的标记,具体层根据不同的ViT架构(ViT-S/B、ViT-L和ViT-g)而有所不同。
-
DPT:在冻结的模型上使用DPT解码器(Ranftl等人,2021年),设置回归任务。根据每种架构特征的维度调整头部的大小。
研究人员在表11中展示了所有基线、数据集和设置的结果,评估了不同方法在深度估计任务上的性能。
7.5 Qualitative Results
在语义分割和深度估计任务中的一些定性结果。具体内容如下:
-
定性结果展示:研究人员在图7中展示了在ADE20K数据集上的分割结果和在NYUd、KITTI及SUN RGB-D数据集上的深度估计结果。
-
模型比较:研究人员将DINOv2与使用线性分类器的OpenCLIP进行了比较。尽管线性分割模型的结果并不完美,但使用DINOv2主干的模型在这种评估设置下表现良好,明显优于OpenCLIP的结果。
-
OpenCLIP的缺陷:OpenCLIP-G生成的分割掩码显示出许多伪影和不连通的组件,表明其在处理分割任务时存在明显的问题。
-
深度估计的定性结果:在深度估计方面,DINOv2与OpenCLIP之间的定量差距得到了清晰的体现。虽然DINOv2和OpenCLIP提取的特征都能够线性分离复杂信息(如深度),但DINOv2的特征在深度估计上表现得更平滑,伪影更少。
-
具体实例:例如,在SUN RGB-D图像中,OpenCLIP完全忽略了椅子这个物体,而DINOv2则能够正确地将其定位。
Out-of-distribution generalization:
PCA of patch features
8 Fairness and Bias Analysis
8.1 Geographical Fairness
具体评估了模型在不同国家和收入水平的表现
8.2 Gender, Skintones and Age
关于模型在 性别、肤色 和 年龄 方面的分类评估实验