Football temporal ball selector
Experimental causal selector over frozen, fine-tuned YOLO11n candidates. Eight current/past frames, 157,826 trainable selector parameters, learned NULL output. Requires the separate personal YOLO detector and CUDA for streaming. This is not a model for classifying physical out-of-camera versus occluded balls.
Verified experiment
Full immutable snapshot: runs/20260907/refined at 22e8ead. All 728 checkpoint/result files were downloaded and SHA-256 verified.
Selected checkpoint: runs/20260907/refined/context8-nearest-aug-seed7/best.pt.
SHA-256: 840947a23a54bf59b471fba6c7695a06b8e7e752b9be497de3952a696af8398e.
test-conservative/profile.json supplies the optional agreement operating point;
both modes use the same weights. The historical publication-pending.json records
deferred remote uploading; subsequent local verified publication completed it.
| Test method / operating point | Recall ≤20px | Precision of accepted positions | Synthetic absence FPR |
|---|---|---|---|
| YOLO, 95% validation precision target | 54.94% | 95.33% | 2.222% |
| Higher-recall learned selector | 66.65% | 94.36% | 1.329% |
| YOLO, 99% validation precision target | 14.28% | 98.17% | 0.117% |
| Conservative neural/heuristic agreement | 28.83% | 98.75% | 0.053% |
Test: 49 clips, 31,949 annotated real frames, 4,801 unknown real frames and 9,408 synthetic ball-excluding negative frames. Error tolerance is 20 native pixels, not an official SoccerNet MOT score. Missing real annotations are unknown, not verified absence. Synthetic false-positive rates do not establish real-world out-of-camera performance. Neither selector mode reaches its validation precision target on test. Conservative mode deliberately misses many balls.
Train games 6/9; validation game 4; test games 7/8/11. The detector's earlier training-match overlap is unknown. The conservative rule was developed after seeing the higher-recall test result, with its threshold fitted on validation only; test was reused, so this refinement's assessment is exploratory. Wearable footage has not been evaluated.
Rejected output is status=no_reliable_detection, observed_bbox=null,
inferred_position=null, visibility_reason=unknown. Diagnostic raw proposals
must not be interpreted as measurements when rejected.
Code and local viewer
Source branch and full experiment report. The report records all four refined ablations, both baseline operating points, streaming parity, latency caveats, dataset/detector revisions and cleanup.
From that branch, authenticated to this private repository, restore into a fresh destination with:
make -f Makefile.temporal temporal-restore TEMPORAL_REVISION=22e8eadb0a973c12ac5d0b69d8ed56090ebd782a
python scripts/verify_temporal_results.py artifacts/temporal-selector
python scripts/verify_temporal_results.py artifacts/temporal-selector --profile test-conservative
Provide the original authorized test images under
data/processed/soccernet-tracking/test, then open the app's /temporal page.
Code, dataset and underlying detector retain their respective terms; this card
does not grant new rights to those assets. No image files are included here.
Training and inference used one RTX 5090, instance 50134134, destroyed and verified absent on 2026-09-07 at 10:04:44 UTC after backups were checked.