Last year I worked on ball recognition and tracking using volleyball videos from Youtube and even launched a service for people who want to do something with their games records.

Recently I got a drone and the first thing I did of course — filmed our game with friends in a park. Hovering at the altitude of 40–50 feet is enough to catch the whole court and the captured video gives many analytic opportunities.

But first thing first and let's check how the ball tracking works here. The drone carries the camera with a gimbal which absorbs the drone movements.

After monitoring customers during the first months, I noticed a lot of people attempt to process TV records (or at least professionally edited games from multiple cameras).

Unfortunately, such a source will not work because of the technology limits. The original approach uses background removal algorithms, but that makes sense only with an immobile camera.

Good static view

About a month ago I launched — 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, provides all the found rallies as separated clips and they could be used, for example, for manual video editions.

The usage scenario is very simple — pick a Youtube video…

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.

People do…

Computer vision and neural networks in SportTech


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. …

Artificial intelligence in SportTech

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.

Data Collection

Raspberry Pi with a camera is very handy to take home pictures with minimal efforts.

Use OpenCV, specialized hardware and cloud technologies to achieve a fast detection

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.

Image with detected objects

OpenCV on Raspberry

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…

Extend the hardware limit with a Python wrapper

Single process problem

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.

There is a…

In my previous article, I did a road image segmentation via OpenCV-DNN and Enet.

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:

  • teach Enet will smaller pictures in the hope it will be faster
  • run the segmentation on some hardware for neural networks

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.

Due to…

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.

Looking for a way to improve I decided to use a semantic segmentation. Neural networks are getting used for this task…

Constantin Toporov

Working on artificial intelligence and computer vision applied to sports.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store