Object Detection
ultralytics
PyTorch
English
yolo
yolov11
tennis
racket
tennis-ball
court-detection
sports
computer-vision
courtside
Eval Results (legacy)
Instructions to use Davidsv/CourtSide-Computer-Vision-v1 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- ultralytics
How to use Davidsv/CourtSide-Computer-Vision-v1 with ultralytics:
from ultralytics import YOLOvv11 model = YOLOvv11.from_pretrained("Davidsv/CourtSide-Computer-Vision-v1") source = 'http://images.cocodataset.org/val2017/000000039769.jpg' model.predict(source=source, save=True) - Notebooks
- Google Colab
- Kaggle
| language: en | |
| license: mit | |
| tags: | |
| - yolo | |
| - yolov11 | |
| - object-detection | |
| - tennis | |
| - racket | |
| - tennis-ball | |
| - court-detection | |
| - sports | |
| - computer-vision | |
| - pytorch | |
| - ultralytics | |
| - courtside | |
| datasets: | |
| - roboflow/tennis-ball-detection | |
| - roboflow/tennis-court-detection | |
| - roboflow/racket-detection | |
| metrics: | |
| - precision | |
| - recall | |
| - mAP | |
| library_name: ultralytics | |
| pipeline_tag: object-detection | |
| model-index: | |
| - name: CourtSide Computer Vision v1 | |
| results: | |
| - task: | |
| type: object-detection | |
| metrics: | |
| - type: mAP@50 | |
| value: 92.13 | |
| - type: mAP@50-95 | |
| value: 85.49 | |
| - type: precision | |
| value: 92.9 | |
| - type: recall | |
| value: 92.0 | |
| # 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**: | |
| 1. **Tennis Ball Dataset** - Ball detection | |
| 2. **Tennis Racket Dataset** - Racket detection | |
| 3. **Tennis Court Dataset** - Court zones and net detection | |
| ### Training Configuration | |
| ```yaml | |
| 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 | |
| ```bash | |
| pip install ultralytics | |
| ``` | |
| ### Python API | |
| ```python | |
| 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 | |
| ```python | |
| 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 | |
| ```bash | |
| # 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 | |
| ```python | |
| # 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 | |
| ```bibtex | |
| @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 | |
| ```bibtex | |
| @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 | |
| ```bibtex | |
| @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 | |
| ```bibtex | |
| @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 | |
| ```bibtex | |
| @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](https://github.com/ultralytics/ultralytics) | |
| - Training datasets from [Roboflow Universe](https://universe.roboflow.com) | |
| - Part of the CourtSide Computer Vision project for tennis analysis | |
| ## Contact & Support | |
| - Hugging Face: [@Davidsv](https://huggingface.co/Davidsv) | |
| --- | |
| **Model Size**: ~5.4 MB | |
| **Supported Formats**: PyTorch (.pt), ONNX, TensorRT, CoreML | |
| **Model Hub**: [Davidsv/CourtSide-Computer-Vision-v1](https://huggingface.co/Davidsv/CourtSide-Computer-Vision-v1) | |