智能网站建设维护,wordpress 主题不显示,浙江省城乡住房建设网站,wordpress标签logo开放世界目标检测 Grounding DINO
flyfish
Grounding DINO 是一种开创性的开放集对象检测器#xff0c;它通过结合基于Transformer的检测器DINO与基于文本描述的预训练技术#xff0c;实现了可以根据人类输入#xff08;如类别名称或指代表达#xff09;检测任意对象的功…开放世界目标检测 Grounding DINO
flyfish
Grounding DINO 是一种开创性的开放集对象检测器它通过结合基于Transformer的检测器DINO与基于文本描述的预训练技术实现了可以根据人类输入如类别名称或指代表达检测任意对象的功能。这项研究的关键在于将语言引入到原本只能识别预定义类别的封闭集检测器中以实现对开放集概念的泛化能力。
为了有效融合语言和视觉模态研究者们在理论上将一个封闭集检测器的工作流程分为三个阶段并提出了一个紧密融合的解决方案。该方案包括
特征增强器用于强化从图像中提取的特征。语言引导的查询选择根据提供的文本描述来选择哪些区域或对象进行更细致的分析。跨模态解码器用于融合视觉和语言信息使模型能够理解两者之间的关系。
Grounding DINO 首先在大规模数据集上进行了预训练这些数据集涵盖了对象检测、接地任务以及图像字幕生成的数据。预训练之后模型在开放集对象检测和指代对象检测基准测试中进行了评估。结果显示Grounding DINO 在所有三项设置中都表现出了显著的效果包括COCO、LVIS、ODinW 和 RefCOCO//g 等基准测试。
具体来说Grounding DINO 在 COCO 零样本检测基准上的平均精度AP达到了52.5%并且在 ODinW 的零样本检测基准上创造了新的记录平均精度为26.1%。这表明 Grounding DINO 不仅可以很好地处理已知类别的检测任务还能有效地应对未曾见过的新类别展现了强大的泛化能力。
此外研究人员还发布了部分检查点和推理代码供社区使用和进一步研究发布地址为 https://github.com/IDEA-Research/GroundingDINO。
这个模型的成功标志着在开放集对象检测领域的一个重要进展为未来的研究和应用提供了新的可能性。
Introduction
Artificial General Intelligence (AGI) 系统的能力的一个关键指标是其处理开放世界场景的熟练程度。在本文中我们的目标是开发一个强大的系统该系统能够根据人类语言输入检测任意对象这一任务通常被称为开放集对象检测open-set object detection。此任务作为通用对象检测器具有广泛的应用前景和巨大潜力例如可以与生成模型合作进行图像编辑如图1(b)所示。
为了实现这个目标我们设计了强大的开放集对象检测器 Grounding DINO并遵循以下两个原则 基于DINO的紧密模态融合 开放集检测的关键在于通过引入语言来实现对未见过的对象的泛化能力。大多数现有的开放集检测器都是通过将封闭集检测器扩展到开放集场景并结合语言信息发展而来的。如图2所示一个封闭集检测器通常包含三个重要模块用于特征提取的骨干网络backbone、用于特征增强的颈部neck以及用于区域细化或边界框预测的头部head。通过学习语言感知的区域嵌入封闭集检测器可以被推广以检测新对象使得每个区域可以在语言感知的语义空间中分类为新的类别。实现这一目标的关键是在颈部和/或头部输出之间使用区域输出和语言特征之间的对比损失contrastive loss。 大规模接地预训练以实现概念泛化 为了让模型能够理解并识别各种不同类型的对象它需要经历大规模的数据预训练包括对象检测数据、接地数据和字幕数据等。这种预训练有助于模型学习如何将视觉信息与文本描述关联起来从而提高对新概念的理解和泛化能力。
Grounding DINO 的设计不仅依赖于深度学习中的Transformer架构如DINO还依赖于跨模态视觉和语言信息的有效融合。通过这种方式模型能够在不局限于预定义对象类别的前提下根据自然语言描述准确地定位和识别图像中的对象这标志着向更加智能和灵活的计算机视觉系统迈出了重要一步。
此外文中提到的“对比损失”是一种训练技术它帮助模型学会区分正样本即正确的匹配和负样本错误的匹配这对于确保模型正确地关联语言描述和视觉内容至关重要。这种方法使 Grounding DINO 能够有效地从已知类别泛化到未知类别从而在开放集对象检测任务中表现优异。 执行代码先执行
export HF_ENDPOINThttps://hf-mirror.comfrom groundingdino.util.inference import load_model, load_image, predict, annotate
import cv2model load_model(groundingdino/config/GroundingDINO_SwinT_OGC.py, weights/groundingdino_swint_ogc.pth)
IMAGE_PATH weights/dog-3.jpeg
TEXT_PROMPT chair . person . dog .
BOX_TRESHOLD 0.35
TEXT_TRESHOLD 0.25image_source, image load_image(IMAGE_PATH)boxes, logits, phrases predict(modelmodel,imageimage,captionTEXT_PROMPT,box_thresholdBOX_TRESHOLD,text_thresholdTEXT_TRESHOLD
)annotated_frame annotate(image_sourceimage_source, boxesboxes, logitslogits, phrasesphrases)
cv2.imwrite(annotated_image.jpg, annotated_frame)问题
GroundingDINO/ms_deform_attn.py, line 53, in forwardoutput _C.ms_deform_attn_forward(^^
NameError: name _C is not defined解决方法
export CUDA_HOME/usr/local/cuda-12.4
echo $CUDA_HOME