From eaae47abe999c1541f68af0fd7e5914b81102e9c Mon Sep 17 00:00:00 2001 From: Atom Scott Date: Mon, 17 Nov 2025 17:50:09 +0900 Subject: [PATCH 01/24] Add dataset landing page for GitHub Pages --- docs/index.html | 323 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 323 insertions(+) create mode 100644 docs/index.html diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..314ccff --- /dev/null +++ b/docs/index.html @@ -0,0 +1,323 @@ + + + + + + + SoccerTrack-v2 Dataset + + + +
+
+

⚽ SoccerTrack-v2

+

Tracking + Event Dataset for Soccer Analysis

+ +
+ +
+
+

Overview

+

+ SoccerTrack-v2 is a comprehensive dataset combining player tracking data with event annotations + for soccer match analysis. The dataset enables reproducible research in sports analytics, + computer vision, and player tracking. +

+
+ +
+

Dataset Statistics

+
+
+ X + Matches +
+
+ X + Tracked Players +
+
+ X + Events Annotated +
+
+ X + Total Frames +
+
+
+ +
+

Key Features

+
+
+

🎯 Multi-Object Tracking

+

High-quality player and ball tracking annotations with unique IDs across frames

+
+
+

📊 Event Data

+

Synchronized event annotations including passes, shots, tackles, and more

+
+
+

🎥 Video Aligned

+

Pixel coordinates and field coordinates aligned with broadcast video

+
+
+

🔄 Fully Reproducible

+

Complete pipeline with preprocessing, feature extraction, and evaluation scripts

+
+
+
+ +
+

Download Dataset

+
+

Choose your preferred platform:

+ +
+
+ +
+

Quick Start

+

Clone the repository and install dependencies:

+
git clone https://github.com/atom/SoccerTrack-v2.git
+cd SoccerTrack-v2
+pip install -r requirements-dev.txt
+ +

Run a basic tracking visualization:

+
python -m src.main command=plot-coordinates-on-video \
+  plot_coordinates_on_video.match_id=117093
+
+ +
+

Reproducing Experiments

+

All experiments are fully reproducible. See the scripts/ directory for:

+
    +
  • Data preprocessing pipelines
  • +
  • Feature extraction scripts
  • +
  • Model training configurations
  • +
  • Evaluation benchmarks
  • +
+

+ Detailed documentation is available in the + README. +

+
+ +
+

Citation

+

If you use this dataset in your research, please cite:

+
@dataset{soccertrack_v2_2025,
+  title={SoccerTrack-v2: A Comprehensive Tracking and Event Dataset},
+  author={Author Name},
+  year={2025},
+  publisher={GitHub},
+  url={https://github.com/atom/SoccerTrack-v2}
+}
+
+ +
+

License

+

This dataset is released under the [LICENSE]. Please see the repository for full license details.

+
+
+ +
+

© 2025 SoccerTrack-v2 Project | Made with ⚽ for the research community

+
+
+ + + From b4ae42205fc281867f809e3d0caf5b0d6ee4ceab Mon Sep 17 00:00:00 2001 From: Atom Scott Date: Mon, 17 Nov 2025 18:06:06 +0900 Subject: [PATCH 02/24] Update landing page with comprehensive SoccerTrack v2 dataset description --- docs/index.html | 212 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 150 insertions(+), 62 deletions(-) diff --git a/docs/index.html b/docs/index.html index 314ccff..28ec5dd 100644 --- a/docs/index.html +++ b/docs/index.html @@ -195,127 +195,215 @@
-

⚽ SoccerTrack-v2

-

Tracking + Event Dataset for Soccer Analysis

+

⚽ SoccerTrack v2

+

A Full-Pitch Multi-View Soccer Dataset for Game State Reconstruction

+

+ 10 full-length panoramic 4K matches with per-frame Game State Reconstruction (GSR) and Ball Action Spotting (BAS) labels for soccer analytics +

+
+

TL;DR

+
    +
  • 10 full matches (~900 minutes) of 4K panoramic full-pitch footage covering entire playing field
  • +
  • Per-frame GSR annotations: 2D pitch coordinates, track IDs, jersey numbers, roles, and team assignments
  • +
  • Ball Action Spotting: 12 action classes (Pass, Drive, Shot, Header, Cross, etc.) with global timestamps
  • +
  • Three benchmark tasks: Multi-Object Tracking (MOT), Game State Reconstruction (GSR), Ball Action Spotting (BAS)
  • +
  • Open access: Available on GitHub and Hugging Face for reproducible research
  • +
+
+
-

Overview

+

What is SoccerTrack v2?

- SoccerTrack-v2 is a comprehensive dataset combining player tracking data with event annotations - for soccer match analysis. The dataset enables reproducible research in sports analytics, - computer vision, and player tracking. + SoccerTrack v2 addresses critical gaps in existing soccer datasets by providing full-pitch panoramic coverage + with comprehensive per-frame annotations. Unlike broadcast-view datasets limited by occlusions and partial field coverage, + our dataset captures the entire pitch using panoramic 4K cameras. +

+

+ The dataset features 10 university-level amateur matches recorded with BePro camera systems, + providing approximately 900 minutes of gameplay. Each frame is annotated with detailed game state information + including player positions in 2D pitch coordinates, persistent track IDs, jersey numbers, player roles + (player/goalkeeper/referee), and team assignments. +

+

+ Beyond tracking, SoccerTrack v2 includes Ball Action Spotting annotations covering 12 action classes + aligned to the video timeline, enabling comprehensive tactical analysis and event detection research.

-
-

Dataset Statistics

-
-
- X - Matches -
-
- X - Tracked Players -
-
- X - Events Annotated -
-
- X - Total Frames -
+
+

Dataset Contents

+ +

Matches & Videos

+
    +
  • 10 university-level amateur matches
  • +
  • Approximately 900 minutes of gameplay
  • +
  • 4K panoramic MP4 videos with full-pitch coverage
  • +
  • Camera setup: BePro Cerberus (2 matches) + 3-camera panoramic systems (8 matches)
  • +
+ +

GSR (Game State Reconstruction) Annotations

+

Per-frame annotations including:

+
    +
  • 2D pitch coordinates (meters) for all players
  • +
  • Unique track IDs persistent throughout the match
  • +
  • Player roles: player, goalkeeper, referee, other
  • +
  • Team assignments: left, right, or null
  • +
  • Jersey numbers: 0–99 or null
  • +
+ +

BAS (Ball Action Spotting) Annotations

+

12 action classes with global timestamps:

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

Key Features

+
+

Tasks & Benchmarks

-

🎯 Multi-Object Tracking

-

High-quality player and ball tracking annotations with unique IDs across frames

+

🎯 Multi-Object Tracking (MOT)

+

Full-pitch player tracking with persistent IDs across long sequences. Evaluate tracking performance, ID maintenance, and re-identification in complex game scenarios.

-

📊 Event Data

-

Synchronized event annotations including passes, shots, tackles, and more

+

🗺️ Game State Reconstruction (GSR)

+

Generate 2D pitch minimaps from panoramic video. Reconstruct complete game state including all player positions, roles, and team assignments for tactical analysis.

-

🎥 Video Aligned

-

Pixel coordinates and field coordinates aligned with broadcast video

+

⚡ Ball Action Spotting (BAS)

+

Detect and classify 12 types of ball actions from video. Event detection task aligned with global timestamps for comprehensive match analysis.

-

🔄 Fully Reproducible

-

Complete pipeline with preprocessing, feature extraction, and evaluation scripts

+

🏆 SoccerTrack Challenge

+

A subset of matches with bounding box annotations is featured in the SoccerTrack Challenge at MMSports 2025.

+
+

Data Format & Folder Structure

+

The dataset is organized as follows:

+
SoccerTrack-v2/
+├── videos/          # Panoramic 4K video files (1-n MP4s per match)
+├── gsr/             # Per-frame GSR annotations (JSON/CSV)
+├── bas/             # Ball Action Spotting event annotations (JSON/CSV)
+└── splits/          # Train/val/test split definitions (match-level)
+ +

GSR Annotation Fields

+
    +
  • frame: Frame number
  • +
  • time: Timestamp in video
  • +
  • player_id: Unique track ID (persistent throughout match)
  • +
  • x, y: 2D pitch coordinates in meters
  • +
  • role: player / goalkeeper / referee / other
  • +
  • team_side: left / right / null
  • +
  • jersey_number: 0–99 / null
  • +
+ +

BAS Annotation Fields

+
    +
  • time: Global timestamp aligned to video timeline
  • +
  • event_class: One of 12 action classes
  • +
  • team: Team performing the action
  • +
  • player_id: Track ID (when available)
  • +
+
+

Download Dataset

-

Quick Start

-

Clone the repository and install dependencies:

-
git clone https://github.com/atom/SoccerTrack-v2.git
+                

Getting Started

+ +

1. Download the Dataset

+

Choose your preferred platform (GitHub or Hugging Face) and download the dataset files.

+ +

2. Clone the Repository

+
git clone https://github.com/AtomScott/SoccerTrack-v2.git
 cd SoccerTrack-v2
 pip install -r requirements-dev.txt
-

Run a basic tracking visualization:

+

3. Visualize Tracking Data

python -m src.main command=plot-coordinates-on-video \
   plot_coordinates_on_video.match_id=117093
+ +

+ See the scripts/ directory for data preprocessing pipelines, feature extraction, + model training configurations, and evaluation benchmarks. All experiments are fully reproducible. +

-
-

Reproducing Experiments

-

All experiments are fully reproducible. See the scripts/ directory for:

+
+

License & Terms of Use

+

+ SoccerTrack v2 is released for research purposes only. The dataset has been collected + with approval from the university ethics board, and all data has been de-identified. +

    -
  • Data preprocessing pipelines
  • -
  • Feature extraction scripts
  • -
  • Model training configurations
  • -
  • Evaluation benchmarks
  • +
  • No player names are included; identification is jersey-number based only
  • +
  • All matches feature university-level amateur players with informed consent
  • +
  • Commercial use requires separate licensing agreement

- Detailed documentation is available in the - README. + Please see the LICENSE + file for full details.

Citation

If you use this dataset in your research, please cite:

-
@dataset{soccertrack_v2_2025,
-  title={SoccerTrack-v2: A Comprehensive Tracking and Event Dataset},
-  author={Author Name},
+                
@article{soccertrack_v2_2025,
+  title={SoccerTrack v2: A Full-Pitch Multi-View Soccer Dataset for Game State Reconstruction},
+  author={Scott, Atom and others},
+  journal={arXiv preprint arXiv:2508.01802},
   year={2025},
-  publisher={GitHub},
-  url={https://github.com/atom/SoccerTrack-v2}
+  url={https://arxiv.org/abs/2508.01802}
 }
-
-

License

-

This dataset is released under the [LICENSE]. Please see the repository for full license details.

+
+

Acknowledgements

+

+ This work was supported by JST SPRING (Grant Number JPMJSP2108) and JSPS KAKENHI. + We thank all participating teams and universities for their cooperation in data collection. +

-

© 2025 SoccerTrack-v2 Project | Made with ⚽ for the research community

+

© 2025 SoccerTrack v2 Project | Made with ⚽ for the research community

+

+ arXiv:2508.01802 +

From 20347f67431db0edf4e3ded53d164e3cd259d75b Mon Sep 17 00:00:00 2001 From: Atom Scott Date: Mon, 17 Nov 2025 18:15:56 +0900 Subject: [PATCH 03/24] Update landing page with SoccerTrack v2 content: fix STC link, add Kaggle, add placeholder visuals --- docs/index.html | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/docs/index.html b/docs/index.html index 28ec5dd..344223b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -204,7 +204,8 @@

⚽ SoccerTrack v2

📄 Paper (arXiv) 📦 GitHub 🤗 Hugging Face - 🏆 Challenge (MMSports 2025) + 📊 Kaggle + 🏆 Challenge (STC 2025) @@ -220,6 +221,37 @@

TL;DR

+
+

Dataset Visuals

+ +

Panoramic 4K Coverage

+
+
+ Panoramic view - Day match +

Daytime Match - Full Pitch Coverage

+
+
+ Panoramic view - Night match +

Night Match - Stadium Conditions

+
+
+ +

GSR Annotations Example

+
+ GSR minimap with player positions +

2D Pitch Minimap with Player Positions & Track IDs

+
+ +

Demo Video

+
+ +

Sample Tracking Visualization with GSR Overlay

+
+
+

What is SoccerTrack v2?

@@ -295,7 +327,7 @@

⚡ Ball Action Spotting (BAS)

🏆 SoccerTrack Challenge

-

A subset of matches with bounding box annotations is featured in the SoccerTrack Challenge at MMSports 2025.

+

A subset of matches with bounding box annotations is featured in the SoccerTrack Challenge 2025.

@@ -334,8 +366,9 @@

Download Dataset

@@ -344,7 +377,7 @@

Download Dataset

Getting Started

1. Download the Dataset

-

Choose your preferred platform (GitHub or Hugging Face) and download the dataset files.

+

Choose your preferred platform (GitHub, Hugging Face, or Kaggle) and download the dataset files.

2. Clone the Repository

git clone https://github.com/AtomScott/SoccerTrack-v2.git

From de540b6affebc021554017a3d91c90fbaf24407a Mon Sep 17 00:00:00 2001
From: Atom Scott 
Date: Mon, 17 Nov 2025 18:21:03 +0900
Subject: [PATCH 04/24] Update landing page: Playbox color scheme
 (orange/green), Kaggle + Google Drive downloads, Japanese version with
 language switcher

---
 docs/index-ja.html | 468 +++++++++++++++++++++++++++++++++++++++++++++
 docs/index.html    |  86 ++++++---
 2 files changed, 526 insertions(+), 28 deletions(-)
 create mode 100644 docs/index-ja.html

diff --git a/docs/index-ja.html b/docs/index-ja.html
new file mode 100644
index 0000000..16c5337
--- /dev/null
+++ b/docs/index-ja.html
@@ -0,0 +1,468 @@
+
+
+
+    
+    
+    
+    SoccerTrack-v2 Dataset
+    
+
+
+    
+
+ +

⚽ SoccerTrack v2

+

ゲーム状態再構築のためのフルピッチ・マルチビューサッカーデータセット

+

+ フレーム単位のゲーム状態再構築(GSR)およびボールアクション検出(BAS)ラベル付き、10試合分のパノラマ4K映像(フルマッチ) +

+ +
+ +
+
+

概要

+
    +
  • 10試合分のフルマッチ(約900分)の4Kパノラマ映像で、ピッチ全体をカバー
  • +
  • フレーム単位のGSRアノテーション:2Dピッチ座標、トラックID、背番号、役割、チーム割り当て
  • +
  • ボールアクション検出:12種類のアクションクラス(パス、ドリブル、シュート、ヘディング、クロスなど)にグローバルタイムスタンプ付き
  • +
  • 3つのベンチマークタスク:Multi-Object Tracking(MOT)、Game State Reconstruction(GSR)、Ball Action Spotting(BAS)
  • +
  • オープンアクセス:GitHubとHugging Faceで公開、再現可能な研究を実現
  • +
+
+ +
+

データセット画像

+ +

パノラマ4K映像

+
+
+ パノラマビュー - 昼の試合 +

昼の試合 - フルピッチカバレッジ

+
+
+ パノラマビュー - 夜の試合 +

夜の試合 - スタジアム環境

+
+
+ +

GSRアノテーション例

+
+ 選手位置付きGSRミニマップ +

2Dピッチミニマップ with 選手位置 & トラックID

+
+ +

デモ動画

+
+ +

GSRオーバーレイ付きトラッキング可視化サンプル

+
+
+ +
+

SoccerTrack v2とは?

+

+ SoccerTrack v2は、フルピッチのパノラマカバレッジと包括的なフレーム単位アノテーションを提供することで、既存のサッカーデータセットの重要なギャップに対処します。オクルージョンや部分的なフィールドカバレッジに制限される放送視点のデータセットとは異なり、本データセットはパノラマ4Kカメラを使用してピッチ全体を捉えています。 +

+

+ 本データセットには、BeProカメラシステムで記録された大学レベルのアマチュア試合10試合分が含まれ、約900分のゲームプレイを提供します。各フレームには、2Dピッチ座標での選手位置、永続的なトラックID、背番号、選手の役割(プレイヤー/ゴールキーパー/審判)、チーム割り当てなどの詳細なゲーム状態情報がアノテーションされています。 +

+

+ トラッキングに加えて、SoccerTrack v2には動画タイムラインに整合した12種類のアクションクラスをカバーするボールアクション検出アノテーションが含まれており、包括的な戦術分析とイベント検出研究を可能にします。 +

+
+ +
+

Dataset Contents

+ +

Matches & Videos

+
    +
  • 10 university-level amateur matches
  • +
  • Approximately 900 minutes of gameplay
  • +
  • 4K panoramic MP4 videos with full-pitch coverage
  • +
  • Camera setup: BePro Cerberus (2 matches) + 3-camera panoramic systems (8 matches)
  • +
+ +

GSR (Game State Reconstruction) Annotations

+

Per-frame annotations including:

+
    +
  • 2D pitch coordinates (meters) for all players
  • +
  • Unique track IDs persistent throughout the match
  • +
  • Player roles: player, goalkeeper, referee, other
  • +
  • Team assignments: left, right, or null
  • +
  • Jersey numbers: 0–99 or null
  • +
+ +

BAS (Ball Action Spotting) Annotations

+

12 action classes with global timestamps:

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

Tasks & Benchmarks

+
+
+

🎯 Multi-Object Tracking (MOT)

+

Full-pitch player tracking with persistent IDs across long sequences. Evaluate tracking performance, ID maintenance, and re-identification in complex game scenarios.

+
+
+

🗺️ Game State Reconstruction (GSR)

+

Generate 2D pitch minimaps from panoramic video. Reconstruct complete game state including all player positions, roles, and team assignments for tactical analysis.

+
+
+

⚡ Ball Action Spotting (BAS)

+

Detect and classify 12 types of ball actions from video. Event detection task aligned with global timestamps for comprehensive match analysis.

+
+
+

🏆 SoccerTrack Challenge

+

A subset of matches with bounding box annotations is featured in the SoccerTrack Challenge 2025.

+
+
+
+ +
+

Data Format & Folder Structure

+

The dataset is organized as follows:

+
SoccerTrack-v2/
+├── videos/          # Panoramic 4K video files (1-n MP4s per match)
+├── gsr/             # Per-frame GSR annotations (JSON/CSV)
+├── bas/             # Ball Action Spotting event annotations (JSON/CSV)
+└── splits/          # Train/val/test split definitions (match-level)
+ +

GSR Annotation Fields

+
    +
  • frame: Frame number
  • +
  • time: Timestamp in video
  • +
  • player_id: Unique track ID (persistent throughout match)
  • +
  • x, y: 2D pitch coordinates in meters
  • +
  • role: player / goalkeeper / referee / other
  • +
  • team_side: left / right / null
  • +
  • jersey_number: 0–99 / null
  • +
+ +

BAS Annotation Fields

+
    +
  • time: Global timestamp aligned to video timeline
  • +
  • event_class: One of 12 action classes
  • +
  • team: Team performing the action
  • +
  • player_id: Track ID (when available)
  • +
+
+ +
+

データセットのダウンロード

+
+

お好みのプラットフォームを選択してください:

+ +
+
+ +
+

Getting Started

+ +

1. Download the Dataset

+

Choose your preferred platform (GitHub, Hugging Face, or Kaggle) and download the dataset files.

+ +

2. Clone the Repository

+
git clone https://github.com/AtomScott/SoccerTrack-v2.git
+cd SoccerTrack-v2
+pip install -r requirements-dev.txt
+ +

3. Visualize Tracking Data

+
python -m src.main command=plot-coordinates-on-video \
+  plot_coordinates_on_video.match_id=117093
+ +

+ See the scripts/ directory for data preprocessing pipelines, feature extraction, + model training configurations, and evaluation benchmarks. All experiments are fully reproducible. +

+
+ +
+

License & Terms of Use

+

+ SoccerTrack v2 is released for research purposes only. The dataset has been collected + with approval from the university ethics board, and all data has been de-identified. +

+
    +
  • No player names are included; identification is jersey-number based only
  • +
  • All matches feature university-level amateur players with informed consent
  • +
  • Commercial use requires separate licensing agreement
  • +
+

+ Please see the LICENSE + file for full details. +

+
+ +
+

引用

+

本データセットを研究で使用する場合は、以下を引用してください:

+
@article{soccertrack_v2_2025,
+  title={SoccerTrack v2: A Full-Pitch Multi-View Soccer Dataset for Game State Reconstruction},
+  author={Scott, Atom and others},
+  journal={arXiv preprint arXiv:2508.01802},
+  year={2025},
+  url={https://arxiv.org/abs/2508.01802}
+}
+
+ +
+

謝辞

+

+ 本研究は、JST SPRING(助成番号 JPMJSP2108)およびJSPS科研費の支援を受けて実施されました。 + データ収集にご協力いただいたすべての参加チームおよび大学に感謝いたします。 +

+
+
+ +
+

© 2025 SoccerTrack v2 Project | サッカー研究コミュニティのために ⚽

+

+ arXiv:2508.01802 +

+
+
+ + + diff --git a/docs/index.html b/docs/index.html index 344223b..f2ca6ce 100644 --- a/docs/index.html +++ b/docs/index.html @@ -16,7 +16,7 @@ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; line-height: 1.6; color: #333; - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + background: linear-gradient(135deg, #1a1a1a 0%, #0a0a0a 100%); min-height: 100vh; padding: 2rem; } @@ -31,7 +31,7 @@ } header { - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + background: linear-gradient(135deg, #ff6b35 0%, #10b981 100%); color: white; padding: 3rem 2rem; text-align: center; @@ -57,10 +57,10 @@ } h2 { - color: #667eea; + color: #ff6b35; margin-bottom: 1rem; font-size: 1.8rem; - border-bottom: 2px solid #667eea; + border-bottom: 2px solid #ff6b35; padding-bottom: 0.5rem; } @@ -76,7 +76,7 @@ display: inline-block; padding: 0.5rem 1rem; background: white; - color: #667eea; + color: #ff6b35; border-radius: 20px; text-decoration: none; font-weight: 600; @@ -85,7 +85,7 @@ .badge:hover { transform: translateY(-2px); - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); + box-shadow: 0 4px 12px rgba(255, 107, 53, 0.3); } .download-section { @@ -98,7 +98,7 @@ .btn { display: inline-block; padding: 1rem 2rem; - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + background: linear-gradient(135deg, #ff6b35 0%, #10b981 100%); color: white; text-decoration: none; border-radius: 8px; @@ -109,7 +109,7 @@ .btn:hover { transform: translateY(-2px); - box-shadow: 0 8px 20px rgba(102, 126, 234, 0.4); + box-shadow: 0 8px 20px rgba(255, 107, 53, 0.4); } .btn-secondary { @@ -127,11 +127,11 @@ background: #f8f9fa; padding: 1.5rem; border-radius: 8px; - border-left: 4px solid #667eea; + border-left: 4px solid #ff6b35; } .feature h3 { - color: #667eea; + color: #ff6b35; margin-bottom: 0.5rem; } @@ -175,7 +175,7 @@ .stat { text-align: center; padding: 1.5rem; - background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + background: linear-gradient(135deg, #ff6b35 0%, #10b981 100%); color: white; border-radius: 8px; } @@ -190,11 +190,41 @@ font-size: 0.9rem; opacity: 0.9; } + + .lang-switcher { + position: absolute; + top: 1rem; + right: 1rem; + z-index: 100; + } + + .lang-btn { + background: rgba(255, 255, 255, 0.2); + color: white; + border: 2px solid white; + padding: 0.5rem 1rem; + margin: 0 0.25rem; + border-radius: 20px; + cursor: pointer; + font-weight: 600; + text-decoration: none; + display: inline-block; + transition: all 0.2s; + } + + .lang-btn:hover, .lang-btn.active { + background: white; + color: #ff6b35; + }
-
+
+

⚽ SoccerTrack v2

A Full-Pitch Multi-View Soccer Dataset for Game State Reconstruction

@@ -224,10 +254,10 @@

TL;DR

Dataset Visuals

-

Panoramic 4K Coverage

+

Panoramic 4K Coverage

- Panoramic view - Day match + Panoramic view - Day match

Daytime Match - Full Pitch Coverage

@@ -236,13 +266,13 @@

Panoramic 4

-

GSR Annotations Example

+

GSR Annotations Example

GSR minimap with player positions

2D Pitch Minimap with Player Positions & Track IDs

-

Demo Video

+

Demo Video

@@ -341,7 +371,7 @@

Data Format & Folder Structure

├── bas/ # Ball Action Spotting event annotations (JSON/CSV) └── splits/ # Train/val/test split definitions (match-level)
-

GSR Annotation Fields

+

GSR Annotation Fields

  • frame: Frame number
  • time: Timestamp in video
  • @@ -352,7 +382,7 @@

    GSR Annot
  • jersey_number: 0–99 / null
-

BAS Annotation Fields

+

BAS Annotation Fields

  • time: Global timestamp aligned to video timeline
  • event_class: One of 12 action classes
  • @@ -366,9 +396,9 @@

    Download Dataset

    @@ -376,15 +406,15 @@

    Download Dataset

    Getting Started

    -

    1. Download the Dataset

    +

    1. Download the Dataset

    Choose your preferred platform (GitHub, Hugging Face, or Kaggle) and download the dataset files.

    -

    2. Clone the Repository

    +

    2. Clone the Repository

    git clone https://github.com/AtomScott/SoccerTrack-v2.git
     cd SoccerTrack-v2
     pip install -r requirements-dev.txt
    -

    3. Visualize Tracking Data

    +

    3. Visualize Tracking Data

    python -m src.main command=plot-coordinates-on-video \
       plot_coordinates_on_video.match_id=117093
    @@ -406,7 +436,7 @@

    License & Terms of Use

  • Commercial use requires separate licensing agreement

- Please see the LICENSE + Please see the LICENSE file for full details.

From b9871ae4919413efdcae8c85810acb34cf6ab038 Mon Sep 17 00:00:00 2001 From: Atom Scott Date: Mon, 17 Nov 2025 20:54:34 +0900 Subject: [PATCH 05/24] Fix Playbox color scheme: dark theme with separate orange/green accents (not mixed gradients) --- docs/index-ja.html | 21 +++++++++++++++------ docs/index.html | 21 +++++++++++++++------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/docs/index-ja.html b/docs/index-ja.html index 16c5337..d599fe1 100644 --- a/docs/index-ja.html +++ b/docs/index-ja.html @@ -24,17 +24,18 @@ .container { max-width: 1000px; margin: 0 auto; - background: white; + background: #ffffff; border-radius: 12px; - box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); + box-shadow: 0 20px 60px rgba(255, 107, 53, 0.2); overflow: hidden; } header { - background: linear-gradient(135deg, #ff6b35 0%, #10b981 100%); + background: #1a1a1a; color: white; padding: 3rem 2rem; text-align: center; + border-bottom: 3px solid #ff6b35; } h1 { @@ -98,16 +99,19 @@ .btn { display: inline-block; padding: 1rem 2rem; - background: linear-gradient(135deg, #ff6b35 0%, #10b981 100%); + background: #ff6b35; color: white; text-decoration: none; border-radius: 8px; font-weight: 600; - transition: transform 0.2s; + transition: all 0.3s; margin: 0.5rem; + border: 2px solid #ff6b35; } .btn:hover { + background: transparent; + color: #ff6b35; transform: translateY(-2px); box-shadow: 0 8px 20px rgba(255, 107, 53, 0.4); } @@ -175,9 +179,14 @@ .stat { text-align: center; padding: 1.5rem; - background: linear-gradient(135deg, #ff6b35 0%, #10b981 100%); + background: #2d2d2d; color: white; border-radius: 8px; + border: 2px solid #ff6b35; + } + + .stat:nth-child(even) { + border-color: #10b981; } .stat-number { diff --git a/docs/index.html b/docs/index.html index f2ca6ce..87b059a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -24,17 +24,18 @@ .container { max-width: 1000px; margin: 0 auto; - background: white; + background: #ffffff; border-radius: 12px; - box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); + box-shadow: 0 20px 60px rgba(255, 107, 53, 0.2); overflow: hidden; } header { - background: linear-gradient(135deg, #ff6b35 0%, #10b981 100%); + background: #1a1a1a; color: white; padding: 3rem 2rem; text-align: center; + border-bottom: 3px solid #ff6b35; } h1 { @@ -98,16 +99,19 @@ .btn { display: inline-block; padding: 1rem 2rem; - background: linear-gradient(135deg, #ff6b35 0%, #10b981 100%); + background: #ff6b35; color: white; text-decoration: none; border-radius: 8px; font-weight: 600; - transition: transform 0.2s; + transition: all 0.3s; margin: 0.5rem; + border: 2px solid #ff6b35; } .btn:hover { + background: transparent; + color: #ff6b35; transform: translateY(-2px); box-shadow: 0 8px 20px rgba(255, 107, 53, 0.4); } @@ -175,9 +179,14 @@ .stat { text-align: center; padding: 1.5rem; - background: linear-gradient(135deg, #ff6b35 0%, #10b981 100%); + background: #2d2d2d; color: white; border-radius: 8px; + border: 2px solid #ff6b35; + } + + .stat:nth-child(even) { + border-color: #10b981; } .stat-number { From 1c0eca93a2beef0bb6b7afae7b690bb3c3491f84 Mon Sep 17 00:00:00 2001 From: Atom Scott Date: Mon, 17 Nov 2025 20:55:36 +0900 Subject: [PATCH 06/24] Reorganize Tasks section: use subsections instead of cards (GSR, BAS, MOT) --- docs/index-ja.html | 36 +++++++++++++++++------------------- docs/index.html | 39 +++++++++++++++++++++------------------ 2 files changed, 38 insertions(+), 37 deletions(-) diff --git a/docs/index-ja.html b/docs/index-ja.html index d599fe1..a73e24f 100644 --- a/docs/index-ja.html +++ b/docs/index-ja.html @@ -344,25 +344,23 @@

BAS (Ball
-

Tasks & Benchmarks

-
-
-

🎯 Multi-Object Tracking (MOT)

-

Full-pitch player tracking with persistent IDs across long sequences. Evaluate tracking performance, ID maintenance, and re-identification in complex game scenarios.

-
-
-

🗺️ Game State Reconstruction (GSR)

-

Generate 2D pitch minimaps from panoramic video. Reconstruct complete game state including all player positions, roles, and team assignments for tactical analysis.

-
-
-

⚡ Ball Action Spotting (BAS)

-

Detect and classify 12 types of ball actions from video. Event detection task aligned with global timestamps for comprehensive match analysis.

-
-
-

🏆 SoccerTrack Challenge

-

A subset of matches with bounding box annotations is featured in the SoccerTrack Challenge 2025.

-
-
+

タスク & ベンチマーク

+ +

ゲーム状態再構築(GSR)

+

+ パノラマ映像から2Dピッチミニマップを生成します。戦術分析のため、すべての選手位置、役割、チーム割り当てを含む完全なゲーム状態を再構築します。このタスクでは、映像フレームから標準化されたピッチ座標へ選手を正確にマッピングし、アイデンティティと役割情報を維持する能力を評価します。 +

+ +

ボールアクション検出(BAS)

+

+ 映像から12種類のボールアクションを検出・分類します。包括的な試合分析のため、グローバルタイムスタンプに整合したイベント検出タスクです。アクションには、パス、ドリブル、シュート、ヘディング、ハイパス、アウト、クロス、スローイン、ボールプレイヤーブロック、プレイヤーサクセスフルタックル、フリーキック、ゴールが含まれます。 +

+ +

マルチオブジェクトトラッキング(SoccerTrack Challenge)

+

+ 長いシーケンスにわたって永続的なIDを持つフルピッチの選手トラッキング。複雑なゲームシナリオにおけるトラッキング性能、ID維持、再識別を評価します。バウンディングボックスアノテーション付きの一部の試合は、 + SoccerTrack Challenge 2025で使用されています。 +

diff --git a/docs/index.html b/docs/index.html index 87b059a..dc45d96 100644 --- a/docs/index.html +++ b/docs/index.html @@ -351,24 +351,27 @@

BAS (Ball

Tasks & Benchmarks

-
-
-

🎯 Multi-Object Tracking (MOT)

-

Full-pitch player tracking with persistent IDs across long sequences. Evaluate tracking performance, ID maintenance, and re-identification in complex game scenarios.

-
-
-

🗺️ Game State Reconstruction (GSR)

-

Generate 2D pitch minimaps from panoramic video. Reconstruct complete game state including all player positions, roles, and team assignments for tactical analysis.

-
-
-

⚡ Ball Action Spotting (BAS)

-

Detect and classify 12 types of ball actions from video. Event detection task aligned with global timestamps for comprehensive match analysis.

-
-
-

🏆 SoccerTrack Challenge

-

A subset of matches with bounding box annotations is featured in the SoccerTrack Challenge 2025.

-
-
+ +

Game State Reconstruction (GSR)

+

+ Generate 2D pitch minimaps from panoramic video. Reconstruct complete game state including all player positions, + roles, and team assignments for tactical analysis. This task evaluates the ability to accurately map players + from video frames to standardized pitch coordinates while maintaining identity and role information. +

+ +

Ball Action Spotting (BAS)

+

+ Detect and classify 12 types of ball actions from video. Event detection task aligned with global timestamps + for comprehensive match analysis. Actions include Pass, Drive, Shot, Header, High Pass, Out, Cross, Throw In, + Ball Player Block, Player Successful Tackle, Free Kick, and Goal. +

+ +

Multi-Object Tracking (SoccerTrack Challenge)

+

+ Full-pitch player tracking with persistent IDs across long sequences. Evaluate tracking performance, ID maintenance, + and re-identification in complex game scenarios. A subset of matches with bounding box annotations is featured in the + SoccerTrack Challenge 2025. +

From d9e2f7e03e6f876f11565fbb7c5605f76b696200 Mon Sep 17 00:00:00 2001 From: Atom Scott Date: Mon, 17 Nov 2025 21:02:50 +0900 Subject: [PATCH 07/24] Switch to green base color scheme, add task visualizations with SoccerNet citations, update license to MIT, add Playbox plug --- docs/index-ja.html | 97 ++++++++++++++++++++++++++++------------------ docs/index.html | 90 ++++++++++++++++++++++++++---------------- 2 files changed, 116 insertions(+), 71 deletions(-) diff --git a/docs/index-ja.html b/docs/index-ja.html index a73e24f..9666b04 100644 --- a/docs/index-ja.html +++ b/docs/index-ja.html @@ -26,7 +26,7 @@ margin: 0 auto; background: #ffffff; border-radius: 12px; - box-shadow: 0 20px 60px rgba(255, 107, 53, 0.2); + box-shadow: 0 20px 60px rgba(16, 185, 129, 0.2); overflow: hidden; } @@ -35,7 +35,7 @@ color: white; padding: 3rem 2rem; text-align: center; - border-bottom: 3px solid #ff6b35; + border-bottom: 3px solid #10b981; } h1 { @@ -58,10 +58,10 @@ } h2 { - color: #ff6b35; + color: #10b981; margin-bottom: 1rem; font-size: 1.8rem; - border-bottom: 2px solid #ff6b35; + border-bottom: 2px solid #10b981; padding-bottom: 0.5rem; } @@ -77,7 +77,7 @@ display: inline-block; padding: 0.5rem 1rem; background: white; - color: #ff6b35; + color: #10b981; border-radius: 20px; text-decoration: none; font-weight: 600; @@ -86,7 +86,7 @@ .badge:hover { transform: translateY(-2px); - box-shadow: 0 4px 12px rgba(255, 107, 53, 0.3); + box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3); } .download-section { @@ -99,19 +99,19 @@ .btn { display: inline-block; padding: 1rem 2rem; - background: #ff6b35; + background: #10b981; color: white; text-decoration: none; border-radius: 8px; font-weight: 600; transition: all 0.3s; margin: 0.5rem; - border: 2px solid #ff6b35; + border: 2px solid #10b981; } .btn:hover { background: transparent; - color: #ff6b35; + color: #10b981; transform: translateY(-2px); box-shadow: 0 8px 20px rgba(255, 107, 53, 0.4); } @@ -131,11 +131,11 @@ background: #f8f9fa; padding: 1.5rem; border-radius: 8px; - border-left: 4px solid #ff6b35; + border-left: 4px solid #10b981; } .feature h3 { - color: #ff6b35; + color: #10b981; margin-bottom: 0.5rem; } @@ -182,11 +182,11 @@ background: #2d2d2d; color: white; border-radius: 8px; - border: 2px solid #ff6b35; + border: 2px solid #10b981; } .stat:nth-child(even) { - border-color: #10b981; + border-color: #ff6b35; } .stat-number { @@ -223,7 +223,7 @@ .lang-btn:hover, .lang-btn.active { background: white; - color: #ff6b35; + color: #10b981; } @@ -263,10 +263,10 @@

概要

データセット画像

-

パノラマ4K映像

+

パノラマ4K映像

- パノラマビュー - 昼の試合 + パノラマビュー - 昼の試合

昼の試合 - フルピッチカバレッジ

@@ -275,13 +275,13 @@

パノラ

-

GSRアノテーション例

+

GSRアノテーション例

選手位置付きGSRミニマップ

2Dピッチミニマップ with 選手位置 & トラックID

-

デモ動画

+

デモ動画

Dataset Contents

-

Matches & Videos

+

Matches & Videos

  • 10 university-level amateur matches
  • Approximately 900 minutes of gameplay
  • @@ -315,7 +315,7 @@

    Matches &
  • Camera setup: BePro Cerberus (2 matches) + 3-camera panoramic systems (8 matches)
-

GSR (Game State Reconstruction) Annotations

+

GSR (Game State Reconstruction) Annotations

Per-frame annotations including:

  • 2D pitch coordinates (meters) for all players
  • @@ -325,7 +325,7 @@

    GSR (Game
  • Jersey numbers: 0–99 or null
-

BAS (Ball Action Spotting) Annotations

+

BAS (Ball Action Spotting) Annotations

12 action classes with global timestamps:

• Pass
@@ -346,20 +346,38 @@

BAS (Ball

タスク & ベンチマーク

-

ゲーム状態再構築(GSR)

+

ゲーム状態再構築(GSR)

+
+ GSRタスク可視化 +

GSR: パノラマ映像 → 選手役割付き2Dピッチ座標

+

パノラマ映像から2Dピッチミニマップを生成します。戦術分析のため、すべての選手位置、役割、チーム割り当てを含む完全なゲーム状態を再構築します。このタスクでは、映像フレームから標準化されたピッチ座標へ選手を正確にマッピングし、アイデンティティと役割情報を維持する能力を評価します。

+

+ SoccerNet GSR Challengeにインスパイアされています +

-

ボールアクション検出(BAS)

+

ボールアクション検出(BAS)

+
+ BASタスク可視化 +

BAS: 12種類のボールイベントクラスを持つ時系列アクション検出

+

映像から12種類のボールアクションを検出・分類します。包括的な試合分析のため、グローバルタイムスタンプに整合したイベント検出タスクです。アクションには、パス、ドリブル、シュート、ヘディング、ハイパス、アウト、クロス、スローイン、ボールプレイヤーブロック、プレイヤーサクセスフルタックル、フリーキック、ゴールが含まれます。

+

+ SoccerNet BAS Challengeにインスパイアされています +

-

マルチオブジェクトトラッキング(SoccerTrack Challenge)

+

マルチオブジェクトトラッキング(SoccerTrack Challenge)

+
+ MOTタスク可視化 +

MOT: バウンディングボックスとIDを用いた永続的な選手トラッキング

+

長いシーケンスにわたって永続的なIDを持つフルピッチの選手トラッキング。複雑なゲームシナリオにおけるトラッキング性能、ID維持、再識別を評価します。バウンディングボックスアノテーション付きの一部の試合は、 - SoccerTrack Challenge 2025で使用されています。 + SoccerTrack Challenge 2025で使用されています。

@@ -372,7 +390,7 @@

Data Format & Folder Structure

├── bas/ # Ball Action Spotting event annotations (JSON/CSV) └── splits/ # Train/val/test split definitions (match-level) -

GSR Annotation Fields

+

GSR Annotation Fields

  • frame: Frame number
  • time: Timestamp in video
  • @@ -383,7 +401,7 @@

    GSR Annot
  • jersey_number: 0–99 / null
-

BAS Annotation Fields

+

BAS Annotation Fields

  • time: Global timestamp aligned to video timeline
  • event_class: One of 12 action classes
  • @@ -407,15 +425,15 @@

    データセットのダウンロード

    Getting Started

    -

    1. Download the Dataset

    +

    1. Download the Dataset

    Choose your preferred platform (GitHub, Hugging Face, or Kaggle) and download the dataset files.

    -

    2. Clone the Repository

    +

    2. Clone the Repository

    git clone https://github.com/AtomScott/SoccerTrack-v2.git
     cd SoccerTrack-v2
     pip install -r requirements-dev.txt
    -

    3. Visualize Tracking Data

    +

    3. Visualize Tracking Data

    python -m src.main command=plot-coordinates-on-video \
       plot_coordinates_on_video.match_id=117093
    @@ -426,19 +444,17 @@

    3. Visual

    -

    License & Terms of Use

    +

    ライセンス & 利用規約

    - SoccerTrack v2 is released for research purposes only. The dataset has been collected - with approval from the university ethics board, and all data has been de-identified. + SoccerTrack v2はMITライセンスの下で公開されています。本データセットは大学倫理委員会の承認を得て収集され、すべてのデータは匿名化されています。

      -
    • No player names are included; identification is jersey-number based only
    • -
    • All matches feature university-level amateur players with informed consent
    • -
    • Commercial use requires separate licensing agreement
    • +
    • 選手名は含まれておらず、背番号ベースの識別のみです
    • +
    • すべての試合は、インフォームドコンセントを得た大学レベルのアマチュア選手によるものです
    • +
    • 学術研究および商用利用のいずれも自由に利用可能です

    - Please see the LICENSE - file for full details. + 詳細についてはLICENSEファイルをご覧ください。

    @@ -460,6 +476,11 @@

    謝辞

    本研究は、JST SPRING(助成番号 JPMJSP2108)およびJSPS科研費の支援を受けて実施されました。 データ収集にご協力いただいたすべての参加チームおよび大学に感謝いたします。

    +

    + データ収集は、Playboxにより実現されました。 + Playboxは、最先端のスポーツ映像解析技術で人の動きを計算可能にする大学発スタートアップです。 + サッカーやその他のスポーツ向けの自動カメラシステムとAI駆動の解析ツールをぜひご覧ください!⚽ +

diff --git a/docs/index.html b/docs/index.html index dc45d96..36eb428 100644 --- a/docs/index.html +++ b/docs/index.html @@ -26,7 +26,7 @@ margin: 0 auto; background: #ffffff; border-radius: 12px; - box-shadow: 0 20px 60px rgba(255, 107, 53, 0.2); + box-shadow: 0 20px 60px rgba(16, 185, 129, 0.2); overflow: hidden; } @@ -35,7 +35,7 @@ color: white; padding: 3rem 2rem; text-align: center; - border-bottom: 3px solid #ff6b35; + border-bottom: 3px solid #10b981; } h1 { @@ -58,10 +58,10 @@ } h2 { - color: #ff6b35; + color: #10b981; margin-bottom: 1rem; font-size: 1.8rem; - border-bottom: 2px solid #ff6b35; + border-bottom: 2px solid #10b981; padding-bottom: 0.5rem; } @@ -77,7 +77,7 @@ display: inline-block; padding: 0.5rem 1rem; background: white; - color: #ff6b35; + color: #10b981; border-radius: 20px; text-decoration: none; font-weight: 600; @@ -86,7 +86,7 @@ .badge:hover { transform: translateY(-2px); - box-shadow: 0 4px 12px rgba(255, 107, 53, 0.3); + box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3); } .download-section { @@ -99,21 +99,21 @@ .btn { display: inline-block; padding: 1rem 2rem; - background: #ff6b35; + background: #10b981; color: white; text-decoration: none; border-radius: 8px; font-weight: 600; transition: all 0.3s; margin: 0.5rem; - border: 2px solid #ff6b35; + border: 2px solid #10b981; } .btn:hover { background: transparent; - color: #ff6b35; + color: #10b981; transform: translateY(-2px); - box-shadow: 0 8px 20px rgba(255, 107, 53, 0.4); + box-shadow: 0 8px 20px rgba(16, 185, 129, 0.4); } .btn-secondary { @@ -131,11 +131,11 @@ background: #f8f9fa; padding: 1.5rem; border-radius: 8px; - border-left: 4px solid #ff6b35; + border-left: 4px solid #10b981; } .feature h3 { - color: #ff6b35; + color: #10b981; margin-bottom: 0.5rem; } @@ -182,11 +182,11 @@ background: #2d2d2d; color: white; border-radius: 8px; - border: 2px solid #ff6b35; + border: 2px solid #10b981; } .stat:nth-child(even) { - border-color: #10b981; + border-color: #ff6b35; } .stat-number { @@ -223,7 +223,7 @@ .lang-btn:hover, .lang-btn.active { background: white; - color: #ff6b35; + color: #10b981; } @@ -263,7 +263,7 @@

TL;DR

Dataset Visuals

-

Panoramic 4K Coverage

+

Panoramic 4K Coverage

Panoramic view - Day match @@ -275,13 +275,13 @@

Panoramic 4

-

GSR Annotations Example

+

GSR Annotations Example

GSR minimap with player positions

2D Pitch Minimap with Player Positions & Track IDs

-

Demo Video

+

Demo Video

Dataset Contents

-

Matches & Videos

+

Matches & Videos

  • 10 university-level amateur matches
  • Approximately 900 minutes of gameplay
  • @@ -321,7 +321,7 @@

    Matches &
  • Camera setup: BePro Cerberus (2 matches) + 3-camera panoramic systems (8 matches)
-

GSR (Game State Reconstruction) Annotations

+

GSR (Game State Reconstruction) Annotations

Per-frame annotations including:

  • 2D pitch coordinates (meters) for all players
  • @@ -331,7 +331,7 @@

    GSR (Game
  • Jersey numbers: 0–99 or null
-

BAS (Ball Action Spotting) Annotations

+

BAS (Ball Action Spotting) Annotations

12 action classes with global timestamps:

• Pass
@@ -352,25 +352,43 @@

BAS (Ball

Tasks & Benchmarks

-

Game State Reconstruction (GSR)

+

Game State Reconstruction (GSR)

+
+ GSR Task Visualization +

GSR: Panoramic view → 2D pitch coordinates with player roles

+

Generate 2D pitch minimaps from panoramic video. Reconstruct complete game state including all player positions, roles, and team assignments for tactical analysis. This task evaluates the ability to accurately map players from video frames to standardized pitch coordinates while maintaining identity and role information.

+

+ Inspired by SoccerNet GSR Challenge +

-

Ball Action Spotting (BAS)

+

Ball Action Spotting (BAS)

+
+ BAS Task Visualization +

BAS: Temporal action detection with 12 ball event classes

+

Detect and classify 12 types of ball actions from video. Event detection task aligned with global timestamps for comprehensive match analysis. Actions include Pass, Drive, Shot, Header, High Pass, Out, Cross, Throw In, Ball Player Block, Player Successful Tackle, Free Kick, and Goal.

+

+ Inspired by SoccerNet BAS Challenge +

-

Multi-Object Tracking (SoccerTrack Challenge)

+

Multi-Object Tracking (SoccerTrack Challenge)

+
+ MOT Task Visualization +

MOT: Persistent player tracking with bounding boxes and IDs

+

Full-pitch player tracking with persistent IDs across long sequences. Evaluate tracking performance, ID maintenance, and re-identification in complex game scenarios. A subset of matches with bounding box annotations is featured in the - SoccerTrack Challenge 2025. + SoccerTrack Challenge 2025.

@@ -383,7 +401,7 @@

Data Format & Folder Structure

├── bas/ # Ball Action Spotting event annotations (JSON/CSV) └── splits/ # Train/val/test split definitions (match-level)
-

GSR Annotation Fields

+

GSR Annotation Fields

  • frame: Frame number
  • time: Timestamp in video
  • @@ -394,7 +412,7 @@

    GSR Annot
  • jersey_number: 0–99 / null
-

BAS Annotation Fields

+

BAS Annotation Fields

@@ -266,25 +267,28 @@

Dataset Visuals

Panoramic 4K Coverage

- Panoramic view - Day match + Panoramic view - Day match

Daytime Match - Full Pitch Coverage

- Panoramic view - Night match + Panoramic view - Night match

Night Match - Stadium Conditions

GSR Annotations Example

- GSR minimap with player positions +

2D Pitch Minimap with Player Positions & Track IDs

Demo Video

-
From 5e43bbfedd26403989e03506d5b073f0c1cc937d Mon Sep 17 00:00:00 2001 From: Atom Scott Date: Mon, 5 Jan 2026 15:37:38 +0900 Subject: [PATCH 12/24] Add OGP/SEO meta tags and custom OG image, remove Kaggle links --- docs/assets/og-image.jpg | Bin 0 -> 105654 bytes docs/index-ja.html | 31 +++++++++++++++++++++++++------ docs/index.html | 28 +++++++++++++++++++++++----- 3 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 docs/assets/og-image.jpg diff --git a/docs/assets/og-image.jpg b/docs/assets/og-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..39e1a851bc9003468ed41976b2567e94f6498c93 GIT binary patch literal 105654 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®LuT^wSl21HzRS#*yq=0%wne0Ut|9TU%H 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 VWgX!mHO|@d+jYcP8S+0b{|9i&+TQ>G literal 0 HcmV?d00001 diff --git a/docs/index-ja.html b/docs/index-ja.html index 58bc176..80ce453 100644 --- a/docs/index-ja.html +++ b/docs/index-ja.html @@ -1,10 +1,31 @@ - + - - SoccerTrack-v2 Dataset + + SoccerTrack v2 - ゲーム状態再構築のためのフルピッチサッカーデータセット + + + + + + + + + + + + + + + + + + + + + +
@@ -257,84 +264,106 @@

⚽ SoccerTrack v2

A Full-Pitch Multi-View Soccer Dataset for Game State Reconstruction

- 10 full-length panoramic 4K matches with per-frame Game State Reconstruction (GSR) and Ball Action Spotting (BAS) labels for soccer analytics + 10 full-length panoramic 4K matches with per-frame Game State Reconstruction (GSR) and Ball Action + Spotting (BAS) labels for soccer analytics

- +

TL;DR

    -
  • 10 full matches (~900 minutes) of 4K panoramic full-pitch footage covering entire playing field
  • -
  • Per-frame GSR annotations: 2D pitch coordinates, track IDs, jersey numbers, roles, and team assignments
  • -
  • Ball Action Spotting: 12 action classes (Pass, Drive, Shot, Header, Cross, etc.) with global timestamps
  • -
  • Three benchmark tasks: Multi-Object Tracking (MOT), Game State Reconstruction (GSR), Ball Action Spotting (BAS)
  • -
  • Open access: Available on GitHub and Google Drive for reproducible research
  • +
  • 10 full matches (~900 minutes) of 4K panoramic full-pitch footage covering + entire playing field
  • +
  • Per-frame GSR annotations: 2D pitch coordinates, track IDs, jersey numbers, + roles, and team assignments
  • +
  • Ball Action Spotting: 12 action classes (Pass, Drive, Shot, Header, Cross, + etc.) with global timestamps
  • +
  • Three benchmark tasks: Multi-Object Tracking (MOT), Game State Reconstruction + (GSR), Ball Action Spotting (BAS)
  • +
  • Open access: Available on GitHub and Google Drive for reproducible research +
- +

Dataset Visuals

- +

Panoramic 4K Coverage

-
+
- Panoramic view - Day match + Panoramic view - Day match

Daytime Match - Full Pitch Coverage

- Panoramic view - Night match + Panoramic view - Night match

Night Match - Stadium Conditions

- +

GSR Annotations Example

-
+
-

2D Pitch Minimap with Player Positions & Track IDs

+

2D Pitch Minimap with Player Positions & + Track IDs

- +

Demo Video

-
+
-

Sample Tracking Visualization with GSR Overlay

+

Sample Tracking Visualization with GSR + Overlay

- +

What is SoccerTrack v2?

- SoccerTrack v2 addresses critical gaps in existing soccer datasets by providing full-pitch panoramic coverage - with comprehensive per-frame annotations. Unlike broadcast-view datasets limited by occlusions and partial field coverage, + SoccerTrack v2 addresses critical gaps in existing soccer datasets by providing full-pitch panoramic + coverage + with comprehensive per-frame annotations. Unlike broadcast-view datasets limited by occlusions and + partial field coverage, our dataset captures the entire pitch using panoramic 4K cameras.

- The dataset features 10 university-level amateur matches recorded with BePro camera systems, - providing approximately 900 minutes of gameplay. Each frame is annotated with detailed game state information - including player positions in 2D pitch coordinates, persistent track IDs, jersey numbers, player roles + The dataset features 10 university-level amateur matches recorded with BePro camera + systems, + providing approximately 900 minutes of gameplay. Each frame is annotated with detailed game state + information + including player positions in 2D pitch coordinates, persistent track IDs, jersey numbers, player + roles (player/goalkeeper/referee), and team assignments.

- Beyond tracking, SoccerTrack v2 includes Ball Action Spotting annotations covering 12 action classes - aligned to the video timeline, enabling comprehensive tactical analysis and event detection research. + Beyond tracking, SoccerTrack v2 includes Ball Action Spotting annotations covering + 12 action classes + aligned to the video timeline, enabling comprehensive tactical analysis and event detection + research.

- +

Dataset Contents

- +

Matches & Videos

  • 10 university-level amateur matches
  • @@ -342,8 +371,9 @@

    Matches &
  • 4K panoramic MP4 videos with full-pitch coverage
  • Camera setup: BePro Cerberus (2 matches) + 3-camera panoramic systems (8 matches)
- -

GSR (Game State Reconstruction) Annotations

+ +

GSR (Game State Reconstruction) + Annotations

Per-frame annotations including:

  • 2D pitch coordinates (meters) for all players
  • @@ -352,10 +382,12 @@

    GSR (Game
  • Team assignments: left, right, or null
  • Jersey numbers: 0–99 or null
- -

BAS (Ball Action Spotting) Annotations

+ +

BAS (Ball Action Spotting) + Annotations

12 action classes with global timestamps:

-
+
• Pass
• Drive
• Header
@@ -370,56 +402,77 @@

BAS (Ball
• Goal

- +

Tasks & Benchmarks

- +

- Game State Reconstruction (GSR) → + Game State Reconstruction + (GSR) →

-
- GSR Task Visualization -

GSR: Panoramic view → 2D pitch coordinates with player roles

+
+ GSR Task Visualization +

GSR: + Panoramic view → 2D pitch coordinates with player roles

- Generate 2D pitch minimaps from panoramic video. Reconstruct complete game state including all player positions, - roles, and team assignments for tactical analysis. This task evaluates the ability to accurately map players + Generate 2D pitch minimaps from panoramic video. Reconstruct complete game state including all + player positions, + roles, and team assignments for tactical analysis. This task evaluates the ability to accurately map + players from video frames to standardized pitch coordinates while maintaining identity and role information.

- Inspired by SoccerNet GSR Challenge + Inspired by SoccerNet GSR Challenge

- +

- Ball Action Spotting (BAS) → + Ball Action Spotting (BAS) + →

-
- BAS Task Visualization -

BAS: Temporal action detection with 12 ball event classes

+
+ BAS Task Visualization +

BAS: + Temporal action detection with 12 ball event classes

- Detect and classify 12 types of ball actions from video. Event detection task aligned with global timestamps - for comprehensive match analysis. Actions include Pass, Drive, Shot, Header, High Pass, Out, Cross, Throw In, + Detect and classify 12 types of ball actions from video. Event detection task aligned with global + timestamps + for comprehensive match analysis. Actions include Pass, Drive, Shot, Header, High Pass, Out, Cross, + Throw In, Ball Player Block, Player Successful Tackle, Free Kick, and Goal.

- Inspired by SoccerNet BAS Challenge + Inspired by SoccerNet BAS Challenge

- +

- Multi-Object Tracking (SoccerTrack Challenge) → + Multi-Object Tracking + (SoccerTrack Challenge) →

-
- MOT Task Visualization -

MOT: Persistent player tracking with bounding boxes and IDs

+
+ MOT Task Visualization +

MOT: + Persistent player tracking with bounding boxes and IDs

- Full-pitch player tracking with persistent IDs across long sequences. Evaluate tracking performance, ID maintenance, - and re-identification in complex game scenarios. A subset of matches with bounding box annotations is featured in the - SoccerTrack Challenge 2025. + Full-pitch player tracking with persistent IDs across long sequences. Evaluate tracking performance, + ID maintenance, + and re-identification in complex game scenarios. A subset of matches with bounding box annotations + is featured in the + SoccerTrack Challenge 2025.

- +

Data Format & Folder Structure

The dataset is organized as follows:

@@ -450,7 +503,7 @@

Data Format & Folder Structure

│ ├── 117093_tracker_box_data.xml │ └── ... └── ... - +

GSR Annotation Fields

  • frame: Frame number
  • @@ -461,7 +514,7 @@

    GSR Annot
  • team_side: left / right / null
  • jersey_number: 0–99 / null
- +

BAS Annotation Fields

  • time: Global timestamp aligned to video timeline
  • @@ -470,42 +523,43 @@

    BAS Annot
  • player_id: Track ID (when available)
- +

Download Dataset

Choose your preferred platform:

- +

Getting Started

- +

1. Download the Dataset

Download the dataset files from Google Drive.

- +

2. Clone the Repository

git clone https://github.com/AtomScott/SoccerTrack-v2.git
 cd SoccerTrack-v2
 pip install -r requirements-dev.txt
- +

3. Visualize Tracking Data

python -m src.main command=plot-coordinates-on-video \
   plot_coordinates_on_video.match_id=117093
- +

- See the scripts/ directory for data preprocessing pipelines, feature extraction, + See the scripts/ directory for data preprocessing pipelines, feature extraction, model training configurations, and evaluation benchmarks. All experiments are fully reproducible.

- +

License & Terms of Use

- SoccerTrack v2 is released under the MIT License. The dataset has been collected + SoccerTrack v2 is released under the MIT License. The dataset has been collected with approval from the university ethics board, and all data has been de-identified.

    @@ -514,11 +568,12 @@

    License & Terms of Use

  • Free for both academic research and commercial use

- Please see the LICENSE + Please see the LICENSE file for full details.

- +

Citation

If you use this dataset in your research, please cite:

@@ -530,22 +585,24 @@

Citation

url={https://arxiv.org/abs/2508.01802} }
- +

Acknowledgements

- This work was supported by JST SPRING (Grant Number JPMJSP2108) and JSPS KAKENHI. + This work was supported by JST SPRING (Grant Number JPMJSP2108) and JSPS KAKENHI. We thank all participating teams and universities for their cooperation in data collection.

- Note: I've started a startup called Playbox, - making human movement computable through cutting-edge sports video analysis technology. - Check out our automatic camera systems and AI-powered analysis tools + Note: I've started a startup called Playbox, + making human movement computable through cutting-edge sports video analysis technology. + Check out our automatic camera systems and + AI-powered analysis tools for soccer and other sports! ⚽

- +

© 2025 SoccerTrack v2 Project | Made with ⚽ for the research community

@@ -554,5 +611,5 @@

Acknowledgements

- + \ No newline at end of file From d5b510dafef74e7679d28b4fb13f42907ae18875 Mon Sep 17 00:00:00 2001 From: Yukinkmr Date: Mon, 12 Jan 2026 16:32:34 +0900 Subject: [PATCH 21/24] update tracking movie path --- docs/index-ja.html | 224 ++++++++++++++++++++++++++------------------- 1 file changed, 129 insertions(+), 95 deletions(-) diff --git a/docs/index-ja.html b/docs/index-ja.html index b9e0a45..40d2ff0 100644 --- a/docs/index-ja.html +++ b/docs/index-ja.html @@ -1,27 +1,29 @@ + SoccerTrack v2 - ゲーム状態再構築のためのフルピッチサッカーデータセット - + - + - + - + @@ -32,7 +34,7 @@ padding: 0; box-sizing: border-box; } - + body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; line-height: 1.6; @@ -41,7 +43,7 @@ min-height: 100vh; padding: 2rem; } - + .container { max-width: 1000px; margin: 0 auto; @@ -50,7 +52,7 @@ box-shadow: 0 20px 60px rgba(16, 185, 129, 0.2); overflow: hidden; } - + header { background: #1a1a1a; color: white; @@ -58,26 +60,26 @@ text-align: center; border-bottom: 3px solid #10b981; } - + h1 { font-size: 2.5rem; margin-bottom: 0.5rem; font-weight: 700; } - + .subtitle { font-size: 1.2rem; opacity: 0.95; } - + main { padding: 2rem; } - + section { margin-bottom: 2.5rem; } - + h2 { color: #10b981; margin-bottom: 1rem; @@ -85,7 +87,7 @@ border-bottom: 2px solid #10b981; padding-bottom: 0.5rem; } - + .badges { display: flex; gap: 1rem; @@ -93,7 +95,7 @@ justify-content: center; margin-top: 1.5rem; } - + .badge { display: inline-block; padding: 0.5rem 1rem; @@ -104,19 +106,19 @@ font-weight: 600; transition: transform 0.2s; } - + .badge:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3); } - + .download-section { background: #f8f9fa; padding: 2rem; border-radius: 8px; margin: 2rem 0; } - + .btn { display: inline-block; padding: 1rem 2rem; @@ -129,37 +131,37 @@ margin: 0.5rem; border: 2px solid #10b981; } - + .btn:hover { background: transparent; color: #10b981; transform: translateY(-2px); box-shadow: 0 8px 20px rgba(255, 107, 53, 0.4); } - + .btn-secondary { background: #6c757d; } - + .features { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; margin-top: 1.5rem; } - + .feature { background: #f8f9fa; padding: 1.5rem; border-radius: 8px; border-left: 4px solid #10b981; } - + .feature h3 { color: #10b981; margin-bottom: 0.5rem; } - + code { background: #f4f4f4; padding: 0.2rem 0.5rem; @@ -167,7 +169,7 @@ font-family: 'Courier New', monospace; font-size: 0.9rem; } - + pre { background: #2d2d2d; color: #f8f8f2; @@ -176,27 +178,27 @@ overflow-x: auto; margin: 1rem 0; } - + pre code { background: none; color: inherit; padding: 0; } - + footer { background: #2d2d2d; color: white; padding: 2rem; text-align: center; } - + .stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; margin: 1.5rem 0; } - + .stat { text-align: center; padding: 1.5rem; @@ -205,29 +207,29 @@ border-radius: 8px; border: 2px solid #10b981; } - + .stat:nth-child(even) { border-color: #ff6b35; } - + .stat-number { font-size: 2.5rem; font-weight: 700; display: block; } - + .stat-label { font-size: 0.9rem; opacity: 0.9; } - + .lang-switcher { position: absolute; top: 1rem; right: 1rem; z-index: 100; } - + .lang-btn { background: rgba(255, 255, 255, 0.2); color: white; @@ -241,13 +243,15 @@ display: inline-block; transition: all 0.2s; } - - .lang-btn:hover, .lang-btn.active { + + .lang-btn:hover, + .lang-btn.active { background: white; color: #10b981; } +
@@ -263,11 +267,13 @@

⚽ SoccerTrack v2

- +

概要

@@ -275,61 +281,69 @@

概要

  • 10試合分のフルマッチ(約900分)の4Kパノラマ映像で、ピッチ全体をカバー
  • フレーム単位のGSRアノテーション:2Dピッチ座標、トラックID、背番号、役割、チーム割り当て
  • ボールアクション検出:12種類のアクションクラス(パス、ドリブル、シュート、ヘディング、クロスなど)にグローバルタイムスタンプ付き
  • -
  • 3つのベンチマークタスク:Multi-Object Tracking(MOT)、Game State Reconstruction(GSR)、Ball Action Spotting(BAS)
  • +
  • 3つのベンチマークタスク:Multi-Object Tracking(MOT)、Game State Reconstruction(GSR)、Ball + Action Spotting(BAS)
  • オープンアクセス:GitHubとGoogle Driveで公開、再現可能な研究を実現
  • - +

    データセット画像

    - +

    パノラマ4K映像

    -
    +
    - パノラマビュー - 昼の試合 + パノラマビュー - 昼の試合

    昼の試合 - フルピッチカバレッジ

    - パノラマビュー - 夜の試合 + パノラマビュー - 夜の試合

    夜の試合 - スタジアム環境

    - +

    GSRアノテーション例

    -
    +

    2Dピッチミニマップ with 選手位置 & トラックID

    - +

    デモ動画

    -
    +

    GSRオーバーレイ付きトラッキング可視化サンプル

    - +

    SoccerTrack v2とは?

    - SoccerTrack v2は、フルピッチのパノラマカバレッジと包括的なフレーム単位アノテーションを提供することで、既存のサッカーデータセットの重要なギャップに対処します。オクルージョンや部分的なフィールドカバレッジに制限される放送視点のデータセットとは異なり、本データセットはパノラマ4Kカメラを使用してピッチ全体を捉えています。 + SoccerTrack + v2は、フルピッチのパノラマカバレッジと包括的なフレーム単位アノテーションを提供することで、既存のサッカーデータセットの重要なギャップに対処します。オクルージョンや部分的なフィールドカバレッジに制限される放送視点のデータセットとは異なり、本データセットはパノラマ4Kカメラを使用してピッチ全体を捉えています。

    本データセットには、BeProカメラシステムで記録された大学レベルのアマチュア試合10試合分が含まれ、約900分のゲームプレイを提供します。各フレームには、2Dピッチ座標での選手位置、永続的なトラックID、背番号、選手の役割(プレイヤー/ゴールキーパー/審判)、チーム割り当てなどの詳細なゲーム状態情報がアノテーションされています。

    - トラッキングに加えて、SoccerTrack v2には動画タイムラインに整合した12種類のアクションクラスをカバーするボールアクション検出アノテーションが含まれており、包括的な戦術分析とイベント検出研究を可能にします。 + トラッキングに加えて、SoccerTrack + v2には動画タイムラインに整合した12種類のアクションクラスをカバーするボールアクション検出アノテーションが含まれており、包括的な戦術分析とイベント検出研究を可能にします。

    - +

    Dataset Contents

    - +

    Matches & Videos

    • 10 university-level amateur matches
    • @@ -337,8 +351,9 @@

      Matches &
    • 4K panoramic MP4 videos with full-pitch coverage
    • Camera setup: BePro Cerberus (2 matches) + 3-camera panoramic systems (8 matches)
    - -

    GSR (Game State Reconstruction) Annotations

    + +

    GSR (Game State Reconstruction) + Annotations

    Per-frame annotations including:

    • 2D pitch coordinates (meters) for all players
    • @@ -347,10 +362,12 @@

      GSR (Game
    • Team assignments: left, right, or null
    • Jersey numbers: 0–99 or null
    - -

    BAS (Ball Action Spotting) Annotations

    + +

    BAS (Ball Action Spotting) + Annotations

    12 action classes with global timestamps:

    -
    +
    • Pass
    • Drive
    • Header
    @@ -365,45 +382,58 @@

    BAS (Ball
    • Goal

    - +

    タスク & ベンチマーク

    - +

    ゲーム状態再構築(GSR)

    -
    - GSRタスク可視化 -

    GSR: パノラマ映像 → 選手役割付き2Dピッチ座標

    +
    + GSRタスク可視化 +

    GSR: + パノラマ映像 → 選手役割付き2Dピッチ座標

    パノラマ映像から2Dピッチミニマップを生成します。戦術分析のため、すべての選手位置、役割、チーム割り当てを含む完全なゲーム状態を再構築します。このタスクでは、映像フレームから標準化されたピッチ座標へ選手を正確にマッピングし、アイデンティティと役割情報を維持する能力を評価します。

    - SoccerNet GSR Challengeにインスパイアされています + SoccerNet GSR Challengeにインスパイアされています

    - +

    ボールアクション検出(BAS)

    -
    - BASタスク可視化 -

    BAS: 12種類のボールイベントクラスを持つ時系列アクション検出

    +
    + BASタスク可視化 +

    BAS: + 12種類のボールイベントクラスを持つ時系列アクション検出

    映像から12種類のボールアクションを検出・分類します。包括的な試合分析のため、グローバルタイムスタンプに整合したイベント検出タスクです。アクションには、パス、ドリブル、シュート、ヘディング、ハイパス、アウト、クロス、スローイン、ボールプレイヤーブロック、プレイヤーサクセスフルタックル、フリーキック、ゴールが含まれます。

    - SoccerNet BAS Challengeにインスパイアされています + SoccerNet BAS Challengeにインスパイアされています

    - -

    マルチオブジェクトトラッキング(SoccerTrack Challenge)

    -
    - MOTタスク可視化 -

    MOT: バウンディングボックスとIDを用いた永続的な選手トラッキング

    + +

    マルチオブジェクトトラッキング(SoccerTrack + Challenge)

    +
    + MOTタスク可視化 +

    MOT: + バウンディングボックスとIDを用いた永続的な選手トラッキング

    長いシーケンスにわたって永続的なIDを持つフルピッチの選手トラッキング。複雑なゲームシナリオにおけるトラッキング性能、ID維持、再識別を評価します。バウンディングボックスアノテーション付きの一部の試合は、 - SoccerTrack Challenge 2025で使用されています。 + SoccerTrack Challenge 2025で使用されています。

    - +

    Data Format & Folder Structure

    The dataset is organized as follows:

    @@ -412,7 +442,7 @@

    Data Format & Folder Structure

    ├── gsr/ # Per-frame GSR annotations (JSON/CSV) ├── bas/ # Ball Action Spotting event annotations (JSON/CSV) └── splits/ # Train/val/test split definitions (match-level) - +

    GSR Annotation Fields

    • frame: Frame number
    • @@ -423,7 +453,7 @@

      GSR Annot
    • team_side: left / right / null
    • jersey_number: 0–99 / null
    - +

    BAS Annotation Fields

    • time: Global timestamp aligned to video timeline
    • @@ -432,38 +462,39 @@

      BAS Annot
    • player_id: Track ID (when available)
    - +

    データセットのダウンロード

    お好みのプラットフォームを選択してください:

    - +

    Getting Started

    - +

    1. Download the Dataset

    Download the dataset files from Google Drive.

    - +

    2. Clone the Repository

    git clone https://github.com/AtomScott/SoccerTrack-v2.git
     cd SoccerTrack-v2
     pip install -r requirements-dev.txt
    - +

    3. Visualize Tracking Data

    python -m src.main command=plot-coordinates-on-video \
       plot_coordinates_on_video.match_id=117093
    - +

    - See the scripts/ directory for data preprocessing pipelines, feature extraction, + See the scripts/ directory for data preprocessing pipelines, feature extraction, model training configurations, and evaluation benchmarks. All experiments are fully reproducible.

    - +

    ライセンス & 利用規約

    @@ -475,10 +506,11 @@

    ライセンス & 利用規約

  • 学術研究および商用利用のいずれも自由に利用可能です
  • - 詳細についてはLICENSEファイルをご覧ください。 + 詳細についてはLICENSEファイルをご覧ください。

    - +

    引用

    本データセットを研究で使用する場合は、以下を引用してください:

    @@ -490,7 +522,7 @@

    引用

    url={https://arxiv.org/abs/2508.01802} }
    - +

    謝辞

    @@ -498,13 +530,15 @@

    謝辞

    データ収集にご協力いただいたすべての参加チームおよび大学に感謝いたします。

    - データ収集は、Playboxにより実現されました。 + データ収集は、Playboxにより実現されました。 Playboxは、最先端のスポーツ映像解析技術で人の動きを計算可能にする大学発スタートアップです。 - サッカーやその他のスポーツ向けの自動カメラシステムとAI駆動の解析ツールをぜひご覧ください!⚽ + サッカーやその他のスポーツ向けの自動カメラシステムとAI駆動の解析ツールをぜひご覧ください!⚽

    - +

    © 2025 SoccerTrack v2 Project | サッカー研究コミュニティのために ⚽

    @@ -513,5 +547,5 @@

    謝辞

    - + \ No newline at end of file From ffccd47c249218412d50ce180d4f346eadb495bd Mon Sep 17 00:00:00 2001 From: Yukinkmr Date: Wed, 14 Jan 2026 09:56:26 +0900 Subject: [PATCH 22/24] update data structure --- docs/index-ja.html | 35 +++++++++++++++++++++++++++++++---- docs/index.html | 25 +++++++++++++++---------- 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/docs/index-ja.html b/docs/index-ja.html index 40d2ff0..eea814d 100644 --- a/docs/index-ja.html +++ b/docs/index-ja.html @@ -438,10 +438,37 @@

    マルチ

    Data Format & Folder Structure

    The dataset is organized as follows:

    SoccerTrack-v2/
    -├── videos/          # Panoramic 4K video files (1-n MP4s per match)
    -├── gsr/             # Per-frame GSR annotations (JSON/CSV)
    -├── bas/             # Ball Action Spotting event annotations (JSON/CSV)
    -└── splits/          # Train/val/test split definitions (match-level)
    +├── videos/ # Panoramic 4K video files (1 MP4 per match) +│ ├── 117092/ +│ │ ├── 117092_panorama_1st_half.mp4 +│ │ └── 117092_panorama_2nd_half.mp4 +│ ├── 117093.mp4 +│ └── ... +├── gsr/ # Game State Reconstruction annotations +│ ├── 117092/ +│ │ ├── 117092_1st.json +│ │ └── 117092_2nd.json +│ ├── 117093/ +│ └── ... +├── bas/ # Ball Action Spotting annotations +│ ├── 117092/ +│ │ └── 117092_12_class_events.json +│ ├── 117093/ +│ └── ... +├── mot/ # Multi-Object Tracking annotations (MOTChallenge format) +│ ├── 117092/ +│ │ ├── gt/ +│ │ │ └── gt.txt +│ │ └── seqinfo.ini +│ └── ... +└── raw/ # Original calibration data and source files + ├── 117092/ + │ ├── 117092_keypoints.json + │ ├── 117092_mapx.npy + │ ├── 117092_mapy.npy + │ ├── 117092_tracker_box_data.xml + │ └── ... + └── ...

    GSR Annotation Fields

      diff --git a/docs/index.html b/docs/index.html index 4e09c1c..1413605 100644 --- a/docs/index.html +++ b/docs/index.html @@ -476,31 +476,36 @@

      Data Format & Folder Structure

      The dataset is organized as follows:

      -
      production/
      +                
      SoccerTrack-v2/
       ├── videos/          # Panoramic 4K video files (1 MP4 per match)
      +│   ├── 117092/
      +│   │   ├── 117092_panorama_1st_half.mp4
      +│   │   └── 117092_panorama_2nd_half.mp4
       │   ├── 117093.mp4
       │   └── ...
       ├── gsr/             # Game State Reconstruction annotations
      +│   ├── 117092/
      +│   │   ├── 117092_1st.json
      +│   │   └── 117092_2nd.json
       │   ├── 117093/
      -│   │   └── 117093.json
       │   └── ...
       ├── bas/             # Ball Action Spotting annotations
      +│   ├── 117092/
      +│   │   └── 117092_12_class_events.json
       │   ├── 117093/
      -│   │   └── 117093.json
       │   └── ...
       ├── mot/             # Multi-Object Tracking annotations (MOTChallenge format)
      -│   ├── 117093/
      +│   ├── 117092/
       │   │   ├── gt/
       │   │   │   └── gt.txt
       │   │   └── seqinfo.ini
       │   └── ...
       └── raw/             # Original calibration data and source files
      -    ├── 117093/
      -    │   ├── 117093_keypoints.json
      -    │   ├── 117093_mapx.npy
      -    │   ├── 117093_mapy.npy
      -    │   ├── 117093_12_class_events.json
      -    │   ├── 117093_tracker_box_data.xml
      +    ├── 117092/
      +    │   ├── 117092_keypoints.json
      +    │   ├── 117092_mapx.npy
      +    │   ├── 117092_mapy.npy
      +    │   ├── 117092_tracker_box_data.xml
           │   └── ...
           └── ...
      From acfcdb71b27867ea1403169151b6c1223deb9884 Mon Sep 17 00:00:00 2001 From: Yukinkmr Date: Wed, 14 Jan 2026 10:46:46 +0900 Subject: [PATCH 23/24] update explanation of gsr labels --- docs/index-ja.html | 15 ++++++++------- docs/index.html | 14 +++++++------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/docs/index-ja.html b/docs/index-ja.html index eea814d..e402465 100644 --- a/docs/index-ja.html +++ b/docs/index-ja.html @@ -472,13 +472,14 @@

      Data Format & Folder Structure

      GSR Annotation Fields

        -
      • frame: Frame number
      • -
      • time: Timestamp in video
      • -
      • player_id: Unique track ID (persistent throughout match)
      • -
      • x, y: 2D pitch coordinates in meters
      • -
      • role: player / goalkeeper / referee / other
      • -
      • team_side: left / right / null
      • -
      • jersey_number: 0–99 / null
      • +
      • image_id: 各動画内のフレーム番号
      • +
      • track_id: 試合を通して各選手に一貫して付与されるトラッキングID
      • +
      • player_id: 選手に固有に割り当てられている識別用ID
      • +
      • role: 対象の役割(player / goalkeeper / referee / other)
      • +
      • jersey_number: 選手の背番号(0–99 または null)
      • +
      • team_side: 所属チーム(left / right / null)
      • +
      • x, y: ピッチ上の選手座標(メートル単位、bbox_pitch.x_bottom_middle および + bbox_pitch.y_bottom_middle)

      BAS Annotation Fields

      diff --git a/docs/index.html b/docs/index.html index 1413605..ba8e0a3 100644 --- a/docs/index.html +++ b/docs/index.html @@ -511,13 +511,13 @@

      Data Format & Folder Structure

      GSR Annotation Fields

        -
      • frame: Frame number
      • -
      • time: Timestamp in video
      • -
      • player_id: Unique track ID (persistent throughout match)
      • -
      • x, y: 2D pitch coordinates in meters
      • -
      • role: player / goalkeeper / referee / other
      • -
      • team_side: left / right / null
      • -
      • jersey_number: 0–99 / null
      • +
      • image_id: Frame index in the video sequence
      • +
      • track_id: Unique track ID (persistent throughout match)
      • +
      • player_id: Unique player identifier assigned to the real-world player
      • +
      • role: Entity role (player / goalkeeper / referee / other)
      • +
      • jersey_number: Player jersey number (0–99 or null)
      • +
      • team_side: Team affiliation (left / right / null)
      • +
      • x, y: Player position on pitch in meters (bottom-center of bbox_pitch)

      BAS Annotation Fields

      From d514f9e2661114d8eb5a2502c6e88a368714881b Mon Sep 17 00:00:00 2001 From: Yukinkmr Date: Wed, 14 Jan 2026 11:08:06 +0900 Subject: [PATCH 24/24] update explanation of bas data --- docs/index-ja.html | 11 ++++++----- docs/index.html | 9 +++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/index-ja.html b/docs/index-ja.html index e402465..bf42e79 100644 --- a/docs/index-ja.html +++ b/docs/index-ja.html @@ -436,7 +436,7 @@

      マルチ

      Data Format & Folder Structure

      -

      The dataset is organized as follows:

      +

      データセットの構成は以下のようになっております:

      SoccerTrack-v2/
       ├── videos/          # Panoramic 4K video files (1 MP4 per match)
       │   ├── 117092/
      @@ -484,10 +484,11 @@ 

      GSR Annot

      BAS Annotation Fields

        -
      • time: Global timestamp aligned to video timeline
      • -
      • event_class: One of 12 action classes
      • -
      • team: Team performing the action
      • -
      • player_id: Track ID (when available)
      • +
      • gameTime: 試合時間(前後半 - 分:秒)
      • +
      • position: イベント発生時刻(ミリ秒)
      • +
      • label: プレーの種類(全12クラス)
      • +
      • team: プレーを行ったチーム(left / right)
      • +
      • player_id: プレーをした選手のID
      diff --git a/docs/index.html b/docs/index.html index ba8e0a3..bfa407a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -522,10 +522,11 @@

      GSR Annot

      BAS Annotation Fields

        -
      • time: Global timestamp aligned to video timeline
      • -
      • event_class: One of 12 action classes
      • -
      • team: Team performing the action
      • -
      • player_id: Track ID (when available)
      • +
      • gameTime: Event time in match clock format (half - mm:ss)
      • +
      • position: Event timestamp in milliseconds (global timeline)
      • +
      • label: Action class (one of 12 predefined classes)
      • +
      • team: Team performing the action (left / right)
      • +
      • player_id: ID of the player who performed the action