news 2026/9/16 17:34:09

GroundingDINO 配置选型指南:SwinT 与 SwinB 选型对比

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GroundingDINO 配置选型指南:SwinT 与 SwinB 选型对比

GroundingDINO 配置选型指南: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

GroundingDINO 让你用一句话写出想检测的目标,而快慢与精度由配置文件里的一行决定。本文逐参数对比 SwinT/SwinB,读完你能按自己的场景选配置并跑通第一次推理。

🏗️ GroundingDINO 架构速览:一张图看懂五个模块

大白话:输入是一张图和一句短语,输出是 900 个候选框,每个框带着对短语里每个词的置信度,超过阈值的框就是最终检测结果。它由五个模块串成:BERT 读文本、Swin Transformer 读图像、特征增强器把两路特征对齐、文本引导查询生成让查询知道要找什么,最后解码器迭代细化出框。

GroundingDINO 核心模块拆解:从文本输入到框输出

图像骨干:Swin Transformer 提取多尺度特征

它是什么:backbone/ 封装 Swin Transformer 并用 timm 加载预训练权重。解决什么:输出 3 层特征(return_interm_indices = [1, 2, 3]),让检测器同时看得到大目标和小目标。关键参数:backbone,两个配置文件的唯一差异就在此处。

文本编码器:BERT 把短语变成特征

它是什么:bertwarper.py 封装bert-base-uncased。解决什么:把 "a cat and a dog" 变成模型可计算的 token 级特征。关键参数:max_text_len = 256是短语长度上限,官方建议用句号.分隔多个类别名。

特征增强器:双向交叉注意力对齐文本与图像

它是什么:fuse_modules.py 里的 text-to-image 与 image-to-text 两个交叉注意力模块。解决什么:文本和图像特征本来各说各话,双向注意力让两边先感知对方再进入解码。关键参数:use_text_enhanceruse_fusion_layeruse_text_cross_attention默认全为 True。

查询选择:用语言引导 900 个检测查询

它是什么:Language-guided Query Selection 用文本特征生成跨模态查询。解决什么:普通 DETR 的查询不知道"要找什么",文本引导后每个查询都带着任务先验。关键参数:num_queries = 900,即候选框数量上限。

跨模态解码器:迭代细化出最终框

它是什么:transformer.py 实现的 6 层多尺度可变形注意力解码器。解决什么:从参考点出发每层修正一次框,最终输出框坐标加逐词置信度。关键参数:dec_layers = 6num_feature_levels = 4hidden_dim = 256nheads = 8

⚖️ GroundingDINO SwinT 与 SwinB 配置差异横向对比

先说个反直觉的事实:逐行对比 config 目录 下的两个文件,差异只有一行——backbone。其余hidden_dimnheadsnum_queries全部相同。

配置项SwinTSwinB
backbone 取值swin_T_224_1kswin_B_384_22k
预训练集ImageNet-1KImageNet-22K
输入分辨率224384
训练数据O365、GoldG、Cap4MCOCO、O365、GoldG、Cap4M、OpenImage、ODinW-35、RefCOCO
COCO box AP(官方表)48.4 零样本 / 57.2 微调56.7

数据给出的结论:SwinB 用更大的骨干、22K 预训练和 384 输入,换来更强的特征和更小目标占的像素更多,代价是显存占用更高、单帧推理更慢。SwinT 版本(172M 参数)在 ODinW 基准上零样本 AP_avg 达 22.3、full-shot 达 70.7,已经是可用的强基线。

🚀 跑通第一条 GroundingDINO 推理命令

克隆并安装(需设置CUDA_HOME才能编译 CUDA 算子,否则自动退回 CPU 模式):

git clone https://gitcode.com/GitHub_Trending/gr/GroundingDINO cd GroundingDINO pip install -e .

下载 SwinT 权重:

mkdir -p weights wget -O weights/groundingdino_swint_ogc.pth -q https://github.com/IDEA-Research/GroundingDINO/releases/download/v0.1.0-alpha/groundingdino_swint_ogc.pth

对仓库自带的猫狗图跑第一次推理:

CUDA_VISIBLE_DEVICES=0 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 logs/demo \ -t "a cat and a dog"

跑完会在logs/demo/pred.jpg得到框好的猫和狗。在自己的脚本里可以直接调 inference.py:

from groundingdino.util.inference import load_model, load_image, predict, annotate model = load_model("groundingdino/config/GroundingDINO_SwinT_OGC.py", "weights/groundingdino_swint_ogc.pth")

想切 SwinB,只需替换这两行参数:

-c groundingdino/config/GroundingDINO_SwinB_cfg.py \ -p weights/groundingdino_swinb_cogcoor.pth

🎯 按你的场景选 SwinT 还是 SwinB

  • 如果你的 GPU 显存低于 8GB,或者要在视频流上做实时检测,选 SwinT:224 输入加更小的骨干,单帧推理更快。
  • 如果你做工业质检、场景复杂或目标很小,选 SwinB:22K 预训练加 384 输入让小目标占据更多像素。
  • 如果你只是验证 demo 或搭自动标注流水线,选 SwinT:默认阈值已能给出可用的框。
  • 如果机器没有 GPU,选 SwinT 并加--cpu-only,SwinB 在 CPU 上不实际。
  • 如果你两个都想试,同一张图各跑一次,对比 pred.jpg,小目标场景差异最明显。

🎛️ 调整这 5 个参数改变检测速度与精度

推理期即生效的阈值:

  • box_threshold(默认 0.3):框置信度阈值 → 调高到 0.5 减少误检,调低到 0.2 提高召回但会多出假框。
  • text_threshold(默认 0.25):标签用词匹配阈值 → 调高后只保留高置信度用词。

架构参数(仓库只发布推理代码,改动需要你自己训练):

  • num_queries(900):候选框数量 → 减到 600 解码更快,但目标密集时会被框数截断。
  • hidden_dim(256):整个 Transformer 的特征宽度 → 改了会破坏预训练权重形状,必须重新训练。
  • use_checkpoint(True):梯度检查点 → 用算力换显存,训练大骨干时保持开启。

GroundingDINO 检测效果展示:跑起来长这样

左到右三列分别是 COCO 预定义类别、人输入的新类别、以及 "The left lion" 这类指代表达,最后一列展示与 Stable Diffusion 结合的编辑应用。下面这张就是上面命令的输入图:

GroundingDINO 配置选型速查

  • 最小可用路径:SwinT + 默认阈值,先验证流水线
  • 精度优先、小目标、复杂场景:SwinB
  • 误检多:box_threshold调到 0.5
  • 漏检多:降到 0.2,再配合text_threshold
  • 无 GPU 环境:--cpu-only,只跑 SwinT

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/16 17:34:02

10MB 的 Postman 替代品 Bruno:本地优先的开源 API 客户端实战

这些年我前后换过三四个接口调试工具,说实话,最开始看到有人聊一个 10MB 的 Postman 替代品时,我是不太信的。毕竟 Postman 的安装包动辄几百 MB,运行起来还要吃掉大量内存,一个只有它零头大小的工具能干什么&#xff…

作者头像 李华
网站建设 2026/9/16 17:32:24

Arthas在霸王餐高并发接口性能优化实战

1. 项目概述:霸王餐接口的性能挑战与Arthas的价值霸王餐业务接口作为高并发场景下的典型代表,对系统稳定性和响应速度有着严苛要求。去年我们团队接手的一个餐饮平台项目中,就曾遇到过一个查询接口在晚高峰时段出现响应时间从50ms飙升到2秒的…

作者头像 李华
网站建设 2026/9/16 17:30:21

书霸AI官网www.shubaai.com,公众号搜一搜书霸AI写作

一份开题报告,像是论文正式写作前的“施工图”。题目是否清楚、研究问题是否具体、方法是否可行,都会影响后续论文能否顺利展开。截图中的书霸AI开题报告功能,重点解决的正是前期构思难、结构乱、资料不会组织等问题。使用时,可以…

作者头像 李华