GNU Affero General Public License v3.0

项目介绍

shukkkur/VolleyVision 是一个托管在 GitHub 上的开源项目,主要使用 Python 编写,采用 GNU Affero General Public License v3.0 许可证,目前获得 332 个 Star、59 次 Fork。

仓库全名
shukkkur/VolleyVision
开源许可证
GNU Affero General Public License v3.0
Star 数
332
Fork 数
59
未关闭 Issue
2

README 摘要

👁️VolleyVision👁️ University of Central Asia ⛰️ 🧪 Example usage Volleyball | Detection :-------------------------:|:-------------------------: Action Recognition | Event Detection Player Detection | Court Detection 🎯 Objectives ✅ Learn and apply popular CV techniques to volleyball data ✅ Popularize volleyball in the field of AI ✅ Create volleyball datasets ✅ Contribute to open-source community 📝 About November…

完整内容见 GitHub 原始 README 或本页 。

常见问题

VolleyVision 用什么语言开发?

主要使用 Python 编写,采用 GNU Affero General Public License v3.0 许可证,目前有 332 个 Star。

VolleyVision 可以免费商用吗?

仓库标注的许可证为 GNU Affero General Public License v3.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 VolleyVision 的源码?

可以直接克隆仓库:git clone https://github.com/shukkkur/VolleyVision.git,默认分支为 main;安装与运行步骤见仓库 README。

VolleyVision 最近还在维护吗?

仓库最近一次更新为 2025年6月20日,当前有 2 个未关闭 Issue;Star 数为 332,可作为社区活跃度的参考。

关于

Applying Deep Learning Approaches to Volleyball Data

描述取自 GitHub 官方 API,中文内容由 GitRead 中文社区 编辑团队整理。

README

👁️VolleyVision👁️




University of Central Asia⛰️

🧪 Example usage

Volleyball Detection
Action Recognition Event Detection
Player Detection Court Detection

🎯 Objectives

✅ Learn and apply popular CV techniques to volleyball data
✅ Popularize volleyball in the field of AI
✅ Create volleyball datasets
✅ Contribute to open-source community

📝 About

November 7, 2022 | The result of my project should be a web application, that takes a volleyball video and is able to detect and track the ball, players, the court and provides game statistics.

May 15, 2023 | hahahaha, today is the Diploma Project submission day. Well, there is a simple web app, I couldn't deploy it though, and now I am too burned out and busy to get back to this project. hahah I also planned to provide game statistics from the footage, that also did not go as planned. But, overall I am happy)))

🏐 Volleyball Detection & Tracking

yV8 Weights WandB Badge

Two trained models: RoboFlow (AutoML training) and yoloV7-tiny (local training). Both were trained on my newly created dataset comprised of 25k images. As for the tracker, DaSiamRPN (cv2) was used.

mAP(50) precision recall
yoloV7-tiny 74.1% 86.4% 65.8%
RoboFlow 92.3% 94.7% 86.1%

RoboFlow model is more accurate and works better on official matches, rather than yolov7 model. However, it requires longer time for inference. YoloV7-tiny is capable of real-time inference, even though it is less accurate than RoboFlow model, it is still a good and fast choice for larger volleyballs.

🏃‍♂️ How to Run

🏃 Player Detection & 🤾 Action Recognition

Action Recognition
yV8 Weights WandB Badge

In this stage, I focused on recognizing volleyball actions from the images. A comprehensive volleyball actions dataset was created, comprising 14k images. I used YOLOv8m to train the action recognition model on this dataset.

mAP50(B) precision recall
yolov8m 92.31% 92.38% 89.4%
RoboFlow 83.7% 78.5% 82.3%

The results were highly promising, as shown by the performance metrics.

Players Detection
yV8 Weights

In addition, I have also trained a YOLOv8m model on a dataset of volleyball players, achieving a high level of accuracy in detecting players in each frame:

mAP50(B) precision recall
yolov8m 97.2% 94.2% 94%
RoboFlow 97.2% 96.7% 91.7%

However, it's worth noting that the yolov8 model, being able to perform in real-time, may occasionally misidentify coaches as players, whereas the RoboFlow model will have a higher rate of false negatives, resulting in missed player detections.

🏃‍♂️ How to Run

🏟️ Court Tracking

In this stage, I trained a simple Semantic Segmentation model on RoboFlow to find and outline the court.

mIoU
RoboFlow 97.2%

Keep in mind, this was a quick and fun experiment due to an upcoming thesis deadline, and it may not work perfectly every time.

The collage image above should give you the idea about the steps I took to detect the court:

  1. Get the segmentation mask from the model
  2. Find Contours - cv2.findContours
  3. Approximate a polygonal curve - cv2.approxPolyDP

🏃‍♂️ How to Run

💾 Datasets

Volleyball Actions Players Spatiotemporal Activity
  1. Volleyball (1 class: volleyball)
  2. Actions (5 classes: block, defense, serve, set, spike)
  3. Players (1 class: player)
  4. Spatiotemporal Volleyball Activtiy Dataset (7 classes: defense-move, attack, block, reception, service, setting, stand).

    This dataset belongs to Institute of Computer Graphics and Vision, I downloaded the annotations and the videos from the website, did all the preprocessing and uploaded it to RoboFlow, to make it more accessible and convinient for others to download. Please note that this dataset is video dataset but RoboFlow splitted it randomly into train/test/split. Therefore, after downloading the images and annotations, they all should be combined and then split sequentially.

  5. A Multi-Person Video Dataset of Spatio-Temporally Localized Sports Actions (12 classes: first hit pass, defend, no offensive attack...).

    MultiSports is a multi-person dataset of spatio-temporal localized sports actions. Please refer to this paper for more details and to this repository for evaluation.

  6. Court Segmentation

📝 LICENSE

This project is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives (CC BY-NC-ND) license.

This license allows you to:

  • Share — copy and redistribute the material in any medium or format
  • Adapt — remix, transform, and build upon the material

Under the following terms:

  • Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • Non-Commercial — You may not use the material for commercial purposes.
  • No Derivatives — If you remix, transform, or build upon the material, you may not distribute the modified material.

See the full license text for more details.

Read the full license text

💖 Donate

If you find my work useful or interesting, I would greatly appreciate your support on Ko-fi. Alternatively, you can simply reach out to me and say 'thank you,' which I equally value!)

👨‍💻 Further Development

🐛 Current Drawbacks

  • RoboFlow Volleyball Detection Model is slow, due to the API being called on every single frame
  • Court Detection is neither robust nor fast
  • Action Recognition model is undertrained on Defense class
  • Action Recogntiion model is undertrained on side-view data
  • Players Detection occasionally detects coaches, referees and spectators as player class

🫶 Contribute

Help me by annoating data, discussing potential improvements or writing a better documentation. Check out the CONTRIBUTING.md. Contributing is easy and appreciated!

🙌 Acknowledgement

  • This project wouldn't possible without amazing & free RoboFlow annotation tools , open-source datasets, quick & easy deployement and high-level blog posts. Special thanks to Mohamed Traore for tirelessly approving my constant requests for data storage and model training credits
  • Artyom Kulakov - My supervisor. Sincerest gratitude that you foud time to guide and support me along the entire journey (starting from ArtLabs))))
  • Nurlan Shaidullaev - FYP course instructor. Thank you for your vigilence and constant reminders about the upcoming deadlines :D
  • University of Central Asia - my home for the past 5 years. Immense gratitude to AKDN.
For any additional quesitons feel free to take part in discussions or open an issue.

评论

暂无评论