Inspiration
The website was inspired by our love for Stephen Curry, whose mesmerising shooting has always been a skill we have wanted to have. We wanted to focus on improving and tracking our own basketball shooting skills in a high-tech and efficient manner. Our goal is to leverage technology to accelerate our progress, allowing us to train harder and smarter, just like our role model, while having fun in the process!
What it does
Once one is signed in (with the demo log in for now), they can analyze their shooting form by going to the analyze tab. All they must do is submit a video of them shooting or just take a video directly on the app itself, and the model will record the session stats (shot accuracy and arc consistency). Furthermore, on the profile tab, the app will keep track of the sessions, total shots, average accuracy, and past training sessions. It also has daily goals and accomplishments that the user can try to achieve, giving them more motivation to keep practicing.
How we built it
For the UI, we used Vercel V0 to quickly design and deploy the frontend. We mainly trained our model using T4 GPUs on Google Colab from a YOLOv11 model custom trained on a basketball dataset. After training, we created an algorithm to determine whether the basketball actually passed through the rim by checking if the line containing the first point above and below the rim would pass through the x bounds of the rim. After training, we integrated the model with Supabase, where the AI generated and stored relevant data. That data was then retrieved by the frontend, allowing real-time updates to the statistics displayed to users.
Challenges we ran into
At the start of our project, we struggled to find quality datasets for the video basketball shot analysis, so we attempted to merge datasets and perform data augmentation. In addition, one of our group members reached the GPU usage limit in Google Colab; however, we were able to circumvent this by sharing the code and allowing another member to run it. Learning how to utilize YOLO v11 took some time and we ran into a few Google Colab issues while custom training our model. Another challenge was implementing the backend into the frontend, which we solved by using Supabase to manage data flow effectively.
Accomplishments that we're proud of
One of the things we are most proud of is building a machine learning model that can accurately identify both a basketball and a hoop, with an accuracy of around 95%. The model can also determine whether a shot was made or missed, and it is capable of tracking the arc of the basketball throughout the attempt. On the frontend, we are proud of designing a clean and engaging landing page, along with a fully functional dashboard for SmartShot tracking that brings everything together.
What we learned
We learned more about quickly prototyping frontend webpages using Vercel V0 and customizing the UI to look stunning. In addition, we were able to integrate a Supabase authentication system for signing up to the website and logging in. We also learned about YOLO models and custom training them with an unclean dataset. Moreover, we learned how to track the arc of the basketball relative to the location of the hoop and verify if the basketball went into the hoop.
What's next for SmartShot
We believe we can expand this technology by allowing it to identify a person’s shooting form alongside whether or not the ball went into the hoop with a proper arc. This could allow for personalized tips that could give more insight as to where the user is going wrong. A variety of other drills and practices, including those with dribbles, hook shots, etc. could also be implemented. Moreover, we can also expand this concept into other sports, such as martial arts or football, in order to help users improve their form and ability in those sports. Lastly, we can expand this concept to identify basic athletic drills, such as push ups and squats, and give personalized tips alongside feedback regarding form. Technically, we plan on deploying our flask server to Google Run and allowing the backend to update
Built With
- colab
- python
- supabase
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.