Home
Softono

Good GYM

Open source MIT Python
340
Stars
55
Forks
1
Issues
4
Watchers
4 months
Last Commit

 About Good GYM

AI-powered fitness assistant for real-time pose estimation, exercise counting, and workout feedback.

Platforms

Web Self-hosted

Languages

Python

Links

Need Help Installing Good GYM?

We provide expert installation service for this software. Our team will install, configure, and secure Good GYM on your server. plans start at just $30.

Good-GYM: AI Fitness Assistant ๐Ÿ’ช

Good-GYM Logo

GitHub stars GitHub forks GitHub license

AI Fitness Assistant

Download on the App Store

English | ไธญๆ–‡

LinkedIn introduction

๐Ÿ†• Changelog

  • 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.json file. You can easily add, modify, or remove exercise types without modifying code.
  • 2026-03-04: Add optional GPU acceleration support, now supports NVIDIA GPUs
  • 2026-03-28: Add mobile application support, now supports IOS

๐Ÿ”ฎ Future Development

  • Multi-language interface
  • Improve pose detection accuracy
  • Add support for more exercise types
  • Add custom exercise types template
  • Recognizing Motion Accuracy
  • Mobile Application Support
  • Motion Error Correction Indication
  • Add voice feedback

๐Ÿ“ฑ Try Good-GYM on iOS

Good-GYM iOS App Good-GYM App Store

Download on the App Store


ๆผ”็คบ ๆผ”็คบ

๐ŸŒŸ Features

  • 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 & GPU Support - Works on CPU by default, with optional GPU acceleration
  • 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

๐Ÿ“ฆ Direct Download

๐Ÿ“ฑ iOS App

Download on the App Store

๐Ÿ’ป Windows Desktop

๐Ÿ“ Usage Guide

๐ŸŽฏ Custom Exercise Types

All exercise types are now stored in the data/exercises.json file. You can easily add, modify, or remove exercise types without modifying code!

How to Add a New Exercise Type

  1. Keypoint Index Reference

    • The system uses COCO 17 keypoint format:
                     โ—‹ 0
                    /|\
             1 โ—     |     โ— 2
            3 โ—      |      โ— 4
                     |
           5 โ—โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ— 6
             |       |       |
             |       |       |
           7 โ—       |       โ— 8
             |       |       |
             |       |       |
           9 โ—       |       โ— 10
                     |
          11 โ—โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ€”โ— 12
             |               |
             |               |
          13 โ—               โ— 14
             |               |
             |               |
          15 โ—               โ— 16
      
       Index โ”‚ Keypoint    Index โ”‚ Keypoint
       โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€  โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
         0   โ”‚ Nose          9  โ”‚ L.Wrist
         1   โ”‚ L.Eye        10  โ”‚ R.Wrist
         2   โ”‚ R.Eye        11  โ”‚ L.Hip
         3   โ”‚ L.Ear        12  โ”‚ R.Hip
         4   โ”‚ R.Ear        13  โ”‚ L.Knee
         5   โ”‚ L.Shoulder   14  โ”‚ R.Knee
         6   โ”‚ R.Shoulder   15  โ”‚ L.Ankle
         7   โ”‚ L.Elbow      16  โ”‚ R.Ankle
         8   โ”‚ R.Elbow
      
  2. 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 calculation
    • keypoints.right: Right side three keypoint indices [pt1, pt2, pt3] for angle calculation
    • is_leg_exercise: Whether it's a leg exercise (true/false), affects counting logic
    • angle_point: Keypoint indices [pt1, pt2, pt3] for displaying angle lines on video
  3. 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]
    }
    
  4. Restart the Application

๐Ÿ“‹ Requirements

  • Python 3.9
  • Webcam
  • Windows/Mac/Linux: Works on CPU by default. Optional GPU acceleration available for source deployments.

๐Ÿš€ Environment Setup

Installation

  1. 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
    
  2. Run the application

    python run.py
    

GPU Acceleration (Optional)

If you have an NVIDIA GPU, you can enable GPU-accelerated inference for better performance.

Prerequisites: NVIDIA GPU + NVIDIA Driver installed

Resource Usage:

  • CUDA runtime libraries require ~3 GB disk space
  • Models use only ~200 MB VRAM โ€” any NVIDIA GPU with 2GB+ VRAM will work
# 1. Replace onnxruntime with the GPU version
pip uninstall onnxruntime
pip install onnxruntime-gpu

# 2. Install CUDA runtime libraries via pip (no need to install CUDA Toolkit manually)
pip install nvidia-cudnn-cu12 nvidia-cublas-cu12 nvidia-cuda-runtime-cu12 nvidia-cufft-cu12 nvidia-curand-cu12 nvidia-cusolver-cu12 nvidia-cusparse-cu12 nvidia-cuda-nvrtc-cu12

The application will auto-detect GPU availability at startup. You can toggle GPU on/off via the "GPU Acceleration" switch in the control panel.

Note: The pre-packaged EXE only supports CPU mode. GPU acceleration is only available when running from source.

๐Ÿ–ผ๏ธ Screenshots

Desktop

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5

iOS App

Training History Goals Settings App Store

๐Ÿค Contributing

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

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

โญ Star History

Star History Chart