- 2025-06-07: Major update! Dropped YOLO models and all GPU support. Now uses only RTMPose for pose detection, and runs on CPU only. Simpler, more compatible, and easier to use.
- 2025-06-12๏ผOptimize exercise_counters.py for counting accuracy, code structure optimization
- 2025-11-14: Reverted asynchronous pose detection due to accuracy issues, restored synchronous pose detection. Fixed crash when switching from statistics mode back to detection mode.
- 2025-11-15: New exercise database feature! All exercise configurations are now managed in
data/exercises.jsonfile. You can easily add, modify, or remove exercise types without modifying code.
- Multi-language interface
- Improve pose detection accuracy
- Add support for more exercise types
- Add custom exercise types template
- Recognizing Motion Accuracy
- Motion Error Correction Indication
- Add voice feedback
- Mobile Application Support
- Real-time Exercise Counting - Automatically counts your repetitions
- Multiple Exercise Support - Including squats, push-ups, sit-ups, bicep curls, and many more
- Advanced Pose Detection - Powered by RTMPose for accurate tracking
- CPU Only - No GPU required, works on most computers
- Visual Feedback - Live skeleton visualization with angle measurements
- Workout Statistics - Track your progress over time
- User-friendly Interface - Clean PyQt5 GUI with intuitive controls
- Works with any webcam - No special hardware required
- Runs locally - Complete privacy
-
If you don't want to set up a Python environment, you can download our pre-packaged executable:
Windows EXE package:
Baidu Netdisk Link code: 8866
- Use the interface buttons to select different exercises
- Real-time feedback shows your current form and repetition count
- Press the "Reset" button to reset the counter
- Use manual adjustment buttons to correct the count if needed
- Toggle skeleton visualization on/off
- View your workout statistics over time
All exercise types are now stored in the data/exercises.json file. You can easily add, modify, or remove exercise types without modifying code!
-
Keypoint Index Reference
- The system uses COCO 17 keypoint format:
0: nose,1: left_eye,2: right_eye,3: left_ear,4: right_ear5: left_shoulder,6: right_shoulder,7: left_elbow,8: right_elbow9: left_wrist,10: right_wrist,11: left_hip,12: right_hip13: left_knee,14: right_knee,15: left_ankle,16: right_ankle
- The system uses COCO 17 keypoint format:
-
Configuration Parameters
down_angle: Angle threshold when lowering (degrees)up_angle: Angle threshold when raising (degrees)keypoints.left: Left side three keypoint indices [pt1, pt2, pt3] for angle calculationkeypoints.right: Right side three keypoint indices [pt1, pt2, pt3] for angle calculationis_leg_exercise: Whether it's a leg exercise (true/false), affects counting logicangle_point: Keypoint indices [pt1, pt2, pt3] for displaying angle lines on video
-
Example: Adding a New Exercise
"my_custom_exercise": { "name_zh": "ๆ็่ชๅฎไน่ฟๅจ", "name_en": "My Custom Exercise", "down_angle": 120, "up_angle": 170, "keypoints": { "left": [5, 7, 9], "right": [6, 8, 10] }, "is_leg_exercise": false, "angle_point": [6, 8, 10] }
-
Restart the Application
- Python 3.9
- Webcam
- Windows/Mac/Linux: CPU only, no GPU required. Performance may vary by hardware.
-
Clone and install
git clone https://github.com/yo-WASSUP/Good-GYM.git cd Good-GYM # Create virtual environment python -m venv venv # Activate (Windows) .\venv\Scripts\activate # or (Mac/Linux) source venv/bin/activate # Install dependencies pip install -r requirements.txt
-
Run the application
python workout_qt_modular.py
Contributions are welcome! Please feel free to submit a Pull Request.
Thanks to RTMPose open source pose detection model: https://github.com/Tau-J/rtmlib
This project is licensed under the MIT License - see the LICENSE file for details.







