PitchVision

Upload match footage. Players, ball and referees are detected, tracked and split into two teams automatically. No lineups, no jersey numbers, no manual tagging.

Sample output

Produced by this pipeline from broadcast footage. Team colours were assigned with no labels, roster or jersey numbers supplied.

Annotated football frame showing tracked players coloured by team, referee in yellow
Team A (white shirts) Team B (dark shirts) Referee Ball
How it works
  1. Upload any match clip. Phone, camcorder or broadcast footage all work.
  2. Detect players, goalkeepers, referees and the ball with a YOLOv8 model trained on football footage.
  3. Track every object across frames with ByteTrack, giving each player a persistent ID.
  4. Separate teams by clustering shirt-appearance embeddings (SigLIP + UMAP + KMeans). Unsupervised, so no roster or jersey numbers are needed.
  5. Export an annotated video plus a CSV with one row per tracked object per frame.
What you get
Automatic team separationClusters kit appearance directly from pixels. Works on footage with no labels and unreadable shirt numbers.
Referee isolationOfficials are detected as their own class and kept out of both teams.
Ball trackingThe ball is detected and marked separately each frame.
Per-frame coordinatesRaw CSV of every object's position and bounding box: the input for any downstream analytics.
Persistent player IDsEach tracked player keeps an ID across frames, so movement can be followed over time.
Fully automaticNo manual tagging and no human audit step. Turnaround is bounded by compute, not staffing.
Drop a video here or click to browse MP4, MOV, AVI or MKV · up to 200 MB

Running on a CPU-only server, so the first 30 seconds of the clip are analysed at every 3rd frame. Expect roughly 5 minutes of processing. Jobs run one at a time.