「DINO — 计算机视觉的基础模型」
「DINO — 计算机视觉的创新模型」
论文解读:自监督视觉变换器中的新兴特性
对于计算机视觉领域来说,这是一个令人激动的十年。自然语言领域取得的巨大成功被转移到了视觉领域,包括引入了ViT(视觉变换器),最近大规模的自监督预训练技术以基础模型的名义成为了头条新闻。
今天我们将研究一种名为DINO(自我蒸馏,无标签)的框架,它是建立在ViTs的有趣特性之上的一种视觉基础模型。它也是当今表现最佳的基础模型之一的前身:DINOv2。

论文: 自监督视觉变换器中的新兴特性
代码: https://github.com/facebookresearch/dino
首次发布: 2021年4月29日
作者: Mathilde Caron, Hugo Touvron, Ishan Misra, Hervé Jégou, Julien Mairal, Piotr Bojanowski, Armand Joulin
分类:基础模型,计算机视觉,视觉变换器,知识蒸馏,相似性学习,自监督学习
大纲
- 背景与内容
- 方法
- 实验
- 消融研究
- 结论
- 进一步阅读与资源
背景与内容
现在是2021年4月,精确地说。自从Transformer模型通过attention is all you need发布已经过去了四年。自监督预训练在NLP领域早已得到实践,例如BERT等模型,直到“关于基础模型的机会和风险”的发布,基础模型这一术语还未为人所知。六个月前,第一篇有关视觉变换器(ViT)的论文在arxiv上首次公开,离它在ICLR 2021上的展示还有一个月的时间。
让我们静下心来:ViT在2020年10月首次在arxiv.org上发布,并在2021年5月的ICLR2021上展示。DINO在2021年4月发布在arxiv上。所以,如果他们立即开始构思项目的想法,组建团队,奠定理论基础,训练模型,进行实验和消融研究,并撰写论文,他们只有5个月的时间。难怪如今的博士生们总是感到焦虑。至少我有时也会这样😅
而ViTs在与卷积网络竞争时,对计算资源和训练数据量要求很高。
DINO的作者做了一个简单的观察:NLP中transformers的成功与自监督预训练相结合,而当前视觉领域中的自监督方法是基于卷积网络构建的,比如BYOL。
BYOL-对比自监督学习的替代方法
论文分析—Bootstrap Your Own Latent: 一种新的自监督学习方法
towardsdatascience.com
受到BYOL和mean teacher的启发,作者提出了一种自监督训练ViT的框架,并发现:
- 自监督ViT特征明确包含场景布局和特别是对象边界。
- 自监督ViT特征在基本最近邻分类器(k-NN)上表现出色,无需任何微调、线性分类器或数据增强。
与BYOL和mean teacher不同,DINO实现了一个知识蒸馏框架,由学生模型和教师模型对同一图像的不同视图进行操作,并添加了额外的措施来处理相似性学习方法固有的不稳定性,这类方法往往会产生崩溃的解决方法。
底层视觉transformer架构(ViT)的一个有趣发现是,当使用无监督学习技术进行训练时,其特征包含关于图像语义分割的显式信息。可以简单地可视化多头注意力层的自注意力映射,如下面的视频所示:

让我们解开另一个抽象层,并试着理解DINO如何实现其框架,如何解决不稳定性问题,以及与先前方法相比的表现!
方法
DINO框架与其他相似性学习框架(如BYOL或mean teacher)以及知识蒸馏具有相同的总体结构。让我们首先看看DINO是如何实现的,以及与其他框架的区别。

网络和更新规则
让我们从中间开始。DINO实现了两个具有完全相同架构但不同权重集的网络。它们是学生和教师。学生使用反向传播进行训练,教师使用学生自身权重和教师自身权重的指数移动平均更新权重。

骨干可以是ResNet50或DeiT(一种适用于知识蒸馏的ViT)。MLP-based projection head与骨干相连接,以减少特征的维度,但在推断时被移除。
很好,但是推断使用哪个模型:学生或老师? – 这是一个很好的问题,令人有趣的是论文中没有提到一个字。直觉上,你可能会认为是学生,至少我一开始是这样想的。但正如我们后来将看到的,老师在整个训练过程中表现得更好。除了更好的性能,唯一的提示是在代码实现中,老师的检查点是例如视频分割,线性探查和k-NN评估的默认参数。尽管可以更改此参数,但我不能确定告诉您。
输入和输出
从输入图像x创建不同的视图x1和x2,通过裁剪和应用图像增强(如BYOL中的颜色抖动,高斯模糊和曝光过度)创建。用于裁剪的技术称为多裁剪,它生成了多个不同尺寸的裁剪,以节省内存并提供更多数据。小的裁剪称为局部视图,由96×96像素组成,仅用于学生。大的裁剪称为全局视图,由224×224像素组成,只用于老师。后面在消融部分中将看到,在训练过程中使用了2个全局视图和10个局部视图。
注意:关于多裁剪技术,论文有点令人困惑,因为提供的伪代码和上面的图3中显示的架构都没有反映出来。伪代码甚至建议x1和x2同时输入到学生和老师中,就像在BYOL中一样,但使用多裁剪时不是这样。
与相似性学习不同,其中的目标是最大化嵌入的相似性,DINO最小化了老师和学生输出分布之间的交叉熵。如下方程所示,交叉熵针对每对全局视图和局部视图进行计算,然后进行求和。

那么模型输出什么? – 与相似性学习类似,学生和老师为给定的图像输出一个嵌入,而不是预测得分。与知识蒸馏类似,输出通过SoftMax转换转化为概率分布。SoftMax具有温度参数,用于控制结果分布的平滑或锐化程度。这个温度在知识蒸馏中起着关键作用,因为它允许在教师网络和学生网络之间控制传递一般知识和细粒度细节的平衡,使蒸馏过程对不同任务更有效。

我为您创建了一个笔记本,这样您就可以研究温度对结果分布的影响:
ML_Notebooks/Softmax_Temperature.ipynb at main · sascha-kirch/ML_Notebooks
收集机器学习相关的笔记本以分享。- ML_Notebooks/Softmax_Temperature.ipynb at main ·…
github.com
避免崩溃
如前所述,学生和教师具有完全相同的架构。这种设置是不稳定的(如果没有采取对策),可能导致解决方案崩溃,其中所有特征都映射到潜在空间中的某个区域,例如在最坏的情况下映射到一个点。BYOL通过为其中一个模型引入额外的预测头部来解决了这个问题,从而引入了一个不对称性。由于DINO具有对称模型,因此需要使用另一个技巧:中心化和锐化。这两者仅适用于教师网络。中心化是一种防止潜在空间中某个维度主导的技术,通过将偏差项c添加到教师的输出g(x) = g(x)+c上来实现,其中

虽然中心化有积极的影响,但它也鼓励输出崩溃成均匀分布。锐化具有相反的作用,因此同时应用这两种技术可以平衡它们的效果并稳定训练。在SoftMax中使用较小的温度值(见图3)来实现教师和学生之间的锐化。
为了避免崩溃,方程3的超参数m和教师的温度值至关重要。在附录部分的割裂研究中,作者们表明m=0.9…0.999效果最好,并且在热身阶段温度的值线性增加从0.04到0.07。
DINO做什么?知识蒸馏还是相似性学习?
答案有一点两者都有!
尽管知识蒸馏通常是将已经训练好的、更大且更准确的教师模型中的知识提取到较小的学生模型中,但它也可以被看作是某种相似性学习,因为它鼓励学生网络产生与教师相似的预测结果。在相似性学习中,通常同时训练两个模型,并且经常对齐它们的潜在空间预测而不是概率分布。
由于DINO的作者将其目标表述为知识蒸馏,让我们来看看与“标准”知识蒸馏相比的一些差异:
- DINO的教师不是预先存在的,而是与学生一起“训练”。它甚至可以被看作是一种共同蒸馏,因为还从学生中蒸馏知识。
- DINO的教师和学生在不同大小的图像视图上操作,而不是在相同的输入上。
- DINO在两个模型的SoftMax中使用不同的温度进行锐化。
- DINO计算温度缩放的嵌入SoftMax的交叉熵,而不是预测分数。
那它和知识蒸馏有何相似之处呢?
- DINO由学生网络和教师网络组成,教师网络的性能比学生更好,我们将在实验中看到。
- DINO不是最大化相似度度量,而是最小化温度缩放的SoftMax输出的交叉熵损失。
实验
该论文提出了大量的实验。他们在常用的表示学习数据集ImageNet上对模型进行了预训练。
对于评估,通常常见的技术要么在冻结特征的基础上训练线性分类器,要么对模型进行微调以适应新的下游任务,其中模型的参数被调整。
DINO的作者声称这些技术对超参数非常敏感,这使得比较变得不公平且难以复现。因此,他们建议在预训练模型的特征上使用简单的最近邻聚类算法。
在ImageNet上进行线性和k-NN分类
这个实验测试了模型在ImageNet上的图像分类准确度。使用了多种自监督预训练模型,并搭配ResNet或ViT骨干网络进行测试。分类可通过线性探测或k-NN聚类完成。

我认为关键要点是:
- 对于ViT特征,k-NN的性能优于ResNet特征。
- 在ViT中减小补丁尺寸可以带来更大的改进,但推断速度会更慢。
视频实例分割
重要的实验是视频分割任务,因为这篇论文是关于ViT在使用无监督方法进行训练时捕捉语义分割的能力。或者可以说,这是该论文声称的 😁

观察这些结果,我发现还有两个进一步的实验:
- 很想看到DINO框架中受监督的ResNet50和自监督的ResNet50的比较,以支持他们声称ViT优于ResNet架构的说法。
- 同样希望看到在受监督和自监督下使用相同一组ViT骨干网络的实验,以观察补丁尺寸和模型大小的影响。
但正如我常说的:提问很容易 😁 在现实项目中,作者通常面临资源限制和项目交付期的压力,无法涵盖每一个细微的细节!
探究自注意力图
在这个实验中,作者研究了ViT的多头自注意力层中不同头部的自注意力图。他们可视化了ViT-S/8最后一层中所选头部的注意力图,具体来说是对于学习到的[CLS]标记的注意力图。

其他实验
在其他实验中,DINO相对于有监督的基线有所改进。这些任务包括图像检索和副本检测。
消融研究
在他们的消融研究中,作者使用了ViT-S模型进行实验。
图块大小的重要性
请记住,视觉转换器输入图像的分块版本,将每个图块转换为标记,然后应用具有自我注意机制的转换器。这是ViT的作者为减少计算要求,实现性能平衡而采用的技巧,使得转换器适用于图像数据。
DINO声称,图块尺寸越小,性能越好,吞吐量(每秒可处理的图像数量)越低,这正是ViT所声称的。

直观上来说,这并不奇怪,因为你增加了输入分辨率,最终得到更多需要关注的标记,因此得到了一个精细的注意力图。
不同的教师更新规则
DINO中的教师通过计算更新后的学生和当前教师的指数移动平均值来进行更新。这是他们所谈到的“动量编码器”方法。
使用动量编码器绘制教师和学生在训练过程中的准确性,教师在整个过程中表现更好。由此我们可以提出如下假设:
- 教师可以向学生提供强大的学习信号。
- 不断改进的学生通过EMA更新规则(协同蒸馏)改进了教师。
- 可以使用教师作为最终模型,该模型性能更好,但与学生具有相同的架构,因此计算要求没有改变。

他们还尝试了其他3种更新规则:将学生的权重复制到教师中,使用上一次迭代的学生权重以及使用上一个时期的学生权重。
多裁剪与时间和GPU内存
正如前面提到的,DINO输入同一图像的多个裁剪视图,并将全局视图传入教师模型,将局部视图传入学生模型。在这个消融研究中,作者尝试了不同数量的局部视图,并报告了对性能、训练时间和每个GPU的峰值内存的影响。

避免崩溃
在这个消融实验中,作者们评估了他们的稳定措施对避免崩溃解的作用:居中和锐化。
为了做到这一点,他们将交叉熵分解为熵项和Kullback-Leibler(KL)散度项。KL散度是两个概率分布之间的差异度量。如果KL为0,则认为两个分布相等。
这背后的直觉是:如果教师和学生的输出分布的KL散度在训练过程中保持恒定,那么就没有学习信号来更新学生的权重。

批量大小的影响
DINO具有一个有趣的特性,即可以使用较小的批量大小进行训练而不会导致性能大幅下降。实际上,这正是DINO建立的BYOL的一个动机之一,它相比对比自监督学习对批量大小的依赖较小。

像CLIP和GLIP这样的对比方法为给定的正样本提供了大量的负样本,以避免崩溃解。每个优化器更新步骤(因此每个批量)的负样本越多,它的效果就越好。
结论
总之,DINO是一个知识蒸馏框架。它是一个利用ViTs的有趣属性的视觉基础模型,并且是当今最佳性能的基础模型DINOv2的前身。DINO的框架由一个学生模型和一个教师模型组成,它们对同一图像的不同视图进行操作,并采取额外的措施来处理相似性学习方法固有的不稳定性。实验证明DINO在各种任务上优于其他自监督预训练模型。
进一步阅读和资源
论文
与此同时,DINO的改进版本已经发布:
论文解读
您可能还喜欢我在这篇文章中讨论的其他论文解读:
CLIP基础模型
论文摘要-从自然语言监督学习可迁移的视觉模型
towardsdatascience.com
GLIP:将语言图像预训练应用于目标检测
论文摘要:基于语言-图像的预训练
towardsdatascience.com
BYOL – 替代对比自监督学习的另一种方法
论文分析 — Bootstrap Your Own Latent: 一种新的自监督学习方法
towardsdatascience.com
任意对象的可提示分割
论文解读 — 分割任何对象
towardsdatascience.com