首页 > 其他分享 >GroundingDINO-根据文本提示检测任意目标

GroundingDINO-根据文本提示检测任意目标

时间:2023-12-30 11:01:15浏览次数:40  
标签:DINO 检测 模型 Grounding 图像 GroundingDINO 文本 任意

1. 背景介绍

GroundingDINO是一种新的SOTA零样本物体检测模型。在这篇文章中,我们将讨论Grounding DINO模型的优势,分析其具体的模型架构,并提供真实的测试样例。

闲话少说,我们直接开始吧!

2.零样本目标检测

大多数目标检测模型被训练来识别预先定义的特定类别的集合,这方面的主要缺陷是缺乏相应的灵活性。每次要扩展或更改可识别对象的类别集合时,都必须收集新类别的数据,对其进行人工标记,然后再次重新训练模型。这一点对于工业落地来说,当然 是非常耗时且昂贵的。

零样本目标检测技术希望打破这一现状,使其能够在不重新训练模型的情况下检测新类别的物体。而我们所要做的就是更改相应的文本提示词,模型将检测到大家所描述的对象。

3.举个栗子

上面讲了一堆大道理,可能有的童鞋们还是没有直观的认识,不防我们来举个栗子吧。

GroundingDINO-根据文本提示检测任意目标_计算机视觉

如上图所示,我们观测左边的图像,我们输入提示词类别椅子(chair) — 属于COCO数据集的某个类别。该模型成功地检测到了这张图像上所有的椅子(chair)对象,检测结果很完美。 对于右边的图像,我们试图输入提示词狗的尾巴(dog's tail),显而易见,这个类别 当然不在任何常用的数据集中,但它仍然可以让模型正常检测识别,并给出正确的结果。

4.性能表现

GroundingDINO在COCO零样本检测任务上实现检测精度AP=52.5 — 而在训练过程中没有使用COCO的任何训练样本。党使用COCO数据进行微调后,GroundingDINO的检测精度达到了AP=63.0 。并且它以26.1 的AP创下了ODinW零样本基准数据集的最高分记录。

GroundingDINO-根据文本提示检测任意目标_计算机视觉_02

5.技术优势

事实上,Grounding DINO 共有以下三个技术优势:

  • 零样本目标检测 — Grounding DINO擅长检测目标对象,即使它们不是训练数据中预定义类别集合中的对象。这种独特的功能使模型能够适应新的场景对象,使其具有更通用的泛化性,并适用于各种现实世界的任务。
  • 指称表达理解 — 在给定的文本描述语境下,识别和定位图像中的特定对象或区域。换言之,可以使用提示词来要求模型只检测人坐的椅子,而不是检测图像中的人和椅子,然后编写额外附加的逻辑来确定椅子是否被占用。这要求模型对语言和视觉内容都有深刻的理解,并能够将单词或词语与相应的视觉元素特征进行关联。
  • 消除手工设计的组件,如NMS — Grounding DINO通过消除对手工设计的组件(如非最大抑制(NMS))的需求,简化了目标检测流程。此外,这种设计进一步简化了模型体系结构和训练过程,同时提高了效率和检测性能。

GroundingDINO-根据文本提示检测任意目标_计算机视觉_03

6.网络结构

Grounding DINO旨在融合DINOGLIP论文中的设计。DINO是一种基于tranformer的检测方法,它可以实现最先进的对象检测器的性能以及相应的端到端优化,消除了对NMS(非最大抑制)等手工模块的依赖。另一方面,GLIP侧重于文本侧,这项任务涉及将给定文本中的短语或单词将其与图像或视频中相应的视觉元素进行关联,可以有效地将文本描述与其各自的视觉表示进行关联。

Grounding DINO的网络结构分为以下几个部分:

  • 文本主干和图像特征提取主干 —  一般使用像Swin Transformer这样的图像主干来提取多尺度图像特征,并且使用像BERT这样的文本主干来提取文本特征。
  • GroundingDINO-根据文本提示检测任意目标_深度学习_04

  • 文本图像特征融合  —  在提取出图像和文本特征后,将它们输入到特征增强器中进行跨模态特征融合。特征增强包括多个特征增强器层。可变形的自注意机制被用来增强图像特征,普通自注意机制被用于文本特征增强。
  • GroundingDINO-根据文本提示检测任意目标_计算机视觉_05

  • 文本语义引导的query选择 -- 为了有效地利用输入文本来引导对象检测,设计了一个语言引导查询选择模块,以选择与输入文本更相关的融合特征作为解码器的query。
  • 多模态解码器 - 开发了一种来组合图像和文本特征的跨模态解码器。每个跨模态query被送到自注意力层、用于组合图像特征的图像交叉注意力层、用来组合文本特征的文本交叉注意力层以及每个跨模态解码器层中的FFN层。与DINO解码器相比,每个解码器层都有一个额外的文本交叉注意力层,因为文本信息需要注入到query中以更好地对齐多模态特征。

GroundingDINO-根据文本提示检测任意目标_计算机视觉_06

7.简单例子

为了让大家更容易地尝试这个模型,我们准备了一个Jupyter测试样例,你可以点击链接进行访问。

GroundingDINO-根据文本提示检测任意目标_深度学习_07

如上图所示,Grounding DINO允许根据语义进行更加精确地检测。我们可以使用文本提示词 “一个坐在椅子上的人”,来将要搜索范围缩小到仅一个人占用的椅子,而不是检测图像中所有的椅子 。我们可以看到右侧图像中,该模型不仅返回了一个检测到的椅子,还返回了一个被检测到的“男人” — 提示词中的附加词。

8.复杂例子

与GLIP一样,可以通过通过合适的prompt engineering来提高网络检测的质量。在下面的照片中,使用简单的文本查询 — “餐巾纸” 喂入模型,那么我们将不会检测到任何物体。

GroundingDINO-根据文本提示检测任意目标_深度学习_08

但是在这种情况下,提供更多描述细节来帮助我们寻找特定的对象的是有帮助的,例如“蓝色餐巾”和“桌子上的餐巾”,以实现所需要的输出。

9.总结

正如大家在本文开头的表格中所看到的,Grounding DINOGLIP推理速度更快,但在要求实时检测场景中考虑起来仍然推理速度太慢。

然而,该模型可以在灵活性和泛化性很重要的任务中大放异彩,比如Grounding DINO可以成功地用于自动化数据标注。此外,Grounding DINO还可以通过使用语言约束而不是复杂且容易出错的手工组件来分析检测关系,从而大大简化图像和视频分析的处理逻辑。

总之,Grounding DINO无疑是一个重大突破,它将为物体检测及其他领域的更多创新应用铺平道路。

标签:DINO,检测,模型,Grounding,图像,GroundingDINO,文本,任意
From: https://blog.51cto.com/u_15506603/9039909

相关文章

  • linux 中取文本的最后一列
     001、测试数据,awk实现[root@pc1test]#lsa.txt[root@pc1test]#cata.txt##测试数据01020304050607080910111213141516171819202122232425262728293031323334353637383940......
  • 如何批量去掉文本的括号前后缀内容
    静下心想想,日常的工作中,你们有没有遇到过这样的场景:ERP系统中的客户名称是按照项目、工程来命名的,我们应该如何通过这样的客户名称来提取得到真正的公司名称?这里,我用AIGC随机生成了一些样本。1.(海生项目)卓越光电科技有限公司2.(蓝海贸易项目)天翼有限公司3.鸿图科技(......
  • 福建科立讯通信有限公司指挥调度管理平台-upload接口任意上传
    FOFA语法body="指挥调度管理平台"&&title=="指挥调度管理平台"POCPOST/api/client/upload.phpHTTP/1.1Host:{{Hostname}}Content-Length:180Cache-Control:max-age=0Upgrade-Insecure-Requests:1Content-Type:multipart/form-data;boundary=----......
  • Qt/C++音视频开发62-电子放大/按下选择区域放大显示/任意选取区域放大
    一、前言电子放大这个功能思考了很久,也是一直拖到近期才静下心来完整这个小功能,这个功能的前提,主要得益于之前把滤镜打通了,玩出花样来了,只要传入对应的滤镜字符串,就可以实现各种各样的效果,然后查阅滤镜手册过程中,发现有个裁剪crop的滤镜,和要做的电子放大效果完全一样,就是将指定的......
  • css多行文本省略 line-clamp
    css多行文本省略line-clamp一行文本内容溢出的省略例子:<divclass="container"style="width:200px;outline:1pxsolidred"><divclass="description"style="overflow:hidden;text-overflow:ellipsis;white-space:nowrap;"&g......
  • System&Math&包装类&文本扫描器&String总结
    总结System类1、注意设计类的时候,不要将类名设计为和jdk提供的类名一样掌握属性和方法属性:err:获取标准的输出流(打印错误信息)out:标准的输出流,打印任意信息in:获取标准的输入流,可以获取控制台输入的信息方法:(全部是类方法)1、currentTimeMillis():获取当前时间,以毫秒来表示......
  • 通达OA 任意文件上传+文件包含 getshell
    漏洞影响版本通达OAV11版<=11.320200103通达OA2017版<=10.1920190522通达OA2016版<=9.1320170710通达OA2015版<=8.1520160722通达OA2013增强版<=7.2520141211通达OA2013版<=6.2020141017漏洞分析根据网上的文章可以知道任意文件上传的漏洞点在is......
  • 开源免费又好用的中式数据报表:UReport2是一款高性能的架构在Spring之上纯Java报表引
    北润乾、南帆软,数加发力在云端。uReport身何安?中式报表真开源。报表江湖之中,uReport安身立命的产品品类定位是什么?说来很简单,uReport的价值在于填补了这样一个市场空白:开源免费又好用的中式数据报表UReport2是一款高性能的架构在Spring之上纯Java报表引擎,通过迭代单元格可以......
  • 【程序】[API]一言获取_纯文本返回
    程序页面程序作者:盼星辰使用教程API设置程序内置三个api,如需使用,只需API选择中,前三项勾选其中一项即可,如需使用其他API,本程序允许自定义api,注意,使用自定义api时,请确保自定义的api返回内容为纯文本形式,一般的api调用返回形式可能为json或者是txt形式,请确保,返回形式为txt。获......
  • 人工智能生成文本检测在实践中使用有效性探讨
    人工智能辅助撰写文章的技术现在无处不在!ChatGPT已经解锁了许多基于语言的人工智能应用程序,人工智能在任何类型的内容生成中的使用都已经达到了以前前所未有的高度。在诸如创意写作之类的工作中,人们被要求创造自己的内容。但是由于人工智能在这些任务中的普及和有效性,很人工智能......