The result is pretty nice. However, the only problem is the slow inference speed. I'm now refactoring the project structure and changing the model to a much faster YOLO model.
It's ready for a quick demo. However, there are stiil some little improvements have to make. And I'll build an web app on top of it for people to use it online.
Thanks for asking! The only model I used in this project is the YOLOv4 object detection model to detect the ball in each frame. I collected about 200 images to train it.
For the other parts like the tracking and the overlay timing, I programmed it by myself.
I implemented SORT algorithm for tracking the ball and some programming logic to capture the overlay timing from each clip.
I would say that the similar workflow could be applied to any ball-related sports. The object detection and the tracking algorithm is basically the same. Then, you could add any sport-specific feature!
For example, I have used a similar method to build AI Basketball Analysis.
This project takes your baseball pitching clips and automatically generates the overlay. A fine-tuned Yolov4 model is used to get the location of the ball. Then, I implemented SORT tracking algorithm to keep track of each individual ball. Lastly, I will apply some image registration techniques to deal with slight camera shift on each clip.
I'm still trying to improve it! Feel free to follow this project, also check out the Todo list.
BTW, I just want to point out that did anyone notice that the pitcher throw the ball with the exact same posture but it turned out to fly on a completely different path. It's just amazing!
BTW, I just want to point out that did anyone notice that the pitcher throw the ball with the exact same posture but it turned out to fly on a completely different path. It's just amazing!
This project takes your baseball pitching clips and automatically generates the overlay. A fine-tuned Yolov4 model is used to get the location of the ball. Then, I implemented SORT tracking algorithm to keep track of each individual ball. Lastly, I will apply some image registration techniques to deal with slight camera shift on each clip.
I'm still trying to improve it! Feel free to follow this project, also checkout the Todo list.
Hi, the link provided is the pure ML part of the project, without any Flask thing.
Unfortunately, I don't have written a notebook for it. Maybe you could try to figure it out through the source code? The code itself is actually prettly simple and short.
Hi guys, I built this project for fun and I thought it would also be a good practice for me.
However, I have read the OpenPose License which strictly disallows their project for commercial use. My project is for research use only and I'm not making any money from it.
I have mentioned that I implemented OpenPose and link to their GitHub repo. And I also copy and paste their whole license into my repo license.
I want to know is it still possible for me to violate their license in any way?
Hi guys, I know some of you may have already seen this project. I have made some big updates and add some interesting new features. Besides the original shot analysis, it could also analyze the shooting pose and release angle now! I wanna share it with you guys and once again ask for more feedback.
1. I implemented OpenPose to analyze the shooting pose. The angle of elbow and knee is calculated with the data collected by OpenPose.
2. The original shot analysis has a big problem which is that it would misdetect a head as a ball, and that will really mess up my algorithm. I solve this problem by avoiding the detections near the head coordinate collected from OpenPose.
3. The shot release angle is calculated with the first two detection points of the shot analysis.
4. Please note that there will be a relatively big error for the release time since it was calculated as the total time when the ball is in hand for each shot. I would be glad if anyone has a suggestion to solve this problem.
Please feel free to check out the README on GitHub page for more detail.
https://github.com/chonyy/AI-basketball-analysis
The result is pretty nice. However, the only problem is the slow inference speed. I'm now refactoring the project structure and changing the model to a much faster YOLO model.