GroundingDINO:用一句话检测万物,计算机视觉的范式革命
GroundingDINO:用一句话检测万物,计算机视觉的范式革命
“
你只需要告诉AI”找一只猫”,它就能在任意图片中精确定位那只猫——哪怕它从未见过这张图片、这只猫。
这不是Demo,不是实验室玩具,而是已经上线两年、GitHub数万星、ECCV 2024正式发表的成熟技术。
它叫GroundingDINO,来自IDEA Research(国际数字经济研究院),是目前最流行的开放集目标检测模型,没有之一。
一、传统目标检测的困境
在GroundingDINO出现之前,目标检测有一个根本性限制:你只能检测训练过的类别。
用YOLO训练了猫和狗的检测器,它就只能检测猫和狗。你想检测”消防栓”?对不起,重新标注数据、重新训练。想检测1000种物体?那就需要1000个类别的标注数据,成本巨大。
这叫封闭集检测(Closed-Set Detection)。
现实世界呢?物体种类是无限的。用户的需求是多变的。你不可能为每个需求都标注一套数据。
GroundingDINO的解法很简单粗暴:把语言能力塞进检测器。
你用自然语言描述想检测什么,模型就去图里找什么。不需要训练,不需要标注,直接零样本检测(Zero-Shot Detection)。
二、GroundingDINO 的技术架构
GroundingDINO 的架构设计非常巧妙,它把两个原本独立的模型家族——DINO(纯视觉检测器)和GLIP(语言-视觉对齐模型)——融合到了一起。
整个模型由五个核心模块组成:
1. 文本骨干网络(Text Backbone)
接收自然语言输入,提取文本特征。支持任意长度、任意语言的描述,比如”一只戴墨镜的猫”或”a red car parked near a tree”。
2. 图像骨干网络(Image Backbone)
处理输入图像,提取多尺度视觉特征。基于Swin Transformer构建。
3. 特征增强器(Feature Enhancer)
这是关键创新点。它在文本特征和视觉特征之间进行深度交叉融合——让视觉特征”理解”语言描述,同时让文本特征”看到”图像内容。
4. 语言引导的查询选择(Language-Guided Query Selection)
用语言信息来引导检测器”关注”图像中最相关的区域,而不是盲目扫描全图。
5. 跨模态解码器(Cross-Modality Decoder)
在语言和视觉两个模态之间进行迭代解码,最终输出精确的边界框和对应的文本短语。
简单来说:**传统检测器是”看图找框”,GroundingDINO是”看图听话找框”**。
三、性能有多强?
来看硬数据:
| 模型 | 骨干网络 | 训练数据 | COCO AP(零样本) | COCO AP(微调) |
|---|---|---|---|---|
| GroundingDINO-T | Swin-T | O365+GoldG+Cap4M | 48.4 | 57.2 |
| GroundingDINO-B | Swin-B | COCO+O365+GoldG+Cap4M+OpenImage+ODinW-35+RefCOCO | 56.7 | 63.0 |
48.4 AP 零样本是什么概念?
在COCO数据集上,很多专门训练的封闭集检测器也就这个水平。而GroundingDINO根本没见过COCO的训练数据,纯靠语言理解就达到了同等性能。
更厉害的是ODinW(Object Detection in the Wild)测试——这是一个包含35个不同领域真实场景的检测基准,GroundingDINO的零样本表现直接碾压了大量专门微调过的模型。
四、真正的杀手级应用:万物检测+万物分割
GroundingDINO单独使用已经很强了,但它的真正威力在于和其他模型组合,形成了一个完整的开放世界感知流水线。
GroundingDINO + SAM = 万物分割
这是目前最火的组合:
GroundingDINO用文字描述找到目标物体的位置(检测框)
SAM(Segment Anything)根据检测框进行像素级精确分割
输出:任意物体的精确分割掩码
这个组合叫Grounded-SAM,GitHub上超过1万星。你给它一句话”分割所有穿红衣服的人”,它就能做到。
GroundingDINO + SAM 2 = 万物追踪
最新版本Grounded SAM 2把分割升级为视频追踪——在视频中持续追踪任意指定物体。
GroundingDINO + Stable Diffusion = 智能图像编辑
GroundingDINO定位要编辑的区域
Stable Diffusion对指定区域进行重绘
实现:把”一只狗”变成”一只猫”,而保持背景不变
GroundingDINO + GLIGEN = 精细图像编辑
更精确的版本,支持边界框级别的精细控制,比如”在这个位置放一只鸟,在那个位置放一朵花”。
五、为什么说它是范式革命?
GroundingDINO改变了目标检测的基本假设:
以前:检测器是”专用工具”
检测猫的就检测猫
检测车的就检测车
想检测新类别?重新标注、重新训练
现在:检测器是”通用接口”
你描述什么,它就检测什么
不需要训练数据,不需要标注
一个模型覆盖无限类别
这意味着什么?
1. 数据标注成本归零
以前标注一张图需要几分钟,现在只需要一句话。结合SAM,可以自动生成高质量标注数据。
2. 长尾场景有了出路
那些数据稀缺的检测场景(工业缺陷检测、罕见病灶识别等),不再需要大量数据,一句话就能检测。
3. 多模态应用成为标配
任何需要”看图找东西”的AI应用,GroundingDINO都是基础设施。机器人、自动驾驶、智能监控、AR/VR……全都绕不开它。
4. Agent的视觉能力
当AI Agent需要”看懂”屏幕截图、UI界面、文档图片时,GroundingDINO提供了精确的视觉定位能力。
六、GroundingDINO 1.5:更强的版本
IDEA Research在2024年下半年发布了GroundingDINO 1.5,带来了显著提升:
更大的模型:Pro版本使用更大规模的训练数据和模型参数
更强的零样本能力:在多个基准上超越前代
Few-Shot学习能力:只需要几个示例就能适应新场景
API可用:通过DeepDataSpace提供在线API服务
GroundingDINO 1.5 Pro在多个few-shot迁移测试中表现优异,证明了它作为”强few-shot学习器”的潜力。
七、上手指南
环境要求
Python 3.8+
PyTorch 1.10+
CUDA 11.3+(也支持纯CPU模式)
安装
git clone https://github.com/IDEA-Research/GroundingDINO.git cd GroundingDINO pip install -e .
下载预训练权重
mkdir weights && cd weights wget https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth
使用示例
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_source, image = load_image("your_image.jpg") boxes, logits, phrases = predict( model=model, image=image, caption="a cat . a dog .", box_threshold=0.35, text_threshold=0.25 ) annotated_frame = annotate( image_source=image_source, boxes=boxes, logits=logits, phrases=phrases ) cv2.imwrite("result.jpg", annotated_frame)
注意:描述中的句号 . 是用来分隔不同检测类别的。
与SAM组合使用
# Grounded-SAM git clone https://github.com/IDEA-Research/Grounded-Segment-Anything.git cd Grounded-Segment-Anything pip install -e segment_anything # 运行grounded_sam_demo.py
命令行使用
python demo/inference_on_a_image.py \ -c groundingdino/config/GroundingDINO_SwinT_OGC.py \ -p weights/groundingdino_swint_ogc.pth \ -i your_image.jpg \ -o output_dir \ -t "chair . person . dog ."
八、生态与社区
GroundingDINO已经成为计算机视觉开源生态的核心基础设施:
GitHub Stars:超过35,000(主仓库)
HuggingFace集成:已集成到Transformers库,支持
pipeline直接调用论文引用:ECCV 2024正式发表,引用量持续增长
下游应用:
Roboflow:集成到自动标注流水线
Autodistill:用GroundingDINO自动训练YOLOv8
ComfyUI:成为AI绘图工作流的标配节点
LangSAM:与SAM组合的一站式API
IDEA Research团队还开源了整个”Grounding”家族:
Grounding DINO:开放集检测
Grounded SAM:开放集分割
Grounded SAM 2:开放集视频追踪
DINO:纯视觉检测器(前代作品)
九、局限性与挑战
当然,GroundingDINO也不是完美的:
推理速度:相比YOLO等轻量检测器,GroundingDINO的推理速度较慢,不适合实时场景(每秒几帧到十几帧)
细粒度区分:对于非常相似的物体(比如不同品种的鸟),区分能力有限
复杂描述:对长句、复合描述的理解可能不稳定
边缘部署:模型较大,在移动端和边缘设备上部署有挑战
但瑕不掩瑜,这些问题正在通过模型优化、蒸馏、量化等方式逐步解决。
十、未来展望
GroundingDINO代表了目标检测的未来方向:语言驱动的视觉感知。
随着多模态大模型的发展,我们可以预见:
检测器即Agent:未来的目标检测器不仅能检测,还能推理、解释、行动
世界模型的感知层:GroundingDINO为世界模型提供了精确的物体级感知
机器人视觉标配:机器人需要理解自然语言指令并定位物体,GroundingDINO是最佳选择
自动标注飞轮:GroundingDINO + SAM + 人工审核的流水线,将数据标注效率提升100倍
结语
GroundingDINO用一个简单而优雅的思路——把语言引入检测器——解决了目标检测领域几十年的难题。
它不是最大的模型,不是最快的模型,但它可能是最有影响力的视觉模型之一。因为它让”检测任意物体”从一个研究问题变成了一个工程问题。
一句话检测万物,这就是GroundingDINO。
📚 参考资料
论文:Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection[1](ECCV 2024)
Grounding DINO 1.5 API:https://github.com/IDEA-Research/Grounding-DINO-1.5-API[3]
Grounded SAM 2:https://github.com/IDEA-Research/Grounded-SAM-2[4]
HuggingFace Demo:https://huggingface.co/spaces/ShilongLiu/Grounding_DINO_demo[5]
GLIP(相关工作):https://github.com/microsoft/GLIP[8]
本文由小欧自动调研生成,基于GitHub项目、论文、技术博客等多源信息综合整理。
引用链接
[1]Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection: https://arxiv.org/abs/2303.05499
[2]https://github.com/IDEA-Research/GroundingDINO
[3]https://github.com/IDEA-Research/Grounding-DINO-1.5-API
[4]https://github.com/IDEA-Research/Grounded-SAM-2
[5]https://huggingface.co/spaces/ShilongLiu/Grounding_DINO_demo