πŸ—ΊοΈ Game State Reconstruction (GSR)

Task Overview

Input: Panoramic 4K video (full match)
Output: Per-frame game state on 2D pitch minimap (position + role + team + jersey number)

Alignment with SoccerNet-GSR:
βœ… Same: 2D pitch coordinates, player roles, team assignment, jersey numbers
⚠️ Different: Fixed panoramic camera + full match (not broadcast clips)

Input / Output Definition

Input

  • videos/match_XXXXX.mp4 β€” Full match panoramic video (4K)
  • Camera: BePro Cerberus (2 matches) or 3-camera panoramic (8 matches)

Output (per frame)

Field Type Description
frame int Frame number
time float Timestamp in video (seconds)
player_id int Unique track ID (persistent throughout match)
x, y float 2D pitch coordinates in meters
role string player / goalkeeper / referee / other
team_side string left / right / null
jersey_number int/null 0–99 or null

File Layout

production/
β”œβ”€β”€ videos/
β”‚   β”œβ”€β”€ 117093.mp4
β”‚   β”œβ”€β”€ 117094.mp4
β”‚   └── ...
β”œβ”€β”€ gsr/
β”‚   β”œβ”€β”€ 117093/
β”‚   β”‚   └── 117093.json
β”‚   β”œβ”€β”€ 117094/
β”‚   β”‚   └── 117094.json
β”‚   └── ...
β”œβ”€β”€ bas/
β”œβ”€β”€ mot/
└── raw/
    β”œβ”€β”€ 117093/
    β”‚   β”œβ”€β”€ 117093_keypoints.json
    β”‚   β”œβ”€β”€ 117093_mapx.npy
    β”‚   β”œβ”€β”€ 117093_mapy.npy
    β”‚   └── ...
    └── ...

Each match has one annotation file in its own directory. Unlike SoccerNet-GSR which uses img1/ for image frames, we reference the video directly from videos/ to save storage space.

Schema & SoccerNet Mapping

Example JSON Structure

{
  "match_id": "117093",
  "fps": 25.0,
  "annotations": [
    {
      "frame": 0,
      "time": 0.0,
      "objects": [
        {
          "player_id": 1,
          "x": 52.5,
          "y": 34.0,
          "role": "player",
          "team_side": "left",
          "jersey_number": 10
        },
        ...
      ]
    },
    ...
  ]
}

SoccerNet-GSR Correspondence

SoccerTrack v2 SoccerNet-GSR Notes
x, y x_pos, y_pos Pitch coordinates (meters)
team_side left / right Team assignment
jersey_number jersey_number 0–99
role role player/goalkeeper/referee/other
player_id track_id Persistent across full match

Evaluation / Metrics

Evaluation uses GS-HOTA (Game State Higher Order Tracking Accuracy), following the SoccerNet-GSR Challenge definition.

Official devkit: Coming soon

Differences vs SoccerNet-GSR

Key Differences:
  • Camera view: Panoramic (full-pitch) vs. broadcast (partial view with occlusions)
  • Duration: Full match (~90 min) vs. short clips
  • Camera setup: Fixed BePro/3-camera system vs. moving broadcast camera
  • Level: University amateur matches vs. professional leagues