RF-DETR-Medium — Hazard Tracking
Fine-tuned RF-DETR-Medium for workplace hazard detection. Detects three classes:
| id | class |
|---|---|
| 0 | person_falldown |
| 1 | drum_falldown |
| 2 | forklift |
Validation metrics
COCO bbox metrics on the validation split (2,553 images), best-EMA weights:
| Metric | Value |
|---|---|
| mAP @[.50:.95] | 0.780 |
| mAP @.50 | 0.975 |
| mAP @.75 | 0.895 |
Per-class AP:
| class | AP@[.50:.95] | AP@.50 | AP@.75 |
|---|---|---|---|
| person_falldown | 0.798 | 0.982 | 0.932 |
| drum_falldown | 0.743 | 0.953 | 0.873 |
| forklift | 0.799 | 0.981 | 0.884 |
Precision / Recall / F1 @ IoU=0.50, confidence≥0.50 (micro-averaged overall):
| class | Precision | Recall | F1 |
|---|---|---|---|
| person_falldown | 0.965 | 0.964 | 0.965 |
| drum_falldown | 0.971 | 0.919 | 0.944 |
| forklift | 0.963 | 0.943 | 0.953 |
| overall | 0.965 | 0.960 | 0.963 |
Usage
from rfdetr import RFDETRMedium
from huggingface_hub import hf_hub_download
ckpt = hf_hub_download("wuhisbajsi/rfdetr-medium-hazard-tracking",
"checkpoint_best_ema.pth")
model = RFDETRMedium(pretrain_weights=ckpt)
detections = model.predict("image.jpg", threshold=0.5)
# detections.class_id: 0=person_falldown, 1=drum_falldown, 2=forklift
Training
- Base: RF-DETR-Medium (33.4M params),
rfdetr==1.5.2 - Data:
hazard_tracking— Roboflow COCO export, 9,029 train / 2,553 val / 1,231 test images @ 640×640 - Hardware: 1 node × 4× NVIDIA GH200, single-node DDP (
torchrun --nproc_per_node=4) - Schedule: 50 epochs, ~70 min wall-clock
- Batch: 64 per GPU × 4 = 256 total
- Optimizer: AdamW, lr
4e-4(sqrt-scaled from the 1e-4 / batch-16 base recipe)