Введение и Актуальность
Цель и задачи работы
Анализ существующих решений
Блок-схема программы
Архитектура решения
Слой оркестрации
Ядро обучения
Слой данных
Работа модели на готовом видео
Пример работы приложения
Тестирование и результаты
Выводы и перспективы
2.18M

ВКРБ

1.

Министерство образования и науки Российской Федерации
Мытищинский филиал
Федеральное государственное автономное образовательное учреждение
высшего образования
«Московский государственный технический университет имени Н.Э. Баумана
(национальный исследовательский университет)»
Кафедра К3 «Прикладная математика, информатика и вычислительная техника»
Специальность: 01.03.02 «Прикладная математика, информатика и вычислительная
техника»
Выпускная квалификационная работа
Тема: Разработка интеллектуальной системы оценки физической активности и расхода
энергии на основании анализа движений человека
Выполнил студент группы К3-81Б:
Научный руководитель:
Морозов Максим Геннадьевич
Малашин Алексей Анатольевич
профессор, д.ф.-м.н.
2026

2. Введение и Актуальность

2
Введение и Актуальность
• Рост популярности самостоятельных тренировок формирует
спрос на системы объективной оценки техники.
• Автоматизированная оценка движений открывает новые
возможности для мониторинга тренировочного процесса без
участия специалиста.
• Существующие решения часто ограничиваются подсчётом
активности, не учитывая качество выполнения и расход
энергии.

3. Цель и задачи работы

3
Цель и задачи работы
Цель:
Разработка интеллектуальной системы оценки физической активности и расхода энергии
на основании анализа движений человека.
Задачи:
• Собрать датасет для обучения нейронных моделей.
• Разработать 3 модели классификации активности.
• Реализовать алгоритм подсчёта повторений на основе анализа видео.
• Разработать метод оценки правильности выполнения упражнений в процентном
выражении.
• Сформировать систему генерации рекомендаций по улучшению техники
выполнения.
• Интегрировать разработанные модели и алгоритмы в единую программную
систему.
• Провести тестирование системы и оценить её точность и эффективность.

4. Анализ существующих решений

4
Анализ существующих решений
Тип
Системы
распознавания
активности
Фитнесприложения
AI-системы
Название
Stayfitt
Цель
Отслеживает
физическую
активность
сотрудников
FitStars
Готовые
тренировки,
программы
PoseRep
Анализ, подсчет,
оценка техники
упражнений
Доступность
Минусы
Платное B2Bрешение
Не анализирует
упражнения и их
качество
Платные подписки
Нет подсчета,
анализа
упражнений
Платно
Не доступно в РФ,
нет поддержки для
русского
пользователя
Представленные решения демонстрируют интерес к теме домашних тренировок и их
оценки, а также отсутствие выбора для жителей РФ.

5. Блок-схема программы

5

6.

Б1 – Начало. main.py, app/app.py - точка запуска сценария (CLI или UI).
Б2 – Ввод данных: видео, параметры. app/app.py - загрузка видео и ввод параметров пользователя
(пол, возраст, рост, вес).
Б3 – Инициализация моделей и порогов. pipelines/runtime.py, models/*, rep_counter.py - создание
runtime-моделей, подготовка конфигов и счетчиков.
Б4 – Считать кадр i. pipelines/runtime.py - итерация по кадрам видео.
Б5 – Кадр доступен? pipelines/runtime.py - проверка завершения потока кадров/видеоцикла.
Б6 – Выделить keypoints. pose/estimator.py - извлечение keypoints через MediaPipe Pose.
Б7 – Предобработка признаков. pose/normalization.py, utils/smoothing.py, pipelines/runtime.py нормализация/сглаживание и формирование последовательности признаков.
Б8 – Определить тип активности. models/activity_type_classifier.py - Классификация: strength или
cardio.
Б9 – Силовая активность? pipelines/runtime.py - Ветвление на нужный классификатор по типу
активности.
Б10 – Классифицировать силовое. models/strength_classifier.py - Определение конкретного силового
упражнения.
Б11 – Классифицировать кардио. models/cardio_classifier.py - Определение конкретного кардио
упражнения.
Б12 – Рассчитать углы. pose/angles.py - Вычисление биомеханических углов по keypoints.
Б13 – Подсчитать повторы. rep_counter.py - Обновление фаз движения и счетчика повторов
(RepCounter.update(...))
Б14 – Сегментация и оценка техники. pipelines/runtime.py, technique_analyzer.py - Формирование
сегментов и расчет качества техники.
Б15 – Энергозатраты и рекомендации. energy_estimator.py, technique_analyzer.py - Расчет калорий +
формирование замечаний/рекомендаций.
Б16 – Вывод: отчет, видео. app/app.py, ui/overlay.py, ui/charts.py, visualizer.py - Отображение
результатов, графиков и аннотированного видео.

7. Архитектура решения

• Архитектура построена как модульный пайплайн с
разделением на три уровня:
1. Точка входа и оркестрация
2. Общая инфраструктура обучения
3. Специализированные модели и runtime-анализ
Точка входа — train.py: она выбирает задачу
(strength, cardio, activity_type) и запускает
нужный пайплайн. За счет этого один и тот же
интерфейс командной строки работает для всех
сценариев обучения.»

8. Слой оркестрации

В train.py есть единый роутер _run_task():
• Для силовых упражнений вызывает train_strength,
• Для кардио упражнений — train_cardio,
• Для определения типа активности — train_activity_type.
Пример: если передать --task all, код по очереди обучит три модели, не меняя логику запуска. Это уменьшает
дублирование и делает запуск экспериментов стандартизированным.

9. Ядро обучения

• Ключевой модуль — pipelines/training_common.py, функция
run_training_task().
Она инкапсулирует весь общий цикл:
• Сбор данных и маппинг классов
• Разделение на train/val/test
• Создание DataLoader
• Обучение с ранней остановкой и scheduler
• Оценка и сохранение артефактов
Пример использования: training_activity_type.py передает в
run_training_task() только параметры задачи — class_names,
model_factory, пути к файлам.
То есть поведение меняется через конфигурацию, а не через
копирование кода.

10. Слой данных

В utils/dataset.py реализован отдельный data-слой:
• collect_labeled_video_paths() собирает видео и метки по
структуре папок
• build_dataset_splits() делает стратифицированное разделение
• SequenceVideoDataset превращает видео в последовательности
keypoints
Пример: в __getitem__() из каждого кадра извлекаются позы,
затем формируется вектор признаков и последовательность
фиксированной длины (max_frames).
Дополнительно применяются аугментации и нормализация — это
повышает устойчивость модели.

11. Работа модели на готовом видео

Для обработки видео используется pipelines/runtime.py,
функция analyze_video().
Здесь архитектура уже потоковая:
• Загрузка моделей (load_runtime_models())
• Покадровая обработка видео
• Определение типа активности
• Затем специализированная классификация упражнения
• Подсчет повторений и оценка техники
Пример маршрутизации:
Если модель типа активности предсказывает cardio, включается
cardio_model.predict();если strength —
strength_model.predict().Это каскадная архитектура: сначала
общее определение категории активности (кардио или силовая),
потом уточняющая классификация конкретного упражнения.

12. Пример работы приложения

При первом запуске пользователь заполняет профиль:
имя, пол, рост и вес.
После загрузки видео система выполняет анализ и
формирует краткую сводку: общее количество
повторений, оценку правильности выполнения
упражнений и персональные рекомендации по технике.
Дополнительно доступен подробный режим с
визуализацией видео, где можно наглядно отслеживать
динамику углов суставов

13. Тестирование и результаты

14. Выводы и перспективы

Выводы:
1. Реализована рабочая система анализа тренировок по видео с автоматическим определением типа активности и
упражнения.
2. Модель считает повторы, оценивает качество выполнения и формирует рекомендации по технике.
3. Архитектура модульная: обучение, обработка и визуализация разделены, поэтому решение легко расширять.
Перспективы:
1. Повысить точность за счет расширения датасета и балансировки классов.
2. Улучшить качество рекомендаций через более детальный биомеханический анализ.
3. Добавить онлайн-режим (анализ с камеры в реальном времени) и персональные планы тренировок.
4. Провести тестирование на более широких группах пользователей для валидации в реальных условиях.
English     Русский Rules