10分钟部署Grounding DINO:一句话定位图像中任意物体的实操清单
【免费下载链接】GroundingDINO[ECCV 2024] Official implementation of the paper "Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection"项目地址: https://gitcode.com/GitHub_Trending/gr/GroundingDINO
跟完本文,你在本地就能跑通 Grounding DINO——一个开放集目标检测模型:传入一张图和一句自然语言,它返回图中与文字匹配的物体框。全程约 10 分钟,命令不超过 4 条,无需标注数据、无需训练。适合第一次接触目标检测、或想快速验证"文本找物体"效果的读者。
项目速览:用文字做开放集目标检测
Grounding DINO(ECCV 2024 论文官方实现)把 DINO 检测器与文本接地预训练结合,输入是"图像 + 文本"对,输出是图中匹配该文本的边界框。它不依赖固定类别表,文字里写什么名词,就能检什么物体。
核心亮点:
- 开放集检测:无训练类别限制,COCO 零样本评测约 48.5 AP(训练全程未用 COCO 数据)
- 多物体一次输出:默认返回 900 个候选框,按文本相似度过滤,一句提示可框出多类目标
- 官方集成生态:demo/ 目录提供 Gradio Web UI、与 Stable Diffusion 和 GLIGEN 结合的图像编辑 notebook
部署准备:环境依赖清单
| 项目 | 要求 | 说明 |
|---|---|---|
| Python | 3.8+ | 官方 environment.yaml 基于 3.9 |
| PyTorch | 带 CUDA 版本 | 模型含 C++/CUDA 算子,安装时会现场编译 |
| CUDA_HOME 环境变量 | 必配 | 不配置则扩展不编译,运行时报_C未定义 |
| 磁盘 | 约 1 GB | 权重文件约 400 MB,外加依赖包 |
| GPU | 建议有 | 无卡可加--cpu-only参数跑纯 CPU 模式,但推理慢 |
依赖列表见 requirements.txt:torch、torchvision、transformers、timm、opencv-python、supervision 等,pip install -e .会一并装上。
最短部署路径:3步装好Grounding DINO
第 1 步:拿代码
git clone https://gitcode.com/GitHub_Trending/gr/GroundingDINO cd GroundingDINO第 2 步:装依赖(会现场编译 CUDA 扩展,耗时几分钟)
export CUDA_HOME=/usr/local/cuda # 改成你机器上 CUDA 的实际路径 pip install -e .用echo $CUDA_HOME确认非空。找不到路径时执行which nvcc查看,如输出/usr/local/cuda/bin/nvcc,就取/usr/local/cuda。
第 3 步:下权重
- 推荐方式:到项目的 Releases 页面(v0.1.0-alpha),下载 Swin-T 版
groundingdino_swint_ogc.pth,存入weights/目录 - 备选方式:HuggingFace 仓库
ShilongLiu/GroundingDINO中的同名文件,可用huggingface-cli download拉取;国内网络先把HF_ENDPOINT指向 hf-mirror.com 镜像再执行
权重只有两个:Swin-T(本教程使用,零样本 48.4 AP)和 Swin-B(56.7 AP,文件更大)。
跑通验证:一条推理命令 + 成功标准
用仓库自带的猫狗示例图.asset/cat_dog.jpeg做输入:
python demo/inference_on_a_image.py \ -c groundingdino/config/GroundingDINO_SwinT_OGC.py \ -p weights/groundingdino_swint_ogc.pth \ -i .asset/cat_dog.jpeg -o outputs -t "cat . dog ."成功标准:outputs/下生成两个文件——raw_image.jpg是原图,pred.jpg是标注图,图中应出现带 "cat"、"dog" 文字标签的矩形框。框住位置和文本对应,即模型工作正常。
它能帮你做什么:真实场景
- 用一句话框出画面里任意物体:
-t "chair"即可定位椅子,多类目标用.分隔,如cat . dog . person - 自动预标注数据集:对图片文件夹批量跑推理,把结果转成 COCO 格式(参考 demo/create_coco_dataset.py),省去人工画框
- 浏览器里试用:
python demo/gradio_app.py启动 Gradio 界面,上传图片、输入文字直接看框 - 给生成式模型当地图:demo/ 下的 notebook 演示了先用它定位、再交给 Stable Diffusion 或 GLIGEN 做精确图像编辑
常见卡点速查:模型加载失败与无框排查
| 症状 | 原因 | 一行修复 |
|---|---|---|
NameError: name '_C' is not defined | 装依赖时CUDA_HOME未配置,扩展没编译 | 设置export CUDA_HOME后重新 clone 并执行pip install -e . |
| 输出图一个框都没有 | 提示文本含冗余描述,或阈值过高 | 文本只留名词并用.分隔,--box_threshold降到 0.25 |
| 推理极慢、显存为 0 | 实际跑在 CPU 上 | GPU 机器检查 CUDA 版本匹配;只想试跑则显式加--cpu-only降低预期 |
后续路线:微调、集成与性能优化
- Web 交互:
python demo/gradio_app.py,可调 box/text 阈值实时看效果 - COCO 零样本评测:
python demo/test_ap_on_coco.py跑分,Swin-T 预期 48.5 AP 左右 - 图像编辑集成:跑 demo/image_editing_with_groundingdino_stablediffusion.ipynb 和 GLIGEN 版 notebook
- 换更强权重:下载 Swin-B 版
groundingdino_swinb_cogcoor.pth,配置改为 groundingdino/config/GroundingDINO_SwinB_cfg.py
到这里,一条命令跑通开放集检测已经掌握。下一步建议:把-i换成你自己的一张业务图片,用真实文本提示再跑一遍demo/inference_on_a_image.py,确认效果符合预期。
【免费下载链接】GroundingDINO[ECCV 2024] Official implementation of the paper "Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection"项目地址: https://gitcode.com/GitHub_Trending/gr/GroundingDINO
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考