深入解析:IDEA-Research推出的一系列检测、分割模型:从DINO(改进版DETR)、Grounding Dino、DINO-X到Grounded SAM2

前言

本文一开始是属于此文《自监督ViT与目标检测:从基于ViT的DINO、DINOv2,到最新目标检测器Grounding Dino、DINO-X》的后半部分,然因以下两点

  1. 如读者Whynot886所说
    DINOv1和v2是自监督视觉主干DINO
    而GroundingDINO和DINO-X里的DINO是目标检测器,即DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection

    强行把这4个模型放在一篇文章里,容易对不太分得清的初学者产生困扰
  2. 我在解读VideoMimic的时候,遇到了Grounded SAM2,而其是IDEA-Research推出的
    故值得把IDEA-Research推出的一系列目标检测、分割模型——从DINO(基于DETR)、Grounding Dino、DINO-X到Grounded SAM、Grounded SAM2 单独成文

于此,便有了本文

第一部分 DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection

实话讲,我刚开始看DINO这篇论文的时候,看的整个过程并不是很舒畅,专门是原论文在讲DINO的相关工作时,经过一个工作在三个地方重复出现,导致各种冗余,故我在解读的时候,特意做了顺序上的改写,及各种删减,当然,瑕不掩瑜,DINO总归是一个优秀的创新

1.1 引言与DINO的核心定义

1.1.1 引言与相关工作

首先,如原DINO论文所说,早期基于卷积的目标检测器分为两阶段和单阶段模型,这些模型依赖于人工设计的锚框或参考点

  1. 两阶段模型[30,13]通常采用区域提议网络(RPN)[30-Faster r-cnn: Towardsreal-time object detection withregion proposal networks]来生成候选框,然后在第二阶段进行精细化
    更多,详见此文《一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD、DETR(首发于18年,修订于25年)
  2. 一阶段模型如 YOLO v2 [28] 和 YOLO v3 [29] 则直接输出相对于预定义锚框的偏移量

近年来,一些基于卷积的模型如 HTC++ [4] 和Dyhead [7] 在 COCO 2017 数据集 [20] 上取得了顶尖性能。然而,卷积模型的性能依赖于其生成锚框的方式

此外,这些模型还需要人工设计的组件(如 NMS)来去除重复框,因此无法实现端到端优化

其次,与传统检测算法相比

  • Carion等人[3]提出的DETR (一种基于Transformer的端到端目标检测器,该办法无需使用手工设计的组件:如锚框设计和非极大值抑制(NMS),但能够达到与优化后的经典检测器(如Faster RCNN [31])相当的性能就是Detection Transformer)

    详见此文《一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD、DETR(首发于18年,修订于25年)》的「第五部分 DETR:首次通过结合CNN+Transformer端对端解决object detection」
    ————
    总之,其与以往的检测器不同,DETR将目标检测建模为集合预测任务,并通过二分图匹配来分配标签

    它利用可学习的查询向量探测目标的存在,并结合图像特征图中的特征,这种方式类似于软ROI池化 [21]

最后,尽管DETR在性能上表现出色,但其训练收敛速度较慢,且查询的含义不明确

一方面,一些研究致力于克服DETR由于解码器交叉注意力导致的训练收敛缓慢问题

  • 例如,Sun等人[34]设计了一种仅包含编码器的DETR,完全不应用解码器
  • Dai等人[7]提出了一种动态解码器,能够从多个特征层中聚焦于重要区域

二方面,另一类研究工作则致力于更深入地理解DETR中的解码器查询,许多论文从不同角度将查询与空间位置相关联,例如

  • 引入可变形注意力机制[41]
    Deformable DETR[41]预测二维锚点,并设计了一种可变形注意力模块,仅关注参考点周围的特定采样点
    解耦位置信息与内容信息[25]

    提供空间先验[11,39,37]等
    比如其中的Efficient DETR [39] 从编码器的密集预测中选择前K个位置,以增强解码器查询
  • 最近,DAB-DETR[21]提出将DETR的查询形式化为动态锚框(DAB),从而弥合了传统基于锚框的检测器与DETR类检测器之间的差距
    简言之,引入锚框作为 DETR 的查询,以实现更精确的边框预测
  • DN-DETR[17]进一步通过引入去噪(DN)技巧,解决了二分匹配过程中的不稳定性。DAB与DN的结合,使DETR类模型在训练效率和推理性能上都能与传统检测器竞争
    简言之,提出了一种查询去噪方法,用于稳定二分匹配过程

本文提出的DINO工作基于DAB-DETR和DN-DETR,同时采用可变形注意力机制以提升计算效率

1.1.2 DINO的核心定义与三项创新

对此,2022年3月,来自1 港科大、2 清华计算机科学与技术系、3 International Digital Economy Academy (IDEA)、4 港科大(广州校区)的研究者:Hao Zhang1,3∗†, Feng Li1,3∗†, Shilong Liu2,3∗†, Lei Zhang3‡, Hang Su2, Jun Zhu2, Lionel M. Ni1,4, Heung-Yeung Shum1

作为一种类似DETR的模型,DINO包含一个骨干网络、多层Transformer编码器、多层Transformer解码器以及多个预测头,整体流程如下图所示「改进主要集中在 Transformer的编码器和解码器部分。在结果一层中,选取前 K 个编码器特征用于初始化 Transformer 解码器的位置查询,而内容查询则保留为可学习参数。解码器还包含一个对比去噪(CDN)模块,包含正样本和负样本

  1. 给定一张图像,作者启用如 ResNet [14] 或 Swin Transformer [23] 等主干网络提取多尺度特征,并将其与相应的位置嵌入一起输入到 Transformer 编码器中
  2. 经过编码器层对特征进行增强后,提出了一种新的混合查询选择策略,用于将锚点初始化为解码器的位置查询
    需要注意的是,该策略不会初始化内容查询,而是让其可学习

    从而借助初始化的锚点和可学习的内容查询(Learnable Content Queries),再利用可变形注意力机制 [41] 结合编码器输出的特征,并逐层更新查询
  3. 最终输出由精细化的锚框和依据精细化内容特征预测的分类结果组成

过程中,作者提出了三种新方式:对比式DN训练、混合查询选择、针对DINO不同部分的双重前瞻机制,具体而言

  1. 第一,为了提升一对一匹配性能,提出了一种对比去噪训练方法,即同时加入同一真实目标的正样本和负样本
    对同一真实框添加两种不同噪声后,将噪声较小的框标记为正样本,另一个为负样本。对比去噪训练有助于模型避免对同一目标产生重复输出
  2. 其次,动态锚框的查询表述将DETR类模型与经典两阶段模型关联起来
    因此,作者提出了一种混合查询选择方式,以更好地初始化查询。他们从编码器的输出中选择初始锚框作为位置查询,类似于[41,39],而内容查询依然保持可学习,以鼓励解码器的第一层关注空间先验
  3. 第三,为了利用后续层中细化的框信息来优化其相邻早期层的参数,作者提出了一种新的“前瞻两次”方案,通过后续层的梯度来修正已更新的参数
    换言之,充分利用后续层中精细化框的信息,帮助优化其相邻早期层的参数,故通过新颖的“两次前瞻”技巧,实现相邻层之间的梯度传递

// 待更

第二部分 Grounding Dino:将DINO与有监督预训练相结合,检测任意对象

2.1 Grounding Dino的提出与相关背景

2.1.1 Grounding Dino:类似DETR

23年3月,清华大学、IDEA-Research等机构「即粤港澳大湾区数字经济研究院(International Digital Economy Academy,简称IDEA研究院,后还于24年1月提出了Grounded SAM(下文也会介绍)」推出Grounding DINO

  • 其对应的论文为《Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection
    作者机构包括:清华大学、IDEA、港科大、港中文、微软研究院、华南理工
  • Grounding DINO是一种双编码器-单解码器架构——类似DETR,通过结合基于Transformer的检测器DINO与基础预训练,可以通过人类输入(如类别名称或指代表达)检测任意对象

    开放集目标检测的关键解决方案是将语言引入闭集检测器以实现开放集概念泛化
    为了有效融合语言和视觉模态,他们将闭集检测器概念性地划分为三个阶段,并提出了一种紧密融合的解决方案,包括特征增强器、语言引导的查询选择以及用于模态融合的跨模态解码器

2.1.2 提出背景:将封闭集检测器扩展到开放集场景

首先,对于基于DINO的紧密模态融合

开放集检测的关键在于引入语言来实现对未见物体的泛化[1,7,25]。大多数现有的开放集检测器是通过将闭集检测器扩展到具有语言信息的开放集场景而开发的

如下图图2所示——将封闭集检测器扩展到开放集场景

闭集检测器通常有三个重要的模块

  • 一个用于特征提取的主干
  • 一个用于特征增强的颈部
  • 以及一个用于区域细化(或框预测)的头部

在就是通过学习语言感知的区域嵌入,一个闭集检测器许可被泛化以检测新颖的物体,从而使每个区域可以在语言感知的语义空间中分类为新颖类别。实现这一目标的关键颈部Neck和/或头部Head输出的区域输出和语言特征之间使用对比损失——比如contrastive Loss A/contrastive Loss B,为了帮助模型对齐跨模态信息,一些工作尝试在最终损失阶段之前融合特征

特征融合允许在三个阶段进行:颈部(阶段A 即Feature Fusion A)查询初始化(阶段B 即Feature Fusion B)头部(阶段C 即Feature Fusion C)。例如,GLIP [25]在颈部模块(阶段A)中进行早期融合,而OV-DETR [55]运用语言感知查询作为头部输入(相当于在阶段B融合)

总之,作者认为在管道中引入更多的特征融合可以促进不同模态特征之间的更好对齐,从而实现更好的性能

作者在论文中说,尽管概念上简单,但以往的工作很难在所有三个阶段进行特征融合

  • 经典检测器如Faster RCNN的设计使得在大多数模块中难以与语言信息交互
  • 与经典检测器不同,基于Transformer的检测方法如DINO具有与语言模块一致的结构。逐层设计使其能够轻松与语言信息交互

基于后者这一原则,他们在颈部、查询初始化和头部阶段设计了三种特征融合办法,更具体地说

  1. 他们设计了一个特征增强器,通过堆叠自注意力、文本到图像的交叉注意力和图像到文本的交叉注意力作为颈部模块
  2. 然后,研发了一种语言引导的查询选择方法来初始化检测头的查询
    且还为头部阶段设计了一个跨模态解码器,具有图像和文本的交叉注意力层,以增强查询表示

其次,对于大规模的零样本转移基础训练

作者指出,大多数现有的开放集模型[14,21]依赖于预训练的CLIP模型进行概念泛化。然而,CLIP的效力,特殊是在图像-文本对上预训练的效力,对于区域-文本对检测任务是有限的——正如RegionCLIP [61]研究所指出的那样

  1. 相比之下,GLIP [25]依据将目标检测重新表述为短语定位任务并在大规模数据上引入对象区域与语言短语之间的对比训练,展示了一种不同的方法
    它在异构数据集上表现出极大的灵活性,并在封闭集和开放集检测上表现出显著的性能
  2. 作者采用并改进了基础训练方法。GLIP的手段涉及将所有类别以随机顺序连接成一个句子。然而,直接的类别名称连接在提取特征时并未考虑不相关类别之间的潜在影响

    为了缓解这一问题并提高基础训练期间的模型性能,作者引入了一种利用子句级别文本特征的技术。它在单词特征提取期间消除了不相关类别之间的注意力。关于这一技术的进一步说明可以在原论文第3.4节中能够找到

总之,他们在大规模数据集上预训练了Grounding DINO,并在COCO [29]等主流目标检测基准上评估性能

2.2 Grounding DINO的整体方法论与架构

Grounding DINO为给定的(图像,文本)对输出多个对象框和名词短语对。例如,如下图图 3 所示

模型从输入图像中定位到一只猫和一张桌子,并从输入文本中提取出单词“猫”和“桌子”作为相应的标签。对象检测和REC 任务都许可与该流程对齐

按照 GLIP [25] 的方法,将所有类别名称连接为目标检测任务的输入文本。REC 需一个边界框用于每个文本输入。使用得分最高的输出对象作为REC任务的输出

Grounding DINO 是一种双编码器-单解码器架构,它包含

  1. 一个用于图像特征提取的图像骨干网络
  2. 一个用于文本特征提取的文本骨干网络
  3. 一个用于图像和文本特征融合的特征增强器,即aFeature Enhancerfor image and text feature fusion
  4. 一个用于查询初始化的语言引导查询选择模块,即a Language-guided Query Selectionmodule for query initialization
  5. 以及一个用于框优化的跨模态解码器,即aCross-Modality decoderfor box refinemen

对于每个图像-文本对——(Image, Text) pair,第一使用图像骨干网络和文本骨干网络分别提取原始图像特征和原始文本特征。随后,两个原始特征被输入到特征增强器模块中进行跨模态特征融合

在获得跨模态文本和图像特征后,使用语言引导的查询选择模块从图像特征中选择跨模态查询。就像大多数DETR类模型中的目标查询一样

这些跨模态查询将被输入到跨模态解码器中,以从两个模态特征中提取所需特征并进行自我更新,最后一个解码器层输出的查询将用于预测目标框并提取相应的短语

2.2.1 特征提取和增强器

给定一个图像-文本对——(Image, Text) pair,使用类似Swin Transformer [32] 的图像骨干网络提取多尺度图像特征,并使用类似BERT [8] 的文本骨干网络提取文本特征

遵循之前类似DETR 的检测器[57,64],多尺度特征从不同块的输出中提取。在提取原始图像和文本特征后,将它们输入到一个特征增强器中进行跨模态特征融合

  1. 特征增强器包括多个特征增强层。在图3 的第2 块中展示了一个特征增强层。利用可变形自注意力来增强图像特征,并对文本特征增强器采用原始自注意力机制「We leverage the Deformable self-attention to enhance image features and the vanilla self-attention for textfeature enhancers

  2. 受GLIP [25] 的启发,作者为特征融合添加了图像到文本和文本到图像的交叉注意力模块。这些模块有助于对齐不同模态的特征

2.2.2 基于语言引导的查询选择

Grounding DINO旨在根据输入文本从图像中检测指定的目标。为了管用利用输入文本引导目标检测,作者设计了一个基于语言引导的查询选择模块,用于选择与输入文本更相关的特征作为解码器查询

  1. 令图像特征为\mathbf{X}_{I} \in \mathrm{R}^{N_{I} \times d},文本特征为\mathbf{X}_{T} \in \mathrm{R}^{N_{T} \times d}。这里,N_{I}表示图像token的数量,N_{T}表示文本token的数量,d对应特征维度
    在作者的实验中,作者特地启用了特征维度d = 256。通常,在模型中,N_{I}的值超过10,000,而N_{T}保持在256 以下
  2. 作者的目标是从编码器的图像特征中提取N_{q}个查询,以用作解码器的输入
    与DINO 方法一致,作者将N_{q}设置为900。图像特征的前N_{q}个查询索引,记为\mathbf{I}_{N_{q}},使用以下表达式选择:
    \mathbf{I}_{N_{q}}=\operatorname{Top}_{N_{q}}\left(\operatorname{Max}^{(-1)}\left(\mathbf{X}_{I} \mathbf{X}_{T}^{\top}\right)\right)
    在这个表达式中,\operatorname{Top}_{N_{q}} 表示选择前N_{q}个索引的操作。函数\operatorname{Max}^{(-1)}-1维度上执行最大管理,符号T表示矩阵转置

作者在算法1 中以PyTorch 风格展示了查询选择过程

语言引导的查询选择模块输出N_{q}个索引。可以基于选定的索引提取特征来初始化查询。参考DINO [57],使用混合查询选择来初始化解码器查询。每个解码器查询含有两个部分:内容部分和位置部分[33]

  1. 将位置部分表述为动态锚框[31],这些锚框由编码器输出初始化
  2. 另一部分,内容查询,在训练过程中被设置为可学习的

2.2.3 跨模态解码器、子句级文本特征、损失函数

首先,对于跨模态解码器,作者开发了一种跨模态解码器,用于融合图像和文本模态特征,如图3的模块3所示

每个跨模态查询都会依次输入自注意力层、图像跨注意力层(用于融合图像特征)、文本跨注意力层(用于融合文本特征)以及每个跨模态解码器层中的前馈神经网络(FFN)层

与DINO解码器层相比,每个解码器层额外囊括一个文本跨注意力层,这是因为需要将文本信息注入到查询中,以实现更好的模态对齐

对于DINO与Grounding DINO的比较而言,下图用用蓝色标记修改

其次,对于子句级文本特征,在之前的工作中探索了两种文本提示方式,作者称之为句子级表示和词级表示,如图4所示

  • 句子级表示[35,52]将整个句子编码为一个特征
    要是短语定位数据中的某些句子具备多个短语,它会提取这些短语并丢弃其他词语。通过这种方式,它消除了词语之间的影响,同时失去了句子中的细粒度信息
  • 词级表示[12,18] 许可经过一次前向传播编码多个类别名称,但当输入文本是多个类别名称任意顺序拼接时,会引入类别之间不必要的依赖关系

    如图4(b)所示,在注意力机制中,一些无关的词语会相互作用
    为避免不必要的词语交互,作者引入了注意力掩码,用于阻断无关类别名称之间的注意力,将其称为“子句”级表示。这一方法消除了不同类别名称之间的影响,同时保留了每个词的特征,以实现细粒度的理解

最终,对于损失函数,与以往的 DETR 类方式 [2,24,31,33,57,64] 一致,作者在边界框回归任务中采用了 L1 损失和 GIOU [40] 损失。在分类任务中,借鉴了GLIP [25],对预测目标与语言token之间应用对比损失

具体而言

  1. 将每个查询与文本特征做点积,以预测每个文本token的对数值,并对每个对数值计算 focal loss [28]。边框回归和分类代价起初用于预测与真实标签之间的二分匹配
  2. 随后,在真实标签与匹配预测之间,运用相同的损失项计算最终损失。参照 DETR 类模型,在每个解码器层之后以及编码器输出后添加辅助损失

2.3 Grounding DINO 1.5

// 待更

第三部分 DINO-X:目标检测和理解的统一视觉模型

24年11月,IDEA-Research提出DINO-X,其对应的论文为《DINO-X: A Unified Vision Model for Open-World Object Detection and Understanding

// 待更

第四部分 从Grounded SAM到Grounded SAM2:任意文本输入下,同时检测与分割

24年1月,粤港澳大湾区数字经济研究院(International Digital Economy Academy,简称IDEA研究院)提出Grounded SAM

  • 其利用Grounding DINO[38] 作为开放集目标检测器,并与Segment AnythingModel(SAM)[25] 结合,能够根据用户提供的任意文本输入,同时检测并分割图像中对应的区域
    此外,它还可以无缝集成到其他开放世界模型中,以做完更复杂的视觉任务,比如通过与BLIP [31]的集成,可以实现类似的自动图像标注能力

  • 其对应的论文为《Grounded SAM: Assembling Open-World Models for Diverse Visual Tasks

4.1 Grounded SAM(基于Grounding DINO和SAM):开放词汇检测与分割

在图像中根据用户提供的任意文本确定对应区域的掩码,并由此实现更细粒度的图像理解任务(如开放集分割),是一项极具挑战性的任务。这主要归因于用于野外分割任务的高质量内容有限,导致模型在信息稀缺条件下难以实现精确的开放集分割

相比之下,开放集检测任务则更易于处理,主要有以下两个原因

  1. 先,与分割任务相比,检测数据的标注成本相对较低,因此能够收集到更多高质量的标注数据
  2. 其次,开放集检测仅需根据给定文本在图像上确定相应目标的坐标,无需精确到像素级别的目标掩码
    同样地,在已知框的情况下预测对应目标掩码,并借助框位置信息的先验知识,比直接根据文本预测区域掩码更加高效

    该方法已在如 OpenSeeD [79] 等先前工作中得到验证,并且通过利用 SAM [25] 中开发的SAM-1B 数据集,可以在很大程度上缓解数据稀缺这一重大问题

因此,受以往诸如 Grounded Pre-training[81,38] 和 SAM [25] 等成功工作的启发,作者旨在通过结合强大的开放集基础模型,克服野外复杂分割任务。对于输入的图像和文本提示,

  1. 先利用 Grounding DINO,通过将文本信息作为条件,为图像中的目标或区域生成精确的边框
  2. 通过随后,通过 Ground-ing DINO 获得的标注框作为 SAM 的框提示,用于生成精确的掩码标注。凭借利用这两个强大专家模型的能力,能够更轻松地完成开放集检测和分割任务

    如下图图2所示,Grounded SAM 能够根据用户输入,在常规和长尾场景下准确地检测和分割文本

// 待更

4.2 Grounded SAM2

其对应的GitHub为:github.com/IDEA-Research/Grounded-SAM-2

// 待更

posted on 2025-12-23 19:29  ljbguanli  阅读(0)  评论(0)    收藏  举报