当前位置: 首页 > news >正文

DINOV2算法详解及V3中的改进

DINO 算法在自监督学习领域具有里程碑性质的意义,本文主要介绍 DINOV2 的算法原理及创新点分析。

一、DINOV2算法原理细节详解

1.1 DINOV2 的整体框架:Teacher-Student 架构的升级版

DINO V2 的整体框架,其实可以看作是 DINO (Distillation with No labels) 算法的“升级版”。DINO 算法本身就采用了 Teacher-Student 的知识蒸馏框架,而 DINO V2 在此基础上进行了多方面的改进和优化,使其性能更上一层楼。

Teacher-Student 架构中,Teacher 模型和 Student 模型都是 Transformer 架构,老师模型 (Teacher Model) 比较强大,负责生成“知识”(通常是模型的输出,例如特征向量或概率分布),学生模型 (Student Model) 比较弱小,负责向老师学习“知识”,并努力模仿老师的行为。

具体如下图所示:

从图中我们可以看到:

  1. 输入图像 (Input Image):DINO V2 的输入是一张图像。为进行自监督学习,DINO V2 采用了Multi-Crop Augmentation (多裁剪增强)的策略,对同一张图像裁剪出多个不同的 views (视角)。这些 views 分为两类:

  • Global Crop (全局裁剪):通常是较大尺寸的裁剪,例如 224x224 或 256x256,用于提供图像的全局信息。Global Crop 会被输入到 Teacher 模型中。

  • Local Crops (局部裁剪):通常是较小尺寸的裁剪,例如 96x96 或 112x112,用于提供图像的局部细节信息。Local Crops 会被输入到 Student 模型中。

  • Transformer Encoder (Transformer 编码器):Teacher 模型和 Student 模型都使用 Transformer Encoder 作为 backbone (骨干网络)。Transformer Encoder 的作用是将输入的图像 patches (图像块) 转换为特征向量。

  • Teacher Output & Student Output (Teacher 和 Student 模型的输出):Teacher 模型和 Student 模型分别将输入的 Global Crop 和 Local Crops 编码成特征向量,作为各自的输出。

  • Distillation Loss (蒸馏损失):DINO V2 的核心是知识蒸馏。它通过计算 Teacher 模型和 Student 模型输出特征之间的 Distillation Loss,来指导 Student 模型的学习。Distillation Loss 目的是让 Student 模型的输出尽可能地接近 Teacher 模型的输出,从而让 Student 模型学习到 Teacher 模型的“知识”。

  • Optimize Student Model (优化 Student 模型):通过最小化 Distillation Loss,DINO V2 使用梯度下降等优化算法来更新 Student 模型的参数,使其不断地逼近 Teacher 模型。

Teacher 模型的参数更新方式与 Student 模型不同:DINO V2 并没有直接使用梯度下降来更新 Teacher 模型的参数,而是采用了Exponential Moving Average (EMA,指数移动平均)的策略。具体来说,Teacher 模型的参数是 Student 模型参数的 EMA 版本,即 Teacher 模型的参数会缓慢地向 Student 模型的参数靠拢,但又不会完全相同。这种 EMA 更新策略能够有效地稳定 Teacher 模型的训练,并提高模型的泛化能力。

总结一下,DINO V2 的整体框架可以概括为:使用 Teacher-Student 架构,Teacher 模型处理 Global Crop,Student 模型处理 Local Crops,通过 Distillation Loss 来指导 Student 模型的学习,Teacher 模型的参数通过 EMA 方式更新。这种框架的设计,使得 DINO V2 能够有效地从无标注数据中学习到高质量的视觉特征。

1.2 DINOV2 中的 Transformer 架构

Transformer 模型的核心组件是 Self-Attention 自注意力机制)。自注意力机制能够让模型在处理序列数据 (如文本) 时,动态地关注序列中不同位置的信息,从而更好理解序列的上下文关系。Transformer 的基本结构可以概括为:Encoder (编码器) 和 Decoder (解码器) 两部分:Encoder 负责将输入序列编码成一个固定长度的向量表示,Decoder 负责将这个向量表示解码成目标序列。在 DINO V2 中,我们主要使用的是 Transformer Encoder 部分。

Transformer Encoder 的基本组成单元是 Transformer Block (Transformer 块)。一个 Transformer Block 通常包含两个子层:

  1. Multi-Head Self-Attention (多头自注意力):这是 Transformer 的核心组件。多头自注意力机制能够让模型并行地学习多个不同的注意力分布,从而更全面地捕捉输入序列的信息。

  2. Feed-Forward Network (前馈神经网络):这是一个简单的两层全连接神经网络,用于对自注意力层的输出进行非线性变换。

Transformer Block 的结构可以用下图表示:

在 DINO V2 中,Transformer Encoder 被应用于图像处理。为了将 Transformer 应用于图像,DINO V2 首先将输入图像划分为一个个小的 patches (图像块)。例如,对于一张 224x224 的图像,可以将其划分为 16x16 个 14x14 的 patches。然后将每个 patch 展平成一个向量,作为 Transformer Encoder 的输入序列。

DINO V2 使用的 Transformer Encoder 结构与 Vision Transformer (ViT) 类似。ViT 是 Google 提出的将 Transformer 应用于图像分类的经典模型。ViT 的结构非常简洁,主要由以下几个部分组成:

  • Patch Embedding (图像块嵌入):将输入图像划分为 patches,并将每个 patch 展平成向量,然后通过一个线性层进行 embedding (嵌入),得到 patch embedding。

  • Positional Encoding (位置编码):由于 Transformer 的自注意力机制是位置无关的,为了让模型感知到 patches 的位置信息,需要添加 positional encoding。ViT 使用的是可学习的 positional encoding。

  • Transformer Encoder Layers (Transformer 编码器层):由多个 Transformer Block 堆叠而成。

  • Classification Head (分类头):对于图像分类任务,ViT 通常会在 Transformer Encoder 的输出上添加一个简单的分类头,例如一个线性层或 MLP (多层感知机)。

DINO V2 使用的 Transformer Encoder 结构与 ViT 类似,但也有一些不同之处。例如,DINO V2 并没有使用 ViT 的 classification head,而是直接使用 Transformer Encoder 的输出特征进行自监督学习。此外,DINO V2 在 Transformer Encoder 的结构细节上可能也进行了一些调整和优化,以更好地适应自监督学习任务。1

1.3 对比学习机制:让 Student 模型向 Teacher 模型看齐

DINO V2 的核心思想是知识蒸馏,在 DINO V2 中,它采用了Contrastive Learning (对比学习)的机制来实现知识蒸馏。

对比学习是一种自监督学习方法,它的核心思想是“物以类聚,人以群分”。简单来说,就是将相似的样本拉近,将不相似的样本推远。在图像领域,我们可以认为同一张图像的不同 views 是相似的,而不同图像的 views 是不相似的。

DINO V2 将对比学习应用于知识蒸馏的做法是:

  1. Teacher 模型和 Student 模型分别处理同一张图像的不同 views。Teacher 模型处理 Global Crop,Student 模型处理 Local Crops。

  2. Teacher 模型和 Student 模型分别输出特征向量。Teacher 输出特征向量 _zt_,Student 输出特征向量 _zs_。

  3. **DINO V2 定义了一个 Contrastive Loss (对比损失)**来衡量 _zt_ 和 _zs_ 之间的距离。 Distillation Loss 其实就是一种 Contrastive Loss。。

1.4 DINOV2 中的 Loss

在 Loss 设计上,它引入了 iBOT (Image BERT Pre-training with Online Tokenizer) 的思想。

DINOv2 的总 Loss 由三部分组成:

1)损失

DINO V2 使用的 Contrastive LossCross-Entropy Loss (交叉熵损失)的变体。

在分类任务中,Cross-Entropy Loss 通常用于衡量模型预测的概率分布与真实标签之间的差异。假设模型预测的概率分布为p = [p_1, p_2, ..., p_C],真实标签的 one-hot 向量为 q = [q_1, q_2, ..., q_C],其中 C 是类别数。则 Cross-Entropy Loss 定义为:

而在 DINO V2 中将 Cross-Entropy Loss 应用于特征向量之间的对比学习。具体来说,对于 Teacher 模型输出的特征向量 z_t和 Student 模型输出的特征向量z_s,DINO V2 首先对它们进行softmax 归一化,得到概率分布 P_t和P_s。然后,DINO V2 将 P_t 作为“伪标签”,使用 Cross-Entropy Loss 来衡量P_s和 P_t 之间的差异。

其中:

  • 是 Student 模型输出的个 Local Crops 的特征向量。

  • 是 Teacher 模型输出的个 Global Crops 的特征向量。

  • 是所有 Teacher 和 Student 模型输出的特征向量的集合。

  • 是 temperature 参数,用于控制 softmax 的平滑程度。

该 Loss 函数的含义是:对于 Student 模型输出的每个 Local Crop 特征向量,我们希望它能够"预测"出 Teacher 模型输出的 Global Crop 特征向量,我们希望两者之间的相似度尽可能高,而和其他特征向量(包括其他 Teacher 和 Student模型的输出)之间的相似度尽可能低。

为进一步提高模型性能,DINO V2 在 Contrastive Loss 中还引入了两个重要技巧:

(1)Centering(中心化):在计算 softmax 之前,DINO V2 对 Teacher 模型的输出特征向量进行了中心化处理。具体来说,对于 Teacher 模型的输出特征向量,DINO V2 计算其均值,然后将减去,得到中心化后的特征向量。中心化的目的是防止模型 collapse(坍塌),即所有样本的特征向量都聚集到同一个点。

(2)Sharpening(锐化):DINO V2 对 Teacher 模型的输出概率分布进行了锐化处理。具体来说,对于 Teacher 模型的输出概率分布,DINO V2 使用一个更小的 temperature 参数来计算 Student 模型的概率分布。锐化的目的是让 Teacher 模型的概率分布更加 sharp(尖锐),从而提供更明确的学习目标给 Student 模型。

结合 Centering 和 Sharpening,DINO V2 的 Contrastive Loss 可以表示为:

其中是对应特征向量的均值(如果 来自 Teacher 模型,则,如果来自 Student 模型,则)。

2)iBOT Loss

这是提升密集预测(Dense Prediction)能力的关键。

  • 操作:对 Student 的输入进行 随机 Masking(类似 MAE,遮挡部分 Patch)。

  • 目标:Teacher 看到完整的图,Student 必须根据上下文,补全被 Mask 掉的 Patch 的特征。

  • 区别于 MAE:MAE 预测的是像素值(Pixel reconstruction),而 iBOT 预测的是 Teacher 提取的 特征分布(Feature Softmax)。这让模型学到的是语义而非纹理。

3)KoLeo Regularizer

为了进一步提升特征的利用率,引入了 Kozachenko-Leonenko (KoLeo) 差分熵正则项。

  • 作用:它鼓励 Batch 内的样本特征在特征空间中均匀分布(Uniform Span),避免特征簇过度拥挤。

总结一下,DINO V2 的对比学习机制可以概括为:使用 Cross-Entropy Loss 的变体,将 Teacher 模型的 Global Crop 特征向量作为“伪标签”,指导 Student 模型的 Local Crops 特征向量的学习。同时,引入 Centering 和 Sharpening 技巧,进一步提高模型的性能和稳定性。这种对比学习机制,使得 Student 模型能够有效地“看齐” Teacher 模型,学习到高质量的视觉特征。

1.5 Teacher 和 Student 模型之间的---知识蒸馏策略

DINO V2 的核心是知识蒸馏,而对比学习机制只是实现知识蒸馏的一种手段。知识蒸馏的最终目的是让 Student 模型学习到 Teacher 模型的“知识”。在 DINO V2 中,“知识”主要指的是 Teacher 模型学习到的 **特征表示 (Feature Representation)**。

Teacher 模型能够学习到更好的特征表示,主要归功于以下几个方面:

  1. Global View (全局视角):Teacher 模型处理的是 Global Crop,能够获取图像的全局信息,从而更好地理解图像的整体结构和语义内容。

  2. EMA Update (指数移动平均更新):Teacher 模型的参数通过 EMA 方式更新,能够有效地稳定训练过程,并提高模型的泛化能力。

  3. 更大的模型容量 (可能):在某些情况下,Teacher 模型可能比 Student 模型具有更大的模型容量 (例如,更深的网络结构或更多的参数)。更大的模型容量通常意味着更强的学习能力。

DINO V2 的知识蒸馏策略,有以下几个关键特点

  • Self-Distillation (自蒸馏):DINO V2 的 Teacher 模型和 Student 模型都是基于同一个网络架构 (Transformer),只是参数更新方式不同。这种 Teacher 模型和 Student 模型来自同一个网络的知识蒸馏方式,被称为 Self-Distillation。Self-Distillation 的优势在于,Teacher 模型和 Student 模型具有相似的特征空间,更容易进行知识迁移。

  • No Labels (无标签):DINO V2 的训练过程完全不需要人工标注的标签,只需要大量的无标注图像数据。这使得 DINO V2 能够充分利用海量的无标注数据,学习到通用的视觉特征。

  • Online Distillation (在线蒸馏):DINO V2 的知识蒸馏过程是 online 的,即 Teacher 模型和 Student 模型是同时训练的。相对于离线蒸馏,Online Distillation 的优势在于 Teacher 模型和 Student 模型可以相互促进,共同进步。

二、DINO系列演变进程中的改进创新

2.1 DINOV3中的改进

1)Gram Anchoring

DINOv3 引入了一个核心创新:Gram Anchoring Loss,其目的就是锁住几何结构。

Gram 矩阵:

锚定机制 (Anchoring):

DINOv3 的策略是:

  1. 在训练的中途,当 Dense 性能达到峰值时,保存一个 “Gram Teacher”(或者使用 Teacher 的历史版本)。

  2. 在后续训练中,增加一个约束:Student 的 Patch 特征的 Gram 矩阵,必须与 Gram Teacher 保持一致。

直观理解:类似于给模型加了一个限制条件,可以继续学习更高级的语义(让 Global Loss 变小),但是不能破坏 Patch 之间的相对位置关系和几何结构。

2)Axial RoPE (Rotary Positional Embeddings)

DINOv3 在 Backbone 上也做了针对性修改,传统的绝对位置编码在推理分辨率改变时(如 224 -> 800)性能会剧降。DINOv3 引入RoPE旋转位置编码,改善ViT在长序列中的几何一致性问题,并引入了 Jitter(抖动) 机制。使得模型天然支持任意分辨率输入,无需插值。

3)单教师多学生蒸馏

7B教师模型向多个学生(ViT-S/B/L)蒸馏,提供多种选择,兼顾性能与部署效率。

2.2 DINOV1/V2/V3 的改进之处对比

此处用表格总结DINO系列的改进之处:

维度DINOV1DINOV2DINOV3
核心思路Student–Teacher 自蒸馏,global 对齐DINOv1 + iBOT:global + patch 预测引入Gram Anchoring解决长训练下结构退化问题
位置编码绝对、相对位置编码绝对位置编码Axial RoPE + Jitter
数据规模以 ImageNet 为主(百万级)LVD-142M(1.42亿)Curated Web Data (17亿+)
训练目标Global CEGlobal CE + iBOT + KoLeo正则Global CE + iBOT + KoLeo正则+Gram Anchoring
强项ViT 上的自监督分割能力、简洁框架泛化强、任务覆盖面广、真正意义上的视觉基础特征极致(sota), Gram锁结构
工程优化多 crop + EMA + centering再加 FlashAttention / FSDP / 高分辨率收尾等FSDP2、fp8训练、高效推理
适用场景中小规模数据上自监督预训练希望直接用现成 backbone 做各种任务
http://www.jsqmd.com/news/980860/

相关文章:

  • MATLAB下开箱即用的NIfTI脑影像处理工具包:支持读取、可视化、保存及空间校正
  • Claude Opus 4.8 的 Token 消耗优化指南:少用 15% 步骤的秘诀(Effort Control + Prompt 精简)
  • 项目名称太长,导致隐藏
  • STM32F103超频实战:用CubeMX和Keil把ADC采样率推到2.5M以上(附VOFA+波形验证)
  • 智能通讯选型 2026年Q2国内智能液位变送器品牌TOP10盘点 - 仪表人叶工
  • 15分钟掌握抖音无水印批量下载:内容创作者的效率革命指南
  • KeymouseGo:3个步骤掌握鼠标键盘自动化,轻松告别重复劳动
  • 【2026】不锈钢水箱选购全攻略:全国优质厂家口碑盘点与性价比分析 - 品研笔录
  • 技术实现:ViGEmBus虚拟游戏控制器模拟框架原理剖析
  • 避坑指南:解决掘金量化SDK安装失败和Pandas版本冲突的常见问题
  • 基于PCAP解析的CNN-LSTM流量分类工具包(含训练数据、可运行代码与技术报告)
  • 2026年九江初中毕业生升学择校指南:技工学校与中职升学就业一站式解决方案 - 精选优质企业推荐官
  • 医药自动化立体仓库怎么建?从GMP/GSP合规到全程追溯,这3个案例值得借鉴 - 新闻快传
  • 英国14.7亿美元计划摆脱AI硬件依赖,超级计算机与本土芯片发展能否成功?
  • 原材料涨价挤压利润空间,中国轮胎行业进入价值竞争时代
  • XMLStructuredPrompts
  • 2026上海老铺黄金回收实测!主流平台对比与避坑技巧 - 开心测评
  • 吉林法穆兰+卡地亚手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • MATLAB可直接运行的15个智能优化算法实例(含PSO、GA及LQR参数调优)
  • 学术检测双线承压?paperxie 分层改写体系,精准化解重复率与 AI 疑似难题
  • Java 反射机制详解:从原理到实战
  • 微信小程序逆向工程完全指南:使用wxappUnpacker深度解析小程序内部结构
  • 推荐一下全国优质的精拔无缝钢管制造厂家 - 品牌推广大师
  • Java五子棋实战项目:Swing图形界面+AI对战+逐行中文注释,新手解压即运行
  • 利用 AI 选座,花小钱办大事!
  • WSA安装后别急着关!这样设置能让你的安卓App在Win11上跑得更快更省电
  • 2026深圳黄金回收哪家强?5 家主流渠道实地测评,解锁变现技巧 - 奢侈品回收测评
  • 7×24小时全自动碧蓝航线助手:AzurLaneAutoScript解放你的双手
  • Windows平台可运行的TR069客户端源码包,含ACS模拟器与完整SOAP通信能力
  • Python写的图书管理桌面软件,带MySQL数据库和tkinter界面,含课程设计全套材料