About a month ago I launched vball.io — a tool for volleyball video analytics. So far too many exciting features could be implemented, I decided to cut the scope in favor of having a ready-to-go product.
The product now is cutting rallies from raw volleyball video and combines them into one dense movie. It could be boring to watch a 1-hour game, so 10-minutes autogenerated digest could help. Also, vball.io provides all the found rallies as separated clips and they could be used, for example, for manual video editions.
Recently I started to play with ball tracking in volleyball and this experiment promised interesting results.
There are multiple ways to go further and I stuck for a while, looking for insights.
I wanted something useful, ready to apply in the real world. Ball tracking is fun but does not worth a lot as is.
Then I got an idea to use ball tracking to “filter” raw volleyball video for the most interesting moments.
Usually, volleyball video is very sparse, often contains warmups, breakouts, disputes, etc, but viewers are looking for great hits, incredible defense, or killing serves.
After the first experience of applying AI in sport, I was inspired to continue. Home exercises are looked like an insignificant goal and I targeted team plays.
AI in sports is a pretty new thing. There are a few interesting works:
I am a big fan of playing volleyball, so let’s talk about the last reference. This a site of one Austrian institute who analyzes games of a local amateur league.
There are some documents to read and even more important — open video dataset.
Volleyball is a complex game with many different aspects. …
During the quarantine, we had limited physical activities and that was not good, especially for children.
But when I made my kid exercise, I met resistance and had to control the whole process with attention.
It was fun and also I got an idea to automate the process. Although it was overkill in the situation, the inspiration turned out to be irresistible.
Considering a point to start, I picked squats. A basic movement with explicit stages and a big amplitude looked like the best contender.
Raspberry Pi with a camera is very handy to take home pictures with minimal efforts.
Recently a video from Tesla autopilot view appeared on the Internet and got very popular. I was interested in the streaming of a similar video (with the detected objects) for a long time and this demo finally made me do some work.
The only problem is I wanted to stream video from Raspberry Pi, but in general, it is not powerful enough to perform such tasks.
The most straightforward implementation is to run a detector on Raspberry Pi via OpenCV-DNN.
OpenCV-DNN supports multiple networks and formats, but I used to work with MobileSSD from Google (version 11_06_2017, the latest one…
I started to use Intel NCS with my Raspberry Pi robot and there were positive and negative sides of this upgrade.
The positive side is NCS was able to replace all the networks running on Raspberry with Tensorflow and OpenCV.
The performance gain inspired new goals but pretty soon I found out that NCS cannot be used from two different processes.
E: [ncAPI] [ 926029] resetAll:348 Failed to connect to stalled device, rc: X_LINK_ERROR
E: [ncAPI] [ 933282] ncDeviceOpen:672 Failed to find suitable device, rc: X_LINK_DEVICE_NOT_FOUND
Search on the Intel support forum brought in a similar problem.
That experiment failed because of the performance: a segmentation process turned out to be too much heavy for Raspberry.
There were two ideas to work the problem around:
The second idea seemed more interesting and a few days after I got Intel Neural Computer Stick 2.
It is pretty big and that was not easy to put the module into the robot layout.
In my previous story, I was teaching a Raspberry-powered robot-tank to navigate on a walkway on his own. The bottleneck was a road recognition — I used a simple approach with color filtering via OpenCV and the results were not reliable.
Generally speaking, this a task of image segmentation. There is a good article describing the most popular methods. They are simple and usually do not produce perfect results on real-life photos. The same thing as my color-based implementation.
How to make GPS-navigated robot-tank with Raspberry Pi.
After experiments with artificial intelligence, I decided to go with an old navigation way — over GPS.
At first, the simple GPS-USB dongle was bought.
Then I set it up based on an article from Adafruit. Although the paper is six years old, there are only a few details changed:
After my robot learned how to follow a line, there is a new challenge appeared. I decided to go outdoor and make the robot move along a walkway. It would be nice if a robot follows the host through a park like a dog.
The implementation idea was given by Behavioral cloning. It is a very popular approach for self-driving vehicles when AI learns on provided behavioral input and output and then makes decisions on new input. There is an article from Nvidia where they introduced this method.
Many good articles are describing this idea:
Working on artificial intelligence and computer vision applied to sports.