深入理解自监督视觉Transformer的高维特征:从DINO到DINOV2

引言

近年来,Vision Transformer (ViT) 在计算机视觉领域取得了令人瞩目的成果。从最初直接将图像切分为补丁(Token)并用于分类,到自监督范式 DINO 展现出视觉Transformer的独特潜力,再到改进版 DINOv2 的推出,高维特征的作用日益受到关注。本文将探讨DINO和DINOV2这两种自监督视觉Transformer模型的高维特征,解析其背后的原理和应用。
图1 带有可学习 CLS token ViT 过程

ViT 基础:图像Token化与类别Token

Vision Transformer (ViT) 的核心思想是将图像视作类似文本序列来处理。具体来说,ViT将每张输入图像划分为固定大小的小块(例如16×16像素),将每个小块展平并映射为向量,即成为一个图像 Token。这些图像Token序列再送入Transformer编码器中,通过自注意力机制建模各Token之间的全局关系,从而完成图像分类等任务。除此之外,ViT引入了一个特殊的分类 Token(CLS token)。CLS token是一个可学习的向量,在输入序列最前加入。在Transformer层的自注意力作用下,CLS token会与所有图像Token交互,在模型输出时,CLS token被视为整张图像的全局表示。直观地说,CLS token聚合了图像各局部的信息,其输出可用于图像级的预测,例如作为图像特征送入一个分类头用于识别图像的类别。由于Transformer的自注意力能够让CLS token“关注”到所有补丁token的信息,经过充分训练后,这个CLS全局特征往往会对应图像的语义类别。

值得注意的是,ViT的这种图像Token化处理方式,使其输入形式与NLP中的词序列类似。这种设计虽然舍弃了卷积神经网络对局部邻域的硬编码结构,但通过大规模数据训练,ViT可以学习到高维特征空间中蕴含的丰富模式,从而在分类任务上取得优异表现。不过,在数据量不足的情况下,直接训练ViT有时性能不及卷积神经网络,需要借助预训练等手段来弥补。因此自监督预训练(如DINO)得到了发展。

DINO(Distillation with No Labels):无标签知识蒸馏的自监督范式

在这里插入图片描述

随着自监督学习的快速发展,Facebook AI研究团队提出了DINO(Distillation with No Labels),一种无需人工标注就能有效训练ViT的自监督方法。DINO巧妙地利用了"自蒸馏"框架,通过网络内部的教师-学生机制自动生成训练信号。如图2所示,DINO包括两个结构相同的ViT网络:一个教师网络和一个学生网络。教师网络的参数通过动量更新得到(类似Momentum Encoder),学生网络则正常更新参数。训练时,一张输入图像经过不同的数据增强(如裁剪、颜色扰动)得到两份视角,其中一份输入教师网络,另一份输入学生网络。尽管输入有所差异,但DINO希望学生网络的输出与教师网络保持一致。为此,使用了对齐的输出分布作为训练目标(通常以交叉熵度量两者产出的概率分布相似度),并辅以中心化(centerning)锐化(sharpening) 等技巧避免出现恒常解。随着训练进行,学生不断逼近教师的表示,而教师本身也随着学生的进步而更新。在这个循环中,网络逐渐学会产生对不同视角不变的图像特征。

DINO 自监督框架的有效性可以从人类生理机制的角度来理解:我们人类在认识物体时,也会通过多个角度、多种感官输入来形成稳定的认知。例如,我们观察一只猫,无论光照角度或姿态如何变化,大脑仍能辨识出“这是一只猫”。DINO的教师-学生双分支正模拟了这一点:教师网络提供了对某图像内容的稳定表示,学生网络在看过同一图像的另一种变换后,试图产生相同的内部表示。这种训练迫使ViT学会提取物体的不变特征,类似于人脑对客观物体概念的稳定表征。当这种机制有效运转时,模型无需人工标注就自发地对图像内容形成高层理解。

从数学角度来看,这个过程可以表示为:
给定同一图像的两个增强视图 x 1 x_1 x1 x 2 x_2 x2,分别输入到学生网络 g s g_s gs 和教师网络 g t g_t gt 中:
P s = g s ( x 1 ) = softmax ( f s ( x 1 ) / τ s ) P_s = g_s(x_1) = \text{softmax}(f_s(x_1)/\tau_s) Ps=gs(x1)=softmax(fs(x1)/τs) P t = g t ( x 2 ) = softmax ( f t ( x 2 ) / τ t ) P_t = g_t(x_2) = \text{softmax}(f_t(x_2)/\tau_t) Pt=gt(x2)=softmax(ft(x2)/τt)
这里:

  • f s f_s fs f t f_t ft 分别是学生和教师网络的特征提取器
  • τ s \tau_s τs τ t \tau_t τt 是温度参数,用于控制输出分布的锐化程度(通常 τ t < τ s \tau_t < \tau_s τt<τs
  • P s P_s Ps P t P_t Pt 是输出的概率分布

DINO的损失函数使用交叉熵来衡量这两个分布的差异:

L = − ∑ k P t ( k ) log ⁡ P s ( k ) \mathcal{L} = -\sum_{k} P_t^{(k)} \log P_s^{(k)} L=kPt(k)logPs(k)

其中 k k k 表示分布中的维度索引。
在DINO中,关于分布预测有几个重要细节:

  1. 使用的Token:DINO使用ViT网络的CLS token(即类别标记)作为全局图像表示。这个token位于序列的首位,通过自注意力机制能够融合来自整个图像的信息,包含丰富的语义信息。输出分布正是基于这个CLS token的特征投影得到的。

  2. 分布生成过程

    • CLS token经过ViT的编码器提取特征
    • 特征通过一个投影头(projection head)映射到较低维度的空间
    • 应用温度缩放的softmax函数得到最终的概率分布
  3. 中心化操作:在DINO的自监督训练范式中,如果没有适当的约束,网络会很容易学到“走”捷径,例如无论输入什么图像,总是输出完全相同的特征向量,或者将所有输出概率都集中在单个维度上(例如所有图像都预测为第一类)。这是因为最简单的让学生网络与教师网络输出一致的方法,就是让两个网络都输出一个恒定的、与输入无关的分布。为避免模型坍塌到平凡解(如所有样本映射到同一点),DINO引入了中心化技术:
    P t ( k ) = exp ⁡ ( f t ( k ) / τ t ) / Z t ( k ) ∑ k exp ⁡ ( f t ( k ) / τ t ) / Z t ( k ) P_t^{(k)} = \frac{\exp(f_t^{(k)}/\tau_t)/Z_t^{(k)}}{\sum_k \exp(f_t^{(k)}/\tau_t)/Z_t^{(k)}} Pt(k)=kexp(ft(k)/τt)/Zt(k)exp(ft(k)/τt)/Zt(k)

    其中 Z t Z_t Zt 是中心化因子,通过批次间的指数移动平均来计算。

  4. 不同的温度参数:教师网络使用较低的温度参数(如 τ t = 0.04 \tau_t = 0.04 τt=0.04),而学生网络使用较高的温度(如 τ s = 0.1 \tau_s = 0.1 τs=0.1)。这使得教师网络产生更加"锐化"的分布,有助于避免退化解。

研究团队还发现,DINO训练得到的ViT内部学到的特征中显式地包含图像的语义分割信息:也就是说,仅根据模型的注意力图就能大致将图像中的前景物体与背景分离开。如下图所示,可视化DINOv1 vit_base8最后一层6个不同头部的cls token与其它所有图像patch之间的注意力分布图。可以很容易观察到注意力图中的显著对象,这正是这种显示视觉表示的直观解释。
另外,ViT中的不同注意力头会捕获图像中不同的语义概念。一个头部可能关注物体的轮廓,而另一个则可能专注于特定的纹理或局部特征。基于此现象发展了很多研究方向,包括无监督语义分割(Unsupervised semantic segmentation)、无监督对象发现(Unsupervised object discovery)以及无监督显著目标检测(Unsupervised salient object detection)等。
在这里插入图片描述
此外,这些特征在图像检索和分类上表现出色。例如,直接使用DINO训练的ViT提取的图像特征做一个简单的k近邻分类器,在ImageNet上可达到78.3%的Top-1精度——这在当时超越了大多数无监督学习成果,逼近有监督方法的表现。

DINOv2:在DINO基础上的改进

DINOv2 是对DINO的改进与扩展,目的就是提高自监督ViT的表示能力。随着DINO展示出的潜力,研究者继续思考如何获得更健壮且通用的视觉特征。2023年Oquab等人提出的DINOv2,重点在于大规模预训练技术细节优化,使模型产生可跨任务泛化的高级特征。DINOv2的改进可以归纳为以下几点:

  • 更大规模的数据与模型:DINOv2采用了一个超大规模数据集(包含约1.42亿张多样且经过清洗的图像),而非一般无监督中使用的网络抓取数据。在此基础上,DINOv2训练了高达10亿参数的ViT模型,并通过知识蒸馏将其性能“传承”到一系列较小模型上。如此庞大的数据和模型规模,使得自监督学习能提取视觉世界的普遍特征。模型的容量也确保了可以容纳更加丰富的高维语义信息。
  • 训练稳定性与效率优化:为了在如此大规模上成功训练,DINOv2结合和改进了多种训练技巧。例如,更高效的优化器和分布式训练策略,改良的超参数调节,以及对DINO框架中中心化/削尖等机制的调整以适应大数据量。这些改进保证了训练过程的稳定,避免了由于规模扩大带来的梯度消失或发散问题。
  • 更强的局部特征与密集预测能力:相较DINO主要强调全局图像特征,DINOv2在保留全局语义的同时,更加关注细粒度的局部信息提取。这使得DINOv2生成的特征在密集下游任务(如分割、检测)上表现更佳。例如,DINOv2针对像素级和区域级任务进行了评估,结果显示其特征在无需微调的情况下,即可用于分割图像中的不同语义区域,性能超越以往的自监督模型。
  • 卓越的通用表征性能:DINOv2预训练得到的模型可被视为一个视觉领域的基础模型。其输出特征可以直接用于各种下游任务,只需训练一个简单的分类器或微调少量参数,就能在跨数据集、跨任务(分类、检测、分割、图像检索等)中取得领先表现。

总的来说,DINOv2 是从DINO的“概念验证”走向实际大规模应用的转变。如果说DINO让我们看到了ViT自监督特征中蕴含的语义洞察力,那么DINOv2则进一步表明,通过数据和模型规模的提升,自监督的ViT完全有潜力学习到通用且鲁棒的高维视觉特征,成为视觉领域的基础模型
下面我们通过PCA主成分分析法可视化 DINOv2 的patch级特征。PCA 是一种降维方法,可将重要信息捕获到较小的特征集中。PCA 可视化的原理:

  1. 特征提取
    这里使用的是 DINOV2 在最后一层对原图做的特征提取,得到一个三维张量(height × width × C)。这里height × width表示特征图的高和宽,C表示token的维度,vit_base架构为768维。

  2. 降维到空间维度的 PCA
    我们把每个空间位置(pixel)上的 C 维特征看作一个样本,总共 N = height×width 个样本,进行 PCA。PCA 会找出特征方差最大的方向:

    • PC1:最大方差方向,对应特征变化最剧烈的部分,往往就是“主体”或“最强对比”;
    • PC2:第二大方差方向,和 PC1 正交,捕捉图像中第二显著的结构差异;
    • PC3:第三大方差方向,继续补充次要但有意义的变化。
  3. 通道映射与伪彩色合成

    • 单通道图(PC1/2/3)通常用红/绿/蓝三色来分别渲染,以便视觉区分;
    • 最右侧的伪彩色合成图就是把 PC1→R、PC2→G、PC3→B 合并,得到一张“三层语义”复合图,能直观地看到三种主成分所关注的区域同时分布情况。
      此可视化展示了DINOv2特征的前三个PCA分量PC1(红) 总是聚焦于图像中最大对比、最“醒目”的结构:如主体物体(人、树木、猫、零食)及其与背景的边缘。伪彩色合成图给出了对三个主成分的“空间组合”一览,实质上已经是一种弱监督的语义分割:不同区域因为在三种主成分上的响应差异,被涂成了不同的颜色。通过这种方式,可以快速发现图像中“主体–次要背景–微弱细节”三层语义结构。
      此外,在不同图像间,当同类物体出现姿势、风格甚至个体差异时,模型依然能够一致地匹配相同语义部分。如图所示, 以使用的dinov2 vit_base模型为例,通过对同一类别物体进行PCA可视化,可以清晰看到这些高维特征不仅能区分狗与环境背景(如雪地或草地),还能进一步识别狗的面部、腿部和尾巴等解剖细节(在不同图像间保持颜色一致性)。如果升级到large或giant2等更大规模模型,这种语义识别的准确性和一致性会更加显著。

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

CLS Token 聚合语义信息的原因

在ViT中,CLS token 之所以能够承担聚合全局语义信息的角色,源于Transformer自注意力机制的工作原理和训练目标的设计。自注意力允许CLS token在每一层都与图像的各个patch token进行信息交换,因此在Transformer的最后几层,CLS token实际上累积了来自所有patch的特征。一方面,如果模型经过有监督训练(如用ImageNet类别标签监督CLS输出),那么CLS token的表示会被直接优化成与图像类别相关的判别特征,它自然而然就学会关注那些能够区分类别的图像区域和模式。另一方面,在像DINO这样的自监督训练中,尽管没有直接的类别标签监督,网络仍然倾向于利用CLS token来表示整个图像的“摘要”。正因为学生网络需要匹配教师网络的全局输出分布,这个输出很大程度上取决于CLS token的表示,所以CLS token也被间接地赋予了表达图像语义的职责。如下图所示,直接使用dinov2 vit_base(上面一组狗与猫)或者dinov1 vit_base8(下面一组狗与猫),在图像聚类或检索任务中,对CLS特征做相似度计算,可将具有相似内容的图像聚在一起。这说明CLS token的高维特征确实捕捉到了图像的语义类别等全局信息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然而,Transformer模型的内部研究显示(Vision Transformers Need Registers),除CLS token外,部分patch token本身也会承担一些“全局信息汇总”的角色。尤其是在那些信息量较低的背景区域,有些patch对应的特征向量范数(即向量长度)会异常地大,远超其它正常patch特征的范数。这些高范数的patch token被认为是一种网络内部的“寄存”现象:模型利用这些没有太多局部细节的patch,当作存放全局信息的临时空间,从而帮助自身的计算。换言之,Transformer会识别出冗余的patch(例如大片颜色单一的天空或草地),将它们对应的token重新用途化,用来存储当前图像的某些全局特征或中间计算结果。这种现象被观察到在模型训练到中后期开始出现,且较大规模的ViT中更为明显。有研究统计,这类 高范数token 通常占据 全部token的约2% 左右。它们多见于低信息量的背景区域,在这些区域,相邻patch往往很相似,高范数token所包含的局部信息其实很少,但却携带了较多关于整幅图像的全局上下文。
这种高范数token的存在从另一方面解释了ViT高维特征空间的复杂性。它表明模型并非简单地“一视同仁”对待每个patch;相反,会根据需要动态调整某些token的作用。有监督的 CLS token是人为指定的全局汇聚节点,而高范数patch token则是模型自主产生的全局信息“缓存”。如下表所示,outlier token(高范数token)在所有数据集中始终比正常token获得更高的分类准确率。在大多数情况下,outlier token的准确率与 CLS token非常接近, 表明这些outlier标记以类似于专用 CLS token的方式存储全局图像信息。常规图像patch token始终表现出最低的分类准确率,表明它们主要存储本地信息而不是全局语义内容。
在这里插入图片描述

“寄存器”机制:缓解高范数token问题

在这里插入图片描述
针对上述高范数token现象,近期的研究提出了显式的 “寄存器 (Register) token” 机制来加以缓解。Darcet等人在ICLR 2024发表论文“Vision Transformers Need Registers”中指出,通过在Transformer输入序列中加入额外的 寄存器token ,可以有效消除ViT特征图中的高范数伪影。 寄存器token 本质上是若干新增加的可学习向量,它们 不对应任何图像patch ,而是纯粹供模型在自注意力计算时自由读取和写入信息。这些寄存器token和普通patch token一起通过Transformer各层的计算,但在输出时会被丢弃,不用于最终的图像表示。因为寄存器token起到了 “计算中转站” 的作用,模型可以选择将原本需要存在某些patch中的全局信息,转而存储到这些寄存器中。这样一来,那些背景patch就不再需要承担额外的存储职责,因而其特征范数不再异常增大。下图展示了使用dinov2_reg vit_base模型可视化的结果:可以看到最后一层6个不同头部的cls token与所有图像patch之间的注意力分布情况。
在这里插入图片描述
如下图所示,通过可视化寄存器token与图像patch之间的注意力分布,这些额外添加的token确实承担了存储全局图像信息的关键任务。这也说明了视觉Transformer架构中的一个内在限制——单一的CLS token实际上存在信息瓶颈问题。
当模型只有一个CLS token时,它必须独自承担捕获整个图像所有语义信息的重担。这种设计对某些图像区域产生了额外压力,迫使一些原本应该表示局部特征的patch token被"挪用"为临时的寄存器元素。这些被挪用的token不再专注于编码其对应图像区域的特征,而是参与了全局信息的存储和处理。
在这里插入图片描述
引入寄存器token后,研究者观测到Transformer的特征分布发生了积极的变化:高范数的异常patch几乎完全消失了,全局信息被转移到了新增的寄存器token上。模型各层输出的特征图更加平滑,注意力图也更易于解释。更重要的是,在一些需要利用局部特征的下游任务上(如目标检测、语义分割),添加寄存器token的模型性能有所提升。这表明寄存器机制不仅清除了伪影,还实际提高了模型对细节的把握和利用能力。

高维特征揭示网络理解数据的方式

无论是CLS token汇聚全局信息,还是高维空间中自发产生的寄存器现象,这些都指向一个事实:ViT 的高维特征空间承载了模型对于数据的理解方式。对于每张图像,ViT会产生数百个维度的特征表示,这些高维向量并非杂乱无章,而是以某种结构化的方式编码了图像中的语义和结构信息。例如,在DINO训练的ViT中,不同patch的特征向量之间的差异反映了它们所属图像部分的重要程度和内容类别——前景物体的patch特征会聚为一类,而背景区域的patch特征则显著不同。这意味着如果我们将这些高维特征投射到低维空间(例如用t-SNE等可视化方法),很可能会看到基于语义的聚类:相似物体的patch簇拥在一起,与背景patch分离。如下图所示,我们使用dinov2_reg vit_base模型分别提取patch级的图像特征,并对前景(dog)进行标注。通过降维可视化,我们清晰地看到前景特征与背景特征的分离。进一步将三张不同图像的所有特征一起降维可视化时,相似物体的patch特征会自动聚集在一起,这正是模型在高维空间中对图像语义关系的一种表达
在这里插入图片描述
在这里插入图片描述
如下图所示,我们从第一张狗的图像中选取了腿部的一个特定patch(白色方框标注),并计算了它与同一图像中所有其他patch之间的语义相似度。相似度通过热力图可视化,采用jet色彩映射——红色区域表示高相似度,蓝色区域表示低相似度。当我们将这个查询patch与其他不同狗的图像patch进行比较时,发现它能够一致地识别出其他狗的腿部区域。这些可视化展现了选定的腿部patch如何在语义层面与其他狗图像中的相应部位建立联系,而不仅仅局限于表面的视觉相似性。
在这里插入图片描述
此外,高维特征使得复杂的模式可以被线性区分。例如,一个训练充分的ViT,其CLS特征在高维空间中对不同类别形成了线性可分的分布——用一个简单的线性分类器就可以把猫和狗的特征分开。这说明ViT内部已经学会将图像映射到一个新的表示空间,在这个空间里,不同类别、不同部分之间的关系变得清晰且简洁。网络“理解”了哪些特征是决定语义的关键,并在内部将它们彼此分离开来。

以下是对这些高维特征的尝试性解读(仅供个人理解,可能存在错误):

  • CLS token的维度含义:高维空间允许CLS token编码复杂和抽象的视觉概念。每个维度可能对应不同的视觉属性或语义概念。通过分析大量图像,可以尝试将特定语义概念(如"毛茸茸的"、“金属的”)映射到特征空间中的特定方向。
  • 局部token的编码:高维特征同样允许每个patch编码复杂的局部模式,包括颜色、纹理、形状等信息。这里的局部概念不同于网络层数加深的层次性,而是更聚焦于图像的空间组成部分。

需要强调的是,上述对高维特征具体维度含义的解读是一种抽象特征的具体化描述尝试,这种解读仅供个人理解,实际上高维特征空间的组织方式可能远比我们的直观解释复杂得多。
在这里插入图片描述
在这里插入图片描述
总而言之,ViT的高维特征空间就像一个知识库,里面存放着模型从大量训练图像中学到的关于世界的认知。不同的维度和方向,代表着不同的视觉概念或属性(边缘、颜色、纹理乃至更高级的语义标签)。当我们说模型“理解”了一张图片,指的就是它在这个高维空间中为图片找到了一组独特的位置坐标,这个坐标暗含了图片的各种属性。分析高维特征如何分布、变化,我们便能了解到模型理解数据的方式。

结语

这些高维特征有望成为通用视觉智能的关键支柱。正如自然语言处理领域有了通过大规模预训练得到的基础模型(例如GPT系列)一样,视觉领域也在迈向类似的里程碑——即训练一个模型,使其特征可适用于几乎所有视觉任务。DINOv2等工作的成功表明,或许正在接近这一目标。自监督ViT模型所学习到的表示,具备跨数据集、跨任务的普适性。这意味着未来视觉任务可以更加依赖无监督信号,让模型自主学习世界的视觉结构,减少对人工标注的依赖,从而大幅扩展可利用的数据范围。

文章所使用到的代码与图像示例可以从此获得。

参考文献:

  1. Emerging Properties in Self-Supervised Vision Transformers
  2. DINOv2: Learning Robust Visual Features without Supervision
  3. Vision Transformers Need Registers
  4. https://ai.meta.com/blog/dino-v2-computer-vision-self-supervised-learning/
  5. https://medium.com/digital-mind/visualizing-dinov2-contrastive-learning-and-classification-examples-9e6d8f87acf6
  6. https://github.com/facebookresearch/dinov2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值