IntelliFit Trainer is an Android-based AI-powered mobile app that functions like a smart fitness assistant, monitoring the user during exercise to help them maintain optimal posture.
Obesity and wrong sports habits have become an increasing health problem. Many people do not fully realize the importance of sports and struggle to find enough time and resources. This has increased the demand for gyms and private trainers, but the high cost of these services has become a deterrent for many people. In addition, individuals who exercise on their own without the support of a personal trainer can suffer serious short or long-term injuries due to improper body form, especially in bodybuilding exercises such as weight lifting. The 'IntelliFit Trainer' application aims to offer a modern solution to these problems. Working like a personal fitness trainer, this innovative app allows users to exercise accurately and effectively at home or anywhere they want, without the need for a personal trainer. In this way, it aims to make sports more accessible and sustainable for everyone by saving the user time and money. The app, which detects incorrect body positions during exercise by real-time motion tracking and provides feedback to maintain correct form, aims to minimize the risk of injury while making it easier for users to achieve a healthy and fit body. OpenCV and MediaPipe libraries were used as the basis for these operations. OpenCV is used to process the images from the users' cameras, while the MediaPipe pose estimation module is used to analyze body movements and positions in these images. The server side is developed in Python and uses these libraries to process and analyze the incoming image data. The client side is a mobile application developed using Android Studio and displays the data received from the server to the user in real time. The integration and communication of these two technologies is provided by the WebSocket tool, and it is aimed to help users achieve their health and fitness goals by offering them the opportunity to exercise properly at home or wherever they wish. The app is extremely simple and impressive to use as it combines technology and user-friendly design. In addition to providing a safe and effective sports experience, the app also raises awareness about the importance of exercise tracking, movement analysis and proper form. It also provides a valuable alternative for individuals with limited access to gyms and trainers.
- OpenCV: This library is primarily used for image processing and handling video streams. It converts image formats, draws graphical elements on images (like rectangles, text, and lines), and displays video frames. OpenCV facilitates the interface with the camera and the overlay of real-time feedback onto the video feed.
- MediaPipe: It is used for advanced pose detection. MediaPipe processes video frames to detect human poses, identifying and marking key landmarks on the human body. This is crucial for analyzing and guiding the user's movements during exercises, as it allows the system to understand and track the posture and movement of the user in real-time.
- WebSocket: This is enables communication between the client and server. It facilitates the transfer of screenshots, captured by the user's phone camera, to the server and then sends these images back to the client from the server.
- Firebase: This feature is used to manage user membership interactions, including a variety of functions such as creating accounts, password recovery, logging in, and verifying emails.
- Camera2 API: It is used to access the user's phone camera and continuously transmit images, and it is also used to optimize the received image by processing it before sending it.
- Android Studio: It is used to develop the mobile application.
- User Installs the Mobile Application: The user downloads and installs the mobile app on their android phone.
- Account Creation and Verification: The user creates a new account and verifies it through a confirmation email received in their inbox, then logs into their account.
- Creating a Workout Program: Under the "Create Workout" tab, the user can design a personalized workout program. This program is then saved in the "My Workouts" section.
- Selecting a Workout: From the "My Workouts" screen, the user selects the desired workout program.
- Starting the Workout: The user initiates the process by clicking the "Start Workout" button. The only requirement for the user is to position their phone’s camera so that it captures their movements.
- Image Transmission to the Server: Continuously, images captured by the user's camera (client-side) are transmitted to the server.
- Image Processing on the Server: The images sent to the server undergo various preprocessing steps and then are subjected to pose estimation analysis.
- Displaying Modified Images on the Client Side: The processed images are sent back to the client and displayed as a preview on the user’s phone screen.
- Providing Feedback on Exercise Form: This allows the user to know what percentage of the exercise is performed with the correct body form.
- Tracking and Feedback: The app tracks repetitions, automatically transitions to the next exercise, and monitors when the workout is finished, providing continuous feedback throughout the session.
There are 10 exercises that are optimized for the app to detect. These are:
- Push Up
- Dummbell Curl
- High Knees
- Cable Triceps
- Mountain Climbers
- Lunge
- Pull Up
- Squat
- Jumping Rope
- Jumping Jack
Below are some screenshots of the IntelliFit Trainer application to give you an overview of its interface:
The first screen that opens after pressing the application logo.
The main screen of the app. Can log in as a user, or switch to the account creation or forgot password screen.
The page that opens after user login.
Exercise program creation page. The number of sets and repetitions for the desired exercises are entered and added to the program with the "add" button, then this program is saved.
This is the page where saved exercises are stored. If the user wants to start an exercise, then he/she must first select an exercise program.
A page of animated GIFs showing how exercises should be done in the best form.
The logged in user can view and update their profile information. Each update takes place instantly in the Firebase database.
Users can send their suggestions, complaints or thanks directly by e-mail in-app.
![](https://private-user-images.githubusercontent.com/71061070/305164539-973dcb6c-2f67-4cf0-abbc-da27fee8316d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ2OTI0MTAsIm5iZiI6MTcyNDY5MjExMCwicGF0aCI6Ii83MTA2MTA3MC8zMDUxNjQ1MzktOTczZGNiNmMtMmY2Ny00Y2YwLWFiYmMtZGEyN2ZlZTgzMTZkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODI2VDE3MDgzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRjYWZiM2I5Y2ZkOGQxZTJjYmU3NThjYTY0Mzg3MTBlYWExODdmZTQzNzc5OTNmYTU1MWRlYzZjOTI2NzAxZjgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.2s0pmAcHliSqxfzx5qBlVjgYb6PPCn3hELYk5dZdArc)
![](https://private-user-images.githubusercontent.com/71061070/305164600-0365fdc9-0667-4527-84ae-dcf7e8030634.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQ2OTI0MTAsIm5iZiI6MTcyNDY5MjExMCwicGF0aCI6Ii83MTA2MTA3MC8zMDUxNjQ2MDAtMDM2NWZkYzktMDY2Ny00NTI3LTg0YWUtZGNmN2U4MDMwNjM0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA4MjYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwODI2VDE3MDgzMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA2ZjRjOTkwYWY2YWE1YTgyMWY0NGYwMTJlMjUxMmJiZjY4MTQzOTNmY2NjNTAxZjE1Mjk0NmIxYTI3ZGVlZWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.RPdnb7gW3j2g-d_HOdtNa-0CSSU-Hf2fRIg3x1s9hfU)
Do you have a question or need some support? Contact me at erayberkdalkiran@gmail.com