Sports analytics · Broadcast · Performance science

Sports video annotation: player tracking, pose & ball data

Sports video is the most demanding tracking environment we label. A tennis player serves at full extension, sprints, slides, and changes direction in a fraction of a second; the ball travels faster than almost any object in any consumer video; broadcast cuts change the camera angle without warning. Sports-analytics models - player tracking, stroke classification, tactical analysis, automated highlights, biomechanics - need annotation that survives all of it. Payana has labeled full tennis rallies end-to-end on the platform, with players tracked through serves, rallies, and recovery runs on every frame.

What makes sports different from, say, traffic is the ratio of motion to frames. A car crosses an intersection in seconds of smooth trajectory; a tennis player's silhouette changes shape dramatically between consecutive frames - arms extended, racket swinging, legs crossing. Sparse keyframe annotation with interpolation visibly fails here: the interpolated silhouette lags the athlete and "jiggles" between poses. Payana's tracker produces a segmentation mask on every frame, so the outline follows the athlete through the entire motion, and motion-adaptive smoothing keeps boundaries stable when the player is set without lagging them when they explode into a sprint.

What we annotate in sports footage

Label typeSports useExamples
Player tracks (per-frame masks)Player tracking, movement analysis, distance/speed metricseach player tracked with a persistent identity for the whole rally
Bounding boxesDetection models, broadcast graphicsplayers, referees, ball kids, equipment
Keypoints / skeletonsPose estimation, biomechanics, technique analysisfull-body joint skeletons per player per frame
Ball annotationBall tracking, bounce detection, trajectory modelssmall-object boxes with occlusion-aware tracks
Event / frame tagsAction recognition, highlight generationserve, forehand, backhand, volley, point start/end
Court segmentationHomography, camera calibration, coordinate mappingcourt surface, lines, net

Tennis is the reference sport we have shipped, but the same schema transfers directly to badminton, cricket, football, basketball, hockey, and combat sports - anywhere the questions are "who is where, doing what, when."

How athlete tracking works on Payana

An annotator clicks the player once. The segmentation engine returns a body-accurate mask - including through motion blur - and one more click sends it to the tracker, which follows the athlete through the full clip. Occlusion handling matters constantly in sports: players cross behind the net post, behind each other, behind on-screen graphics. The track marks those frames as outside and re-acquires the same identity as soon as the player is visible again, so identities never swap mid-rally - the failure mode that quietly poisons most tracking datasets.

Multiple objects queue for tracking in a single session: both players, then the ball, then the racket if the model needs it. The GPU processes the queue while the annotator moves on. For pose datasets, keypoint skeletons are placed on keyframes and refined frame-accurately - the editor steps frame by frame with the video, so a fast serve can be annotated at the exact frame of contact.

From broadcast footage to training data

Sports datasets export as COCO JSON (boxes, masks, and keypoints in the standard keypoints schema), YOLO for real-time player detectors, and per-frame annotated images with tracking applied for sequence models. Frame-level event tags export alongside, so an action-recognition model and a detection model can be trained from the same delivery. As with every Payana project, exports are versioned snapshots with reproducible splits - when you retrain next season's model, the baseline is still exactly reproducible.

Why per-frame quality changes sports models

Player-tracking metrics - distance covered, sprint counts, court coverage heatmaps - are integrals over per-frame positions. Jittery or interpolated annotation adds noise to every one of those integrals, and the errors compound over a match. Frame-accurate, temporally smoothed masks give downstream models a clean signal, which is why we invested in DAVIS-benchmark-style per-frame mask density rather than the keyframe shortcuts most tools take. In practice: when the athlete stops, the boundary is still; when they explode off the mark, the boundary goes with them, aligned on every frame.

Event annotation: teaching models the grammar of a match

Geometry tells a model where the players are; events tell it what the match means. Frame-level tags segment a broadcast into its grammar - point start, serve, stroke type (forehand, backhand, volley, smash), bounce, let, point end - and stroke tags carry attributes like spin direction or approach type when the analytics product needs them. This is the data behind automated highlight generation, momentum analytics, and coaching tools that answer questions like "show me every backhand down the line under pressure." Because event tags live in the same project as the player tracks, the export aligns them on a shared frame clock: a sequence model gets who-was-where and what-happened-when in one file, no post-hoc synchronization required.

Broadcast footage versus fixed-camera capture

The two big sources of sports video need different handling, and we label both. Broadcast footage is beautiful but adversarial: camera cuts, replays (which must be tagged and excluded or the model double-counts points), score overlays that occlude players, and zoom levels that change object scale mid-rally. Fixed-camera capture - the single elevated court camera most academies and analytics products use - is geometrically stable, which unlocks the court-segmentation + homography workflow: we segment the court surface and lines once, the client maps pixels to court coordinates, and every tracked player position becomes a real-world position in meters. That is the bridge from "pixels in a video" to sports science: distance covered, court coverage, recovery position discipline.

Pose data for performance science

Keypoint skeletons turn tracking into biomechanics. A serve annotated at joint level - shoulder, elbow, wrist, hip, knee, ankle across the kinetic chain - lets a model measure racket-drop depth, knee flexion at trophy position, or landing asymmetry, the quantities coaches and physiotherapists actually discuss. Skeleton definitions are configurable per project: a broadcast analytics product may need only a 13-point body, while a serve-biomechanics study adds racket keypoints and finer arm detail. Annotators step the video frame-by-frame at the moments that matter (contact, landing) so the skeleton is placed on the exact frame of the event, not the nearest keyframe - at 30 fps, one frame is the difference between trophy position and racket drop.

What sports teams do with the data

The same annotated footage serves several buyers inside one organization. Performance analysts train tracking models to automate tagging they currently do by hand. Broadcast and media teams use detection and event models for automated highlights and real-time graphics. Coaching products ship consumer apps that need robust player and ball detection on phone-quality video - which means training data must include phone footage, not just broadcast, and our capture-source tagging keeps the distributions measurable. Betting and integrity systems need event detection with tight latency, trained on exhaustively tagged point boundaries. One labeling pass, schema designed up front, serves all four.

Beyond tennis: transferring the schema across sports

The tennis schema - player tracks, pose skeletons, object tracking, event grammar, field segmentation - is a template, and each sport re-parameterizes it rather than starting over. Cricket swaps court lines for pitch and crease segmentation, adds ball-release and bounce events, and cares intensely about small-object ball tracking against varied backgrounds. Football scales the track count from two players to twenty-two plus officials, which is where the platform's multi-object tracking queue and identity discipline earn their keep. Badminton is tennis at higher speed with a lighter object - the same per-frame density argument, amplified. Combat sports drop the object entirely and go deep on pose: two overlapping skeletons in constant occlusion, the hardest keypoint scenario there is, and one where occlusion-aware tracking is not optional. Because the schema transfers, so does everything downstream: the QA process, the export formats, and the review tooling are identical across sports, and a multi-sport analytics company runs all its datasets through one consistent pipeline.

Volumes, turnaround, and how a sports project runs

Sports engagements usually start from a backlog - seasons of archived footage - plus a weekly flow of new matches. We structure delivery accordingly: an initial schema pilot on a handful of representative clips (one broadcast match, one fixed-camera session, one phone-quality video if the product needs it), then bulk annotation in rolling weekly tranches so your training pipeline consumes data continuously instead of waiting for a monolithic delivery. AI-assisted tracking is what makes sports volumes tractable at all: a rally that would cost an hour of manual per-frame annotation resolves in minutes of annotator time plus GPU tracking, and the human effort concentrates on the review pass and the event tags - the parts that genuinely need sports literacy. For organizations searching for a sports video annotation service, player tracking dataset labeling, or pose estimation data for sports analytics, the combination described here - per-frame masks, occlusion-safe identities, configurable skeletons, event grammar, and rolling delivery - is the full production stack, already proven on tennis.

Yes, with honest caveats: balls are annotated as small-object tracks, and frames where the ball is invisible (motion blur beyond recovery, out of frame) are marked outside rather than guessed. For high-precision trajectory work we combine tracking with human keyframe verification at bounce and contact points.

Yes. Each continuous shot is tracked as its own segment, and identities are re-linked across cuts during review, so a rally spanning three camera angles still produces one coherent player timeline.

Yes - keypoint/skeleton projects are a native type. Skeleton definitions are configurable per project (e.g., 17-point COCO body, racket-arm detail), and export in COCO keypoints format.

Tennis is shipped; the pipeline is sport-agnostic. Any sport with visible players and a trackable object works - football, cricket, badminton, basketball - since the schema (tracks, poses, events, field segmentation) is the same.

Frequently asked questions

Player detection and tracking with persistent identities, pose keypoints (full-body skeletons), ball tracking, and event annotation - serves, shots, passes, fouls - time-stamped against the video. Team and jersey attributes can be carried as label attributes.

Have sports data to annotate?

Send us your images or video - we annotate, review, and deliver a training-ready dataset in your format.

Book an intro call