摘要
在本文中,我们开发了一种名为Grounding DINO的开放集目标检测器,通过将基于Transformer的检测器DINO与接地预训练相结合,使其能够通过人类输入(如类别名称或指代表达式)检测任意对象。开放集目标检测的关键解决方案是将语言引入封闭集检测器,以实现开放集概念的泛化。为了有效融合语言和视觉模态,我们从概念上将封闭集检测器分为三个阶段,并提出了一种紧密融合解决方案,包括特征增强器、语言引导的查询选择和用于模态融合的跨模态解码器。我们首先在大规模数据集上对Grounding DINO进行预训练,包括目标检测数据、接地数据和图像描述数据,并在开放集目标检测和指代目标检测基准上评估模型。Grounding DINO在COCO、LVIS、ODinW和RefCOCO/+/g等基准上表现优异。在COCO零样本检测基准上,Grounding DINO达到了52.5 AP的精度。它在ODinW零样本基准上以平均26.1 AP的成绩创下了新纪录。我们在https://github.com/IDEA-Research/GroundingDINO上发布了一些检查点和推理代码。
关键词:目标检测 · 图像接地 · 多模态学习
1 引言
人工通用智能(AGI)系统能力的一个关键指标是其处理开放世界场景的熟练程度。在本文中,我们的目标是开发一个强大的系统,通过人类语言输入检测任意对象,这一任务通常被称为开放集目标检测。该任务具有广泛的应用前景,因为它作为通用目标检测器的巨大潜力。例如,我们可以与生成模型合作进行图像编辑(如图1(b)所示)。为了实现这一目标,我们设计了强大的开放集目标检测器Grounding DINO,遵循两个原则:基于DINO的紧密模态融合和大规模接地预训练以实现概念泛化。
基于DINO的紧密模态融合。开放集检测的关键是引入语言以实现对未见对象的泛化[1, 7, 25]。大多数现有的开放集检测器是通过将封闭集检测器扩展到开放集场景并结合语言信息开发的。如图2所示,封闭集检测器通常具有三个重要模块:用于特征提取的主干网络、用于特征增强的颈部网络和用于区域细化(或框预测)的头部网络。通过让每个区域在语言感知的语义空间中被分类为新颖类别,封闭集检测器可以泛化以检测新对象。实现这一目标的关键是在颈部网络和/或头部网络输出处使用区域输出与语言特征之间的对比损失。
为了帮助模型对齐跨模态信息,一些研究尝试在最终损失阶段之前融合特征。我们在图2中总结了目标检测器的模块化设计。特征融合可以在三个阶段进行:颈部(阶段A)、查询初始化(阶段B)和头部(阶段C)。例如,GLIP [25] 在颈部模块(阶段A)进行早期融合,而OV-DETR [55] 使用语言感知查询作为头部输入(阶段B)。我们认为,在流程中引入更多的特征融合可以促进不同模态特征之间更好的对齐,从而实现更好的性能。
尽管概念上简单,但之前的研究很难在所有三个阶段都进行特征融合。经典检测器(如Faster RCNN)的设计使得在大多数模块中难以与语言信息交互。与经典检测器不同,基于Transformer的检测器方法(如DINO)具有与语言模块一致的结构。逐层设计使其能够轻松与语言信息交互。基于这一原则,我们在颈部、查询初始化和头部阶段设计了三种特征融合方法。更具体地说,我们设计了一个特征增强器,通过堆叠自注意力、文本到图像的交叉注意力和图像到文本的交叉注意力作为颈部模块。然后,我们开发了一种语言引导的查询选择方法,用于初始化检测头的查询。我们还为头部阶段设计了一个跨模态解码器,包含图像和文本交叉注意力层,以增强查询表示。
大规模接地预训练以实现零样本迁移。大多数现有的开放集模型[14, 21]依赖于预训练的CLIP模型进行概念泛化。然而,CLIP的有效性(特别是在图像-文本对上预训练的)在区域-文本对检测任务中受到限制,正如RegionCLIP研究[61]所指出的那样。相比之下,GLIP [25] 提出了一种不同的方法,将目标检测重新定义为短语接地任务,并引入大规模数据上对象区域与语言短语之间的对比训练。它展示了在异构数据集上的极大灵活性,并在封闭集和开放集检测中表现出色。
我们采用并改进了接地训练方法。GLIP的方法涉及将所有类别随机顺序连接成一个句子。然而,直接连接类别名称并未考虑在提取特征时无关类别之间的潜在影响。为了缓解这一问题并提高接地训练期间的模型性能,我们引入了一种利用子句级别文本特征的技术。它在词特征提取过程中消除了无关类别之间的注意力。关于该技术的更多细节可以在第3.4节中找到。
我们在大规模数据集上对Grounding DINO进行预训练,并在COCO [29]等主流目标检测基准上评估其性能。虽然一些研究在“部分标签”框架下研究了开放集检测模型(例如,在数据子集上训练并在附加类别上测试),但我们提倡完全零样本方法以增强实际适用性。此外,我们将模型扩展到另一个重要场景——指代表达理解(REC)[30, 34],其中对象通过属性进行描述。
我们在所有三种设置下进行了实验,包括封闭集检测、开放集检测和指代目标检测,如图1所示,以全面评估开放集检测性能。Grounding DINO以显著优势超越了竞争对手。例如,Grounding DINO在没有任何COCO训练数据的情况下,在COCO minival上达到了52.5 AP。它还在ODinW [23]零样本基准上以26.1的平均AP创下了新的最先进记录。
2 相关工作
检测Transformer。Grounding DINO基于类似DETR的模型DINO [57],这是一种端到端的基于Transformer的检测器。DETR最初在[2]中提出,随后在过去几年中从多个方向得到了改进[4, 5, 13, 17, 33, 48, 64]。DAB-DETR [31]引入了锚框作为DETR查询,以实现更精确的框预测。DN-DETR [24]提出了一种查询去噪方法,以稳定二分匹配。DINO [57]进一步发展了包括对比去噪在内的多项技术,并在COCO目标检测基准上创下了新纪录。然而,这些检测器主要关注封闭集检测,由于预定义类别的限制,难以泛化到新类别。
开放集目标检测。开放集目标检测利用现有的边界框注释进行训练,旨在通过语言泛化检测任意类别。OV-DETR [56]使用由CLIP模型编码的图像和文本嵌入作为查询,在DETR框架[2]中解码类别指定的框。ViLD [14]从CLIP教师模型中提取知识,并将其注入类似R-CNN的检测器中,从而使学习到的区域嵌入包含语言的语义。GLIP [12]将目标检测表述为接地问题,并利用额外的接地数据帮助在短语和区域级别学习对齐的语义。研究表明,这种表述甚至可以在全监督检测基准上实现更强的性能。DetCLIP [52]涉及大规模图像描述数据集,并使用生成的伪标签扩展知识库。生成的伪标签有效地帮助扩展了泛化能力。
然而,之前的工作仅在部分阶段融合多模态信息,这可能导致语言泛化能力不够理想。例如,GLIP仅在特征增强阶段(阶段A)考虑融合,而OV-DETR仅在解码器输入处(阶段B)注入语言信息。此外,指代表达理解(REC)任务在评估中通常被忽视,而这是开放集检测的一个重要场景。我们在表1中将我们的模型与其他开放集方法进行了比较。
3 Grounding DINO
Grounding DINO为给定的(图像,文本)对输出多对对象框和名词短语。例如,如图3所示,模型从输入图像中定位了一只猫和一张桌子,并从输入文本中提取了单词“猫”和“桌子”作为相应的标签。目标检测和REC任务都可以与该流程对齐。遵循GLIP [25],我们将所有类别名称连接起来作为目标检测任务的输入文本。REC任务需要为每个文本输入提供一个边界框。我们使用得分最高的输出对象作为REC任务的输出。
Grounding DINO是一种双编码器-单解码器架构。它包含一个用于图像特征提取的图像主干网络、一个用于文本特征提取的文本主干网络、一个用于图像和文本特征融合的特征增强器(第3.1节)、一个用于查询初始化的语言引导查询选择模块(第3.2节),以及一个用于框优化的跨模态解码器(第3.3节)。
对于每个(图像,文本)对,我们首先分别使用图像主干网络和文本主干网络提取原始图像特征和原始文本特征。这两种原始特征被输入到特征增强器模块中进行跨模态特征融合。在获得跨模态文本和图像特征后,我们使用语言引导的查询选择模块从图像特征中选择跨模态查询。与大多数类似DETR的模型中的对象查询类似,这些跨模态查询将被输入到跨模态解码器中,从两种模态特征中探测所需特征并更新自身。最后一层解码器的输出查询将用于预测对象框并提取相应的短语。
3.1 特征提取与增强器
给定一个(图像,文本)对,我们使用类似Swin Transformer [32]的图像主干网络提取多尺度图像特征,并使用类似BERT [8]的文本主干网络提取文本特征。遵循之前的类似DETR的检测器[57, 64],多尺度特征从不同模块的输出中提取。在提取原始图像和文本特征后,我们将它们输入到特征增强器中进行跨模态特征融合。特征增强器包括多个特征增强层。我们在图3的模块2中展示了一个特征增强层的结构。我们利用可变形自注意力机制增强图像特征,并使用普通自注意力机制增强文本特征。受GLIP [25]启发,我们添加了图像到文本和文本到图像的交叉注意力模块以实现特征融合。这些模块有助于对齐不同模态的特征。
3.2 语言引导的查询选择
Grounding DINO旨在从输入文本指定的图像中检测对象。为了有效利用输入文本来指导目标检测,我们设计了一个语言引导的查询选择模块,以选择与输入文本更相关的特征作为解码器查询。我们将图像特征表示为 X I ∈ R N I × d { \bf X } _ { I } \, \in \, \mathrm { R } ^ { N _ { I } \times d } XI∈RNI×d,文本特征表示为 X T ∈ R N T × d { \bf X } _ { T } \in \mathrm { R } ^ { N _ { T } \times d } XT∈RNT×d。其中, N I N _ { I } NI表示图像标记的数量, N T N _ { T } NT表示文本标记的数量, d d d表示特征维度。在我们的实验中,我们特别使用了 d = 256 d = 256 d=256的特征维度。通常,在我们的模型中, N I N _ { I } NI的值超过10,000,而 N T N _ { T } NT的值低于256。我们的目标是从编码器的图像特征中提取 N q N _ { q } Nq个查询,作为解码器的输入。根据DINO方法,我们将 N q { \cal N } _ { q } Nq设置为900。图像特征的顶部 N q N _ { q } Nq个查询索引,记为 I N q { \bf { I } } _ { N _ { q } } INq,通过以下表达式选择:
I N q = T o p N o ( M a x ( − 1 ) ( X I X T ⊺ ) ) . ( 1 ) \begin{array} { r } { \mathbf { I } _ { N _ { q } } = \mathrm { T o p } _ { N _ { o } } \big ( \mathbb { M } \mathbf { a } \mathbf { x } ^ { ( - 1 ) } ( \mathbf { X } _ { I } \mathbf { X } _ { T } ^ { \intercal } ) \big ) . } \end{array} \qquad{(1)} INq=TopNo(Max(−1)(XIXT⊺)).(1)
在此表达式中, T o p N q \mathbb { T o p } _ { N _ { q } } TopNq表示选择前 N q N _ { q } Nq个索引的操作。函数 M a x ( − 1 ) \mathtt { M a x } ^ { ( - 1 ) } Max(−1)沿 − 1 -1 −1维度执行最大值操作,符号 ⊺ \intercal ⊺表示矩阵转置。我们以PyTorch风格展示了查询选择过程的算法。语言引导的查询选择模块输出 N q N _ { q } Nq个索引。我们可以根据选定的索引提取特征以初始化查询。遵循DINO [7],我们使用混合查询选择来初始化解码器查询。每个解码器查询包含两部分:内容部分和位置部分[33]。我们将位置部分表示为动态锚框[3],并使用编码器输出进行初始化。另一部分,即内容查询,在训练过程中设置为可学习的。
3.3 跨模态解码器
我们开发了一种跨模态解码器,用于结合图像和文本模态特征,如图3的模块3所示。每个跨模态查询被输入到一个自注意力层、一个图像交叉注意力层(用于结合图像特征)、一个文本交叉注意力层(用于结合文本特征)以及每个跨模态解码器层中的一个前馈神经网络(FFN)层。与DINO解码器层相比,每个解码器层额外增加了一个文本交叉注意力层,因为我们需要将文本信息注入查询中以实现更好的模态对齐。
3.4 子句级别文本特征
在之前的研究中探索了两种文本提示方式,我们将其称为句子级别表示和单词级别表示,如图4所示。
- 句子级别表示[35, 52]将整个句子编码为一个特征。如果短语接地数据中的某些句子包含多个短语,则提取这些短语并丢弃其他单词。这种方式虽然消除了单词之间的相互影响,但会丢失句子中的细粒度信息。
- 单词级别表示[12, 18]允许通过一次前向传播编码多个类别名称,但会引入类别之间不必要的依赖关系,尤其是当输入文本是多个类别名称以任意顺序连接时。
4.2 Grounding DINO 的零样本迁移
在此设置中,我们在大规模数据集上预训练模型,并直接在新数据集上评估模型。我们还列出了一些微调结果,以便更全面地比较我们的模型与之前的工作。
COCO 基准测试
我们在表2中将 Grounding DINO 与 GLIP 和 DINO 进行了比较。我们在大规模数据集上预训练模型,并直接在 COCO 基准上评估我们的模型。由于 O365 数据集 [43](几乎)涵盖了 COCO 中的所有类别,我们评估了在 O365 上预训练的 DINO 作为零样本基线。结果表明,DINO 在 COCO 零样本迁移上的表现优于 DyHead。Grounding DINO 在零样本迁移设置中优于所有之前的模型,与 DINO 和 GLIP 相比,分别提高了 +0.5 AP 和 +1.8 AP。接地数据对 Grounding DINO 仍然有帮助,在零样本迁移设置中带来了超过 1 AP 的提升(48.1 vs. 46.7)。通过更强的骨干网络和更大的数据,Grounding DINO 在 COCO 目标检测基准上创下了 52.5 AP 的新纪录,且在训练期间未见过任何 COCO 图像。Grounding DINO 在 COCO minival 上获得了 62.6 AP,优于 DINO 的 62.5 AP。当输入图像放大 1.5 倍时,性能提升减少。我们怀疑文本分支扩大了不同输入图像模型之间的差距。尽管随着输入尺寸的增大,性能趋于平稳,但 Grounding DINO 在 COCO test-dev 上通过微调 COCO 数据集获得了令人印象深刻的 63.0 AP(见表2括号中的数字)。
LVIS 基准测试
LVIS [15] 是一个用于长尾对象的数据集,包含超过 1000 个类别用于评估。我们使用 LVIS 作为下游任务来测试模型的零样本能力。我们使用 GLIP 和 DetCLIPv2 作为我们模型的基线。结果如表3所示。
我们在结果中发现了两个有趣的现象。首先,Grounding DINO 在常见类别上的表现优于 GLIP,但在稀有类别上的表现较差。我们回顾了类似 DETR 的模型在 LVIS 上的表现,注意到这些模型尽管总体 AP 相似,但在稀有类别上的 AP 通常较低,例如 [9] 的表2和 [18] 的表6。据我们所知,目前没有类似 DETR 的模型能够在没有额外训练数据的情况下有效解决 LVIS 中的稀有类别挑战,这可能是该架构的一个固有局限性。
另一个现象是,Grounding DINO 在更多数据的情况下比 GLIP 有更大的性能提升。例如,Grounding DINO 在使用 Cap4M 描述数据时带来了 +1.8 AP 的提升,而 GLIP 仅有 +1.1 AP 的提升。我们认为,与 GLIP 相比,Grounding DINO 具有更好的可扩展性。更大规模的训练将作为我们未来的工作。
尽管 Grounding DINO 取得了比 GLIP 更好的结果,但我们发现它仍然不如 DetCLIPv2,后者是在更大规模数据上训练的。这种性能差异可能归因于训练数据集和 LVIS 数据集之间的数据分布差异。为了充分挖掘 Grounding DINO 的潜力,我们在 LVIS 数据集上对其进行了微调。表3展示了我们模型的显著能力。值得注意的是,尽管仅在 O365 和 GoldG 数据集上进行了预训练,Grounding DINO 仍然以 1.5 AP 的优势超越了 DetCLIPv2-T。这一结果表明,Grounding DINO 可能学习到了更好的对象级表示,从而在微调后(与目标数据集对齐)实现了更好的性能。在未来的工作中,我们将进行更多研究,包括调整训练数据的语义概念覆盖范围以及增加训练数据的规模,以进一步提高零样本泛化性能。
**ODinW 基准测试 **
ODinW(Object Detection in the Wild)[23] 是一个更具挑战性的基准测试,用于评估模型在真实场景下的性能。它收集了超过 35 个数据集进行评估。我们在表 4 中报告了零样本、少样本和全样本三种设置的结果。Grounding DINO 在该基准测试中表现优异。仅使用 O365 和 GoldG 进行预训练的情况下,Grounding DINO T 在少样本和全样本设置中均优于 DINO。令人印象深刻的是,使用 Swin-T 骨干网络的 Grounding DINO 在全样本设置中甚至优于使用 Swin-L 骨干网络的 DINO。
在零样本设置中,Grounding DINO 在相同骨干网络下优于 GLIP。Grounding DINO 和 GLIPv2-T 的平均 AP(APaverage)相近。然而,关键区别在于中位数 AP(APmedian),Grounding DINO 显著优于 GLIPv2-T(11.9 vs 8.9)。这表明,尽管 GLIPv2 在不同数据集上的性能差异较大,但 Grounding DINO 保持了更一致的性能水平。GLIPv2 采用了掩码文本训练和跨实例对比学习等先进技术,使其比我们的 Grounding DINO 模型更为复杂。此外,我们的模型更加紧凑(172M 参数),而 GLIPv2 有 232M 参数。这些因素——性能一致性、模型复杂性和规模——共同解决了关于我们模型在真正开放集场景中能力的担忧。
Grounding DINO L 在 ODinW 零样本设置中以 26.1 AP 创下了新纪录,甚至超越了 Florence 模型 [54]。这些结果展示了 Grounding DINO 的泛化能力和可扩展性。
4.3 指代目标检测设置
我们进一步探索了模型在指代表达理解(REC)任务中的表现。我们以 GLIP [25] 作为基线,直接在 RefCOCO/+/g 数据集上评估模型性能。结果如表 5 所示。在相同设置下,Grounding DINO 优于 GLIP。然而,在没有 REC 数据的情况下,GLIP 和 Grounding DINO 的表现都不理想。更多的训练数据(如图像描述数据)或更大的模型对最终性能有所帮助,但提升较为有限。在将 RefCOCO/+/g 数据注入训练后,Grounding DINO 获得了显著的性能提升。这些结果表明,当前大多数开放集目标检测器需要更加关注更细粒度的检测任务。
4.4 RefC 和 COCO 数据的影响
在某些设置中,我们将 RefCOCO/+/g(在表格中简称为“RefC”)和 COCO 数据加入训练。我们在表 6 中探讨了这些数据的影响。结果表明,RefC 数据有助于提升 COCO 零样本和微调性能,但对 LVIS 和 ODinW 的结果产生了负面影响。引入 COCO 数据后,COCO 的结果显著提升。这表明,COCO 数据对 LVIS 的性能提升有限,而对 ODinW 的性能略有下降。
4.5 消融实验
我们在本节中进行了消融实验。我们提出了一种用于开放集目标检测的紧密融合接地模型以及子句级别的文本提示。为了验证模型设计的有效性,我们移除了不同变体中的一些融合模块。结果如表 7 所示。所有模型均在 O365 数据集上使用 Swin-T 骨干网络进行预训练。
结果表明,编码器融合显著提升了模型在 COCO 和 LVIS 数据集上的性能。通过比较模型 #1 和基线模型 #0 的结果,验证了这一观察。其他技术,如语言引导的查询选择、文本交叉注意力和子句文本提示,也对 LVIS 性能有积极贡献,分别带来了 +3.0 AP、+1.8 AP 和 +0.5 AP 的显著提升。此外,这些方法还提升了 COCO 零样本性能,进一步证明了它们的有效性。然而,我们观察到语言引导的查询选择和子句文本提示对 COCO 微调性能的影响较小。这一结果是合理的,因为这些方法并未改变模型参数或增加计算负担。文本交叉注意力虽然引入的参数比编码器融合少,但其性能提升也相对较少(+0.6 vs. +0.8)。这一发现表明,微调性能主要受模型参数的影响,表明扩展模型是提升性能的一个有前景的方向。
5 结论
我们在本文中提出了 Grounding DINO 模型。Grounding DINO 将 DINO 扩展到开放集目标检测,使其能够根据文本查询检测任意对象。我们回顾了开放集目标检测器的设计,并提出了一种紧密融合方法以更好地融合跨模态信息。我们提出了一种子句级别的表示方法,以更合理的方式使用检测数据进行文本提示。实验结果展示了我们模型设计和融合方法的有效性。此外,我们将开放集目标检测扩展到 REC 任务并进行了相应的评估。我们发现,现有的开放集检测器在没有微调的情况下对 REC 数据表现不佳。因此,我们呼吁在未来的研究中更加关注 REC 零样本性能。
局限性:尽管在开放集目标检测设置中表现出色,但 Grounding DINO 无法像 GLIPv2 那样用于分割任务。我们的训练数据少于最大的 GLIP 模型,这可能限制了我们的最终性能。此外,我们发现模型在某些情况下会产生误报结果,可能需要更多的技术或数据来减少这种幻觉。
社会影响:使用深度学习模型(如本文提出的模型)会使其面临对抗性攻击的脆弱性。此外,模型输出的准确性和正确性无法得到保证。模型的开放集检测能力也可能被用于非法目的,存在一定的风险。