FineSports: Fine-grained Basketball Action Recognition
Fine-grained NBA basketball action recognition. Annotators track the ball-handler across a clip and label a two-level hierarchy of 12 coarse ball-handler actions and 52 fine-grained sub-actions (Xu et al., CVPR 2024).
About this dataset
FineSports is a large multi-person dataset for fine-grained action understanding in NBA basketball video, introduced by Jinglin Xu, Guohao Zhao, Sibo Yin, Wenhao Zhou, and Yuxin Peng at CVPR 2024. It targets a gap in sports-video datasets: recognizing the specific basketball action a player performs, not just a broad activity label.
The data is NBA game footage. Each action instance centers on the ball-handler, the player controlling the ball, who is tracked through the clip with a spatial-temporal tube (per-frame bounding boxes). Annotators mark when the action happens and label it at two levels of granularity.
FineSports contains 10,000 videos with roughly 16,000 action instances and 123,014 bounding boxes. Actions follow a two-level hierarchy of 12 coarse ball-handler categories (such as Drive, Shoot, and Pick&Roll) expanding into 52 fine-grained sub-actions (such as Drive Baseline, Dribble Jumper, and High P&R).
The Potato config below reproduces this task with a video segment scheme for the action's temporal boundary plus two radio schemes for the coarse (12) and fine-grained (52) action labels. Use it to build fine-grained basketball action data or to study procedure-aware sports action understanding.
- Released
- CVPR 2024
- Sport
- NBA basketball
- Videos
- 10,000
- Action instances
- ~16,000
- Bounding boxes
- 123,014
- Action hierarchy
- 12 coarse / 52 fine-grained
Configuration Fileconfig.yaml
This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.
# FineSports - Fine-grained Basketball Action Recognition
# Based on Xu, Zhao, Yin, Zhou & Peng, CVPR 2024
# Paper: https://openaccess.thecvf.com/content/CVPR2024/html/Xu_FineSports_A_Multi-person_Hierarchical_Sports_Video_Dataset_for_Fine-grained_Action_CVPR_2024_paper.html
# Dataset: https://github.com/PKU-ICST-MIPL/FineSports_CVPR2024
#
# FineSports is a multi-person hierarchical NBA basketball dataset for
# fine-grained action understanding. Each action instance tracks the
# ball-handler with a spatial-temporal tube (per-frame bounding boxes) and
# is labeled with a coarse ball-handler action (12 categories) and a
# fine-grained sub-action (52 categories).
#
# This Potato config reproduces the labeling: mark the temporal boundary of
# the ball-handler's action, then select the coarse action and its
# fine-grained sub-action.
annotation_task_name: "FineSports - Fine-grained Basketball Action Recognition"
task_dir: "."
data_files:
- sample-data.json
item_properties:
id_key: "id"
text_key: "video_url"
output_annotation_dir: "annotation_output/"
output_annotation_format: "json"
annotation_schemes:
# Step 1: mark the temporal boundary of the ball-handler action instance
- name: "action_segment"
description: "Mark the start and end of the ball-handler's action instance."
annotation_type: "video_annotation"
mode: "segment"
labels:
- name: "ball_handler_action"
color: "#F97316"
key_value: "a"
frame_stepping: true
show_timecode: true
playback_rate_control: true
video_fps: 25
# Step 2: coarse ball-handler action (12 categories)
- annotation_type: radio
name: coarse_action
description: "Coarse ball-handler action category (FineSports, 12 types):"
labels:
- "Drive"
- "Dribble"
- "Attack"
- "Shoot"
- "Pick&Roll (P&R)"
- "Pass"
- "Backboard"
- "Result"
- "Defense"
- "Lay-Up"
- "Steal&Interfere"
- "Foul&Violation"
# Step 3: fine-grained sub-action (52 categories)
- annotation_type: radio
name: fine_action
description: "Fine-grained sub-action (FineSports, 52 types):"
labels:
- "Drive Left"
- "Drive Right"
- "Drive Straight"
- "Drive Baseline"
- "Drive Middle"
- "Dribble Move"
- "Cut"
- "Isolation"
- "Post-Up Right Shoulder"
- "Post-Up Left Shoulder"
- "Pass Steal"
- "Dribble Steal"
- "Interfere Shot"
- "Basket"
- "To Basket"
- "High P&R"
- "Left P&R"
- "Right P&R"
- "Dribble Jumper"
- "No Dribble Jumper"
- "Jumper"
- "Early Jumper"
- "Free Throw"
- "Hand Off"
- "Ball Delivered"
- "To Shooter's Left"
- "To Shooter's Right"
- "Offensive Rebound Short"
- "Offensive Rebound Long"
- "Defensive Rebound Short"
- "Defensive Rebound Long"
- "Make 2 Pts"
- "Make 3 Pts"
- "Miss 2 Pts"
- "Miss 3 Pts"
- "Make 2 Pts Foul"
- "Make 3 Pts Foul"
- "Run Offense"
- "Turnover"
- "Fighting"
- "Personal Foul"
- "Double Foul"
- "Technical Foul"
- "Unsportsmanlike Foul"
- "Disqualifying Foul"
- "Traveling"
- "Player and Ball Out of Bound"
- "Defensive 3 Sec Violation"
- "Out of Bound 5 Sec Violation"
- "8 Sec Violation"
- "Shot Clock Violation"
- "Defense Commits"
annotation_instructions: |
You will see a short NBA basketball clip. For each ball-handler action:
1. Use the video timeline to mark the start and end of the action instance.
2. Identify the ball-handler (the player controlling the ball).
3. Select the coarse action category (12 options).
4. Select the fine-grained sub-action that best describes it (52 options).
The coarse and fine labels form a two-level hierarchy: pick the coarse
category first, then the specific sub-action under it.
html_layout: |
<div style="padding: 15px; max-width: 800px; margin: auto;">
<div style="background: #fff7ed; border: 1px solid #fed7aa; border-radius: 8px; padding: 10px 14px; margin-bottom: 12px; font-size: 13px; color: #9a3412;">
NBA clip {{clip_id}} — track the ball-handler and label the action hierarchy.
</div>
<video controls style="width: 100%; border-radius: 8px;" src="{{video_url}}"></video>
</div>
allow_all_users: true
instances_per_annotator: 40
annotation_per_instance: 2
allow_skip: true
skip_reason_required: false
Sample Datasample-data.json
[
{
"id": "finesports_001",
"clip_id": "GSW-BOS-Q1-0342",
"video_url": "https://example.com/finesports/clip_001.mp4",
"text": "Ball-handler drives baseline from the right wing and finishes at the rim."
},
{
"id": "finesports_002",
"clip_id": "LAL-DEN-Q2-115",
"video_url": "https://example.com/finesports/clip_002.mp4",
"text": "High pick-and-roll at the top of the key, ball-handler splits the defense."
}
]
// ... and 6 more itemsGet This Design
Clone or download from the repository
Quick start:
git clone https://github.com/davidjurgens/potato-showcase.git cd potato-showcase/video/finesports-action-recognition potato start config.yaml
Dataset & paper
Xu et al., CVPR 2024
Citation (BibTeX)
@inproceedings{xu2024finesports,
title={FineSports: A Multi-Person Hierarchical Sports Video Dataset for Fine-Grained Action Understanding},
author={Xu, Jinglin and Zhao, Guohao and Yin, Sibo and Zhou, Wenhao and Peng, Yuxin},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
pages={21773--21782},
year={2024}
}Details
Annotation Types
Domain
Use Cases
Tags
Found an issue or want to improve this design?
Open an IssueRelated Designs
DiDeMo Moment Retrieval
Localizing natural language descriptions to specific video moments. Given a text query, annotators identify the corresponding temporal segment in the video.
Scene Boundary Detection
Identify scene boundaries in documentary and narrative videos. Annotators mark transitions between semantically coherent scenes based on visual, audio, and narrative cues.
VSTAR Video-grounded Dialogue
Video-grounded dialogue annotation. Annotators watch videos and answer questions requiring situated understanding, write dialogue turns grounded in specific video moments, and mark relevant temporal segments.