When you are are working out alone, sometimes its hard to keep a track of how many pushups you did and if you did them well. This inspired us to make an app that keep you healthy by doing that without the need for expensive trainers!
What it does
Pushup-Perfect uses your webcam on your computer to watch you do your push-ups and then let you know how many push-ups you have attempted and which of those were successful.
How I built it
We used Tensorflow and a marked data set we created to train a neural network that would recognize heads and elbows. Once we had a trained model we fed images from the webcam into the model to figure out the approximate location of the head and .Then we used the relative distance and motion between the head and the elbows to determine weather a pushup was attempted and whether it was successful or not.
Challenges I ran into
Getting Tensor flow to work was one of the hardest things to accomplish, from getting our images into the proper data format, to properly training a model on a computer that was powerful enough to using the right flags to see the prediction work. At every step of Tensorflow we had to read many pages of documentation and forums on github to see how to operate the complex commands of the environnent. Also the algorithm which decided how many pushups were done and if they were successful or not required lots of analytical analysis such as finite state machines to ensure they properly accounted for every state and noice in the data being received.
Accomplishments that I'm proud of
Learning and deploying Tensorflow in a short period of time Creating a Algorithm that could filter our noise and block out false positives.
What I learned
We learned the basics of computer vision while prototyping with open cv and we got started with machine learning something we had never used. Overall getting more experience in data collection and algorithm design were skills that we advanced.
What's next for Pushup-Perfect
To link and improve our web front end for project, deploy the application on the cloud so it could be deployed on more clients and then to add support for different physical activities.