futheros-ball-rfdetr β€” personalized football ball detector

RF-DETR Nano (30M params, Apache-2.0) fine-tuned to detect the ball in amateur football footage (phone cameras, fixed venue cams, 5-a-side) β€” including the motion-blurred ball in flight, which COCO and broadcast-trained detectors never see.

Built for FUT-HEROS (Build Small Hackathon): upload your match clip β†’ it finds your goals and coaches every scoring strike.

How it was trained: SAM3 as the teacher

No hand labeling. Labels come from facebook/sam3 video tracking on our own match footage, in two rounds:

  1. Agreement labels β€” SAM3 track positions confirmed by an independent RF-DETR detection (≀35px): clean, easy frames.
  2. Blur labels (v2) β€” SAM3-only positions on FAST-moving ball frames (speed-gated): SAM3's temporal memory holds the ball through motion blur where per-frame detectors go blind. These frames teach the model that the streak is the ball.

Plus the ball class of roboflow-jvuqo/football-players-detection-3zvbc (broadcast) for generality. RF-DETR Nano, 30 epochs, effective batch 16 β€” 5.7 min on one RTX 3090.

Measured results (goal detection on 3 real amateur videos, 8 true goals)

Detector Goals Notes
zero-shot COCO Nano 3/8 + 1 false event
Nano fine-tuned on broadcast only 1/8 domain shift β€” worse than zero-shot!
this model v1 (agreement labels) 7/8 ball location finally correct
this model v2 (+ blur labels), sliced inference 8/8 all goals at the user's exact times

Sliced inference = predict on 4 overlapping half-frame tiles + full frame, merge by NMS (the Roboflow sports recipe for tiny/far balls).

Usage

from rfdetr import RFDETRNano
from huggingface_hub import hf_hub_download

ckpt = hf_hub_download("build-small-hackathon/futheros-ball-rfdetr",
                       "checkpoint_best_total_v2.pth")
model = RFDETRNano(pretrain_weights=ckpt)
detections = model.predict(image, threshold=0.35)   # class 1 = ball
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support