摘要:Grounding-DINO是一种创新的视觉-语言模型,旨在提升视觉推理和对象检测任务的表现。Grounding-DION的独特之处在于其能够“感知”并与语言中的实体或属性对应,从而精确定位图像中的目标,并根据文本描述进行分类和推理。该模型不仅提高了多模态任务
Grounding-DINO 是一种创新的视觉-语言模型,旨在提升视觉推理和对象检测任务的表现。Grounding-DION的独特之处在于其能够“感知”并与语言中的实体或属性对应,从而精确定位图像中的目标,并根据文本描述进行分类和推理。该模型不仅提高了多模态任务的准确性,还在跨模态推理领域展示了卓越的应用潜力,适用于复杂的视觉理解和交互场景。
题目:Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection论文链接:https://arxiv.org/pdf/2303.05499模型信息
Grounding DINO是一种先进的零样本物体检测模型,由IDEA-Research在2023年开发。该模型结合了“GLIP”(Grounded Language-Image Pre-training)与基于Transformer的检测方法“DINO”,从而在AI系统中实现更高效的物体检测。
GLIP(以G开头,代表Grounded Language-Image Pre-training)已被提议作为CLIP的对象检测版本,它使用视觉编码器计算对象的候选区域和嵌入,使用文本编码器计算文本嵌入。然后通过对这些嵌入进行点积来计算词区域对齐分数。这可以基于任何给定的文本进行对象检测。
GLIP框架此外,DINO(改进的无对象DETR)已被提出作为一种使用Transformer架构的对象检测器,而不是基于锚框和ROI重叠的常规算法,该算法迄今为止主要用于YOLO等模型。这种方法的改变被称为DETR(DEtection TRansformers),它消除了对NMS(非最大抑制)等固定算法的需求,从而实现了端到端优化。
DION框架Grounding DINO是一个革命性的算法,广泛应用于工业自动化、能源电力、智慧医疗等领域,展示了其强大的泛化能力和多样化的应用场景。
网络结构
Grounding DINO一种多模态模型的设计,其中包含了三个特征融合阶段:颈部(neck)、查询初始化(query initialization)和头部(head)。这些阶段的目的是增强模型对不同模态(如图像和文本)特征的理解和利用,以提高模型在现有基准测试上的性能。
颈部阶段(Neck Module)
在这个阶段,设计了一个特征增强器(feature enhancer),它通过堆叠自注意力(self-attention)、从文本到图像的交叉注意力(text-to-image cross-attention)和从图像到文本的交叉注意力(image-to-text cross-attention)模块来增强特征表示。自注意力允许模型关注图像或文本内部的上下文信息,而交叉注意力则帮助模型理解两个模态之间的关联。
查询初始化阶段
在这个阶段,开发了一种语言引导的查询选择方法(language-guided query selection method),用于初始化头部的查询。这意味着模型使用文本信息来指导生成查询,这些查询将用于后续的图像处理。这种方法有助于模型更准确地定位和识别图像中与文本描述相对应的对象。
头部阶段(Head Phase)
在这个阶段,设计了一个跨模态解码器(cross-modality decoder),它包含图像和文本的交叉注意力层。这个解码器进一步增强了查询表示(query representations),使得模型能够更有效地结合图像和文本信息,从而提高性能。
这三个特征融合阶段共同作用,帮助模型在处理图像和文本任务时获得更好的性能。这些改进的效果将在论文的第4.4节中展示,可能包括在各种基准测试上的性能提升数据。
相关工作
开放集目标检测(open-set object detection)的训练方法,其目的是利用语言泛化能力来检测任意类别。开放集目标检测与传统的封闭集目标检测不同,后者仅限于检测训练时见过的类别。在开放集目标检测中,模型需要能够识别和定位图像中未在训练数据中明确标注的物体类别。
OV-DETR(Object-Vocabulary DETR)
它使用由CLIP模型编码的图像和文本嵌入作为查询,在DETR(Detection Transformer)框架中解码特定类别的边界框。
ViLD(Vision and Language Detector)
通过从CLIP模型中提取知识到类似R-CNN的检测器,使得学到的区域嵌入包含语言语义。
GLIP(Grounded Language-Image Pre-training)
将目标检测形式化为一个定位问题,并利用额外的定位数据来帮助学习在短语和区域层面的对齐语义。GLIP展示了这样的公式化甚至可以在完全监督的目标检测基准测试上实现更强的性能。
DetCLIP(Detection CLIP)
涉及大规模的图像字幕数据集,并使用生成的伪标签来扩展知识数据库。这些生成的伪标签有效地帮助扩展了检测器的泛化能力。
Grounding DINO整体架构
模型首先使用图像骨干网络和文本骨干网络分别提取图像特征和文本特征。然后,这两个原始特征被输入到特征增强器模块Feature Enhancer中进行跨模态特征融合。在获得跨模态的文本和图像特征后,模型使用语言引导的查询选择模块 (Language-guide Query Selection) 从图像特征中选取跨模态查询。这些跨模态查询类似于大多数DETR-like模型中的对象查询,它们被输入到跨模态解码器中 (Cross-Modality Decoder),以从两个模态的特征中探测期望的特征并更新自身。最后一层解码器的输出查询被用于预测对象边界框并提取相应的短语。
在对象检测任务中,模型将所有类别名称拼接作为输入文本,这与GLIP方法一致。在REC(Referring Expression Comprehension)任务中,每个文本输入需要一个边界框,模型使用得分最高的输出对象作为REC任务的输出。通过这种方式,Grounding DINO能够同时处理对象检测和REC任务,提高了模型在视觉和语言理解方面的能力。
特征的提取与增强
给定一对(图像、文本)后,我们使用类似Swin Transformer[32]的图像骨干提取多尺度图像特征,并使用类似BERT的文本骨干提取文本特征。按照之前的类DETR检测器,从不同区块的输出中提取多尺度特征。提取出虚构图像和文本特征后,我们将其输入特征增强器,进行跨模态特征融合。特征增强器包括多个特征增强层。图 3 方块 2 展示了一个特征增强层。我们利用可变的自注意力来增强图像特征,并利用vanilla普通的自注意力来增强文本特征。受GLIP的启发,我们为特征融合添加了图像到文本和文本到图像的交叉注意模块。这些模块可帮助调整不同模式的特征。
具体来说,Deformable self-attention可变的自注意力允许模型在图像特征的空间中进行动态的注意力计算, 这有助于模型更好地理解图像内容的局部和全局结构。而普通的自注意力则用于文本特征,因为它能够有效地捕捉文本中的上下文信息。
图像到文本的交叉注意力和文本到图像的交叉注意力模块则允许模型在图像特征和文本特征之间建立联系,从而帮助模型更好地理解图像内容与文本描述之间的关系。这些模块的结合使用,使得模型能够更准确地理解图像和文本的语义信息,从而提高模型在视觉和语言理解任务中的性能。
语言指导的问答选择
Grounding DINO的目标是从图像中检测出由输入文本指定的对象。为了有效地利用输入文本来指导对象检测,我们设计了一个语言引导的查询选择模块来选择与输入文本更相关的特征作为解码器的查询。我们用PyTorch风格的伪代码在Algorithm 1中展示了查询选择过程。
我们可以基于选定的索引提取特征来初始化查询。遵循DINO的做法,我们使用混合查询选择来初始化解码器的查询。每个解码器查询包含两部分:内容部分和位置部分。位置部分被形式化为动态锚框,它们使用编码器的输出进行初始化。另一部分,即内容查询,在训练期间被设置为可学习的。
动态锚框是一种灵活的边界框表示,它允许模型在不同的查询中为每个对象生成不同的边界框,从而增加了模型对各种对象形状和大小变化的适应性。内容查询的可学习性使得模型能够在训练过程中调整查询以更好地匹配输入文本描述的对象。
通过这种方式,Grounding DINO能够利用输入文本的信息来指导对象检测,从而提高模型在处理复杂视觉任务时的性能。
跨模态解码器
我们开发了一个跨模态解码器来结合图像和文本模态特征,如图3方块3所示。在每个跨模态解码器层中,每个跨模态查询都被送入一个自关注层、一个图像交叉关注层以结合图像特征、一个文本交叉关注层以结合文本特征,以及一个FFN层。与DINO解码层相比,每个解码层都有一个额外的文本交叉注意层,因为我们需要将文本信息注入查询,以便更好地进行模态对齐。
子句级别的特征
如图 4 所示,之前工作中探索了两种文本提示,我们将其命名为句子级表示和词级表示。
句子级表示法将整个句子编码为一个特征。如果短语基础数据中的某些句子有多个短语,它就会提取这些短语,而舍弃其他词。这样,它可以消除词与词之间的影响,同时丢失句子中的细粒度信息。
词级表示法可以用一个前向编码多个类别名称,但会引入类别之间不必要的依赖关系,尤其是当输入文本是多个类别名称以任意顺序的串联时。
如图 4(b)所示,在注意过程中,一些不相关的词会发生相互作用。为了避免不必要的词语交互,我们引入了注意力掩码来阻断不相关的类别名称之间的注意力,这就是 “子句 ”级表示。它消除了不同类别名称之间的影响,同时保留了每个单词的特征,以便于精细理解。
损失函数
Grounding DINO模型在训练过程中使用的损失函数和辅助损失。它遵循了之前DETR(Detection Transformer)类型的相关工作,并采用了L1损失和GIOU(Generalized Intersection over Union)损失来优化边界框回归。此外,还使用了对比损失来增强预测对象和语言标记之间的分类能力。
具体步骤包括
1)边界框回归(Bounding Box Regression)
使用 L1 损失和GIOU[40]损失进行边界框回归。
L1损失(L1 loss):是一种平滑的损失函数,用于优化边界框的回归问题。它计算预测边界框与真实边界框之间的L1距离,并将其最小化。
GIOU损失(GIOU loss)是一种用于评估边界框重叠的损失函数。它考虑了边界框的面积和重叠面积,以提供更准确的评估。
2)进行分类(Classification)
对比损失(Contrastive loss):GLIP使用对比损失来增强预测对象和语言标记之间的分类能力。它通过计算每个查询(query)与文本特征的点积来预测每个文本标记的logits,然后对每个logit计算焦距损失(focal loss)。
3)计算最终损失
边界框回归和分类成本首先用于预测和真实标签之间的二进制匹配。
然后计算与匹配预测相同的损失组件之间的真实标签和匹配预测的最终损失。
4)添加辅助损失(Auxiliary Loss)
类似于DETR-like模型,Grounding DINO在每个解码器层之后和每个编码器输出之后都添加了辅助损失。这种辅助损失有助于模型更好地学习,尤其是在训练初期,当模型对输入数据的表示还不够准确时。
通过这些损失函数和辅助损失的组合,Grounding DINO模型能够在训练过程中更有效地优化其参数,从而提高其在对象检测任务中的性能。
实验结果
作者进行了一系列实验,以评估Grounding DINO模型在不同设置下的性能。这些实验包括:闭集数据集、开放集数据集、引用检测设置。
表2中对Grounding DINO、GLIP和DINO模型进行比较的实验结果的总结。
Grounding DINO在零样本迁移上超越了所有之前的模型,比DINO和GLIP分别提高了0.5个AP和1.8个AP。在零样本转移设置下,Grounding数据仍然对 Grounding DINO有所帮助,增加了超过1AP(48.1对比46.7),它在新类别上的表现提升幅度超过了1个AP(从46.7个AP增加到48.1个AP)。
在COCO minival评估中,Grounding DINO取得了62.6个AP,超过了DINO的62.5个AP。
Grounding DINO在多个评估指标上都取得了优异的成绩,尤其是在零样本迁移和开放集检测任务上。这些结果表明,该模型设计有效地利用了图像和文本信息,提高了模型的泛化能力和性能。
LVIS
LVIS是一个用于长尾对象的数据集,它包含超过1000个类别用于评估。作者使用LVIS作为下游任务来测试他们的模型在零样本设置下的能力,并将GLIP作为基线。结果在表3中展示。Grounding DINO在相同设置下优于GLIP。
Grounding DINO在长尾对象检测任务上表现良好,尤其是在常见对象上,但它在罕见类别上的表现仍有提升空间。此外,Grounding DINO对数据的增益响应比GLIP更显著,这表明它具有更好的扩展性,尤其是在处理大量数据时。
ODinW
ODinW(Object Detection in the Wild)是一个更具挑战性的基准测试,用于评估模型在真实世界场景下的性能。它收集了超过35个数据集进行评估。在表4中,作者报告了零样本、少量样本和全样本三种设置的结果。在这个基准测试中,Grounding DINO表现良好。仅使用O365和GoldG进行预训练的Grounding-DINO-T在少量样本和全样本设置上都优于DINO。
令人印象深刻的是,使用Swin-T骨干网络的Grounding DINO在全样本设置上优于使用Swin-L骨干网络的DINO。在零样本设置上,Grounding DINO的性能优于GLIP,并且与GLIPv2相当,后者采用了如遮蔽训练等新技术。
RefCOCO/+/g
表5中展示了模型在RefCOCO/+/g数据集上的性能结果。结果显示,Grounding DINO在相同的设置下表现优于GLIP。然而,无论是GLIP还是Grounding DINO,在没有REC数据(指Referential Expression Comprehension,参考表达理解数据)的情况下性能都不好。作者观察到,更多的训练数据(如标题数据)或更大的模型对最终性能有一些帮助,但影响并不显著。然而,在训练中注入RefCOCO/+/g数据之后,Grounding DINO获得了显著的提升。在RefCOCO/+/g数据集上,Grounding DINO 的性能优于GLIP,而且在加入了REC数据后,性能得到了显著提升。这些观察结果对于指导未来的模型设计和训练策略具有重要意义。
消融实验
作者在本节中进行的消融研究。他们提出了一种紧密融合的基于语言感知的模型 用于开放式目标检测,并采用了子句级别的文本提示。为了验证模型设计的有效性,他们移除了一些融合模块,得到了不同的变体,并在表6中展示了结果。
结果表明,每个融合块都对最终性能有帮助。编码器融合是最重要的设计,它在LVIS和COCO数据集上都表现出了显著的影响。词级文本提示的影响最小,但也是有帮助的。语言引导的查询选择和文本交叉注意力在LVIS和COCO数据集上分别呈现较大的影响。
总结
在这篇论文中,介绍了一个名为Grounding-DINO的模型。Grounding-DINO扩展了DINO模型,使其能够进行开放集对象检测,即能够根据文本查询检测任意对象。我们对开放集对象检测器的架构进行了回顾,并提出了一个紧密融合的方法,以更好地融合跨模态信息。我们还提出了一个子句级表示的方法,以更加合理地使用检测数据作为文本提示。
此外,Grounding-DINO还被用于增强细粒度图像编辑能力,通过与GLIGEN结合使用,利用输入短语中的短语提示来生成图像中的特定位置的对象。
来源:小码科普君