Dynamic-DINO: Fine-Grained Mixture of Experts Tuning for Real-time Open-Vocabulary Object Detection¶
会议: ICCV 2025
arXiv: 2507.17436
代码: https://github.com/wengminghe/Dynamic-DINO
领域: 目标检测 / 开放词汇 / MoE
关键词: Mixture of Experts, open-vocabulary detection, Grounding DINO, 细粒度专家分解, 动态推理
一句话总结¶
首次将Mixture of Experts引入实时开放词汇目标检测器,通过MoE-Tuning将Grounding DINO 1.5 Edge从dense模型扩展为动态推理框架,提出细粒度专家分解和预训练权重分配策略,仅用1.56M开源数据超越使用20M私有数据训练的原版模型。
背景与动机¶
MoE已在大型VLM(如MoE-LLaVA)中取得成功,但在实时开放词汇检测器中的应用尚未被探索。现有实时检测器(YOLO-World、Grounding DINO 1.5 Edge)使用dense模型,每层的单个FFN需要处理所有pattern(不同类别、属性、空间关系),导致梯度冲突和长尾问题。MoE的"不同输入激活不同专家"机制与此需求天然匹配,但如何高效地将MoE集成到已有的compact检测模型中是核心挑战。
核心问题¶
如何将MoE的优势引入小型实时开放词汇检测器,在不增加推理计算量的前提下扩大模型容量和搜索空间,并解决有限数据下的训练效率问题?
方法详解¶
整体框架¶
Dynamic-DINO基于复现的Grounding DINO 1.5 Edge(EfficientViT-L1 + BERT-base + 6层decoder)。MoE仅应用于decoder的FFN层(因为经过Language-guided Query Selection后只剩900个token,计算开销小)。训练分两阶段:先正常预训练base model 7 epochs → MoE-Tuning扩展+微调10 epochs。
关键设计¶
-
细粒度专家分解(Granularity Decomposition):不是简单复制N个完整FFN作为专家,而是将每个FFN的中间维度均分为k份,得到k个更小的专家。这样在总参数不变的约束下,每层有k×N个专家,搜索空间从\(C_{N}^{k}\)扩展为\(C_{kN}^{k}\)。推理时只激活k个专家(相当于一个完整FFN的激活参数量)。这在不增加参数的情况下指数级扩大了子网搜索空间。
-
预训练权重分配策略:关键创新——将预训练FFN的参数物理分配给每个专家初始化:\(W_1\)按行分割、\(W_2\)按列分割、\(b_2\)除以\(k\),确保k个专家的输出之和等于原始FFN的输出(\(\text{FFN}(x) = \sum_{j=1}^{k} E_j(x)\))。配合Router初始化(复制每个router权重行k次),保证MoE-Tuning开始时等价于原始dense模型,实现增量式性能提升而非从头开始。
-
专家协作模式的发现:通过分析专家共选频率,发现有趣的层级差异——浅层中专家倾向于与多样的伙伴合作(扩大搜索空间),而深层中形成固定的2-3个伙伴的协作结构,不同专家组合专门处理不同的视觉pattern(如"冰箱相关token"vs"服装相关token")。
损失函数 / 训练策略¶
- 检测损失:L1 + GIoU + Focal Loss(权重2.0/5.0/2.0)
- MoE辅助损失:load balancing loss(α=0.01),确保专家负载均衡
- MoE-Tuning只解冻:Feature Enhancer中的Cross-Attention + MoE层 + Detection Head
- 8卡RTX 3090训练,MoE-Tuning比预训练快1.87x(7.5h vs 14h)
实验关键数据¶
| 方法 | 训练数据 | COCO AP | LVIS-mini AP | LVIS-val AP |
|---|---|---|---|---|
| GDINO 1.5 Edge (官方) | 20M私有 | 42.9 | 33.5 | 27.3 |
| GDINO 1.5 Edge* (复现) | 1.56M开源 | 42.6 | 31.1 | 25.4 |
| Dynamic-DINO | 1.56M开源 | 43.7 | 33.6 | 27.4 |
| Dynamic-DINO (800×1333) | 1.56M开源 | 46.2 | 36.2 | 29.6 |
- 用1.56M开源数据超越20M私有数据训练的官方模型
- LVIS rare类提升显著:APr从33.8→37.0(+3.2),有效缓解长尾问题
- 推理速度:98 FPS vs 109 FPS(A100),仅10%减速
- 边缘设备Jetson Orin NX:+0.24M FLOPs,-0.8 FPS,+1.87 AP
- RefCOCO上也有提升(+4.1/+4.0/+3.8在val/testA/testB上)
- 仅+6M参数就能带来+0.73 AP提升,性能随参数继续增长
消融实验要点¶
- 专家分解k=2最优,过度分割(k=4)因数据有限导致过拟合
- 总专家数N越大越好:N=16 > N=8 > N=4
- 初始化策略至关重要:有初始化+0.6 AP
- MoE也可扩展到image encoder(+0.5 AP),但本文主要在decoder
- Detection head微调贡献最大(LVIS-val +1.1 AP)
亮点¶
- 首次在实时OV检测中验证MoE:填补了MoE在compact多模态模型中的空白
- 细粒度分解极具创意:在不增加总参数的情况下扩大搜索空间,是一种"免费午餐"的思维
- 预训练权重分配保证增量学习:从数学上保证初始化时MoE等价于原始模型,消除训练不稳定
- "以小博大"的数据效率:1.56M开源数据 vs 20M私有数据,MoE带来的模式分工使有限数据更高效
- 专家协作模式的分析很有洞察:浅层探索、深层专精的层级结构与人类认知的层级处理一致
局限性 / 可改进方向¶
- 当前MoE实现是顺序循环各专家,未做并行优化,导致额外10%延迟
- 仅在GDINO 1.5 Edge上验证,未测试更大的GDINO 1.5 Pro或其他检测架构
- 受限于8卡3090,数据规模和计算探索不够充分
- 专家过度分割(k>2)在有限数据下过拟合,说明方法对数据量有一定要求
与相关工作的对比¶
- vs. YOLOE:YOLOE通过重参数化和多提示统一实现效率,Dynamic-DINO通过MoE动态推理路径实现。两者思路不同但互补——MoE可以应用在YOLOE架构上
- vs. Grounding DINO 1.5 Edge:直接扩展版,用MoE-Tuning以更少数据超越原模型
- vs. DeepSeekMoE/QwenMoE:它们用随机初始化+从头训练,Dynamic-DINO用预训练权重分配+增量微调,更适合小数据场景
启发与关联¶
- MoE-Tuning的思路可以推广到其他需要在有限数据下高效fine-tune的视觉任务
- 细粒度专家分解策略可以与模型压缩领域结合——训练时MoE探索,推理时固化最优子网
- 专家协作模式的分析方法值得在其他MoE架构中复用
评分¶
- 新颖性: ⭐⭐⭐⭐ MoE在compact OV检测中的首次应用,细粒度分解+权重分配初始化设计巧妙
- 实验充分度: ⭐⭐⭐⭐ COCO/LVIS/ODinW/RefCOCO多benchamrk,专家协作分析深入,边缘设备验证
- 写作质量: ⭐⭐⭐⭐ Figure 2/7/8的分析图极具说服力,方法描述清晰
- 价值: ⭐⭐⭐⭐ 为实时开放检测引入MoE范式,但工程优化还需完善