---
title: "Pose Trainer: Correcting Exercise Posture using Pose Estimation"
title_ru: "Pose Trainer: Коррекция позы при упражнениях через оценку позы (Stanford)"
authors: [Chen, Yang]
year: 2020
venue: "arXiv / Stanford CS231n"
venue_tier: "workshop"
doi: "2006.11718"
tags: [fitness, pose_estimation, exercise_correction, mediapipe, rule_based, squat, pushup]
relevance_to_smartrep: 4
direction: "🅰"
---

# Pose Trainer: Базовая система коррекции упражнений

## TL;DR (≤3 предложения)

Pose Trainer — первый комплексный pipeline для автоматической коррекции техники упражнений на основе 2D pose estimation: MediaPipe BlazePose → joint angles → rule-based feedback ("колено не должно выходить за носок"). Классические упражнения: приседание, отжимания, сгибание рук. Для SmartRep: Pose Trainer — ближайший academic конкурент нашей системы; показывает rule-based baseline, который мы должны превзойти.

## Проблема

Коммерческие фитнес-приложения дают обратную связь без научного обоснования и без учёта индивидуальных параметров тела. Нужна простая, но обоснованная система коррекции техники на основе pose estimation.

## Гипотеза / вклад

- **Angle-based rules:** суставные углы из MediaPipe → сравнение с биомеханически обоснованными пороговыми значениями.
- **Multi-exercise:** приседание, отжимания, bicep curl, shoulder press.
- **Real-time feedback:** работает в браузере на WebCam.
- **Feedback generation:** текстовая подсказка на основе нарушенного правила.

## Метод

Pipeline: RGB → BlazePose 2D → 17 keypoints → joint angles $(q_i)$.

Rules (пример для squat):
- $\theta_{knee} \in [90°, 120°]$ при полном приседе (нижняя точка)
- $\theta_{knee} < 90°$ → "Слишком глубоко"
- $\theta_{knee} > 120°$ → "Недостаточно глубоко"
- $\frac{x_{knee} - x_{ankle}}{x_{hip} - x_{ankle}} > 0.3$ → "Колено выходит за носок"

Score: $s = \frac{\text{rules satisfied}}{\text{total rules}} \times 100\%$

Temporal: rep counter через angle zero-crossing.

## Датасеты

| Упражнение | Точность feedback | Test subjects |
|---|---|---|
| Squat | ~80% (precision) | 10 |
| Push-up | ~75% | 10 |
| Bicep curl | ~85% | 10 |

## Сравнение с SOTA

Нет формального SOTA сравнения (CS231n работа). Contemporaneous с первыми AQA методами (USDL 2020), но фокус на fitness. Уступает по sophistication USDL/CoRe, но более практичен.

## Ограничения / слабые стороны

- Rule-based: не учит из данных, не персонализируется.
- 2D only — нет 3D depth perception.
- Нет машинного обучения для score.
- Пороги фиксированы — не адаптируются к росту/строению тела.
- Нет учёта веса штанги или усталости.

## Релевантность SmartRep

- **Direct competitor 🅰:** Pose Trainer — прямой academic конкурент SmartRep. Наша система должна явно превосходить его в разделе сравнения.
- **Rule-based baseline:** реализовать Pose Trainer как ablation baseline в наших экспериментах → показать, что learned approach превосходит rule-based.
- **Angle-threshold logic:** правила Pose Trainer — источник для нашей error taxonomy (классы ошибок основаны на этих же биомеханических правилах).
- **MediaPipe pipeline:** BlazePose + joint angles = аналогичный наш baseline inference path для edge.

## Gap для нас

Rule-based подход не обобщается на новые упражнения без ручного написания правил. **Ниша SmartRep:** Learned Pose Trainer — обучить классификатор ошибок из данных (не ручные правила), персонализировать пороги под анатомию пользователя, обрабатывать контекст (вес штанги, фаза повторения).

## Код / данные

- Repo: github.com/stevenzchen/pose-trainer
- Demo: pose-trainer.web.app

## Цитата (BibTeX)

```bibtex
@article{chen2020pose,
  title={Pose Trainer: Correcting Exercise Posture using Pose Estimation},
  author={Chen, Steven and Yang, Richard},
  journal={arXiv preprint arXiv:2006.11718},
  year={2020}
}
```
