
GroundingDINO 开放集检测完整配置指南SwinT vs SwinB 选型与部署实战【免费下载链接】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给 GroundingDINO 开放集检测选配置时最高频的问题就是SwinT 和 SwinB 到底用哪个官方仓库提供了两份配置文件而它们的差异比想象中小得多。本文基于官方代码逐行对比两者的真实差别、性能数据、部署步骤和高频坑帮你在 10 分钟内定下配置跑起来。1. 开放集检测解决什么问题传统检测器是闭集的类别在训练时固定新增类别就要重新标注、重新训练。GroundingDINO 把输入改成了(image, text)对给一句 a cat and a dog模型输出最多900个候选框每个框对句中每个词都有一个相似度分数再经过box_threshold和text_threshold筛选即可使用。模型由三个核心部件组成特征增强器双向交叉注意力文本特征与图像特征互相增强语言引导查询选择用文本特征引导生成检测查询跨模态解码器联合输出框与类别用对比损失与定位损失共同优化核心实现在 groundingdino/models/GroundingDINO/groundingdino.py。2. SwinT vs SwinB 配置差异只有一行2.1 逐行对比两份配置文件把GroundingDINO_SwinT_OGC.py和GroundingDINO_SwinB_cfg.py并排看唯一的差别是backbone这一行参数SwinT 配置SwinB 配置backboneswin_T_224_1kswin_B_384_22khidden_dim256256nheads88num_queries900900enc_layers/dec_layers6 / 66 / 6text_encoder_typebert-base-uncasedbert-base-uncasedmax_text_len256256use_checkpointTrueTrue也就是说两者共用同一套检测头和文本编码器所有差异集中在视觉骨干。2.2 这一行 backbone 意味着什么swin_T_224_1kSwin-T输入分辨率 224×224ImageNet-1K 预训练官方表格列出 172M 参数swin_B_384_22kSwin-B输入分辨率 384×384ImageNet-22K 预训练特征表示更强但参数量和计算量明显更高直白点讲SwinB 就是更宽的网 更高分辨率代价是显存和速度。3. 性能数据到底差多少3.1 COCO 基准官方 checkpoint 发布数据如下模型骨干训练数据COCO box APGroundingDINO-TSwin-TO365, GoldG, Cap4M不含 COCO48.4zero-shot/ 57.2fine-tuneGroundingDINO-BSwin-BCOCO, O365, GoldG, Cap4M, OpenImage, ODinW-35, RefCOCO56.7fine-tune注意T 的 zero-shot 完全没见过 COCO 数据B 是在含 COCO 的 7 个数据集上微调的两者口径不同。但趋势很明确——骨干更大、数据更多精度更高。3.2 ODinW 开放集基准ODinW 更接近真实开放集场景官方表格里 Swin-T 和 Swin-L 的数据设置AP均值AP中位数Grounding-DINO-T zero-shot22.311.9Grounding-DINO-T few-shot46.451.1Grounding-DINO-T full-shot70.776.2Grounding-DINO-L zero-shot26.118.4Swin-T 只有 172M 参数zero-shot 均值 22.3 已超过 OWL-ViT18.8和 GLIP-T19.6略低于 Florence25.8full-shot 的 70.7/76.2 则是表中最高值。4. 三步定选型4.1 先看 GPU 显存显存条件推荐说明约 8GBSwinT单卡开发机轻松跑官方 demo 默认档12GB 及以上SwinB384 分辨率激活值更大建议留足余量4.2 再看场景实时视频、原型验证、教学演示 → SwinT推理快科研实验、工业质检、医学影像这类精度敏感场景 → SwinB纯 CPU 环境 → 只能 SwinT加--cpu-only4.3 最后看要不要 zero-shotSwinT 在 O365 GoldG Cap4M 上预训练zero-shot 就有 48.4 AP开箱即用SwinB 的优势在追求极限精度的微调场景。如果你只是想检测任意句子描述的对象而不打算训练SwinT 往往就够了。5. 部署实战安装、权重与推理5.1 环境与安装装之前务必确认CUDA_HOME设置正确这是最容易踩的一步git clone https://gitcode.com/GitHub_Trending/gr/GroundingDINO cd GroundingDINO pip install -e .官方 README 明确提示如果后续报NameError: name _C is not defined说明 CUDA 扩展没编译进去需要重新 clone 再完整走一遍安装。安装完成后下载对应配置的官方权重groundingdino_swint_ogc.pth或groundingdino_swinb_cogcoor.pth放到weights/目录。5.2 一行切换 SwinT 与 SwinB推理入口是 demo/inference_on_a_image.pypython 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/ -t cat . dog .切换到 SwinB 只需改两个参数-c指向groundingdino/config/GroundingDINO_SwinB_cfg.py-p指向weights/groundingdino_swinb_cogcoor.pth。6. 阈值调优与常见坑6.1 三个高频坑_C报错NameError: name _C is not defined→CUDA_HOME没设或编译被跳过重新 clone 重装提示词格式不同类别之间用.分隔如cat . person . dog .写成一句长话反而不好控制每个框归属哪个词分词切分tokenizer 可能把一个英文词切成多个 token想精确定位某个短语时要按分词结果手动指定token_spans6.2 阈值怎么调官方 Python 示例默认box_threshold0.35、text_threshold0.25。调低了误报多调高了漏检小目标建议先按默认跑再根据误报密度微调。推理太慢时可以把num_queries从 900 降到 600用少量精度换速度。7. 一页总结项目SwinTSwinB配置文件GroundingDINO_SwinT_OGC.pyGroundingDINO_SwinB_cfg.py骨干swin_T_224_1kswin_B_384_22k权重groundingdino_swint_ogc.pthgroundingdino_swinb_cogcoor.pth参数量172M明显更大COCO AP48.4 zero-shot / 57.2 fine-tune56.7fine-tune适用场景实时、原型、资源受限科研、质检、精度优先一句话建议先用 SwinT 快速验证想法场景对精度敏感时再切 SwinB——两者配置骨架相同切换成本几乎为零。【免费下载链接】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),仅供参考