ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

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/GroundingDINOGroundingDINO 让你用一句话写出想检测的目标而快慢与精度由配置文件里的一行决定。本文逐参数对比 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_enhancer、use_fusion_layer、use_text_cross_attention默认全为 True。查询选择用语言引导 900 个检测查询它是什么Language-guided Query Selection 用文本特征生成跨模态查询。解决什么普通 DETR 的查询不知道要找什么文本引导后每个查询都带着任务先验。关键参数num_queries 900即候选框数量上限。跨模态解码器迭代细化出最终框它是什么transformer.py 实现的 6 层多尺度可变形注意力解码器。解决什么从参考点出发每层修正一次框最终输出框坐标加逐词置信度。关键参数dec_layers 6、num_feature_levels 4、hidden_dim 256、nheads 8。⚖️ GroundingDINO SwinT 与 SwinB 配置差异横向对比先说个反直觉的事实逐行对比 config 目录 下的两个文件差异只有一行——backbone。其余hidden_dim、nheads、num_queries全部相同。配置项SwinTSwinBbackbone 取值swin_T_224_1kswin_B_384_22k预训练集ImageNet-1KImageNet-22K输入分辨率224384训练数据O365、GoldG、Cap4MCOCO、O365、GoldG、Cap4M、OpenImage、ODinW-35、RefCOCOCOCO 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_DEVICES0 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.pyfrom 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或者要在视频流上做实时检测选 SwinT224 输入加更小的骨干单帧推理更快。如果你做工业质检、场景复杂或目标很小选 SwinB22K 预训练加 384 输入让小目标占据更多像素。如果你只是验证 demo 或搭自动标注流水线选 SwinT默认阈值已能给出可用的框。如果机器没有 GPU选 SwinT 并加--cpu-onlySwinB 在 CPU 上不实际。如果你两个都想试同一张图各跑一次对比 pred.jpg小目标场景差异最明显。️ 调整这 5 个参数改变检测速度与精度推理期即生效的阈值box_threshold默认 0.3框置信度阈值 → 调高到 0.5 减少误检调低到 0.2 提高召回但会多出假框。text_threshold默认 0.25标签用词匹配阈值 → 调高后只保留高置信度用词。架构参数仓库只发布推理代码改动需要你自己训练num_queries900候选框数量 → 减到 600 解码更快但目标密集时会被框数截断。hidden_dim256整个 Transformer 的特征宽度 → 改了会破坏预训练权重形状必须重新训练。use_checkpointTrue梯度检查点 → 用算力换显存训练大骨干时保持开启。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),仅供参考
返回列表