0%
URL
TL;DR
DINO(Distillation with No Labels) 是一种自监督学习方法,主要用于 Vision Transformer (ViT) 的训练
- 在无标签的图片数据上训练模型,让模型学习图像的表示意义
- 利用
MoCo 提出的 Momentum Teacher 算法做蒸馏
Algorithm

训练流程
- 创建两个完全一样的网络,命名为教师
teacher 网络和学生 student 网络
- 对同一个输入
x,进行不同的数据增强,得到 x1 和 x2
- 交叉计算对比损失,再求均值得到
loss for student
- 只对
student 网络进行反向传播和梯度更新
- 基于
student 网络的参数更新 teacher 的参数,更新方式是 EMA (exponential moving average),即:θt=λθt+(1−λ)θs
- 更新
teacher 网络输出的中心点:C=m∗C+(1−m)∗mean(t1,t2)
中心化和锐化

中心化(centering)
- 中心化的目的是防止特征向量的某个维度占主导地位,从而导致模型输出分布过于集中
- 本质就是一种均值为
0 的归一化,可以提高模型训练的稳定性
锐化(Sharpening)
- 锐化操作的目的是增加教师网络输出的概率分布的锐度,使得输出的概率更加集中在少数几个维度上
- 实现上,锐化通过修改蒸馏温度系数实现
模型效果
- 比一众视觉自监督模型效果都好,比如:
MoCo v1/v2,SimCLR v1/v2 等
Thought
- 感觉是
MoCo 系列的升级,框架本身不变,加了数据,稳定了训练过程,增加了些许 trick