Skip to content

RF-DETR: Neural Architecture Search for Real-Time Detection Transformers


摘要

问题: Open-vocabulary detectors (GroundingDINO, YOLO-World) 在 COCO 上 zero-shot 性能好,但在 out-of-distribution 类别上泛化差;专用检测器 (D-FINE, RT-DETR) 推理快但性能不如微调后的 VLM

方案: RF-DETR — 结合 NAS + 互联网规模预训练,为目标数据集发现 accuracy-latency Pareto 曲线

核心方法:

  • Weight-sharing NAS:训练时同时优化数千子网,无需完整训练
  • 5 个 Tunable Knobs:Patch Size、Decoder Layers、Query Tokens、Resolution、Window 数
  • Backbone 用 DINOv2(替换 LW-DETR 的 CAEv2)

SOTA 性能:

  • RF-DETR (nano): 48.0 AP @ COCO,超越 D-FINE (nano) +5 AP
  • RF-DETR (2x-large): 首个实时检测器突破 COCO 60 AP (60.1)
  • RF-DETR (2x-large) 超越 GroundingDINO (tiny) 且 20x faster

1 引言 (Introduction)

1.1 背景 — Open-vocabulary vs Specialist Detectors

  • Open-vocabulary detectors (GroundingDINO, YOLO-World) 在常见类别上 zero-shot 效果惊艳
  • 但问题: 在预训练未出现的类别上泛化差,需要 fine-tune
  • Fine-tune VLM 的代价:推理慢(重-weight 文本编码器)+ 失去 open-vocabulary 能力

1.2 关键发现:SOTA 检测器过拟合 COCO

  • YOLOv8 在 COCO 上性能好,但泛化到真实世界数据集(分布差异大)表现差
  • 原因: bespoke 架构、学习率 scheduler、数据增强都是针对 COCO 优化的

1.3 RF-DETR 核心思路

  • 不做 VLM fine-tune,而是训练一个轻量 specialist detector
  • Weight-sharing NAS 自动搜索最优架构配置
  • 核心洞察:训练时随机采样不同配置,OFA 风格"架构增强"同时是 regularizer

1.4 本文贡献

  1. RF-DETR:首个端到端 weight-sharing NAS 用于检测和分割
  2. 5 个 Tunable Knobs 提升 DETR 到不同领域的迁移能力
  3. SOTA 性能:COCO 和 RF100-VL(100个不同领域数据集)
  4. Latency Benchmarking 标准化方案

2.1 Neural Architecture Search (NAS)

方法特点
早期 NAS (NASNet, AmoebaNet)只追求精度,忽略效率
Hardware-aware NAS加入硬件反馈,但每换平台需重新搜索
OFA (Cai et al., 2019)Weight-sharing NAS,训练时同时优化数千子网,解耦训练与搜索
本文直接优化端到端检测精度,而非仅替换 backbone

2.2 Real-Time Object Detectors

类型代表特点
Two-stageMask-RCNN高精度,高延迟
Single-stageYOLO, SSD速度优先,精度牺牲
DETR 系列RT-DETR, LW-DETR端到端无 NMS,但早期延迟高
本文首个 >60 AP 实时检测器

2.3 Vision-Language Models

  • GLIP、Detic、MQ-Det 等在 zero-shot 上表现好
  • 问题:预训练未出现的类别泛化差 + 推理慢
  • RF-DETR 方案:结合实时检测器速度 + VLM 互联网规模先验

3 方法 (Method)

3.1 基础架构 (继承 LW-DETR)

组件实现
BackboneDINOv2 (ViT/S-14, 12层) — 替换 LW-DETR 的 CAEv2
Neck无 FPN,用 Projector 将多尺度特征投影到统一空间
EncoderWindowed + Non-windowed Attention 交替
DecoderDeformable Cross-Attention(固定结构,不在 NAS 范围内
HeadBox Head + Class Head + Segmentation Head (RF-DETR-Seg)

DINOv2 多尺度来源: 多个 intermediate block outputs (Block 1-4),类似 ResNet 多层 skip connections

Backbone 训练方式: 非冻结,Fine-tune,端到端训练但用较低 LR 保护预训练知识

3.2 Weight-sharing NAS 搜索空间 (5 个 Tunable Knobs)

Knob变体效果
Patch Size8x8 ~ 32x32 (FlexiVIT)小 patch → 高精度,代价是计算量大
Decoder Layers1~N 层删减 decoder 层可 turn into single-stage detector
Query Tokens数量可调隐式编码数据集的平均目标数
Image Resolution可变分辨率高分辨率利好小目标,低分辨率利好速度
Window Attention每 block 的 window 数控制全局信息混合与计算效率
  • 训练时每个 iteration 随机采样一种配置
  • 这个"架构增强"同时是 regularizer,提升泛化
  • 评估时用 grid search 在验证集上选最优配置

3.3 训练策略:Scheduler-free

问题: Cosine schedule 假设固定训练轮数,对多样目标数据集不实际

解决:

  • 不限 schedule,用更温和的超参数(更大 batch、更低 LR)
  • layer norm 替代 batch norm,支持消费级 GPU 梯度累积

Augmentation: 只做 horizontal flip 和 random crop

  • 避免 VerticalFlip 等引入的偏差(如自动驾驶场景中,反射误检)

3.4 预训练

  • RF-DETR-Seg 在 Objects-365 上用 SAM2 伪标签预训练

4 实验 (Experiments)

4.1 数据集与指标

  • COCO val2017: 标准 benchmark
  • RF100-VL: Roboflow 100个不同领域数据集,平均性能是 transfer 到任意领域的 proxy
  • 指标: mAP, AP50, AP75, APS/M/L, GFLOPs, Params, Latency (T4 GPU + TensorRT 10.4)

4.2 Latency Benchmarking 标准化

问题解决方案
YOLO 报 latency 不含 NMS-
D-FINE 测的 LW-DETR 比原 reported 快 25%200ms buffering 防止 GPU power throttling
FP16 量化可能让 D-FINE 掉到 0.5 AP用 ONNX opset 17 解决
YOLO 用 FP32 测精度,FP16 报 latency统一用同一个 model artifact

4.3 COCO Detection 结果

ModelSizeParamsAPAP50Latency
RF-DETRN30.5M48.067.02.3ms
D-FINEN3.8M42.760.22.1ms
LW-DETRT12.1M42.960.71.9ms
RF-DETRS32.1M52.971.93.5ms
D-FINES10.2M50.667.63.5ms
RF-DETRM33.7M54.773.54.4ms
D-FINEM19.2M55.072.65.4ms
RT-DETRR1836.0M49.066.64.4ms
RF-DETR2XL126.9M60.178.517.2ms

结论:

  • RF-DETR (nano) 超越 D-FINE (nano) +5.3 AP
  • RF-DETR (nano) 精度追平 YOLOv8/YOLOv11 的 medium 模型
  • 首个 >60 AP 实时检测器

4.4 RF100-VL 结果 (100 个不同领域数据集)

ModelSizeAPAP50Latency
RF-DETR2XL63.388.915.6ms
GroundingDINOT62.388.8309.9ms
D-FINEM60.685.55.6ms

结论: RF-DETR (2x-large) 超越 GroundingDINO (tiny) 且 20x faster

4.5 Instance Segmentation 结果

ModelSizeAPLatency
RF-DETR-SegN40.33.4ms
YOLOv11-SegM38.56.9ms
FastInstR5034.939.6ms
MaskDINOR5046.3242ms

结论: RF-DETR-Seg (nano) 超越 YOLOv11 所有尺寸,且 快 10x

4.6 消融实验

配置AP 变化
LW-DETR (M) baseline52.6
+ Gentler Hyperparameters-1.0
+ DINOv2 Backbone+2.0
+ Additional O365 Pre-training+0.7
+ Weight-sharing NAS+2.0

关键结论:

  • DINOv2 超越 CAEv2 2.4% AP
  • Weight-sharing NAS 额外提升 2% AP,且作为 regularizer 提升泛化
  • Fine-tuning after NAS: COCO 上提升有限,RF100-VL 有小幅提升

5 结论 (Conclusion)

  1. RF-DETR: 首个 SOTA 的 NAS 基础方法,用于为不同目标数据集和硬件平台微调专用端到端检测器
  2. SOTA 性能: COCO 和 RF100-VL 上超越所有实时方法;D-FINE (nano) +5% AP
  3. 发现: 当前架构/学习率/数据增强都是针对 COCO 优化的,社区应在更多样化数据集上 benchmark,防止隐式过拟合
  4. 贡献: 提出 latency benchmark 标准化方案(200ms buffering),提升可复现性

6 局限 (Limitations)

  • 即使控制 power throttling,TensorRT 编译非确定性导致 latency 有 ±0.1ms 波动

代码与资源

项目链接
GitHubhttps://github.com/roboflow/rf-detr
Project Pagehttps://rfdetr.roboflow.com/

个人评价

核心价值: RF-DETR 是首个将 weight-sharing NAS 成功应用于端到端检测器的作品,结合 DINOv2 的大规模预训练和 NAS 的架构搜索,在 COCO 和 RF100-VL 上都达到 SOTA。

亮点:

  1. NAS 搜索空间设计合理:5 个 knobs 覆盖主要精度-速度 tradeoff
  2. Scheduler-free 训练:对多样目标数据集更友好
  3. Benchmark 标准化:200ms buffering 方案有实践价值

与 YOLO26 对比:

方面RF-DETRYOLO26
架构DETR (Transformer)CNN (CSP-Muon)
NMS端到端无 NMSNMS-Free
DFL有 (Deformable)DFL-Free
NAS
AP (nano)48.040.9
延迟 (nano)2.3ms1.7ms

建议方向:

  • RF-DETR 适合需要高精度的场景
  • YOLO26 适合需要极致轻量 + 确定性延迟的边缘部署

Q&A (猴哥提问)

Q4: RF-DETR 用的互联网规模数据预训练,是怎么回事?

: 不是 RF-DETR 自己预训练,而是 Backbone DINOv2 用了互联网规模数据(ImageNet 等)预训练。RF-DETR 继承了这个 Foundation Model 的视觉特征。

Q5: 微调后的 VLM 比专用检测器强,文章有具体论述吗?

: 有的。原文 Introduction 明确说:

"Fine-tuning VLMs on a target dataset significantly improves in-domain performance... In contrast, specialist (i.e., closed-vocabulary) object detectors like D-FINE and RT-DETR achieve real-time inference, but underperform fined-tuned VLMs like GroundingDINO."

Table 4 数据支撑:GroundingDINO (T) AP=62.3 > D-FINE (M) AP=60.6 > RT-DETR (M) AP=59.6 (RF100-VL)

Q6: RF-DETR 比 GroundingDINO 强吗,怎么做到的?

: 强。RF-DETR (2XL) AP=63.3 vs GroundingDINO (T) AP=62.3,且 快 20 倍 (15.6ms vs 309.9ms)。

怎么做到的:

  1. DINOv2 Backbone — 继承互联网规模预训练的视觉先验
  2. Weight-sharing NAS — 为目标数据集自动搜索最优架构
  3. Fine-tuning — NAS 后在小数据集上微调 (+0.2~0.3 AP)

Q7: RF-DETR 是 open-vocabulary 吗?

: 不是。RF-DETR 是 closed-set(闭集)检测器,只能检测训练时见过的类别。

GroundingDINO 是 open-vocabulary,可以通过文本描述检测任意新类别。这是 RF-DETR 的 局限

Q8: RF-DETR 的 latency 测试环境?和 YOLO26 相比呢?

:

  • 测试环境: NVIDIA T4 GPU + TensorRT 10.4 + CUDA 12.4
  • RF-DETR vs YOLO26 对比 (T4 TensorRT):
ModelAPLatencyParams
RF-DETR (nano)48.02.3ms30.5M
YOLO26n40.91.7ms2.4M

结论: YOLO26 更轻更快(参数量少 12x,延迟少 0.6ms),但 RF-DETR 精度更高(+7 AP)。两者都是 NMS-Free,但 YOLO26 的 DFL-Free 架构更适合 edge 部署。

Q9: Objects-365 预训练是 YOLO26 用的吗?

: 不是。Objects-365 预训练是 RF-DETR 用来预训练 RF-DETR-Seg 的(用 SAM2 伪标签)。

YOLO26 没有用 Objects-365 预训练,是从 COCO 直接开始训练的。

这也是 YOLO26 精度略低于 RF-DETR 的原因之一:CNN backbone 没有经过大规模互联网数据预训练。

CNN backbone 提升预训练的方式:

  1. ImageNet 预训练(YOLO 传统做法)
  2. Objects-365 + 伪标签(RF-DETR 思路)
  3. 自监督预训练 (MAE/DINO) — 但 ViT 会变重

Q10: Objects-365 规模?为啥用 SAM2 伪标签?

:

  • Objects-365 规模: 365 类,200 万张图片3000 万个边界框(有标注)
  • Objects-365 只有 box 标注,没有 mask 标注
  • 用 SAM2 伪标签的原因: Segmentation head 需要 mask 来学习 instance segmentation,而原始数据没有

预训练流程:

  1. Detection head: 用 Objects-365 的 box 标注预训练(+0.7 AP,消融实验 Table 5)
  2. Segmentation head: 用 SAM2 生成的 pseudo masks 预训练
  • 整个模型(backbone + detection + segmentation)都在 Objects-365 上预训练,不是冻结

目的: 用大规模数据(200万图,365类)提升检测和分割的基线能力,类似 ImageNet 预训练但更大更专。