GroundingDINO

GitHub
10k 1k 较难 1 次阅读 昨天Apache-2.0语言模型图像
AI 解读 由 AI 自动生成,仅供参考

Grounding DINO 是一款强大的开源人工智能模型,专为“开放集物体检测”任务设计。传统检测模型通常只能识别训练时见过的固定类别,而 Grounding DINO 突破了这一限制,它能够根据用户输入的自然语言描述(如“穿红衣服的人”或“桌上的咖啡杯”),在图像中精准定位并框出任意物体,即使这些物体从未出现在其训练数据中。

该工具有效解决了传统算法无法灵活应对未知类别、依赖大量标注数据的痛点,实现了真正的零样本(Zero-Shot)检测能力。其核心技术亮点在于巧妙融合了 DINO 检测架构与接地预训练(Grounded Pre-Training)技术,将视觉特征与语言语义深度对齐,从而具备极强的泛化性和理解力。此外,它还能与 SAM 等分割模型联动,进一步实现精细化的物体分割与跟踪。

Grounding DINO 非常适合计算机视觉研究人员、AI 开发者以及需要处理复杂场景的数据分析师使用。对于希望自动化数据集标注、构建灵活监控系统的工程师,或是探索多模态应用的科研人员,它都是一个极具价值的基石工具。凭借在 MS COCO 等权威基准测试中的卓越表现,Grounding DINO 正成为连接语言指令与视觉感知的重要桥梁。

使用场景

某电商运营团队需要每天从数万张用户上传的生活场景图中,快速筛选并标注出包含“复古红色手提包”或“木质咖啡桌”等特定长尾商品的照片,以构建新品训练数据集。

没有 GroundingDINO 时

  • 标注成本极高:面对从未见过的新型商品,必须雇佣大量人工逐张看图框选,耗时数天且费用昂贵。
  • 泛化能力受限:传统检测模型只能识别预定义好的 80 类常见物体,一旦用户搜索词超出训练集(如“波西米亚风地毯”),模型直接失效。
  • 迭代周期漫长:每当业务需求变更(例如从找“椅子”变为找“折叠椅”),都需要重新收集数据、训练模型,无法即时响应。
  • 漏检率居高不下:对于背景复杂或遮挡严重的目标,固定类别的模型往往无法准确定位,导致大量有价值图片被遗漏。

使用 GroundingDINO 后

  • 零样本即时检测:只需输入自然语言描述(如“复古红色手提包”),GroundingDINO 即可直接在图中框出目标,无需任何额外训练或标注。
  • 开放词汇支持:彻底打破类别限制,无论是生僻词还是组合概念(如“放在窗边的绿植”),GroundingDINO 都能凭借强大的图文理解能力精准识别。
  • 自动化数据生产:利用 GroundingDINO 批量预处理海量图片,自动生成高质量标注框,将原本数周的数据准备工作压缩至几小时。
  • 复杂场景鲁棒性:得益于接地预训练机制,GroundingDINO 在人群拥挤、光线昏暗或部分遮挡的复杂环境下,依然能保持极高的定位准确率。

GroundingDINO 通过将自然语言理解融入视觉检测,让机器具备了“听懂指令找物体”的能力,彻底重构了开放世界下的目标检测工作流。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU
  • 非必需(支持 CPU 模式)
  • 若有 CUDA 环境,需设置 CUDA_HOME 环境变量,具体 CUDA 版本需与运行时对齐(文中示例为 CUDA 11.3),未明确指定最低显存要求
内存

未说明

依赖
notes1. 若拥有 CUDA 环境,必须设置 CUDA_HOME 环境变量,否则将编译为仅 CPU 模式。 2. 安装步骤必须严格执行,否则可能报错 'NameError: name '_C' is not defined',若发生此错误需重新克隆仓库并重装。 3. 可通过 'which nvcc' 查找 CUDA 安装路径以设置环境变量。 4. 项目支持在無 GPU 的机器上运行(CPU-only mode)。
python未说明
torch
torchvision
transformers
pycocotools
opencv-python
supervision
timm
GroundingDINO hero image

快速开始

:sauropod: Grounding DINO

PWC PWC
PWC PWC

IDEA-CVR, IDEA-Research

刘士龙曾昭阳任天贺李峰张浩杨杰李春元杨建伟苏航朱俊张磊:email:.

[论文] [Demo] [BibTex]

Grounding DINO 的 PyTorch 实现及预训练模型。详情请参阅论文 Grounding DINO:将 DINO 与接地式预训练结合用于开放集目标检测

  • 🔥 Grounded SAM 2 已发布,它将 Grounding DINO 与 SAM 2 结合,适用于开放世界场景中的任意对象跟踪。
  • 🔥 Grounding DINO 1.5 已发布,这是 IDEA Research 打造的 最强大 的开放世界目标检测模型!
  • 🔥 Grounding DINOGrounded SAM 现已在 Hugging Face 上提供支持。为方便使用,您可以参考 此文档

:sun_with_face: 有用的教程

:sparkles: 亮点项目

:bulb: 亮点

  • 开放集检测。 用语言检测 一切
  • 高性能。 COCO 零样本 52.5 AP(未使用 COCO 数据进行训练!)。COCO 微调 63.0 AP
  • 灵活。 可与 Stable Diffusion 协同用于图像编辑。

:fire: 新闻

  • 2023/07/18: 我们发布了Semantic-SAM,这是一个通用图像分割模型,能够在任意所需的粒度上实现对任何对象的分割和识别。代码检查点现已开放!
  • 2023/06/17: 我们提供了一个示例,用于评估Grounding DINO在COCO数据集上的零样本性能。
  • 2023/04/15: 对于那些对开放集识别感兴趣的人,请参阅CV in the Wild Readings
  • 2023/04/08: 我们发布了demos,将Grounding DINOGLIGEN结合,以实现更可控的图像编辑。
  • 2023/04/08: 我们发布了demos,将Grounding DINOStable Diffusion结合,用于图像编辑。
  • 2023/04/06: 我们构建了一个新的演示,将GroundingDINO与Segment-Anything相结合,命名为**Grounded-Segment-Anything**,旨在支持GroundingDINO中的分割功能。
  • 2023/03/28: 一段关于Grounding DINO和基础目标检测提示工程的YouTube视频。[SkalskiP]
  • 2023/03/28: 在Hugging Face Space上新增了一个demo
  • 2023/03/27: 支持仅CPU模式。现在该模型可以在没有GPU的机器上运行。
  • 2023/03/25: 在Colab上提供了一个关于Grounding DINO的demo。[SkalskiP]
  • 2023/03/22: 代码现已开放!
描述 论文介绍。 ODinWGrounding DINOGLIGEN结合 gd_gligen

:star: Grounding DINO 输入与输出的解释/技巧

  • Grounding DINO 接受一个(图片, 文本)对作为输入。
  • 它会输出900个(默认)目标框。每个框都包含与所有输入词语的相似度分数。(如图所示。)
  • 默认情况下,我们会选择那些最高相似度高于box_threshold的框。
  • 我们会提取那些相似度高于text_threshold的词语作为预测标签。
  • 如果你想获取特定短语的对象,比如句子two dogs with a stick.中的dogs,你可以选择与dogs文本相似度最高的框作为最终输出。
  • 请注意,每个单词可能会被不同的分词器拆分成多个标记。因此,句子中的单词数量可能并不等于文本标记的数量。
  • 我们建议在Grounding DINO中使用.来分隔不同的类别名称。 model_explain1 model_explain2

:label: 待办事项

  • 发布推理代码和演示。
  • 发布检查点。
  • 提供Grounding DINO与Stable Diffusion和GLIGEN结合的演示。
  • 发布训练代码。

:hammer_and_wrench: 安装

注意:

  1. 如果你有CUDA环境,请确保已设置环境变量CUDA_HOME。如果没有CUDA,程序将以仅CPU模式编译。

请严格按照以下安装步骤操作,否则程序可能会报错:

NameError: name '_C' is not defined

如果出现此错误,请重新克隆仓库并再次执行所有安装步骤来重新安装GroundingDINO。

如何检查CUDA:

echo $CUDA_HOME

如果没有任何输出,则表示你尚未设置路径。

运行以下命令以在当前Shell中设置环境变量:

export CUDA_HOME=/path/to/cuda-11.3

请注意,CUDA版本应与你的CUDA运行时版本一致,因为同一时间可能存在多个CUDA版本。

如果你想永久设置CUDA_HOME,可以将其添加到配置文件中:

echo 'export CUDA_HOME=/path/to/cuda' >> ~/.bashrc

之后,加载.bashrc文件并检查CUDA_HOME:

source ~/.bashrc
echo $CUDA_HOME

在本示例中,/path/to/cuda-11.3应替换为你CUDA工具包的实际安装路径。你可以在终端中输入which nvcc来找到它:

例如,如果输出是/usr/local/cuda/bin/nvcc,那么:

export CUDA_HOME=/usr/local/cuda

安装:

  1. 从GitHub克隆GroundingDINO仓库。
git clone https://github.com/IDEA-Research/GroundingDINO.git
  1. 切换到GroundingDINO目录。
cd GroundingDINO/
  1. 在当前目录中安装所需的依赖项。
pip install -e .
  1. 下载预训练模型权重。
mkdir weights
cd weights
wget -q https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth
cd ..

:arrow_forward: 演示

检查你的 GPU ID(仅在使用 GPU 时)

nvidia-smi

将以下命令中的 {GPU ID}image_you_want_to_detect.jpg"dir you want to save the output" 替换为适当的值

CUDA_VISIBLE_DEVICES={GPU ID} python demo/inference_on_a_image.py \
-c groundingdino/config/GroundingDINO_SwinT_OGC.py \
-p weights/groundingdino_swint_ogc.pth \
-i image_you_want_to_detect.jpg \
-o "dir you want to save the output" \
-t "chair"
 [--cpu-only] # 打开以 CPU 模式运行

如果你想指定要检测的短语,这里有一个演示:

CUDA_VISIBLE_DEVICES={GPU ID} python demo/inference_on_a_image.py \
-c groundingdino/config/GroundingDINO_SwinT_OGC.py \
-p ./groundingdino_swint_ogc.pth \
-i .asset/cat_dog.jpeg \
-o logs/1111 \
-t "There is a cat and a dog in the image ." \
--token_spans "[[[9, 10], [11, 14]], [[19, 20], [21, 24]]]"
 [--cpu-only] # 打开以 CPU 模式运行

token_spans 指定了短语的起始和结束位置。例如,第一个短语是 [[9, 10], [11, 14]]"There is a cat and a dog in the image ."[9:10] = 'a', "There is a cat and a dog in the image ."[11:14] = 'cat'。因此,它指的是短语 a cat。同样地,[[19, 20], [21, 24]] 指的是短语 a dog

更多详细信息请参阅 demo/inference_on_a_image.py

使用 Python 运行:

from groundingdino.util.inference import load_model, load_image, predict, annotate
import cv2

model = 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.25

image_source, image = load_image(IMAGE_PATH)

boxes, logits, phrases = predict(
    model=model,
    image=image,
    caption=TEXT_PROMPT,
    box_threshold=BOX_TRESHOLD,
    text_threshold=TEXT_TRESHOLD
)

annotated_frame = annotate(image_source=image_source, boxes=boxes, logits=logits, phrases=phrases)
cv2.imwrite("annotated_image.jpg", annotated_frame)

Web UI

我们还提供了一个演示代码,用于将 Grounding DINO 集成到 Gradio Web UI 中。更多详细信息请参阅文件 demo/gradio_app.py

Notebooks

COCO 零样本评估

我们提供了一个示例,用于评估 Grounding DINO 在 COCO 数据集上的零样本性能。结果应为 48.5

CUDA_VISIBLE_DEVICES=0 \
python demo/test_ap_on_coco.py \
 -c groundingdino/config/GroundingDINO_SwinT_OGC.py \
 -p weights/groundingdino_swint_ogc.pth \
 --anno_path /path/to/annoataions/ie/instances_val2017.json \
 --image_dir /path/to/imagedir/ie/val2017

:luggage: 检查点

名称 骨干网络 数据集 COCO 上的框 AP 检查点 配置文件
1 GroundingDINO-T Swin-T O365,GoldG,Cap4M 48.4(零样本)/ 57.2(微调) GitHub 链接 | HF 链接 链接
2 GroundingDINO-B Swin-B COCO,O365,GoldG,Cap4M,OpenImage,ODinW-35,RefCOCO 56.7 GitHub 链接 | HF 链接 链接

:medal_military: 结果

COCO 物体检测结果 COCO
ODinW 物体检测结果 ODinW
将 Grounding DINO 与 Stable Diffusion 结合进行图像编辑 请参阅我们的示例 notebook 以获取更多详情。 GD_SD
将 Grounding DINO 与 GLIGEN 结合,实现更精细的图像编辑。 请参阅我们的示例 notebook 以获取更多详情。 GD_GLIGEN

:sauropod: 模型:Grounding DINO

包括:文本骨干网络、图像骨干网络、特征增强器、语言引导的查询选择以及跨模态解码器。

arch

:hearts: 致谢

我们的模型与 DINOGLIP 有关。感谢他们的杰出工作!

我们还要感谢 DETR、Deformable DETR、SMCA、Conditional DETR、Anchor DETR、Dynamic DETR、DAB-DETR、DN-DETR 等优秀的工作。更多相关工作可在 Awesome Detection Transformer 中找到。此外,还有一个新的工具箱 detrex 可供使用。

感谢 Stable DiffusionGLIGEN 提供的优秀模型。

:black_nib: 引用

如果您认为我们的工作对您的研究有所帮助,请考虑引用以下 BibTeX 条目。

@article{liu2023grounding,
  title={Grounding DINO:将 DINO 与接地式预训练相结合用于开放集目标检测},
  author={刘士龙和曾昭阳和任天贺和李峰和张浩和杨杰和李春元和杨建伟和苏航和朱俊和其他人},
  journal={arXiv 预印本 arXiv:2303.05499},
  year={2023}
}

版本历史

v0.1.0-alpha22023/04/07
v0.1.0-alpha2023/03/21

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架