DINOv2

DINOv2 的训练是一套集成了自监督学习(Self-Supervised Learning, SSL)前沿技术的综合架构。Meta AI 的核心目标是:在完全不依赖人工标签和文本对齐的情况下,训练出一个"全能型"的视觉骨干网络。

1. 基础架构:教师-学生自蒸馏 (Teacher-Student)

DINOv2 延续了 DINO 的经典设计,采用双网络结构:

• 学生网络 (Student):参数在每个训练步通过反向传播(梯度更新)直接学习。

• 教师网络 (Teacher):参数不通过梯度更新,而是通过学生网络参数的指数移动平均 (EMA) 逐步更新。

• 输入多裁剪机制 (Multi-crop):

• 全局图像 (Global views):较大分辨率(如 224 × 224),包含大面积语义,输入教师和学生网络。

• 局部图像 (Local views):较小分辨率(如 98 × 98),包含局部细节,只输入学生网络。这强迫学生网络从局部信息中去预测教师网络看到的全局信息。

2. 核心损失函数:多维度自监督学习

为了让模型同时拥有"理解大局(图像级)"和"看清细节(像素/图像块级)"的能力,DINOv2 组合了三种主要的损失函数:

  • 图像级损失(DINO Loss - 全局对比):

    • 将全局图像输入教师和学生网络,输出 CLS Token 的特征。

    • 通过 Softmax 将其投射到一个高维的"原型空间(Prototype space)"。

    • 计算教师和学生网络在图像级输出的交叉熵损失,促使两者的全局理解对齐。

    • 创新点:使用了 Sinkhorn-Knopp 中心化 算法替代了初代 DINO 的简单均值中心化,有效防止了特征坍塌(即模型偷懒,对所有输入都输出一样的特征)。

  • 图像块级损失(iBOT Loss - 掩码预测):

    • 引入了类似于 BERT 的掩码机制。在学生网络的输入中,会有一定比例的图像块(Patch Tokens)被故意遮挡(Masked)。

    • 教师网络则输入完整的、未遮挡的图像。

    • 目标:让学生网络基于未遮挡的上下文,去预测被遮挡区域在教师网络中的 Patch 特征。这极大地提升了模型对细节和密集感知(如语义分割、深度估计)的能力。

  • 特征均匀性约束(KoLeo Loss):

    • 为了防止特征过于拥挤或退化,引入了基于统计学(Kozachenko-Leonenko 距离)的正则化项。

    • 目标:强迫同一个 Batch 内的特征向量在特征空间中均匀散开,使特征表示更加多样化,大幅度提升了图像检索(Instance Retrieval)的性能。

3. 工程与稳定性优化(巨量参数训练的关键)

初代 DINO 在参数量扩大到 10 亿(1B)级别时,训练极易发生崩塌(梯度爆炸或损失变 NaN)。DINOv2 引入了多项稳定性和效率的改进:

• 权重不共享的投射头 (Untied Heads):DINO 损失和 iBOT 损失使用各自独立的 MLP 投射头,避免两种任务的梯度直接在头部冲突。

• 随机权重随机深度与 LayerScale:在 ViT 的残差连接中加入了缩放因子,使大模型初始化时更加稳定。

• 工程黑科技:全面集成了 PyTorch FSDP(完全分片数据并行)以切分模型参数、FlashAttention 减少显存占用,以及序列打包(Sequence Packing)技术,将不同尺寸的图像高效打包处理,大幅度提升了训练吞吐量。

4. 两阶段训练策略 (Resolution Recipe)

为了平衡训练成本和高分辨率表现,DINOv2 采用了非常聪明的两阶段法:

  1. 基础训练期:先在较大的 Batch Size 下,使用标准的分辨率(如 224 × 224)在 1.42 亿张精选图像(LVD-142M Dataset)上进行长时间的自监督预训练。 1 (https://arxiv.org/html/2304.07193v2)
  2. 高分辨率微调期(Time-efficient High-Res):在预训练的最后 10k 次迭代中,将图像分辨率提升至高分辨率(如 518 × 518)进行微调。这种方法用极低的算力成本,让模型获得了适应任意分辨率输入的能力。 1 (https://ritvik19.medium.com/papers-explained-250-dino-v2-e1e6d12a5c85), 2 (https://andlukyane.com/blog/paper-review-dinov2)

5. 大模型蒸馏小模型 (Knowledge Distillation)

在获得最大的 ViT-g/14 (11亿参数) 模型后,Meta 并没有直接去从头训练 ViT-S 或 ViT-B。他们用训练好的 ViT-g 作为强力的教师,直接通过知识蒸馏的方式训练低参数量的轻量化模型。结果表明,被蒸馏出来的小模型,其性能远超直接从头自监督训练的小模型。

6. 极强的语义分割(Semantic Segmentation)和部件级分割(Part Segmentation)能力

DINOv2 本质上是一个自监督模型,训练时根本没有看过任何人类标注的分割标签(Mask)。但它在训练结束后却展现出极强的语义分割(Semantic Segmentation)和部件级分割(Part Segmentation)能力,这主要归功于以下三个核心原因:

6.1. 关键功臣:iBOT 的"掩码图像建模(MIM)"

这是 DINOv2 拥有高分辨率、像素级分割能力的最主要原因。

• 像做完形填空一样训练:在训练时,学生网络输入的图片有很大一部分 Patch(图像块,通常是 14 × 14 像素)被强行抹黑(Masked)了。

• 逼迫网络理解局部连续性:网络必须根据周围没有被遮挡的画面,去猜出并重建被遮挡部分的特征。

• 带来的结果:为了完成这个任务,网络被迫学会了"像素与像素之间的空间几何与语义连续性"。它必须清楚地知道物体的边界在哪里、手和手臂是怎么连接的,这种对边缘和局部区域极其敏锐的感知力,天然就是为了分割任务准备的。

6.2. DINO 机制带来的"物体聚焦"能力

初代的 DINO 就展现出了令人惊叹的"自注意力图(Self-Attention Maps)"自动聚焦物体的特性,DINOv2 完美继承并强化了这一点。

• 自监督的对比学习:DINO 强迫同一个物体的不同视角(比如一只猫的正面和侧面,或者猫的局部和整体)在特征空间里聚合。

• 自发产生的注意力:在没有任何监督信号的情况下,网络中的注意力机制(Attention)会自发地追踪场景中最具有语义信息的核心实体。如果你可视化 DINOv2 最后一层的注意力权重,你会发现它精确地把前景物体(如鸟、车、人)的轮廓抠了出来,背景被自动忽略。这为语义分割提供了完美的"前景-背景"分离基础。

6.3. 高维语义空间的"物以类聚"

DINOv2 经过 1.42 亿张图片的洗礼,它的特征空间具有极强的语义凝聚性(Semantic Clustered Space)。

• 无论是在全局 CLS 向量还是在局部的 Patch 向量上,只要是同一种语义的物体(或物体的某个部位),它们的特征向量在几何空间中的距离就会非常近。

• 降维即可分割:如果你把 DINOv2 提取出来的 Patch 特征进行 PCA(主成分分析)降维,并映射成 RGB 颜色,你会发现不需要任何微调,同一个物体的不同部位(如狗的耳朵、鼻子、躯干)或者同类物体,就已经自动被染上了相同的颜色。这意味着,下游的分割网络只需要加上一个非常轻量级的线性层(Linear Probe)或者简单的解码器(如 Mask2Former),就能直接把这些高度凝聚的语义特征转化为精细的分割图。

总结一个形象的比喻:

DINOv2 就像一个狂热的拼图爱好者(通过 MIM 损失)和分类强迫症患者(通过 DINO 损失)。虽然没有人教它什么是"猫的轮廓",但为了把被遮挡的猫拼出来,并把不同的猫归为一类,它自己私底下已经把猫的边界和每个部位研究得极其透彻了。

相关推荐
zs宝来了7 个月前
Elasticsearch 索引原理:倒排索引与 Segment 管理
elasticsearch·索引·倒排索引·源码解析·segment
伊织code2 年前
SAM 2 (Segment Anything ):图像与视频通用分割模型
sam·图像·视频·模型·segment·anything·分隔
少林码僧2 年前
Elasticsearch的Index sorting 索引预排序会导致索引数据的移动吗?
elasticsearch·搜索引擎·segment
竹子的神秘微笑3 年前
segment方案解决VXLAN分布式网关DCI间互联
数据中心·分布式vxlan·segment·dci间互联