Our motive for designing/developing this desktop app along with its website was centered during the COVID-19 pandemic, which extremely encouraged self-isolation and the loss of human interaction. Constantly being trapped at home, we, along with billions of other people, face difficulties finding both the motivation and resources to be able to stay physically healthy and work out. Thus, during this time, online workouts were extremely successful, feeding off of individuals who didn’t necessarily know what was good for them, but instead a way to just move their body. While this method definitely made exercising during quarantine much more accessible, it was difficult to determine whether we were truly doing the exercises correctly and effectively to get the results we wanted to attain. Thus, our team designed this desktop app to not only motivate us to exercise and stay fit, but also provides feedback and critiques on our form/posture while executing these exercise moves, allowing users to be informed and thus, improve.

What it does

Postrainer has two components: the website and the desktop app.

The desktop app serves as a personal coach, of sorts, detecting reps via a webcam, and providing feedback on posture and other workout best practices. It provides customizable hands-free workouts and scores users based on their quality of workouts.

On the other hand, the website serves as a touchpoint between the users and application, providing an introduction to the importance of our application. This includes providing a download page, more “interactive” elements such as daily workouts that instructors upload on the website, and a meet the team section where you can become introduced to the creators of Postraining! In the future, it may also serve as a leaderboard page for even more motivation!

How we built it

The desktop app was built using a number of different applications and languages. This included aspects of Python, which was using OpenCV to read the camera feed, Tensorflow, and Keras for the models. Mediapipe pose recognition was also used to get the posture vector of the user to feed into the scoring neural networks. Lastly, NumPy was implemented for feature engineering. The website is built using mark-up languages such as HTML and CSS to create a working front-end application that displays all of our missions/resources.

Challenges we ran into

We had originally intended for the website to be a lot more complex, but then at 3 am realized we didn’t have the time for that…(oops!) The desktop app team ran into a lot of bugs from some development mistakes due to miscommunication and lack of comments in the code. (We learnt to make an effort to write more readable code in hackathons- it takes more time at 5 pm, but it saves time at 2 am) Additionally, for the website development team, the little details such as working with Flexbox and implementing unique details and file downloads to support the desktop app team definitely came with a challenge!

Accomplishments that we're proud of

The desktop app team is proud of our ability to have created multiple neural networks in such a short time span, doing a lot of feature engineering, and training them to very high accuracy. The website development team felt very accomplished after fixing all the formatting errors, and creating a working website that is both hands-on, interactive, and fosters the purposes and attributes the desktop app team provided. Gained some knowledge of backend and django.

What we learned

We improved our skills in AI a lot, and learned a lot about feature engineering, and some math concepts like linear algebra - Bala and Daniel (The Desktop App Team)

Besides the new concepts and functions that came with web development in HTML and especially CSS, we learned a lot about time management and storyboarding to create a website that is appealing to the eye. Most importantly, we found a much greater appreciation for communication with our team and being patient and smart with our code :) Also learnt how to set up django and sqlite for backend, even if it didn't work out in the end- Sophie and Naomi (The Website Development Team)

What's next for Postrainer

There are many things in different areas we aim to implement in the future. We plan on adding a backend to the website (we planned to do it, but not enough time) where there can be a leaderboard of users using a point system with points added for doing each workout, having streaks, etc. We also want to implement a stronger theme of a social media type place where users can post about their experiences and upload their workout log files to visualize their scores and streaks, all with tips to improve of course! We also plan to add a voice for the trainer instead of showing text on the screen. We hope to add more exercises and to clean up our networks for detecting an exercise. Furthermore, if a third dimension can be detected, we can reduce the dependency of the network on the position of the webcam. Finally, we hope to add a WebSocket to our desktop app, seamlessly integrating the app with the website (and hopefully our servers).

Built With

Share this project: