Volleyball, point by point.

One camera’s recording of a match becomes a record you can review: the ball’s path, the court, every rally and the score.

Court, ball, players, actions, rallies and the review app work today, including on a fixed camera behind the end line; 3D flights work but are limited by the 2D ball track; automatic scoring is next.

final_set3.mp4A 1 – 0 B
0:03.2 / 1:12.0
Rally
1 of 8
Time
0:01.0 – 0:06.6
Winner
A
End
Landed in
Confidence
91%
Landing
x 15.5 m, y 7.2 m
RalliesBallLandingsReview
●●×●●●×
▲▲

An illustration of the match review app with synthetic data — press play, click a rally, drag the timeline.

What it produces today

Real output, not a drawing: a fixed camera behind the end line (GCU vs UCLA) analysed end to end, and the review app.

The court fitted to the painted lines of an empty-court background plate (the volleyball lines are black on this multi-sport floor), players tracked and coloured by side, the ball trail (VballNet), a top-down map and a 3D view with the current 3D flight. Footage: NCAA men’s volleyball (VolleyballWatchdog), for research only.
Match review on a fixed end-line clip: court lines and players on the video, the rally inspector and list (13 rallies found by the fixed-camera rally model), and timeline lanes for rallies, ball, actions and tags.
Match review on a fixed end-line clip: court lines and players on the video, the rally inspector and list (13 rallies found by the fixed-camera rally model), and timeline lanes for rallies, ball, actions and tags.
2D and 3D tactics board (demo flights) and player statistics from coach tags.
2D and 3D tactics board (demo flights) and player statistics from coach tags.

Numbers, with where they come from

Only numbers with a source. Proxies are named as proxies; a metric without labelled data is not shown.

0.10 m

median court-position error on held-out broadcast clips (96% within 0.3 m); 0.49 m on held-out gym images

measured on labelscourt results

5 / 6

fixed end-line clips whose court, fitted to the painted lines, is right to 2-6 cm (median, hand-labelled floor points); the sixth is stretched in depth, 1.06 m off. Both keypoint models fail on this view

measured on labelscourt results

0.690

IDF1 of player tracking on SportsMOT volleyball, with a detector fine-tuned to box players only (precision 0.970: no referees or spectators)

measured on labelsplayer tracking results

0.946

ball detection F1 (10 px) of WASB fine-tuned on gym footage, on held-out gym matches; VballNet V4c, in the pipeline today, scores 0.859

measured on labelsball results

0.678

macro F1 of block / receive / set / spike per player on 16 unseen matches of the Volleyball dataset (the capstone detector: 0.303)

measured on labelsaction results

0.31 m

median 3D error of an attack from one camera with the touch anchored to the player who made it (0.76 m without), on synthetic rallies with realistic detection errors; with several players along the ball’s ray the anchor is withheld, since a wrong one costs metres

synthetic data3D trajectory results

0.742

rally detection F1 on two held-out broadcast matches; 0.76 on six fixed end-line clips with a model trained on labels read from the score bug

measured on labelsrally results

0.824

shirt digit mAP@0.5 on teams the model never saw; numbers are voted per player over time

measured on labelsshirt number results

How a match is analysed

A staged pipeline: a new model reruns only the stages after it.

  1. 1

    Read the video

    Camera cuts and frame-to-frame camera motion, so the court follows pans and zooms.

    Works today
  2. 2

    Find the court

    14 keypoints (net band included) per camera shot, the better of two models; a still end-line camera gets its court from the painted lines of an empty-court background plate. Doubtful courts are flagged and not used.

    Works today
  3. 3

    Track the ball

    VballNet V4c on every frame; misses stay misses. A gym-tuned WASB replaces it after its broadcast test.

    Works today
  4. 4

    Track the players

    YOLO26s fine-tuned to box players only, BoT-SORT tracking, positions in court metres; referees, line judges and spectators are left out.

    Works today
  5. 5

    Actions and shirt numbers

    Block, receive, set and spike per player from a classifier weighted by where the ball is, serves from a detector, shirt numbers voted over time; they become suggested tags the coach accepts.

    Works today
  6. 6

    3D ball path

    One camera, calibrated from the court and the net; each flight fitted to physics with the touches anchored to the players, its error shown and impossible fits dropped. Real flights are often low quality: the 2D ball track is the limit.

    In progress
  7. 7

    Rallies

    Play or no play from the system’s own cues, with one model for broadcasts and one for still end-line cameras.

    Works today
  8. 8

    Landing and score

    Landing, in or out and who won the point, with unsure calls flagged for a one-key correction. Until then the coach sets each rally’s winner.

    Planned

The review app

  • Live analysis progress

    Drop a match in; each stage reports as it runs.

  • An editor for a match

    Video with the court, players and ball trail, a rally inspector, and lanes for rallies, ball, landings, actions, tags and review.

  • Review with the keyboard

    J / K between rallies, 1 / 2 to set the winner. Corrections become labels for measuring accuracy.

  • Tactics board

    Each rally’s ball flights on a 2D court and in 3D, with low-quality and unseen parts drawn as such.

  • Player statistics

    Attack and serve tags become attack efficiency, kill rate, aces and serve errors per player, exported as CSV.

  • Honest status

    Every stage says whether it ran, is unavailable, or is not built yet. Demo data is always labelled.

Research

Single-camera 3D ball trajectory

The court keypoints include the net band, which calibrates the camera fully. Between touches the ball follows a ballistic arc, so one camera’s rays plus gravity fix where the ball is in 3D — with an error per flight, and flights the camera cannot resolve marked as such.

Landing calls from one camera

Tennis and professional volleyball rely on several synchronised cameras. With one, the plan combines the 3D fit, learned event spotting and the sound of the bounce, and reports uncertainty near the lines.

Free labels from the score on screen

Match video carries its own answer key: the score bug changes after every point. Read with OCR and filtered by the rules of the game (one point at a time), it gives each rally’s end and winner, which trained the fixed-camera rally model and will measure automatic scoring.

Every number has a measurement behind it

Each component is scored with standard metrics (court error in metres; HOTA / IDF1 for players; mAP for actions; F1 for the ball). Results and the scripts that produce them live next to the code, and corrections are published when an earlier number turns out wrong.

Product requirements, behaviour specifications and results are in the repository.

Team

Started as a senior capstone at National Taiwan Ocean University, Department of Computer Science and Engineering: Liang Yu-Jia (lead), Tsai Pei-Ying, Chung Chia-Hsin; advisor Professor Ting Pei-Yi. The current rebuild is by Liang Yu-Jia.