十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

GroundingDINO 配置选型:SwinT 还是 SwinB,从一行 backbone 参数说起

GroundingDINO 配置选型:SwinT 还是 SwinB,从一行 backbone 参数说起 GroundingDINO 配置选型SwinT 还是 SwinB从一行 backbone 参数说起【免费下载链接】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。两个 config 只差一行backbone参数它决定了输入分辨率、预训练数据和参数量进而决定你的显存账单和推理速度。 从最小推理命令看配置入口装好后跑通一条推理命令就能看清配置是怎么参与的CUDA_VISIBLE_DEVICES0 python demo/inference_on_a_image.py \ -c groundingdino/config/GroundingDINO_SwinT_OGC.py \ -p weights/groundingdino_swint_ogc.pth \ -i your_image.jpg \ -o outputs/ \ -t cat . dog-c指向超参文件-p指向权重。这两者成对出现官方给了groundingdino_swint_ogc.pth配GroundingDINO_SwinT_OGC.pygroundingdino_swinb_cogcoor.pth配GroundingDINO_SwinB_cfg.py不能混搭。环境安装很简单git clone https://gitcode.com/GitHub_Trending/gr/GroundingDINO cd GroundingDINO pip install -e .装完如果报NameError: name _C is not defined是 CUDA 扩展没编译成功按 README 设置CUDA_HOME后重装即可。 两个 config 文件的逐行 diff把两个配置文件并排看43 行里只有第 3 行不同其余 42 行一字不差。# 两个文件唯一的差异 backbone swin_T_224_1k # SwinT_OGC.py backbone swin_B_384_22k # SwinB_cfg.pyTransformer 主干的参数两个文件完全一致enc_layers 6、dec_layers 6、nheads 8、hidden_dim 256、num_queries 900默认输出 900 个候选框再按box_threshold/text_threshold过滤、num_feature_levels 4。也就是说配置是可插拔的换骨干网络时上层推理代码一行不用改只改命令里的-c和-p。 backbone 一个参数决定了什么backbone这一行编码了三件事SwiN 变体、输入分辨率、预训练数据集。swin_T_224_1k Swin-Tiny 224×224 输入 ImageNet-1K 预训练swin_B_384_22k Swin-Base 384×384 输入 ImageNet-22K 预训练。维度SwinTGroundingDINO_SwinT_OGC.pySwinBGroundingDINO_SwinB_cfg.py实际影响输入分辨率224×224384×384特征图面积 3 倍差小目标定位预训练数据ImageNet-1KImageNet-22K见过的语义类别数量差一个量级相对规模1×约 4×参数量级显存占用与耗时分辨率384 的特征图面积是 224 的 3 倍细节更多。同一张图SwinB 更容易框准小目标代价是预处理和推理都更久。预训练语料1K 还是 22K 个类别直接关系给一句没见过的描述能不能听懂这正是 GroundingDINO 开放词汇检测的核心能力来源。参数量级约 4 倍的差距决定了显存账单的档位差。 COCO 数据与显存账单官方 README 的 checkpoint 表给出两组数字模型训练数据COCO box APGroundingDINO-TSwinTO365, GoldG, Cap4M48.4零样本/ 57.2微调GroundingDINO-BSwinBCOCO, O365, GoldG, Cap4M, OpenImage, ODinW-35, RefCOCO56.7微调注意这两行数字不能直接比。SwinB 的训练数据混入了 COCOSwinT 刻意避开了 COCO所以 57.2 是纯零样本迁移的结果含金量更高。SwinB 的优势更多体现在 ODinW 这类跨领域泛化基准上趋势见官方图。部署时真正卡脖子的还是显存和速度8GB 显存跑 SwinT 推理绰绰有余batch size 还有空间SwinB 推理需要 3090/4090 级别的卡batch size 基本只能设为 1。同一张图SwinB 的总耗时约为 SwinT 的 2 倍384 分辨率的预处理开销也更大。两个配置默认都开了use_checkpoint True梯度检查点重算中间激活换显存微调时可以直接依赖它不必自己降 batch 硬扛。 部署选型先问瓶颈在精度还是延迟选型别从哪个更强开始先问你的瓶颈是模型精度还是工程优化实时视频流、边缘盒子、8GB 卡 →选 SwinT别犹豫。224 输入的预处理开销小单卡能持续出帧。服务器端离线批处理、漏检代价高 →选 SwinB。384 输入对小目标更友好单张慢约 2 倍在离线场景里无感。想给推理加速两个配置都走 TensorRT/ONNX 路线但注意加速不改变两者相对差异别指望把 SwinB 优化到 SwinT 的水平。选型速查 ✅默认 SwinT只有确认精度瓶颈来自模型本身而非后处理阈值调优且卡是 3090/4090 级别时再考虑 SwinB。权重与配置必须成对swint_ogc权重配GroundingDINO_SwinT_OGC.pyswinb_cogcoor权重配GroundingDINO_SwinB_cfg.py混搭会加载失败或精度异常。换配置只改命令行-c和-p两个参数上层代码零改动——这是官方可插拔设计放心用。微调显存不够时先确认use_checkpoint True已开启两个配置默认就是再谈梯度累积等其他手段。跑新配置前先用 demo/test_ap_on_coco.py 过一遍确认 COCO 零样本结果与官方 48.5 左右一致排除 CUDA 扩展没编译成功的坑。【免费下载链接】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),仅供参考
返回列表