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 yetDecision
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
- Licence. The rover's detector (yolo26n) and all our YOLO models are AGPL-3.0, which would force us to publish our own source if we ship them. We needed a permissive licence for both code and weights.
- It barely finds casualties. The stock yolo26n finds a lying person in only 13% of casualty frames at the rover's own setting, because COCO-trained detectors rarely see people lying on the floor.
- It runs on the CPU. The rover runs it through OpenCV on the CPU at 140 ms per frame.
- The NVIDIA option fell short. NVIDIA's TAO RT-DETR, fine-tuned on our data, stopped at 26% recall however long we trained it.
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
- Pushed the NVIDIA stack to its limit. 12 and 16 epochs of TAO RT-DETR gave no gain: 26% recall.
- 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).
- 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.
- Timed them on the Jetson. RF-DETR-M at 1280 px took 135 ms, too slow. D-FINE-M took 49 ms at 37%.
- Tried INT8. Under 1 point of recall lost, but 2 to 7% slower on the Orin. Dropped.
- 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.
- 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.
- 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.
Apache-2.0 candidate
AGPL (reference only)
Chosen
All results
Swipe sideways to see every column.
| Model | Licence | Recall | Jetson, idle | With Cosmos |
|---|---|---|---|---|
| yolo26n on CPU (the rover today) | AGPL | 0.12 | 140 ms | 179 ms |
| TAO RT-DETR rn50, fine-tuned | NVIDIA | 0.26 | n/a | n/a |
| D-FINE-S, 1280x704 | Apache-2.0 | 0.33 | 33 ms | 77 ms |
| RF-DETR-M, trained 1280, run 640 | Apache-2.0 | 0.34 | 29 ms | 67 ms |
| D-FINE-M, 1280x704 | Apache-2.0 | 0.37 | 49 ms | 116 ms |
| RF-DETR-S, 640 (chosen) | Apache-2.0 | 0.37 | 28 ms | 66 ms |
| RF-DETR-S, 768 | Apache-2.0 | 0.37 | 39 ms | 91 ms |
| armB yolo26n@1280 (bench) | AGPL | 0.39 | 20 ms | n/a |
| RF-DETR-M, 960 | Apache-2.0 | 0.40 | 64 ms | 151 ms |
| RF-DETR-M, 1280 | Apache-2.0 | 0.42 | 135 ms | 316 ms |
| armA yolo26m@1280 (bench) | AGPL | 0.43 | 65 ms | n/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
- Real footage. Every number comes from Isaac renders or COCO photos. Rover recordings with known casualties are the test that matters, and they don't exist yet.
- The shape rule. It was designed for detectors that also fire on standing people. For ours it mostly removes real casualties: dropping it raises RF-DETR-S from 37% to 44%. The bench owns this decision and must re-score the YOLO models the same way.
- Two numbers to reconcile. The bench scored stock yolo26n at 2%; our rover-style decode gives 12%. The ranking holds either way.
- Weak classes. Boxes, backpacks and handbags are the weakest of the new classes. Labelled warehouse renders have been requested for boxes.
- Rover integration. The rover's detector code only reads YOLO output today and needs a small change to decode RF-DETR.