Field note

RF-DETR: when a specialist detector beats a heavy VLM in production

RF-DETR (ICLR 2026, Roboflow + CMU) lands a quiet but consequential result: a weight-sharing NAS over a DETR backbone that sweeps thousands of accuracy-latency configurations without retraining, then hands you a Pareto curve for your dataset. The 2x-large variant crosses 60 AP on COCO, and on Roboflow100-VL it beats GroundingDINO (tiny) by 1.2 AP while running ~20× faster. The nano beats D-FINE nano by 5.3 AP at the same latency.

My applied read: this is the death knell for the reflex of fine-tuning a heavy open-vocabulary VLM (GroundingDINO, OWLv2) for every closed-set production task. In practice, once you know your 30 SKUs / defect classes / document regions, an open-vocab model is paying a massive latency tax for a flexibility you've already collapsed. RF-DETR lets you keep transformer-quality detection while choosing the latency bucket your hardware actually has.

When to reach for RF-DETR (and when not):

Situation Use RF-DETR Stay with VLM detector
Fixed taxonomy, ≥ a few hundred labels/class
Edge / Jetson / on-device, <30ms budget ✅ (nano/small)
Long-tail, classes added weekly by prompt
Zero-shot demo to a client
You need 60+ AP on COCO-like data ✅ (2x-large) usually ❌

The 4-step adoption I'd ship:

  1. Label 200–500 instances/class with the existing VLM as a pre-annotator; correct in Roboflow or CVAT.
  2. Fine-tune the RF-DETR base on the target set — one training run.
  3. Run the NAS sweep and pick the config that fits your p99 latency budget on the actual target device, not a desktop GPU.
  4. Export ONNX/TensorRT, freeze the config, and keep the VLM only as your cold-start labeller for the next class.

The trade-off is honest: you give up open-vocabulary inference and you inherit DETR's quirks around small objects and dense scenes. The win is that one fine-tune yields a whole latency menu — no more retraining three model sizes to negotiate with the hardware team.

The transferable rule: in production, specialise as soon as the taxonomy stops moving. Generality is a cost you keep paying every frame.

Paper + code: https://github.com/roboflow/rf-detr

Related reading