Computer vision · R&D
jumpsight
Analysing a figure-skating jump from one phone video, with every number shipped together with how sure the system is about it.
Private repository · walkthrough on request
- ±0.54rotation error on 1,705 jumps (MMFS)
- 91%Axel recognised (FS-Jump3D)
- ±0.5–1frames on landing, control clip
- ~13 sper clip on CPU, first events after ~2 s
The problem
Coaches film on ordinary phones: 30 fps, compressed, often re-sent through Telegram. A jump lasts about half a second and one rotation takes roughly four frames, so most numbers are at the edge of what the video contains. The system has to measure what it can and say plainly what it cannot.
How it works
- 01
Probe and decode
Real frame timestamps (phones record variable frame rate), bitrate, a quick 360×640 pass over the whole clip and an audio track for the landing sound.
- 02
Detect and track
YOLOX-tiny on every third frame, IoU tracking and background stabilisation keep one skater in focus while the phone pans.
- 03
Find the attempts
Body-box kinematics and a ballistic parabola mark where the skater leaves the ice. Spirals and lifts that look similar are rejected with a reason.
- 04
Pose in every frame
RTMPose-m runs on full-resolution windows around each attempt and returns the joints the rest of the pipeline measures.
- 05
Timing, rotation, type
Takeoff and landing come from the ballistic bound around the apex. Rotation uses two independent channels. A rule tree, mirrored for direction, names the jump.
- 06
A report that admits limits
Every value is an object with a 68% interval, a tier and a status. What cannot be measured comes back as "absent" with a machine-readable reason, never as a plausible guess.
Limits I know about
- On toe jumps the takeoff can read up to two frames early: the toe pick release is invisible at ankle level. Filming at 60 fps fixes it.
- At about seven turns per second and 30 fps, rotation counting can alias. The system then refuses with AZIMUTH_ALIASING_SUSPECT instead of guessing.
- Lutz and Flip differ by the blade edge, which compressed 30 fps video often does not show (76.5% on that pair).