Skip to content

Repository files navigation

AI Sports Pose Estimation - Squat & Pushup Analyzer

A computer vision system for analyzing squat and pushup exercise form using AI pose estimation. The system provides real-time rep counting, form validation, and comprehensive reporting.

Features

  • Exercise Analysis: Automated squat and pushup form analysis with rep counting
  • Form Validation: Real-time feedback on exercise form using joint angle thresholds
  • Side Detection: Automatic detection of body orientation using 3 heuristic algorithms
  • Comprehensive Reporting: PDF reports, CSV data export, and JSON summaries
  • Flask API: RESTful endpoints for video upload and analysis
  • Docker Support: Containerized deployment for easy setup
  • Unit Test: Create a unit test for the exercise and flask api

Project Structure

.
├── api/
│   ├── flask_api.py          # Flask API endpoints
│   └── __init__.py
├── assets/
│   ├── output/               # Analysis output directory
│   └── yolo11x-pose.pt       # YOLO pose estimation model
├── exercises/
│   ├── squat.py              # Squat analysis logic
│   ├── pushup.py             # Pushup analysis logic
│   └── __init__.py
├── src/
│   └── main.py               # Main pipeline (non-Flask)
├── tests/
│   ├── test_api.py           # API integration tests
│   └── test_exercises.py     # Exercise logic unit tests
├── utils/
│   ├── config_utils.py       # Configuration utilities
│   ├── generate_report.py    # Report generation
│   ├── side_detection.py     # Body orientation detection
│   └── visualization_utils.py # Visualization utilities
├── reports/                  # Generated analysis reports
├── config.yaml              # Configuration file
├── requirements.txt          # Python dependencies
├── Dockerfile               # Docker configuration
└── test_flask_api.py        # Standalone API test script

Algorithm Overview

Exercise Analysis

  • Squats: Primary angle is knee angle (hip-knee-ankle), with hip angle (shoulder-hip-knee) as support
  • Pushups: Primary angle is elbow angle (wrist-elbow-shoulder), with back straightness (shoulder-hip-knee) validation

Pose Estimation

Uses YOLO11 for keypoint detection, chosen for its efficiency-latency tradeoff and superior keypoint detection accuracy.

Side Detection

Implements 3 heuristic algorithms to determine body orientation (left/right facing) for accurate angle calculations.

Installation

Clone Repository

git clone https://github.com/khaledmoawad1/squat_pushup_ai_analyzer.git
cd squat_pushup_ai_analyzer

Create Virtual Environment

# Using conda
conda create -n ai-trainer python=3.9
conda activate ai-trainer

# Using python venv
python -m venv ai-trainer
source ai-trainer/bin/activate  # On Windows: ai-trainer\Scripts\activate

Install Dependencies

pip install -r requirements.txt

Configuration

Update config.yaml based on your requirements:

  • Input video paths
  • Angle thresholds for exercise validation
  • Model paths and output directories
  • Visualization settings

Usage

1. Docker Deployment

# Build Docker image
sudo docker build -t ai-trainer .

# Run container
sudo docker run -p 5000:5000 ai-trainer

2. Flask API

# Start Flask server
python api/flask_api.py

# Test API using standalone script
python test_flask_api.py

3. Direct Pipeline

# Run analysis pipeline directly
python src/main.py --exercise squat --video path/to/video.mp4

4. Unit Testing

# Run all tests
pytest

# Run specific test files
pytest tests/test_api.py
pytest tests/test_exercises.py

API Endpoints

  • GET /health - Health check endpoint
  • POST /analyze - Video analysis endpoint
    • Parameters: video (file), exercise (squat/pushup)
    • Returns: Analysis results with rep counts and form feedback

Output Reports

The system generates comprehensive reports in ./reports/{video_id}/:

  • PDF Report: Visual analysis with charts and sample frames
  • CSV Results: Frame-by-frame angle data
  • JSON Summary: Exercise statistics and form analysis
  • Full Response: Complete API response data

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages