UBR Stack · rescue robot · 3 Oct 2026

Choosing the Rescue Detector

Why the rover's casualty detector had to change, how we tested the replacements, and why we picked RF-DETR-S at 640 px.

Bench demo · simulated data only · not tested on the rover yet
Decision
RF-DETR-S, trained and run at 640 x 640
Apache-2.0 licence for code and weights. Finds 37% of casualties at the strict false-alarm budget (44% without the shape rule). Runs in 28 ms on the Jetson GPU, 5 times faster than the rover's current detector, and at the rover's own 0.25 setting it finds about 5 times as many casualties.

The problem

How we measured

Accuracy: recall on 22,060 held-out hospital frames from Isaac Sim (6,724 with a casualty). We set each model's threshold so it fires on no more than 0.5% of frames that show a standing person, then count how many casualties it still finds. The same rule applies to every model, so the numbers compare directly.

Speed: time per frame on the Jetson Orin Nano (15 W), TensorRT FP16, 95th percentile, measured idle and while Cosmos3-Edge is generating.

How we chose

  1. Pushed the NVIDIA stack to its limit. 12 and 16 epochs of TAO RT-DETR gave no gain: 26% recall.
  2. Picked permissive candidates. RF-DETR (sizes N to L, Apache-2.0) and D-FINE (Apache-2.0). We ruled out YOLOv8 (also AGPL) and RF-DETR XL and 2XL (non-permissive licence).
  3. Trained both on the same data for 12 epochs, in parallel on the cluster's 8 GPUs. RF-DETR-M at 1280 px reached 42%, between our two AGPL YOLO models.
  4. Timed them on the Jetson. RF-DETR-M at 1280 px took 135 ms, too slow. D-FINE-M took 49 ms at 37%.
  5. Tried INT8. Under 1 point of recall lost, but 2 to 7% slower on the Orin. Dropped.
  6. Trained at a smaller input instead. RF-DETR's sizes share one backbone, so input size, not model size, sets the speed. RF-DETR-S trained at 640 px gave 37% at 28 ms, the best balance.
  7. Compared against the rover's current detector on the same frames: about 5 times more casualties found, with 4 times fewer alarms on standing people.
  8. Added more classes (person, backpack, handbag, suitcase, dog, car, truck, box, and a catch-all object class for Cosmos3-Edge to name). Casualty recall stayed the same, 37%.
Swipe sideways to see the whole chart.
Recall against Jetson latency Casualty recall at a 0.5% false-alarm budget plotted against Jetson time per frame. RF-DETR-S at 640 sits at 28 ms and 0.37 recall, near the AGPL armB model at 20 ms and 0.39. The rover's current yolo26n on CPU sits at 140 ms and 0.12. 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0 25 50 75 100 125 150 Jetson time per frame, ms (p95, idle) Casualty recall RF-DETR-S@640 (chosen) armB yolo26n@1280 armA yolo26m@1280 RF-DETR-M@640 D-FINE-S S@768 D-FINE-M RF-DETR-M@960 RF-DETR-M@1280 yolo26n, TensorRT (not deployed) yolo26n on CPU (the rover today)
Apache-2.0 candidate AGPL (reference only) Chosen
Up and to the left is better. All recall figures use the same shape rule (wider than tall by 1.3x). The yolo26n points are the stock COCO model scored the way the rover decodes it.

All results

Swipe sideways to see every column.
ModelLicenceRecallJetson, idleWith Cosmos
yolo26n on CPU (the rover today)AGPL0.12140 ms179 ms
TAO RT-DETR rn50, fine-tunedNVIDIA0.26n/an/a
D-FINE-S, 1280x704Apache-2.00.3333 ms77 ms
RF-DETR-M, trained 1280, run 640Apache-2.00.3429 ms67 ms
D-FINE-M, 1280x704Apache-2.00.3749 ms116 ms
RF-DETR-S, 640 (chosen)Apache-2.00.3728 ms66 ms
RF-DETR-S, 768Apache-2.00.3739 ms91 ms
armB yolo26n@1280 (bench)AGPL0.3920 msn/a
RF-DETR-M, 960Apache-2.00.4064 ms151 ms
RF-DETR-M, 1280Apache-2.00.42135 ms316 ms
armA yolo26m@1280 (bench)AGPL0.4365 msn/a

The armA and armB rows were scored by the bench and timed on 15 September; the rest were scored with a replica of the bench harness.

What we still don't know