Inspiration

During research our group learned that around the globe, kids and children didn't have access to high-quality coaching or feedback for football. The sport is vital for growth, social development and encouraging vital skills such as leadership, selflessness and teamwork. We decided that we wanted to create something that was able to address these dire problems with a free, and easy solution that is simple and intuitive to use while providing information that is useful for the user.

What it does

Our website either recieves a video that is uploaded by the user or recorded by a webcam or camera. The user then selects sections of the video and labels them as when they plant their foot, contact with the ball and the follow through. These compressed clips are then run through Google's MediaPipe Pose Landmarker where the skeleton is rendered with three-dimensional coordinates of locations on the body. The angles of these limbs and points are also compared with the height of the user to generate a standard form that the shot will be compared to. To prevent any errors or bugs, the plain video and skeleton will be fed into Gemini which will compare to see whether they match with each other. If they don't, Gemini will utlize the raw footage and give feedback to the user however this situation is rare and improbable from testing that our group preformed. Finally, after comparison, the data is given back to the user with an overall score, scores on specific actions and parts of the kick and feedback and what could have been improved on and what the user did well on.

How we built it

We built the website with templates and didn't dwell too much because our time would be better suited building the backend. For the backend, we originally built it in JS but had compatibility issues and ended up having to switch to python, which worked out well because we knew python better anyways. We used an ngrok tunnel to make our server accessible to the public and fastAPI to make the endpoints. We hit many hurdles along the way, and frequently had to test different versions and revert our changes in order to reach our final product. In the end, we simplified our product a lot which got it working, as we were using a janky system on the client-side which looked better but didn't work well enough.

Challenges we ran into

Some challenges that we ran into included when we attempted to integrate ball tracking into our software to give better results for the user, it would always appear laggy and would rarely work effectively. At the beginning, our group thought it was due to lighting or processing power, issues that were outside of the model's control. However later while testing, we realised that the model we used for ball tracking up until that point, Google's MediaPipe Object Detector was innefective and could only work effectively for controlled enviroments, not the usecases that our software was designed for. To resolve this issue, we changed our model for this sytem to YOLOv11 specifically for ball tracking and this significantly increased reliability and overpassed all our expectations for the system. It was also disabled for the recording and only added after the specific sections were labeled to ensure better preformance and response times.

Accomplishments that we're proud of

Some accomplishments that our group is proud is that our software is designed to be operated on systems with lower preformance and capabilites so it can be used around the world where the newest technology is not readily availible. Instead of using the newest models and systems, we instead decided to choose ones which could do the same job however use less data and processing power.

What we learned

Some things that we learned during our design process is that you don't necesarily need to feed a model all the data that is availible if you are trying to find a specific thing. At the beginning, we started with trying to feed an AI model the entire footage of the shot however that proved to take too long and give innacurate information as it registered the wrong areas as places that it should give its attention too. Instead, we could simplify the information that it recieved, for example selecting the three sections that it needed to analyze and only using the coordinates instead of the actual files.

What's next for Foot Form

Some things that we plan to do next for Foot Form are to expand our current database of soccer shots from varying angles and from players of varying sizes which the user's data is compared to for better accuracy and higher quality results. After this, with the same models and code that we use for soccer, we hope that this software can be expanded to other sports so more individuals globally can have access and use it to help them suceed and improve.

Built With

Share this project:

Updates

Submission history