尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
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/GroundingDINO想让 GroundingDINO 用一句文本提示就框出图中的目标——这就是零样本目标检测不标一张数据、直接靠文字下指令——装完仓库后第一个要做的决定是选 SwinT 还是 SwinB 配置。选错要么显存直接 OOMOut Of Memory显存爆了要么白白损失推理速度。读完你能拿到两份配置的唯一实质差异、官方 COCO 与 ODinW 的 AP平均精度目标检测的主指标数据以及一条复制就能跑的推理命令。SwinT 还是 SwinB12G 显存下的真实困境两个最常见的卡壳现场手里只有一张 12G 的卡想在视频流上做实时检测一加载 SwinB 权重就 OOM想用最高精度版本但 SwinB 权重更大、推理更慢不确定那点精度提升值不值这份显存。好消息是这两份配置之间的切换成本几乎为零上层模型代码一行都不用改。把账算清楚选择其实很简单。两个配置只差一行backbone 怎么选不踩坑先甩结论把两份配置文件逐行对比只有一行不一样——backbone骨干网络负责从图像提特征的部件其余参数完全相同。# groundingdino/config/GroundingDINO_SwinT_OGC.py backbone swin_T_224_1k # 224×224 输入ImageNet-1K 预训练 # groundingdino/config/GroundingDINO_SwinB_cfg.py backbone swin_B_384_22k # 384×384 输入ImageNet-22K 预训练其余是共享参数直接从配置文件读出不是猜的Transformer 结构enc_layers6dec_layers6nheads8hidden_dim256num_queries900num_feature_levels4文本编码器bert-base-uncasedmax_text_len256两边默认都开着梯度检查点use_checkpointTrue省显存的开关这张架构图说明了一个关键事实文本先过 BERT图像过 Swin 骨干两者在 Feature Enhancer特征增强层里做双向交叉注意力再进跨模态解码器输出 900 个候选框。T 和 B 的区别只体现在图像骨干那一块的大小上。为什么这一行值得纠结两条依据一是 384×384 的输入让 B 能捕获更细的特征对密集小目标更友好二是 ImageNet-22K 的预训练覆盖约 1.4 万个视觉概念比 1K 的 1000 类多一个量级开放集场景下泛化上限更高。代价就是参数量和显存都上一个台阶。所以你应该把 backbone 当成唯一变量来理解换配置 换骨干 换输入分辨率 换预训练数据量上层全部复用。官方 AP 差多少精度换显存的账要算清⚡ 先看仓库官方表里的数字别信二手转述SwinTOGC 权重COCO 零样本 48.1 AP微调后 57.2 APSwinBcogcoor 权重COCO 微调 56.7 APODinW野外域泛化基准覆盖 50 个真实数据集官方只给了 T 的完整行零样本 20.0 AP用更多预训练数据后 22.3 AP少样本 46.4 AP全量微调 70.7 AP三个容易踩的口径问题仓库自带demo/test_ap_on_coco.py能复现 48.5 AP把它当你的验收线SwinB 的权重是在 COCO、O365、GoldG、Cap4M、OpenImage、ODinW-35、RefCOCO 等更多数据上微调出来的56.7 是微调值不能和 T 的零样本 48.1 直接比纯零样本部署到新领域时T 是默认选项——官方公开的零样本权重和 AP 只有 T 有。所以你应该有数据能微调就上 B 冲精度纯零样本先用 TB 不会给你官方零样本口径。显存不够时的三个救命操作⚡ 默认先上 SwinT官方模型规模表里 T 是 172M 参数单张 8G 卡就能推理实时场景下这是唯一选项。没有 GPU 也别干等demo 脚本支持--cpu-only先在无卡机器上验证 pipeline 通不通。微调训练显存不够时配置里 batch_size 本来就是 1配合混合精度或梯度累积多个小批次攒够一次更新即可别在 24G 卡上硬堆 batch。跑起来验证一条命令出检测框两步装好环境git clone https://gitcode.com/GitHub_Trending/gr/GroundingDINO cd GroundingDINO pip install -e .然后把 SwinT 权重约 700MB放进weights/目录跑推理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.jpgpred.jpg 里猫和狗各有一个框标签后面跟着 (0.9xx) 这样的置信度。要换 SwinB 时只需把-c换成 SwinB 配置、-p换成 cogcoor 权重约 1.5GB其余参数原样。最卡人的一步是装完运行报NameError: name _C is not defined——这是安装时没设 CUDA_HOMEC/CUDA 扩展没编译出来的典型症状。echo $CUDA_HOME确认一下export 正确路径后重新 clone 再pip install -e .不要原地升级。另一个小细节不同类别词之间用.分隔如cat . dog .这是官方建议的 prompt 写法如果只想定位句中某个短语比如 a cat 而不是 cat脚本还支持--token_spans按 token 位置指定。决策收束一张表选完你的情况选哪个下一步做什么实时视频 / 边缘设备 / 显存 12GSwinT直接跑上面的命令调 box_threshold默认 0.3服务器离线批处理、能微调、精度优先SwinB下 cogcoor 权重先拿小批量数据验收纯零样本部署到新领域SwinT调 box / text 双阈值0.35 / 0.25先做原型、需求还没定型SwinT先跑出 baseline精度不够再换 B先用 SwinT 跑通拿到 baseline发现精度不够时只改-c和-p两个参数换到 SwinB模型代码一行都不用动。延伸阅读核心模型实现groundingdino/models/GroundingDINO/groundingdino.py精简推理接口 load_image / predict / annotategroundingdino/util/inference.py两份配置对照groundingdino/config/GroundingDINO_SwinT_OGC.py、groundingdino/config/GroundingDINO_SwinB_cfg.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),仅供参考
返回列表