CS & AI Senior Capstone

Computer vision that counts every rep.

Real-time biomechanical pose estimation and rep analysis. An interactive, browser-based system that pairs Google MediaPipe Pose with finite-state joint trigonometry for skeletal tracking, form validation and automated repetition counting.

  • No sign-up
  • No video uploads
  • Any webcam
<30ms
Frame latency

Real-time landmark inference via WebGL GPU acceleration

33
Skeletal landmarks

3D coordinate mapping across every major joint axis

100%
Client-side

No video streaming or server dependencies, for privacy

0
Wearable sensors

Runs purely on a commodity browser webcam feed

Project background & scope

Problem statement & objectives

Investigating how client-side edge computer vision can remove the barrier to injury-free resistance training, without specialised sensors.

The challenge

Poor form is invisible to the person lifting

Improper exercise kinematics in resistance training frequently lead to musculoskeletal injury and inefficient neuromuscular recruitment. Beginners often lack access to qualified supervision or immediate feedback on their form.

Edge computer vision

33 full-body 3D landmarks at 30+ frames per second. Inter-joint vectors are computed in real time to detect eccentric and concentric phases and evaluate depth and range of motion.

Privacy by architecture

Inference runs client-side on WebAssembly and WebGL. No raw video frames or biometric telemetry are ever sent to a remote server.

An athlete squats in a gym while a phone on a tripod films her movement
In the gym

From propped-up phone to rep counter

No app to install and no account to create. Open a model and lift.

  1. Set up the camera

    Prop a phone or laptop a few steps away, roughly at hip height.

  2. Get your whole body in frame

    Keep the shoulders, hips, knees and ankles the model measures in view.

  3. Press Start and lift

    Joint angles stream live. A rep only counts once you reach full range of motion.

Technical implementation

System architecture & pipeline

A deterministic four-stage pipeline that turns raw webcam video into quantified repetition counts and posture cues.

Read the maths
  1. Video frame ingestion

    Captures the camera stream through the HTML5 WebRTC API and buffers live frames into a hidden video element at the device’s native refresh rate.

    getUserMedia()
  2. MediaPipe Pose inference

    A lightweight convolutional pose landmarker infers 33 key landmarks per frame: normalised X, Y, Z coordinates plus a visibility confidence score.

    pose.send(frame)
  3. Vector joint trigonometry

    Joint angles between adjacent segments (shoulder–elbow–wrist, hip–knee–ankle) come from the two-argument arctangent, mapped to degrees and smoothed.

    Math.atan2(y, x)
  4. Finite state machine

    Each rep must pass through every phase in order. A repetition is counted only once its anatomical thresholds have all been met.

    START → DOWN → UP
Demonstration modules

Implemented exercise models

Open any model to start the live camera, watch the landmark overlay and test rep detection in real time.

All 31 models

31 models. 2 tools. Zero uploads.

Open the full Exercise Vision Lab for every tracker, plus the 1RM calculator and strength standards.

Open the Exercise Lab