Our research led us to platforms like our project in that they aimed at providing computer vision analysis for a specific sport.
While we did receive advice from our supervisors on which languages and frameworks to use, we still conducted in-depth research into what would suit us best.
Through our experiments, we found the CNN to work better than the ST-GCN model as it provided us an 85% accuracy on average whereas the latter was more difficult to implement. As our project had already been significantly delayed, we chose to follow with the CNN model as it showed us promising results.
Subsequently, to train our model we used the THETIS dataset as it contained a wide variety of tennis players taking different shots. [8]
For our front-end we turned to Javascript as it had many frameworks available to it that we could use in our program such as Vue.js and Three.js which we used for our 3D reconstruction.
For player data extraction, we considered two possible frameworks, MediaPipe and Tensorflow. However, after careful consideration we decided to use MediaPipe as it contained ready to use solutions for our problem and already functioned quite well with OpenCV which was used to capture video feed frames. The pose estimation MediaPipe performed also gave us more joint coordinates we could work with, with a total of 32 compared to some other frameworks which only provided around half. [11]
Regarding the shot recognition, we settled on TensorFlow as it was well supported in the machine learning field and allowed us to easily train our models and apply it to our program. Furthermore, its abstraction of machine learning processes made it much easier to use. [12]
Lastly, for our API, we mainly considered two frameworks, Flask and Django. In the end we went for Flask due to its flexibility and simplicity, which was far more suited to the scale of our project. [13]
In terms of the front-end of the application we considered a few frameworks like React.js, Vue.js and Flutter. Vue.js was chosen due to its comparatively low learning curve as well as its widely available online documentation. [14] We also chose to use Bootstrap, a popular CSS framework, to obtain a simple and clean UI and create a responsive website, simplifying its usage on mobile phones. Three.js was selected for 3D reconstruction as it required no extra plugins and could be run natively on any browser using WebGL, thus providing additional support for mobile phones.[15]
Technology | Decision | |
---|---|---|
ML Model | CNN | |
Language | Back-end | Python |
Front-end | Javascript | |
Backend frameworks | Avatar extraction | MediaPipe and OpenCV |
Shot recognition | TensorFlow | |
API | Flask | |
Frontend frameworks | Vue.js | |
Libraries | Python | NumPy and SciPy |
[1] https://www.clutchapp.io/ [Accessed on 10th January 2022]
[2] https://github.com/vishaltiwari/bmvc-tennis-analytics [Accessed on 10th January 2022]
[3] http://www.zepplabs.com/en-us/tennis/ [Accessed on 10th January 2022]
[4] https://doi.org/10.48550/arXiv.1704.07595 [Accessed on 3rd January 2022]
[5] M. Skublewska-Paszkowska, P. Powroznik, and E. Lukasik, “Learning Three Dimensional Tennis
Shots Using Graph Convolutional Networks,” Sensors, vol. 20, no. 21, p. 6094, Oct. 2020,
doi: 10.3390/s20216094. [Accessed on 3rd January 2022]
[6]https://graphneural.network/ [Accessed on 3rd January 2022]
[7]https://medium.com/@christinatan0704/an-overview-on-spatial-temporal-graph-convolutional-networks-for-skeleton-based-action-recognition-2181c0c0a0f0 [Accessed on 3rd January 2022]
[8] Sofia Gourgari, Georgios Goudelis, Konstantinos Karpouzis and Stefanos Kollias.
THETIS: THree Dimensional Tennis Shots A human action dataset. In CVPR, International workshop
on Behavior Analysis in Games and modern Sensing devices, June 2013. [Accessed on 3rd January 2022]
[9] https://dev.to/imagescv/top-3-programming-languages-for-implementing-a-computer-vision-system-4jk5 [Accessed on 10th January 2022]
[10] https://www.tensorflow.org/ [Accessed on 10th January 2022]
[11] https://google.github.io/mediapipe/solutions/pose.html [Accessed on 10th January 2022]
[12] https://www.infoworld.com/article/3278008/what-is-tensorflow-the-machine-learning-library-explained.html [Accessed on 10th January 2022]
[13] https://www.interviewbit.com/blog/flask-vs-django/ [Accessed on 2nd March 2022]
[14] https://flutter.dev/ [Accessed on 2nd March 2022]
[15] https://threejs.org/docs/#manual/en/introduction/WebGL-compatibility-check [Accessed on 2nd March 2022]