⚡ Ball Action Spotting (BAS)

Task Overview

Input: Panoramic 4K video (full match)
Output: Temporal action labels for 12 ball event classes with global timestamps

Alignment with SoccerNet Ball Action Spotting:
Same: 12 action classes, temporal detection, team assignment
⚠️ Different: Panoramic view + full match (not broadcast clips)

Input / Output Definition

Input

  • videos/match_XXXXX.mp4 — Full match panoramic video (4K)

Output (per action)

Field Type Description
time float Global timestamp in video (seconds)
event_class string One of 12 action classes (see below)
team string left / right / null
player_id int/null Track ID (when available)

12 Action Classes

Pass
Drive
Header
High Pass
Out
Cross
Throw In
Shot
Ball Player Block
Player Successful Tackle
Free Kick
Goal

File Layout

SoccerTrack-v2/
├── videos/
│   ├── 117093/
│   │   ├── 117093_panorama_1st_half.mp4
│   │   └── 117093_panorama_2nd_half.mp4
│   └── ...
├── gsr/
├── bas/
│   ├── 117093/
│   │   └── 117093_12_class_events.json
│   └── ...
├── mot/
└── raw/
    └── ...

Each match ships one BAS annotation file covering both halves. The gameTime field encodes which half each event belongs to.

See format-bas.md for the full schema reference.

Schema & SoccerNet Mapping

Example JSON Structure

{
  "UrlLocal": "117093",
  "UrlYoutube": null,
  "annotations": [
    {
      "gameTime": "1 - 12:30",
      "position": "750000",
      "label": "Pass",
      "team": "left",
      "player_id": "117093_L_9",
      "visibility": "visible"
    },
    ...
  ]
}

position is milliseconds from kickoff of the half encoded in gameTime, not from match start. Convert to a frame index with round(int(position) / 40) at 25 fps.

SoccerNet BAS Correspondence

SoccerTrack v2 SoccerNet BAS Notes
time timestamp Global time in seconds
event_class label 12 action classes
team team left / right
player_id Unique to SoccerTrack v2

Evaluation / Metrics

Evaluation uses tolerant mean Average Precision, following the SoccerNet Ball Action Spotting Challenge. Report two tolerances:

  • mAP@1s — tight (precise temporal localisation)
  • mAP@5s — loose (event-level detection)

Reference CLI:

python -m src.evaluation.bas_map \
    --pred preds/bas --gt data/bas --matches 117099 117100 \
    --tolerances 1 5

Starter Kit

Get running fast. The BAS starter kit scaffolds clip features (MViT/I3D/CLIP) + a temporal spotter (T-DEED / ASTRA) with tolerant-mAP evaluation wired in.

Differences vs SoccerNet BAS

Key Differences:
  • Camera view: Panoramic (full-pitch visibility) vs. broadcast (partial/zoomed)
  • Duration: Full match (~90 min) vs. half/clip segments
  • Additional info: Player IDs available (linked to GSR tracks)
  • Camera setup: Fixed panoramic vs. moving broadcast camera