Digital Workout
Our project aims to develop an application that will guide an individual to perform a workout. The system will distinguish between a right and wrong workout movement and provide feedback to the user. If the workout is wrong, the system will inform the user of its weak areas and the actions that he/s
2025-06-28 16:26:43 - Adil Khan
Digital Workout
Project Area of Specialization Artificial IntelligenceProject SummaryOur project aims to develop an application that will guide an individual to perform a workout. The system will distinguish between a right and wrong workout movement and provide feedback to the user. If the workout is wrong, the system will inform the user of its weak areas and the actions that he/she is performing wrong and give suggestions to correct the form. The system will tell the difference using video only, as specialized sports bands and sensors are not as readily accessible by most people as compared to a smartphone camera. Moreover, our application will provide the user with features other than working out.
The application will be a substitute for the gym instructor, thus we will also include features like diet plan and progress management. The diet plan of each user will be an AI based system and will be made according to the user’s goals. Furthermore, keeping track of progress is necessary to achieve good results, thus an analytics section will be present in our application that will help the user in tracking their progress. The analytics section will be a comprehensive list of workouts and mistakes that the user has done over time. Lastly, the application will keep the data for each user secret and will not reveal the data to any third party.
Project ObjectivesFollowing are the main objectives for our FYP
- Provide repetition count for bicep curl,shoulder press, deadlift and squats
- Identify and give feedback on major mistakes done in the afformentioned excersices
- Develop an android application. The features of the application include :
- Repetition Count in real time
- Excerisce feedback
- User Workout history store and display
Prototype Description
The implementation of our project is an android application. The application has been developed using Android Studio in Java. The system first asks the user to Login if it is an existing user otherwise the user has to register first. For the user authentication we are using Firebase and we are providing password and credential update functionalities in our application. The main functionality of our system is the live workout repetition counter and validation. After Login the user can access the said functionality through the side menu. Before a user can begin the workout the user can set up the workout with the number of repetitions he/she desires to perform. Afterwards, the user starts to workout in front of the camera and, when the said number of correct repetitions of the chosen exercise are performed the workout is finished. When there is an error in the repetition it is displayed on the screen. Each workout is also stored in the databases and the user can later access it to review its performance.
Live Workout
The live workout feature of the application is complete. The implementation of the feature is divided into two parts. The first part is the Application module part and the second part is the classification model
Application Module
The application module is responsible for extracting the pose information using the camera, making an API call to the classification module and then using an exercise specific repetition counter and error generator.
Pose Estimation
The pose estimation is done using Google ML Kit . ML Kit provides the necessary API’s to use camera resources for frame capturing and then providing the pose estimation. The ML Kit uses the camera resource package for underlying image capturing and Mediapipe for pose estimation. The pose estimation and image capturing is done as long as the Live Workout feature of the application is active. The estimated pose is then passed through an exercise specific normalization where the ratio of all the points is taken with the distance between two static points. This is required as the classification model is trained on data that is normalized using this technique. Lastly, the estimated poses are stored in an array
Repetition Counter and Error Generator
The repetition count and error estimation are done in conjunction with each other. The estimated pose array is then placed in the body of an http post call. The response is either the current position of the body or the error that has occurred. A Finite State Machine keeps the record for the number of repetitions of the user. The Finite State Machine is specific for each exercise. Whenever during the course of the workout there exists an error in the http response then the finite state machine stops counting and then displays the suggestion to correct the workout. The number of repetitions and errors are stored in separate arrays and at the end of the workout are sent to the database for storage
Benefits of the ProjectFollowing are the benefits of our project
- The user is able to check their excersice form without a personal trainer.
- The system will help the user in keeping track of progress overtime
- User will be able to learn new excersice moves or correct old ones
- Users don't have to be physicaly present at the gym, they will only need a stand to place the phone.
- Cost effective as compared to a personal trainer as trainers cost upwards of ten thousand rupees meanwhile the highest possible subscription for our application will not go beyond a couple of hundred rupees
The implementation of our project is an android application. The application has been developed using Android Studio in Java. The system first asks the user to Login if it is an existing user otherwise the user has to register first. For the user authentication we are using Firebase and we are providing password and credential update functionalities in our application. The main functionality of our system is the live workout repetition counter and validation. After Login the user can access the said functionality through the side menu. Before a user can begin the workout the user can set up the workout with the number of repetitions he/she desires to perform. Afterwards, the user starts to workout in front of the camera and, when the said number of correct repetitions of the chosen exercise are performed the workout is finished. When there is an error in the repetition it is displayed on the screen. Each workout is also stored in the databases and the user can later access it to review its performance.
Application moduleThe application module is responsible for extracting the pose information using the camera, making an API call to the classification module and then using an exercise specific repetition counter and error generator
Pose EstimationThe pose estimation is done using Google ML Kit. ML Kit provides the necessary API’s to use camera resources for frame capturing and then providing the pose estimation. The ML Kit uses the camera resource package for underlying image capturing and Mediapipe for pose estimation. The pose estimation and image capturing is done as long as the Live Workout feature of the application is active. The estimated pose is then passed through an exercise specific normalization where the ratio of all the points is taken with the distance between two static points. This is required as the classification model is trained on data that is normalized using this technique. Lastly, the estimated poses are stored in an array.
Repetition CounterThe repetition count and error estimation are done in conjunction with each other. The estimated pose array is then placed in the body of an http post call. The response is either the current position of the body or the error that has occurred. A FSM then keeps the record for the number of repetitions of the user. The number of repetitions and errors are stored in separate arrays and at the end of the workout are sent to the database for storage.
Classification ModuleThe Classification Model module is responsible for estimating the error and predicting the current pose of the user.We have trained the squat, shoulder press, and bicep curl pose prediction module. The pose prediction models are saved as .pkl files and uploaded to the cloud.. We are also using Flask to deploy to the cloud so that we can make API calls to our models using our android application.The models are made with Scikit-learn and data for the model is extracted using Mediapipe.
Final Deliverable of the Project Hardware SystemCore Industry ITOther Industries Health Core Technology Artificial Intelligence(AI)Other TechnologiesSustainable Development Goals Industry, Innovation and InfrastructureRequired Resources| Item Name | Type | No. of Units | Per Unit Cost (in Rs) | Total (in Rs) |
|---|---|---|---|---|
| Total in (Rs) | 52500 | |||
| Raspberry pi 4 | Equipment | 1 | 32500 | 32500 |
| 7 inch Capacitive Touch LCD for Raspberry Pi | Equipment | 1 | 10000 | 10000 |
| Raspberry pi camera v2 | Equipment | 1 | 10000 | 10000 |