Huydinh1205/court_yolo11n_pose
Badminton Court Keypoint Detector (YOLOv11n-pose, fine-tuned)
A YOLOv11n-pose model that localises a single badminton court as one object with 30 keypoints. The keypoints are ordered in a boustrophedon (snake) layout so they can be mapped to known court coordinates and used to estimate a perspective homography (image ↔ real-world metres) for single-camera broadcast footage.
- Task: pose / keypoint detection (
task=pose) - Classes:
item(the court), 1 class - Keypoints: 30 per court (
kpt_shape = [30, 3]) - Base checkpoint:
yolo11n-pose.pt(Ultralytics) - Framework: Ultralytics 8.4.47
Intended use
Detect the court and its 30 keypoints in a broadcast frame, then solve a homography to convert player/shuttle pixel positions into court-plane coordinates. Part of a hybrid CV + VLM tactical-analysis pipeline.
Not intended for: non-broadcast angles, doubles-court markings it was not trained on, or as a general keypoint detector outside badminton.
How to use
from ultralytics import YOLO
from huggingface_hub import hf_hub_download
w = hf_hub_download("<your-username>/badminton-court-keypoints-yolov11", "court_yolo11n_pose.pt")
model = YOLO(w)
res = model.predict("frame.jpg", imgsz=640, conf=0.25)[0]
kpts = res.keypoints.xy # (num_courts, 30, 2) pixel coordinatesTraining
Evaluation (validation split, from the training checkpoint)
These are the metrics baked into the checkpoint on the dataset's own validation split. The low pose mAP@50-95 reflects strict keypoint-localisation tolerance; for homography the downstream reprojection error is the more meaningful figure (~0.042 m in our pipeline on the evaluated segment — measured downstream, not a checkpoint metric).
Limitations
- Single fixed broadcast viewpoint; not validated on other camera angles or venues.
- Validation split is small (see source dataset); treat metrics as in-domain.
License
Inherits AGPL-3.0 from Ultralytics YOLO. If you use these weights in a network service, AGPL obligations apply.
Citation
@software{jocher2023yolo,
author = {Jocher, Glenn and Qiu, Jing and Chaurasia, Ayush},
title = {Ultralytics YOLO},
url = {https://github.com/ultralytics/ultralytics},
version = {11.0.0}, year = {2024}
}
@misc{roboflow_badminton_court,
title = {Badminton Court Keypoint Dataset},
author = {learning-9i34b},
howpublished = {\url{https://universe.roboflow.com/learning-9i34b/badminton-court-keypoint-dataset}},
journal = {Roboflow Universe}, publisher = {Roboflow}, year = {20XX}
}