This project contains the source code for our Computer Engineering Senior Project, satisfying the requirements for ECE 4710 at the University of Utah. The project includes backend code for pose estimation, frontend code for display on the mirror, and a Flask server for communication with the iOS application that accompanies this project.
The purpose of this project is to provide real-time visual feedback and auto-logging capability to a user who is exercising. The project currently supports three exercises: bicep curl, shoulder press, and squat.
This project makes use of the TensorRT Pose Estimation library for model inference accelerated by NVIDIA TensorRT. Please refer to relevant documentation their for full installation instructions.
We used the following followed which was pre-trained on the MSCOCO dataset.
Model | Jetson Nano | Weights |
---|---|---|
resnet18_baseline_att_224x224_A | 14 | download (81MB) |
To run this application, navigate to the tasks/human_pose directory and run the get_video.py script.
python3 get_video.py
In addition to loading the model, running this script also starts up a server running on port 5000. To begin an exercise, connect to this server and hit one of the supported HTTP endpoints using a browser or the iOS application that accompanies this project.
- startSession: Begin a workout session
- endSession: End a workout session
- rightCurl: Initiate right bicep curl exercise
- leftCurl: Initiate left bicep curl exercise
- shoulderPress: Initiate shoulder press exercise
- squat: Initiate squat exercise