The pipeline as it actually runs. Each stage is a real step in this repository, not a capability claim.
A script rebuilds the corpus from public broadcast sources by reference. No footage ships with the code, and none is ever hosted.
A borrowed ball detector runs on every frame. It never declines to answer, so a marker is not evidence that a ball was there.
Rally starts and ends are cut from the detection track, then measured against human labels rather than assumed to be right.
Table coordinates through the calibration homography, bounce placement, and a 3D scene shown with its failures intact.
Every rate lands in a row with its denominator and its interval, against thresholds seeded before any result was seen.
Surfaces that exist and are running. Nothing here is planned or partial.
The detector's own ball track drawn on the broadcast, rally by rally, with a readout that says when a marker is not evidence.
Rallies cut from the detection track and bounces placed in table coordinates. Bounces off the table are excluded, not clamped onto it.
Every rate carries the denominator it was computed over and the interval around it, or arrives gated with the count of labels standing between it and existing. There is no third way.
Ground truth is made inside the product, not a notebook. Label sets freeze before the harness runs, so predictions can never anchor the labeler.
Clone it, run it, and check the numbers yourself. The measurements, the labeled ground truth they were computed against, and the thresholds that were seeded before any result was seen are all in the repository.
View the repository