Open-GroundingDino
Open-GroundingDino 是经典论文《Grounding DINO》的第三方开源实现,旨在为开放集物体检测提供灵活的训练与推理方案。它核心解决了官方版本仅支持推理、缺乏完整训练代码的痛点,让开发者能够基于自有数据集对模型进行微调,甚至从零开始预训练。
这款工具特别适合人工智能研究人员和算法工程师使用,尤其是那些需要处理多模态数据(如结合图像与文本描述)或希望在特定领域定制检测模型的专业人士。与普通用户不同,使用者需要具备一定的深度学习环境配置能力,以便完成依赖安装和数据格式转换。
其独特的技术亮点在于全面的支持能力:不仅兼容物体检测(OD)和视觉定位(VG)两种数据的训练,还原生支持 Slurm 多机分布式训练及多种加速策略,显著提升了大规模数据下的训练效率。此外,它设计了统一的 ODVG 数据格式,方便用户混合加载 COCO、LVIS、Objects365 等多种主流数据集。通过 Open-GroundingDino,社区得以更自由地探索 grounded pre-training 技术,推动开放集检测任务在实际场景中的落地应用。
使用场景
某电商初创公司的算法团队正致力于构建一个能自动识别并标注商品图中任意长尾品类(如“复古碎花裙”或“异形抱枕”)的智能审核系统。
没有 Open-GroundingDino 时
- 无法识别未训练类别:传统检测模型只能识别预定义好的固定类别,遇到新出现的商品类型必须重新收集数据并从头训练,响应周期长达数周。
- 多源数据整合困难:团队手头既有标准的物体检测数据(如 COCO),又有带文本描述的定位数据(如 Grounding 数据),缺乏统一框架同时利用这两类资源进行训练。
- 训练效率低下:官方原版代码不支持多机分布式训练和特定的加速策略,导致在大规模混合数据集上训练模型时,显存占用高且耗时极长。
- 微调灵活性差:难以针对公司特有的商品数据集进行高效的微调(Fine-tuning),往往需要修改大量底层代码才能适配自定义数据格式。
使用 Open-GroundingDino 后
- 实现开放集检测:利用其开放集检测能力,模型仅需通过文本提示即可定位从未见过的商品类别,无需重新训练即可应对新品上架。
- 统一混合数据训练:借助对 ODVG 数据格式的原生支持,团队轻松将现有的检测数据集与图文定位数据集混合,显著提升了模型对复杂语义的理解力。
- 大幅提升训练速度:启用其独有的多机 Slurm 支持和训练加速策略,将原本需要数天的训练任务缩短至数小时,快速迭代模型版本。
- 便捷自定义微调:直接加载预训练权重,通过简单的配置脚本即可在公司私有数据集上完成微调,快速落地符合业务需求的专用模型。
Open-GroundingDino 通过打破封闭类别限制并优化训练流程,让电商团队能够以极低的数据成本和时间开销,构建出具备高度泛化能力的智能视觉审核系统。
运行环境要求
- 未说明
需要 NVIDIA GPU,CUDA 11.3(测试环境),具体显存需求未说明
未说明

快速开始
这是由 Zuwei Long 和 Wei Li 发表的论文 Grounding DINO: 将 DINO 与接地预训练结合用于开放集目标检测 的第三方实现。
您可以使用此代码在自己的数据集上微调模型,或从头开始进行预训练。
支持的功能
| 官方发布版本 | 我们复现的版本 | |
|---|---|---|
| 推理 | ✔ | ✔ |
| 训练(目标检测数据) | ✖ | ✔ |
| 训练(接地数据) | ✖ | ✔ |
| Slurm 多机支持 | ✖ | ✔ |
| 训练加速策略 | ✖ | ✔ |
设置
我们使用以下版本进行模型测试:Python 3.7.11、PyTorch 1.11.0 和 CUDA 11.3。其他版本也可能适用。
- 克隆本仓库。
git clone https://github.com/longzw1997/Open-GroundingDino.git && cd Open-GroundingDino/
- 安装所需的依赖项。
pip install -r requirements.txt
cd models/GroundingDINO/ops
python setup.py build install
python test.py
cd ../../..
数据集
对于 训练,我们使用 odvg 数据格式,以支持 OD 数据和 VG 数据。
在开始模型训练之前,您需要将数据集转换为 odvg 格式,详情请参阅 data_format.md | datasets_mixed_odvg.json | coco2odvg.py | grit2odvg。
对于 测试,我们使用 coco 格式,目前仅支持 OD 数据集。
混合数据集
{
"train": [
{
"root": "path/V3Det/",
"anno": "path/V3Det/annotations/v3det_2023_v1_all_odvg.jsonl",
"label_map": "path/V3Det/annotations/v3det_label_map.json",
"dataset_mode": "odvg"
},
{
"root": "path/LVIS/train2017/",
"anno": "path/LVIS/annotations/lvis_v1_train_odvg.jsonl",
"label_map": "path/LVIS/annotations/lvis_v1_train_label_map.json",
"dataset_mode": "odvg"
},
{
"root": "path/Objects365/train/",
"anno": "path/Objects365/objects365_train_odvg.json",
"label_map": "path/Objects365/objects365_label_map.json",
"dataset_mode": "odvg"
},
{
"root": "path/coco_2017/train2017/",
"anno": "path/coco_2017/annotations/coco2017_train_odvg.jsonl",
"label_map": "path/coco_2017/annotations/coco2017_label_map.json",
"dataset_mode": "odvg"
},
{
"root": "path/GRIT-20M/data/",
"anno": "path/GRIT-20M/anno/grit_odvg_620k.jsonl",
"dataset_mode": "odvg"
},
{
"root": "path/flickr30k/images/flickr30k_images/",
"anno": "path/flickr30k/annotations/flickr30k_entities_odvg_158k.jsonl",
"dataset_mode": "odvg"
}
],
"val": [
{
"root": "path/coco_2017/val2017",
"anno": "config/instances_val2017.json",
"label_map": null,
"dataset_mode": "coco"
}
]
}
odvg 数据集示例
# 对于 OD
{"filename": "000000391895.jpg", "height": 360, "width": 640, "detection": {"instances": [{"bbox": [359.17, 146.17, 471.62, 359.74], "label": 3, "category": "摩托车"}, {"bbox": [339.88, 22.16, 493.76, 322.89], "label": 0, "category": "人"}, {"bbox": [471.64, 172.82, 507.56, 220.92], "label": 0, "category": "人"}, {"bbox": [486.01, 183.31, 516.64, 218.29], "label": 1, "category": "自行车"}]}}
{"filename": "000000522418.jpg", "height": 480, "width": 640, "detection": {"instances": [{"bbox": [382.48, 0.0, 639.28, 474.31], "label": 0, "category": "人"}, {"bbox": [234.06, 406.61, 454.0, 449.28], "label": 43, "category": "刀"}, {"bbox": [0.0, 316.04, 406.65, 473.53], "label": 55, "category": "蛋糕"}, {"bbox": [305.45, 172.05, 362.81, 249.35], "label": 71, "category": "水槽"}]}}
# 对于 VG
{"filename": "014127544.jpg", "height": 400, "width": 600, "grounding": {"caption": "自制生有机奶油芝士,价格不到商店购买的一半!制作起来超级简单,只需要两种原料!", "regions": [{"bbox": [5.98, 2.91, 599.5, 396.55], "phrase": "自制生有机奶油芝士"}]}}
{"filename": "012378809.jpg", "height": 252, "width": 450, "grounding": {"caption": "天真:笔记本背景中的心形图案", "regions": [{"bbox": [93.8, 47.59, 126.19, 77.01], "phrase": "心形图案"}, {"bbox": [2.49, 1.44, 448.74, 251.1], "phrase": "笔记本背景"}]}}
配置
config/cfg_odvg.py # 用于骨干网络、批量大小、学习率、冻结层等
config/datasets_mixed_odvg.json # 支持 OD 和 VG 的混合数据集
训练
- 数据集: 在开始训练之前,您需要根据 data_format.md 修改
config/datasets_mixed_example.json。 - 配置: 默认使用 coco_val2017 进行评估。
- 如果您使用自己的测试集进行评估,则需要将测试数据转换为 coco 格式(而非 ovdg 格式),并修改配置以设置 use_coco_eval = False(COCO 数据集有 80 个类别用于训练,但总共有 90 个类别,因此代码中内置了映射)。
- 此外,还需在配置中添加(或更新)label_list,写入您自己的类别名称,例如 label_list=['狗', '猫', '人']。
- use_coco_eval = True
+ use_coco_eval = False
+ label_list=['狗', '猫', '人']
- 训练/评估:
# 使用 torch.distributed.launch 进行训练/评估:
bash train_dist.sh ${GPU_NUM} ${CFG} ${DATASETS} ${OUTPUT_DIR}
bash test_dist.sh ${GPU_NUM} ${CFG} ${DATASETS} ${OUTPUT_DIR}
# 使用 slurm 集群进行训练/评估:
bash train_slurm.sh ${PARTITION} ${GPU_NUM} ${CFG} ${DATASETS} ${OUTPUT_DIR}
bash test_slurm.sh ${PARTITION} ${GPU_NUM} ${CFG} ${DATASETS} ${OUTPUT_DIR}
# 例如,可查看 train_slurm.sh 以获取更多细节
# bash train_slurm.sh v100_32g 32 config/cfg_odvg.py config/datasets_mixed_odvg.json ./logs
# bash train_slurm.sh v100_32g 8 config/cfg_coco.py config/datasets_od_example.json ./logs
结果与模型
| 名称 | 预训练数据 | 任务 | COCO上的mAP | 检查点 | 备注 |
|---|---|---|---|---|---|
| GroundingDINO-T (官方) |
O365,GoldG,Cap4M | 零样本 | 48.4 (零样本) |
模型 | - | GroundingDINO-T (微调) |
O365,GoldG,Cap4M | 微调 结合COCO数据 |
57.3 (微调) |
模型 | 配置文件 | 日志 |
| GroundingDINO-T (预训练) |
COCO,O365,LIVS,V3Det, GRIT-200K,Flickr30k(共计180万) |
零样本 | 55.1 (零样本) |
模型 | 配置文件 | 日志 |
推理
由于模型架构未发生变化,您只需安装GroundingDINO库,然后运行inference_on_a_image.py即可对您的图像进行推理。
python tools/inference_on_a_image.py \
-c tools/GroundingDINO_SwinT_OGC.py \
-p path/to/your/ckpt.pth \
-i ./figs/dog.jpeg \
-t "dog" \
-o output
| 提示词 | 官方检查点 | COCO检查点 | 180万检查点 |
|---|---|---|---|
| 狗 | ![]() |
![]() |
![]() |
| 猫 | ![]() |
![]() |
![]() |
致谢
提供的代码改编自:
引用
@misc{Open Grounding Dino,
author = {Zuwei Long, Wei Li},
title = {Open Grounding Dino:论文Grounding DINO的第三方实现},
howpublished = {\url{https://github.com/longzw1997/Open-GroundingDino}},
year = {2023}
}
联系方式
- longzuwei at sensetime.com
- liwei1 at sensetime.com
如果您有任何建议或问题,欢迎随时联系我们。我们也欢迎您报告发现的漏洞。如果您发现了任何错误或希望贡献代码,请创建一个拉取请求。
版本历史
v0.1.02023/10/26常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
opencv
OpenCV 是一个功能强大的开源计算机视觉库,被誉为机器视觉领域的“瑞士军刀”。它主要解决让计算机“看懂”图像和视频的核心难题,提供了从基础的图像读取、色彩转换、边缘检测,到复杂的人脸识别、物体追踪、3D 重建及深度学习模型部署等全方位算法支持。无论是处理静态图片还是分析实时视频流,OpenCV 都能高效完成特征提取与模式识别任务。 这款工具特别适合计算机视觉开发者、人工智能研究人员以及机器人工程师使用。对于希望将视觉感知能力集成到应用中的软件工程师,或是需要快速验证算法原型的学术研究者,OpenCV 都是不可或缺的基础设施。虽然普通用户通常不会直接操作代码,但日常生活中使用的扫码支付、美颜相机和自动驾驶系统,背后往往都有它的身影。 OpenCV 的独特亮点在于其卓越的性能与广泛的兼容性。它采用 C++ 编写以确保高速运算,同时提供 Python、Java 等多种语言接口,极大降低了开发门槛。库中内置了数千种优化算法,并支持跨平台运行,能够无缝对接各类硬件加速器。作为社区驱动的项目,OpenCV 拥有活跃的生态系统和丰富的学习资源,持续推动着视觉技术的前沿发展。





