GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - SoccerNet/SoccerNet

BranchesTags
Open more actions menu

Latest commit

 

History

95 Commits
95 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
SoccerNet
SoccerNet
 
 
doc/images
doc/images
 
 
migration_exrcsdrive_hf
migration_exrcsdrive_hf
 
 
visualization_tools
visualization_tools
 
 
.DS_Store
.DS_Store
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
MANIFEST.in
MANIFEST.in
 
 
README.md
README.md
 
 
requirements.txt
requirements.txt
 
 
setup.cfg
setup.cfg
 
 
setup.py
setup.py
 
 

Repository files navigation

Python Pypi Downloads Downloads License

SoccerNet package

conda create -n SoccerNet python pip
conda activate SoccerNet
pip install SoccerNet
# pip install -e https://github.com/SoccerNet/SoccerNet
# pip install -e .

Data now hosted on Hugging Face

SoccerNet data has moved off the legacy KAUST ownCloud drive (EXRCS) onto the SoccerNet organization on Hugging Face. downloadDataTask, downloadGame, and downloadGames all fetch from Hugging Face by default (source="HuggingFace"); pass source="EXRCSDrive" to fall back to the legacy drive for anything not yet migrated. Call signatures and local folder layout are unchanged either way, and password= is accepted but ignored (with a warning) wherever access is now controlled by your Hugging Face account instead. For gated repositories, follow the access steps below.

Dataset access and NDA

For datasets marked NDA-gated, access requires an electronic NDA signature and manual approval:

  1. Sign in to your Hugging Face account.
  2. Open the dataset repository you want to access.
  3. Complete the requested information, read the linked SoccerNet Non-Disclosure Agreement, and electronically sign it using the acknowledgment checkbox.
  4. Submit your request and wait for manual approval by the SoccerNet team.
  5. Download the dataset using the same account after approval.

Access is granted separately for each repository. Approval for SoccerNet_raw_HQ does not automatically grant access to SN-BAS-2024, SN-BAS-2025, or SN-PCBAS-2026. Existing approvals for these repositories remain valid.

Download after approval

Install the Hugging Face command-line tool and sign in with the account that received access:

pip install --upgrade huggingface_hub
hf auth login

If prompted for an access token, use one from the approved account with read access to the dataset. For example, download SN-BAS-2025 with:

hf download SoccerNet/SN-BAS-2025 --repo-type dataset --local-dir SoccerNet/SN-BAS-2025

Replace the repository ID and local directory with the dataset you want to download. Request access on that repository's page before downloading it.

Datasets

Dataset Hugging Face repo Access
Camera Calibration 2023 SN-Calibration-2023 public
Camera Calibration (legacy, pre-2023) SN-Calibration public
Re-Identification 2023 SN-ReID-2023 public
Re-Identification (legacy) same data as SN-ReID-2023 public
Player Tracking 2023 SN-Tracking-2023 public
Player Tracking (legacy) same data as SN-Tracking-2023 public
Jersey Number Recognition 2023 SN-Jersey-2023 public
Ball Action Spotting 2023 SN-BAS-2023 gated
Ball Action Spotting 2024 SN-BAS-2024 NDA-gated; password-free ZIPs
Ball Action Spotting 2025 SN-BAS-2025 NDA-gated; password-free ZIPs
Player-Centric Ball Action Spotting 2026 SN-PCBAS-2026 NDA-gated; password-free ZIPs
Action Spotting (all editions) per-game features/labels — see below public
Dense Video Captioning 2023 / 2024 per-game features/labels — see below public
Foul Recognition (MVFouls) 2024 SN-MVFouls-2024 public
Foul Recognition (MVFouls) 2025 SN-MVFouls-2025 public
Game State Reconstruction 2024 SN-GSR-2024 public
Game State Reconstruction 2025 SN-GSR-2025 public
Monocular Depth Estimation (football / basketball) SN-Depth (branches football, basketball) public
Monocular Depth Estimation 2025 SN-Depth-2025 public
Pre-extracted per-game features (all editions) SN-Features — one branch per feature type: baidu-soccer-embeddings, resnet-tf2, resnet-tf2-pca512, player-boundingbox-maskrcnn, field-calib-ccbv public
Per-game labels (all editions) SN-Labels — Labels.json, Labels-v2.json, Labels-v3.json, Labels-cameras.json, Labels-caption.json public
Raw broadcast videos, train/valid/test (224p/720p/HQ + frames/clips) SoccerNet_raw_HQ (branches videos-224p, videos-720p, videos-HQ, frames-720p-2fps, clips-720p-10s, frames-v3) gated
Raw broadcast videos, challenge split (224p/720p/HQ/LQ) SoccerNet_raw_HQ_Challenge (branches videos-224p, videos-720p, videos-HQ, videos-LQ) gated
Held-out test/challenge ground truth (all tasks above) SN-GroundTruth, one folder per task private
SpiideoSynLoc (4K/FullHD synchronized multi-camera images) hosted on Spiideo's own S3, not part of this migration see downloadDataTask(task="SpiideoSynLoc")

For SoccerNet in OSL Action Spotting format, use OpenSportsLab/OSL-SoccerNet directly (sharded WebDataset format — datasets.load_dataset unpacks the .tar shards for you):

from datasets import load_dataset
dataset = load_dataset("OpenSportsLab/OSL-SoccerNet", revision="ResNET_PCA512")  # or "224p", "720p"

Structure of the data data for each game

  • SoccerNet main folder
    • Leagues (england_epl/europe_uefa-champions-league/france_ligue-1/...)
      • Seasons (2014-2015/2015-2016/2016-2017)
        • Games (format: "{Date} - {Time} - {HomeTeam} {Score} {AwayTeam}")
          • SoccerNet-v2 - Labels / Manual Annotations

            • video.ini: information on start/duration for each half of the game in the HQ video, in second
            • Labels-v2.json: Labels from SoccerNet-v2 - action spotting
            • Labels-cameras.json: Labels from SoccerNet-v1 - camera shot segmentation
          • SoccerNet-v2 - Videos / Automatically Extracted Features

            • 1_224p.mkv: 224p video 1st half - timmed with start/duration from HQ video - resolution 224*398 - 25 fps
            • 2_224p.mkv: 224p video 2nd half - timmed with start/duration from HQ video - resolution 224*398 - 25 fps
            • 1_720p.mkv: 720p video 1st half - timmed with start/duration from HQ video - resolution 720*1280 - 25 fps
            • 2_720p.mkv: 720p video 2nd half - timmed with start/duration from HQ video - resolution 720*1280 - 25 fps
            • 1_ResNET_TF2.npy: ResNET features @2fps for 1st half from SoccerNet-v2, extracted using TF2
            • 2_ResNET_TF2.npy: ResNET features @2fps for 2nd half from SoccerNet-v2, extracted using TF2
            • 1_ResNET_TF2_PCA512.npy: ResNET features @2fps for 1st half from SoccerNet-v2, extracted using TF2, with dimensionality reduced to 512 using PCA
            • 2_ResNET_TF2_PCA512.npy: ResNET features @2fps for 2nd half from SoccerNet-v2, extracted using TF2, with dimensionality reduced to 512 using PCA
            • 1_ResNET_5fps_TF2.npy: ResNET features @5fps for 1st half from SoccerNet-v2, extracted using TF2
            • 2_ResNET_5fps_TF2.npy: ResNET features @5fps for 2nd half from SoccerNet-v2, extracted using TF2
            • 1_ResNET_5fps_TF2_PCA512.npy: ResNET features @5fps for 1st half from SoccerNet-v2, extracted using TF2, with dimensionality reduced to 512 using PCA
            • 2_ResNET_5fps_TF2_PCA512.npy: ResNET features @5fps for 2nd half from SoccerNet-v2, extracted using TF2, with dimensionality reduced to 512 using PCA
            • 1_ResNET_25fps_TF2.npy: ResNET features @25fps for 1st half from SoccerNet-v2, extracted using TF2
            • 2_ResNET_25fps_TF2.npy: ResNET features @25fps for 2nd half from SoccerNet-v2, extracted using TF2
            • 1_player_boundingbox_maskrcnn.json: Player Bounding Boxes @2fps for 1st half, extracted with MaskRCNN
            • 2_player_boundingbox_maskrcnn.json: Player Bounding Boxes @2fps for 2nd half, extracted with MaskRCNN
            • 1_field_calib_ccbv.json: Field Camera Calibration @2fps for 1st half, extracted with CCBV
            • 2_field_calib_ccbv.json: Field Camera Calibration @2fps for 2nd half, extracted with CCBV
            • 1_baidu_soccer_embeddings.npy: Frame Embeddings for 1st half from https://github.com/baidu-research/vidpress-sports
            • 2_baidu_soccer_embeddings.npy: Frame Embeddings for 2nd half from https://github.com/baidu-research/vidpress-sports
          • Legacy from SoccerNet-v1

            • Labels.json: Labels from SoccerNet-v1 - action spotting for goals/cards/subs only
            • 1_C3D.npy: C3D features @2fps for 1st half from SoccerNet-v1
            • 2_C3D.npy: C3D features @2fps for 2nd half from SoccerNet-v1
            • 1_C3D_PCA512.npy: C3D features @2fps for 1st half from SoccerNet-v1, with dimensionality reduced to 512 using PCA
            • 2_C3D_PCA512.npy: C3D features @2fps for 2nd half from SoccerNet-v1, with dimensionality reduced to 512 using PCA
            • 1_I3D.npy: I3D features @2fps for 1st half from SoccerNet-v1
            • 2_I3D.npy: I3D features @2fps for 2nd half from SoccerNet-v1
            • 1_I3D_PCA512.npy: I3D features @2fps for 1st half from SoccerNet-v1, with dimensionality reduced to 512 using PCA
            • 2_I3D_PCA512.npy: I3D features @2fps for 2nd half from SoccerNet-v1, with dimensionality reduced to 512 using PCA
            • 1_ResNET.npy: ResNET features @2fps for 1st half from SoccerNet-v1
            • 2_ResNET.npy: ResNET features @2fps for 2nd half from SoccerNet-v1
            • 1_ResNET_PCA512.npy: ResNET features @2fps for 1st half from SoccerNet-v1, with dimensionality reduced to 512 using PCA
            • 2_ResNET_PCA512.npy: ResNET features @2fps for 2nd half from SoccerNet-v1, with dimensionality reduced to 512 using PCA

How to Download Games (Python)

from SoccerNet.Downloader import SoccerNetDownloader

mySoccerNetDownloader = SoccerNetDownloader(LocalDirectory="path/to/soccernet")

# Download SoccerNet labels (fetched from SoccerNet/SN-Labels by default)
mySoccerNetDownloader.downloadGames(files=["Labels.json"], split=["train", "valid", "test"]) # download labels
mySoccerNetDownloader.downloadGames(files=["Labels-v2.json"], split=["train", "valid", "test"]) # download labels SN v2
mySoccerNetDownloader.downloadGames(files=["Labels-cameras.json"], split=["train", "valid", "test"]) # download labels for camera shot

# Download SoccerNet features (fetched from SoccerNet/SN-Features by default, one branch per feature type)
mySoccerNetDownloader.downloadGames(files=["1_ResNET_TF2.npy", "2_ResNET_TF2.npy"], split=["train", "valid", "test"]) # download Features
mySoccerNetDownloader.downloadGames(files=["1_ResNET_TF2_PCA512.npy", "2_ResNET_TF2_PCA512.npy"], split=["train", "valid", "test"]) # download Features reduced with PCA
mySoccerNetDownloader.downloadGames(files=["1_player_boundingbox_maskrcnn.json", "2_player_boundingbox_maskrcnn.json"], split=["train", "valid", "test"]) # download Player Bounding Boxes inferred with MaskRCNN
mySoccerNetDownloader.downloadGames(files=["1_field_calib_ccbv.json", "2_field_calib_ccbv.json"], split=["train", "valid", "test"]) # download Field Calibration inferred with CCBV
mySoccerNetDownloader.downloadGames(files=["1_baidu_soccer_embeddings.npy", "2_baidu_soccer_embeddings.npy"], split=["train", "valid", "test"]) # download Frame Embeddings from https://github.com/baidu-research/vidpress-sports

# You can also fetch any of the above directly with huggingface_hub, e.g.:
#   from huggingface_hub import snapshot_download
#   snapshot_download(repo_id="SoccerNet/SN-Features", repo_type="dataset", revision="resnet-tf2-pca512", local_dir="path/to/soccernet")

# Download SoccerNet Challenge set features (fetched from Hugging Face, no password needed)
mySoccerNetDownloader.downloadGames(files=["1_ResNET_TF2.npy", "2_ResNET_TF2.npy"], split=["challenge"]) # download ResNET Features
mySoccerNetDownloader.downloadGames(files=["1_ResNET_TF2_PCA512.npy", "2_ResNET_TF2_PCA512.npy"], split=["challenge"]) # download ResNET Features reduced with PCA
mySoccerNetDownloader.downloadGames(files=["1_224p.mkv", "2_224p.mkv"], split=["challenge"]) # download 224p Videos - gated, request access at https://huggingface.co/datasets/SoccerNet/SoccerNet_raw_HQ_Challenge
mySoccerNetDownloader.downloadGames(files=["1_720p.mkv", "2_720p.mkv"], split=["challenge"]) # download 720p Videos - gated, same repo as above
mySoccerNetDownloader.downloadGames(files=["1_player_boundingbox_maskrcnn.json", "2_player_boundingbox_maskrcnn.json"], split=["challenge"]) # download Player Bounding Boxes inferred with MaskRCNN
mySoccerNetDownloader.downloadGames(files=["1_field_calib_ccbv.json", "2_field_calib_ccbv.json"], split=["challenge"]) # download Field Calibration inferred with CCBV
mySoccerNetDownloader.downloadGames(files=["1_baidu_soccer_embeddings.npy", "2_baidu_soccer_embeddings.npy"], split=["challenge"]) # download Frame Embeddings from https://github.com/baidu-research/vidpress-sports

# Download development kit per task
mySoccerNetDownloader.downloadDataTask(task="calibration-2023", split=["train", "valid", "test", "challenge"])
mySoccerNetDownloader.downloadDataTask(task="caption-2023", split=["train", "valid", "test", "challenge"])
mySoccerNetDownloader.downloadDataTask(task="jersey-2023", split=["train", "test", "challenge"])
mySoccerNetDownloader.downloadDataTask(task="reid-2023", split=["train", "valid", "test", "challenge"])
mySoccerNetDownloader.downloadDataTask(task="spotting-2023", split=["train", "valid", "test", "challenge"])
mySoccerNetDownloader.downloadDataTask(task="spotting-ball-2023", split=["train", "valid", "test", "challenge"]) # gated on Hugging Face - request access at https://huggingface.co/datasets/SoccerNet/SN-BAS-2023, then `hf auth login`
mySoccerNetDownloader.downloadDataTask(task="tracking-2023", split=["train", "test", "challenge"])
mySoccerNetDownloader.downloadDataTask(task="SpiideoSynLoc", split=["train","valid","test","challenge"]) # 4K Images
mySoccerNetDownloader.downloadDataTask(task="SpiideoSynLoc", split=["train","valid","test","challenge"], version="fullhd") # FullHD Images

# Download SoccerNet videos - fetched from SoccerNet/SoccerNet_raw_HQ (train/valid/test)
# or SoccerNet/SoccerNet_raw_HQ_Challenge (challenge) by default; both gated,
# request access on the dataset page then `hf auth login` (no password needed)
mySoccerNetDownloader.downloadGames(files=["1_224p.mkv", "2_224p.mkv"], split=["train", "valid", "test"]) # download 224p Videos
mySoccerNetDownloader.downloadGames(files=["1_720p.mkv", "2_720p.mkv"], split=["train", "valid", "test"]) # download 720p Videos
mySoccerNetDownloader.downloadRAWVideo(dataset="SoccerNet") # download 720p Videos
mySoccerNetDownloader.downloadRAWVideo(dataset="SoccerNet-Tracking") # download single camera RAW Videos - still EXRCS-only, not yet migrated
mySoccerNetDownloader.downloadGame(files=["1_720p.mkv", "2_720p.mkv"], game="europe_uefa-champions-league/2016-2017/2017-04-18 - 21-45 Real Madrid 4 - 2 Bayern Munich") # download video for a single game

# Fall back to the legacy EXRCS drive for anything not yet migrated (pass source="EXRCSDrive")
mySoccerNetDownloader.password = "Password for videos? (contact the author)"
mySoccerNetDownloader.downloadGames(files=["1_720p.mkv", "2_720p.mkv"], split=["train", "valid", "test"], source="EXRCSDrive")

For SoccerNet in OSL Action Spotting format, use OpenSportsLab/OSL-SoccerNet directly:

from huggingface_hub import snapshot_download
snapshot_download(repo_id="OpenSportsLab/OSL-SoccerNet", repo_type="dataset", revision="ResNET_PCA512", local_dir="path/to/soccernet")

How to read the list Games (Python)

from SoccerNet.utils import getListGames
print(getListGames(split="train")) # return list of games recommended for training
print(getListGames(split="valid")) # return list of games recommended for validation
print(getListGames(split="test")) # return list of games recommended for testing
print(getListGames(split="challenge")) # return list of games recommended for challenge
print(getListGames(split=["train", "valid", "test", "challenge"])) # return list of games for training, validation and testing
print(getListGames(split="v1")) # return list of games from SoccerNetv1 (train/valid/test)

About

No description, website, or topics provided.

Resources

Readme
MIT license
Activity
Custom properties

Stars

53 stars

Watchers

2 watching

Forks

13 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.