Skip to content

AnyDepth-DETR/-YOLO: Any-depth object detection with a single network

  • 推文链接: https://mp.weixin.qq.com/s/JKwq5c0sKwaKh_-VXSqVFA
  • 推文标题: 一个模型顶N个!AnyDepth让RT-DETR和YOLOv12秒变"变形金刚",算力切换无须训练!
  • 来源: https://arxiv.org/abs/2605.09407
  • 本地PDF: ../raw/2026-05-10-anydepth.pdf
  • 日期: 2026-05-10
  • 标签: any-depth, adaptive inference, RT-DETR, YOLOv12, self-distillation
  • 研究方向: 2D Object Detection → 自适应推理 → 任意深度检测
  • 作者: Woochul Kang, Hyungseop Lee, Jiho Lee (Incheon Nat'l Univ.)
  • 会议: CVPR 2026

公众号推文解读

摘要

AnyDepth 框架让单一检测模型覆盖从轻量到高精度的连续区间,推理时通过控制深度切换精度/效率,无需重新训练。每个 stage 拆分为「必要路径」(始终执行)+「细化路径」(可跳过),用自蒸馏训练两个极端(super-net + base-net),中间子网络自动泛化。在 RT-DETR 和 YOLOv12 上验证,super-net 持平 SOTA,base-net AP 仅降 2.0 但速度快 1.82×。

核心设计

  • 阶段级模块化:保留完整多尺度层级,不丢弃任何 stage(不同于早期退出)
  • 双路径设计:必要路径始终执行 + 细化路径可跳过
  • 自蒸馏:仅训练两个极端,预测级(分类KD/回归KD)+ 特征级(GAP对齐)
  • 目标分配冲突解决:DETR 中重排 query 顺序对齐 GT;YOLO 中定义冲突集排除冲突 anchor
  • 可切换BN/聚合层:让必要路径在不同模式下(细化开/关)适配不同输出分布

结果

配置GFLOPsFPSAP
AnyDepth-DETR(R-50) super1369253.3
AnyDepth-DETR(R-50) base7916550.6 (-2.7)
AnyDepth-YOLO(L) super83.3101.553.9
AnyDepth-YOLO(L) base59.6155.352.1 (-1.8)

论文解读

1. Introduction

问题: 现代检测器是静态固定深度的网络,为单一算力点优化。不同部署场景需要不同模型,无法在线调整。

现有方法不足:

  • 早期退出(early exiting):直接跳过整个 stage,破坏多尺度特征完整性,精度断崖下降
  • 宽度自适应(width adaptation):改变通道数,需要特制硬件支持

AnyDepth 贡献:

  1. 任意深度检测框架:单一网络覆盖连续精度-效率权衡区间
  2. 阶段级模块化:每个 stage 拆分为必要路径 + 可跳过细化路径,保留完整多尺度层级
  3. 自蒸馏训练:仅训练两个极端(super-net + base-net),中间子网络自动泛化
  4. CVPR 2026:RT-DETR/YOLOv12 上 super-net 持平 SOTA,base-net 最高 1.82× 加速仅降 2.0 AP

  • 自适应推理: 早期退出、宽度自适应、条件计算(MoE)——都有各自局限
  • AnyDepth 不同: 不丢弃整个 stage,不改变通道数,不引入额外路由开销

3. Method

3.1 架构设计

每个 backbone/neck stage 拆分为两条路径:

  • Essential path(必要路径):始终执行,学习核心特征
  • Refinement path(细化路径):可跳过,额外算力时进一步精化

RT-DETR(残差块): 取前 m 块为必要路径,后 S-m 块为细化路径。残差加性保证了输出形状兼容。

YOLOv12(CSP 聚合): 拼接通道数不同导致权重无法共享 → 引入专用可切换聚合层,必要路径和完整路径各自独立的 1×1 卷积。

可切换 BN: 必要路径中的模块有两个 BN——细化激活时用一个,跳过时用另一个。

3.2 自蒸馏训练

策略: 每次迭代两次前向-反向传播:

  1. super-net(全部路径)→ GT loss
  2. base-net(仅必要路径)→ GT loss + 蒸馏 loss(来自 super-net)

蒸馏 loss 三部分:

  • 分类 KD: KL 散度对齐分类 logits
  • 回归 KD: IoU loss + 边缘 loss 对齐边界框
  • 特征对齐 KD: 每阶段边界做 channel-wise GAP,ℓ2 对齐
    • 为什么用 GAP 而非逐像素?GAP 保留细化路径学习空间细化的自由度

3.3 目标分配冲突

DETR 中 super-net 和 base-net 的匈牙利匹配结果不同 → Target-aligned query matching:重新排列 super-net 的 query 顺序,与 base-net 对齐同一 GT。

YOLO 中 → 定义冲突集合(两网络都分配前景但目标不同),只在有效集合上计算蒸馏 loss。


4. Experiments

4.1 COCO 主结果

模型GFLOPsFPSAPAP50APS
RT-DETR-R501369253.171.533.5
AnyDepth-DETR(R-50) super1369253.371.633.4
AnyDepth-DETR(R-50) base7916550.669.430.7
RT-DETR-R1012596654.572.934.2
AnyDepth-DETR(R-101) super2596654.572.734.0
AnyDepth-DETR(R-101) base14212052.571.032.1
YOLOv12-L83.3101.553.970.6
AnyDepth-YOLO(L) super83.3101.553.970.6
AnyDepth-YOLO(L) base59.6155.352.168.4

4.2 消融

组件级消融:必要路径减少 backbone 块 + encoder 路径 + decoder 层数,AP 从 53.3(完整)降至 50.6(base)。

训练组件消融:Switchable BN、Switchable Aggregation、自蒸馏、Target Alignment、Feature Alignment 逐个加入,每个组件都持续提升。

特征对齐策略:GAP(semantic)对齐优于逐像素(spatial)对齐,因为不限制细化路径的空间精化能力。

Feature CKA 分析:本文方法在各层级 CKA 均接近 1.0(Naive joint 在 neck 段降至 0.7),验证了路径对齐的有效性。


5. Conclusion

  • AnyDepth 实现单一网络覆盖连续精度-效率权衡
  • 阶段级模块化保留完整多尺度层级
  • 自蒸馏 + 目标对齐解决训练冲突
  • CVPR 2026,代码将开源

局限性: 仅支持深度维度自适应,未涉及宽度或分辨率。自蒸馏训练开销两倍,但推理无额外成本。未来可扩展到 DINO、YOLOv8 等架构。


个人评价

核心价值: 把自适应推理从「宽度/早期退出」思路拓展到「深度」维度,用最简洁的方法(必要+细化路径)实现了连续调节。自蒸馏仅训练两个极端的设计很巧妙,避免了指数量级的子网络训练。

可借鉴点:

  • 必要路径 + 细化路径的 stage 拆分思路可迁移到其他检测器
  • 自蒸馏 + 目标对齐冲突解决的通用策略
  • 可切换 BN / 可切换聚合层处理不同模式下的分布差异

与 EdgeCrafter/TinyFormer 对比:

  • EdgeCrafter:蒸馏大 ViT 到紧凑学生,做固定轻量模型
  • TinyFormer:架构设计保持小目标分辨率
  • AnyDepth:同一模型动态切换深度,覆盖不同算力场景

疑问解答 (Q&A)

Q1: AnyDepth 和早期退出的本质区别?

: 早期退出跳过整个 stage,破坏多尺度金字塔。AnyDepth 只跳过 stage 内部的细化块,输出是必要路径的特征图,下游 neck 仍能收到完整的多尺度信息。

Q2: 为什么 GAP 对齐比逐像素对齐好?

: 逐像素 ℓ2 对齐会迫使细化路径的特征图与必要路径一模一样,失去了学习空间细化的意义。GAP 只对齐通道级描述子,保留空间精化的自由度。

Q3: 目标分配冲突为什么在 DETR 和 YOLO 中处理方式不同?

: DETR 的匈牙利匹配是全局排列,可以重新排序 query 来对齐。YOLO 的 TaskAligned Assigner 是基于局部 anchor 的分配,无法全局重排,只能定义冲突集合排除有冲突的 anchor。