跳过正文
  1. 日常记录、技术札记与转载收藏。/

DINO

目录

模型提出
#

在 DINO 出现之前,自监督视觉表示学习主要有两类主流方法:

  1. 对比学习(Contrastive Learning):如 SimCLR、MoCo → 通过拉近同一图像的不同视角表示、推远不同图像的表示来学习。 → 问题:需要大量负样本、较大batch size。

  2. 基于生成或重建的方法(如 MAE、BYOL、SimSiam): → 不依赖显式负样本,但往往需要设计复杂的目标或避免“坍塌问题”(collapse)。

DINO 的提出非常关键,它展示了:

不使用标签、也不使用对比损失(不需要负样本),仅靠自蒸馏(Self-Distillation)也能学到非常好的视觉特征。

模型架构
#

Image

DINO 支持多种 Backbone:

  • ViT-S/16、ViT-B/16、ViT-B/8

  • ResNet-50、ResNet-101

其中最具代表性的是 Vision Transformer \(ViT\) 版本。

ViT + DINO 的关键特性:

  • DINO 的自监督训练使 ViT 学到 显著的语义分割能力(Emergent segmentation): → 不需任何标签,ViT 的 attention map 就能自动分离出目标物体区域!

怎么训练
#

对同一张图像生成多个视角(multi-crop),用 Student 网络去预测 Teacher 的输出分布(softmax over projection head logits);Teacher 参数用 Student 的 EMA(滑动平均)更新,Teacher 的输出做 centering + 温度 sharpening,用交叉熵(KL)把 Student 输出对齐到 Teacher 输出。Student 用反向传播更新。

具体来说
#

Backbone:ViT 或 ResNet(ViT 在 DINO 中表现特别好)。

Projection head(学生/教师):MLP,把 backbone 特征映射到 logits(再 softmax)。

温度(temperature):Student 温度 TsT_sTs 较大,Teacher 温度 TtT_tTt 较小(Teacher 输出更“尖锐”)。

Centering:对 Teacher 的 logits 做减均值(center),并随时间用 EMA 更新 center,避免分布偏移导致 collapse。(上一个Teacher的平均值)

EMA momentum:Teacher 参数以 θt←mθt+\(1−m\)θs\theta_{t} \leftarrow m \theta_{t} + \(1-m\)\theta_{s}θt←mθt+\(1−m\)θs 更新,m 从较小值逐渐接近 1(常见做法)。

Multi-crop:常见做法 2 个全局 crops + 6-8 个局部 crops(global 224x224,local 96x96)。

Image
  • 2 个 global crops:随机裁剪到大尺寸(例如 224×224),并进行常规增强(颜色抖动、随机灰度、Gaussian blur、随机水平翻转等)。

  • k 个 local crops(6~8):更小分辨率(96×96),做相似但更强的裁剪增强。

  • Teacher 只接收 global crops(2),Student 接收所有 crops(global + local)。

  • 这样 Student 从局部视角也要匹配 teacher 的全局语义,促使模型学习尺度不变性的语义表示。

伪代码
#

Image

模型效果
#

Image

怎么做Loss
#

我们令:

  • Student 输出的 logits 为 zsz_szs

  • Teacher 输出的 logits 为 ztz_tzt

然后通过 softmax 得到各自的概率分布:

ps=softmax\(zs/Ts\),pt=softmax\(\(zt−c\)/Tt)p_s = \text{softmax}\(z_s / T_s\), \quad p_t = \text{softmax}\(\(z_t - c\) / T_t)ps=softmax\(zs/Ts\),pt=softmax\(\(zt−c\)/Tt)

其中:

  • TsT_sTs:Student 的温度(通常 0.1)

  • TtT_tTt:Teacher 的温度(通常较小,如 0.04)

  • ccc:Center 向量,用于防止 collapse(防止 teacher 输出分布单一)

目标:让 Student 的输出分布 psp_sps 逼近 Teacher 的输出分布 ptp_tpt。

相关文章