1. 背景介绍
GroundingDINO
是一种新的SOTA零样本物体检测模型。在这篇文章中,我们将讨论Grounding DINO
模型的优势,分析其具体的模型架构,并提供真实的测试样例。
闲话少说,我们直接开始吧!
2.零样本目标检测
大多数目标检测模型被训练来识别预先定义的特定类别的集合,这方面的主要缺陷是缺乏相应的灵活性。每次要扩展或更改可识别对象的类别集合时,都必须收集新类别的数据,对其进行人工标记,然后再次重新训练模型。这一点对于工业落地来说,当然 是非常耗时且昂贵的。
零样本目标检测技术希望打破这一现状,使其能够在不重新训练模型的情况下检测新类别的物体。而我们所要做的就是更改相应的文本提示词,模型将检测到大家所描述的对象。
3.举个栗子
上面讲了一堆大道理,可能有的童鞋们还是没有直观的认识,不防我们来举个栗子吧。
如上图所示,我们观测左边的图像,我们输入提示词类别椅子(chair
) — 属于COCO数据集的某个类别。该模型成功地检测到了这张图像上所有的椅子(chair
)对象,检测结果很完美。
对于右边的图像,我们试图输入提示词狗的尾巴(dog's tail
),显而易见,这个类别 当然不在任何常用的数据集中,但它仍然可以让模型正常检测识别,并给出正确的结果。
4.性能表现
GroundingDINO
在COCO零样本检测任务上实现检测精度AP=52.5
— 而在训练过程中没有使用COCO的任何训练样本。党使用COCO数据进行微调后,GroundingDINO
的检测精度达到了AP=63.0
。并且它以26.1 的AP创下了ODinW
零样本基准数据集的最高分记录。
5.技术优势
事实上,Grounding DINO 共有以下三个技术优势:
- 零样本目标检测 — Grounding DINO擅长检测目标对象,即使它们不是训练数据中预定义类别集合中的对象。这种独特的功能使模型能够适应新的场景对象,使其具有更通用的泛化性,并适用于各种现实世界的任务。
- 指称表达理解 — 在给定的文本描述语境下,识别和定位图像中的特定对象或区域。换言之,可以使用提示词来要求模型只检测人坐的椅子,而不是检测图像中的人和椅子,然后编写额外附加的逻辑来确定椅子是否被占用。这要求模型对语言和视觉内容都有深刻的理解,并能够将单词或词语与相应的视觉元素特征进行关联。
- 消除手工设计的组件,如NMS — Grounding DINO通过消除对手工设计的组件(如非最大抑制(NMS))的需求,简化了目标检测流程。此外,这种设计进一步简化了模型体系结构和训练过程,同时提高了效率和检测性能。
6.网络结构
Grounding DINO
旨在融合DINO
和GLIP
论文中的设计。DINO
是一种基于tranformer
的检测方法,它可以实现最先进的对象检测器的性能以及相应的端到端优化,消除了对NMS(非最大抑制)等手工模块的依赖。另一方面,GLIP
侧重于文本侧,这项任务涉及将给定文本中的短语或单词将其与图像或视频中相应的视觉元素进行关联,可以有效地将文本描述与其各自的视觉表示进行关联。
Grounding DINO
的网络结构分为以下几个部分:
-
文本主干和图像特征提取主干 — 一般使用像
Swin Transformer
这样的图像主干来提取多尺度图像特征,并且使用像BERT
这样的文本主干来提取文本特征。
-
文本图像特征融合 — 在提取出图像和文本特征后,将它们输入到特征增强器中进行跨模态特征融合。特征增强包括多个特征增强器层。可变形的自注意机制被用来增强图像特征,普通自注意机制被用于文本特征增强。
-
文本语义引导的query选择 – 为了有效地利用输入文本来引导对象检测,设计了一个语言引导查询选择模块,以选择与输入文本更相关的融合特征作为解码器的query。
-
多模态解码器 - 开发了一种来组合图像和文本特征的跨模态解码器。每个跨模态
query
被送到自注意力层、用于组合图像特征的图像交叉注意力层、用来组合文本特征的文本交叉注意力层以及每个跨模态解码器层中的FFN
层。与DINO解码器相比,每个解码器层都有一个额外的文本交叉注意力层,因为文本信息需要注入到query
中以更好地对齐多模态特征。
7.简单例子
为了让大家更容易地尝试这个模型,我们准备了一个Jupyter
测试样例,你可以点击链接进行访问。
如上图所示,Grounding DINO
允许根据语义进行更加精确地检测。我们可以使用文本提示词 “一个坐在椅子上的人”,来将要搜索范围缩小到仅一个人占用的椅子,而不是检测图像中所有的椅子 。我们可以看到右侧图像中,该模型不仅返回了一个检测到的椅子,还返回了一个被检测到的“男人” — 提示词中的附加词。
8.复杂例子
与GLIP一样,可以通过通过合适的prompt engineering
来提高网络检测的质量。在下面的照片中,使用简单的文本查询 — “餐巾纸” 喂入模型,那么我们将不会检测到任何物体。
但是在这种情况下,提供更多描述细节来帮助我们寻找特定的对象的是有帮助的,例如“蓝色餐巾”和“桌子上的餐巾”,以实现所需要的输出。
9.总结
正如大家在本文开头的表格中所看到的,Grounding DINO
比GLIP
推理速度更快,但在要求实时检测场景中考虑起来仍然推理速度太慢。
然而,该模型可以在灵活性和泛化性很重要的任务中大放异彩,比如Grounding DINO
可以成功地用于自动化数据标注。此外,Grounding DINO
还可以通过使用语言约束而不是复杂且容易出错的手工组件来分析检测关系,从而大大简化图像和视频分析的处理逻辑。
总之,Grounding DINO
无疑是一个重大突破,它将为物体检测及其他领域的更多创新应用铺平道路。