File size: 2,719 Bytes
f4c9d04
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
---
license: mit
tags:
  - yolo
  - object-detection
  - pose-estimation
  - volleyball
  - sports
  - computer-vision
  - pytorch
datasets:
  - volleyball-court-keypoints
  - volleyball-detection
language:
  - en
pipeline_tag: object-detection
---

# VOLLEY-REF AI Models

AI-powered volleyball referee system for automatic IN/OUT line call detection.

## Models Included

### 1. Court Keypoints Model (`yolo_court_keypoints.pt`)
- **Architecture**: YOLOv11n-pose
- **Task**: Detect 14 keypoints of a volleyball court
- **Training**: 100 epochs on volleyball-court-keypoints dataset
- **Performance**: 99% box mAP@50, 29% pose mAP@50

### 2. Ball Detection Model (`yolo_volleyball_ball.pt`)
- **Architecture**: YOLOv11s
- **Task**: Detect volleyball in video frames
- **Training**: 57 epochs on volleyball_detection dataset
- **Performance**: 98.8% mAP@50

## Usage

### Download Models

```python
from huggingface_hub import hf_hub_download

# Download court model
court_model = hf_hub_download(
    repo_id="David-dsv/volley-ref-ai",
    filename="yolo_court_keypoints.pt"
)

# Download ball model
ball_model = hf_hub_download(
    repo_id="David-dsv/volley-ref-ai",
    filename="yolo_volleyball_ball.pt"
)
```

### Inference with Ultralytics

```python
from ultralytics import YOLO

# Court keypoints detection
court_model = YOLO("yolo_court_keypoints.pt")
results = court_model("volleyball_frame.jpg")

# Ball detection
ball_model = YOLO("yolo_volleyball_ball.pt")
results = ball_model("volleyball_frame.jpg", conf=0.7)
```

### Full Pipeline

See the [GitHub repository](https://github.com/David-dsv/volley-ref-ai) for the complete VOLLEY-REF AI pipeline that combines both models for automatic IN/OUT detection.

## Training Details

### Court Model
- Base: `yolo11n-pose.pt`
- Dataset: volleyball-court-keypoints (495 images)
- Epochs: 100
- Image size: 640
- Augmentation: Default YOLO augmentations

### Ball Model
- Base: `yolo11s.pt`
- Dataset: volleyball_detection (1091 images)
- Epochs: 57 (early stopped from 150)
- Image size: 640
- Augmentation: Default YOLO augmentations

## Limitations

- Trained primarily on indoor volleyball footage
- Performance may vary with different camera angles
- Ball detection works best with clear visibility (no motion blur)
- Court detection requires visible court lines

## License

MIT License

## Citation

```bibtex
@software{volley_ref_ai_2025,
  author = {Vuong},
  title = {VOLLEY-REF AI: AI-Powered Volleyball Referee System},
  year = {2025},
  url = {https://github.com/David-dsv/volley-ref-ai}
}
```

## Acknowledgments

- [Ultralytics](https://github.com/ultralytics/ultralytics) for YOLOv11
- [Roboflow](https://roboflow.com/) for the training datasets