CourtSide Computer Vision v1 - Complete Tennis Detection
Fine-tuned YOLOv11n model for comprehensive tennis analysis with 10-class detection: rackets, balls, and court zones. The most complete model in the CourtSide Computer Vision suite.
Model Details
- Model Name: CourtSide Computer Vision v1
- Model ID:
Davidsv/CourtSide-Computer-Vision-v1 - Model Type: Object Detection
- Architecture: YOLOv11 Nano (n)
- Framework: Ultralytics YOLOv11
- Parameters: 2.6M
- Input Size: 640x640
- Classes: 10
Classes Detected
| ID | Class | Description |
|---|---|---|
| 0 | racket |
Tennis rackets |
| 1 | tennis_ball |
Tennis balls |
| 2 | bottom-dead-zone |
Bottom baseline area |
| 3 | court |
Full court area |
| 4 | left-doubles-alley |
Left doubles alley |
| 5 | left-service-box |
Left service box |
| 6 | net |
Tennis net |
| 7 | right-doubles-alley |
Right doubles alley |
| 8 | right-service-box |
Right service box |
| 9 | top-dead-zone |
Top baseline area |
Performance Metrics
| Metric | Value |
|---|---|
| mAP@50 | 92.13% |
| mAP@50-95 | 85.49% |
| Precision | 92.9% |
| Recall | 92.0% |
Training Details
Datasets
This model was trained on 3 combined datasets:
- Tennis Ball Dataset - Ball detection
- Tennis Racket Dataset - Racket detection
- Tennis Court Dataset - Court zones and net detection
Training Configuration
Model: YOLOv11n (nano)
Epochs: 150
Batch size: 16
Image size: 640x640
Device: Apple Silicon (MPS)
Optimizer: AdamW
Learning rate: 0.001 โ 0.01
Patience: 50 (early stopping)
Augmentation
- HSV color jitter (h=0.015, s=0.7, v=0.4)
- Random horizontal flip (p=0.5)
- Translation (ยฑ10%)
- Scaling (ยฑ50%)
- Mosaic augmentation
Loss Weights
- Box loss: 7.5
- Class loss: 0.5
- DFL loss: 1.5
Usage
Installation
pip install ultralytics
Python API
from ultralytics import YOLO
# Load CourtSide Computer Vision v1 model
model = YOLO('Davidsv/CourtSide-Computer-Vision-v1')
# Predict on image
results = model.predict('tennis_match.jpg', conf=0.25)
# Display results
results[0].show()
# Get detections by class
for box in results[0].boxes:
cls = int(box.cls[0])
conf = float(box.conf[0])
class_name = model.names[cls]
print(f"{class_name}: {conf:.2%}")
Video Processing
from ultralytics import YOLO
model = YOLO('Davidsv/CourtSide-Computer-Vision-v1')
# Process video with tracking
results = model.track(
source='tennis_match.mp4',
conf=0.25,
tracker='bytetrack.yaml',
save=True
)
Command Line
# Predict on image
yolo detect predict model=Davidsv/CourtSide-Computer-Vision-v1 source=image.jpg conf=0.25
# Predict on video
yolo detect predict model=Davidsv/CourtSide-Computer-Vision-v1 source=video.mp4 conf=0.25 save=True
# Track objects in video
yolo detect track model=Davidsv/CourtSide-Computer-Vision-v1 source=video.mp4 conf=0.25
Recommended Hyperparameters
Inference Settings
# Balanced (recommended)
conf_threshold = 0.25 # Confidence threshold
iou_threshold = 0.45 # NMS IoU threshold
# High precision (fewer false positives)
conf_threshold = 0.40
iou_threshold = 0.45
# High recall (detect more objects)
conf_threshold = 0.15
iou_threshold = 0.40
Use Cases
- Real-time tennis match analysis
- Player position and movement tracking
- Ball trajectory prediction
- Court zone occupancy analysis
- Automated highlight generation
- Swing detection and technique analysis
- Sports analytics dashboards
- Training video analysis
CourtSide Computer Vision Suite
| Version | Description | mAP@50 |
|---|---|---|
| v0.1 | Tennis Ball Detection | 85.6% |
| v0.2 | Tennis Racket Detection | 66.7% |
| v1 | Complete Tennis Detection (10 classes) | 92.1% |
Model Card Authors
- Developed by: Davidsv (Vuong)
- Model date: November 2024
- Model version: v1
- Model type: Object Detection (YOLOv11)
- Part of: CourtSide Computer Vision Suite
Citations
This Model
@misc{courtsidecv_v1_2024,
title={CourtSide Computer Vision v1: Complete Tennis Detection with YOLOv11},
author={Vuong},
year={2024},
publisher={Hugging Face},
howpublished={\url{https://huggingface.co/Davidsv/CourtSide-Computer-Vision-v1}}
}
Ultralytics YOLOv11
@software{yolov11_ultralytics,
author = {Glenn Jocher and Jing Qiu},
title = {Ultralytics YOLO11},
version = {11.0.0},
year = {2024},
url = {https://github.com/ultralytics/ultralytics},
license = {AGPL-3.0}
}
Datasets
tennis-court-keypoints Computer Vision Model
@misc{
tennis-court-keypoints_dataset,
title = { tennis-court-keypoints Dataset },
type = { Open Source Dataset },
author = { TennisCV },
howpublished = { \url{ https://universe.roboflow.com/tenniscv-yywpa/tennis-court-keypoints } },
url = { https://universe.roboflow.com/tenniscv-yywpa/tennis-court-keypoints },
journal = { Roboflow Universe },
publisher = { Roboflow },
year = { 2024 },
month = { mar },
note = { visited on 2025-11-21 },
}
dataset1 Computer Vision Dataset
@misc{
dataset1-yx5qr_dataset,
title = { dataset1 Dataset },
type = { Open Source Dataset },
author = { Tesi },
howpublished = { \url{ https://universe.roboflow.com/tesi-mpvmr/dataset1-yx5qr } },
url = { https://universe.roboflow.com/tesi-mpvmr/dataset1-yx5qr },
journal = { Roboflow Universe },
publisher = { Roboflow },
year = { 2023 },
month = { mar },
note = { visited on 2025-11-21 },
}
tennis ball detection Computer Vision Dataset
@misc{
tennis-ball-detection_dataset,
title = { tennis ball detection Dataset },
type = { Open Source Dataset },
author = { Viren Dhanwani },
howpublished = { \url{ https://universe.roboflow.com/viren-dhanwani/tennis-ball-detection } },
url = { https://universe.roboflow.com/viren-dhanwani/tennis-ball-detection },
journal = { Roboflow Universe },
publisher = { Roboflow },
year = { 2023 },
month = { feb },
note = { visited on 2025-11-21 },
}
License
MIT License - Free for commercial and academic use.
Acknowledgments
- Built with Ultralytics YOLOv11
- Training datasets from Roboflow Universe
- Part of the CourtSide Computer Vision project for tennis analysis
Contact & Support
- Hugging Face: @Davidsv
Model Size: ~5.4 MB Supported Formats: PyTorch (.pt), ONNX, TensorRT, CoreML Model Hub: Davidsv/CourtSide-Computer-Vision-v1
- Downloads last month
- 66
Evaluation results
- mAP@50self-reported92.130
- mAP@50-95self-reported85.490
- precisionself-reported92.900
- recallself-reported92.000
