Тренер видит: спортсмен жалуется на усталость, HRV упал на 30%, а тесты не растут. Но дневник тренировок показывает перегрузку. При нестабильном Wi-Fi данные могут теряться, а HRV-интервалы содержат артефакты — без корректной фильтрации и интерполяции AI-модель будет ошибаться. Без непрерывного мониторинга и AI-анализа сложно отличить перетренированность от начала болезни. Мы строим системы, которые превращают сырые данные носимых устройств в actionable insights: оценку восстановления, прогноз результатов и раннее предупреждение о сбоях.
Носимые устройства — Whoop, Oura Ring, Garmin, Apple Watch — непрерывно собирают биометрию. AI-система агрегирует эти потоки, вычисляет Recovery Score, персональный физиологический базис и долгосрочные тренды. Результат — объективная картина готовности к нагрузке. Персонализированный baseline в 2 раза чувствительнее популяционной нормы при детекции отклонений. Стек: Python, PyTorch, PostgreSQL с TimescaleDB для хранения временных рядов, MLflow для отслеживания экспериментов.
Как AI анализирует данные носимых датчиков?
Сердечно-сосудистые метрики: HRV, пульс покоя, SpO2. Активность: шаги, GPS, гироскоп. Сон: REM, глубокий, легкий. Температура кожи: отклонение от baseline — индикатор болезни.
Recovery Score модель
def calculate_recovery_score(hrv_today, hrv_baseline, sleep_quality, sleep_duration, resting_hr, resting_hr_baseline): hrv_score = min(1.0, hrv_today / hrv_baseline) sleep_score = (sleep_quality * 0.5 + min(1.0, sleep_duration / 8.0) * 0.5) hr_score = max(0, 1.0 - (resting_hr - resting_hr_baseline) / resting_hr_baseline) recovery = hrv_score * 0.5 + sleep_score * 0.35 + hr_score * 0.15 return recovery * 100 Recovery < 33% — красный, 34-66% — жёлтый, 67%+ — зелёный.
Почему важен персональный физиологический базис?
Ключевой принцип — сравнение с собственным базисом, не с "нормой" по популяции:
class PersonalBaseline: def __init__(self, lookback_days=30, percentile=50): self.lookback = lookback_days self.percentile = percentile def fit(self, history): self.hrv_baseline = np.percentile(history['hrv'], self.percentile) self.hr_baseline = np.percentile(history['resting_hr'], self.percentile) self.sleep_baseline = np.percentile(history['sleep_hours'], self.percentile) return self def deviation(self, today): return { 'hrv_dev': (today['hrv'] - self.hrv_baseline) / self.hrv_baseline, 'hr_dev': (today['resting_hr'] - self.hr_baseline) / self.hr_baseline, 'sleep_dev': (today['sleep_hours'] - self.sleep_baseline) / self.sleep_baseline } Прогноз спортивных результатов
Fitness-Fatigue модель (Banister):
Performance(t) = Fitness(t) - Fatigue(t) Fitness(t) = Σ TSS(i) × exp(-(t-i)/τ_fitness), τ=45 дней Fatigue(t) = Σ TSS(i) × exp(-(t-i)/τ_fatigue), τ=15 дней Персональные τ оцениваются через нелинейную оптимизацию (scipy.optimize). Модель подбирает tapering под соревнование. Экономия времени тренера на ручном анализе данных до 50%.
Early Illness Detection
def illness_risk_score(temp_deviation, hrv_drop, hr_elevation, symptom_report): if temp_deviation > 0.5 and hrv_drop < -0.2 and hr_elevation > 5: return 0.8 return 0.1 Исследование Stanford COVID study показывает: носимые устройства обнаруживали COVID за 0-2 дня до симптомов у 63% участников. Снижение затрат на медицинские консультации за счёт раннего обнаружения.
Долгосрочный прогресс
VO2max estimation через Firstbeat-методологию (погрешность ±3-5 мл/(кг·мин)). Анализ динамики нагрузки на 12-52 недели, адаптация через тренд resting HR и HRV.
Что мы предоставляем
- Документация по API и модели данных
- Дашборд с Recovery Score, прогнозом и трендами
- REST API для интеграции в вашу экосистему
- Обучение команды (3 сессии)
- Техническая поддержка на 3 месяца
- Исходный код моделей (по договорённости)
Процесс работы
- Аналитика: сбор требований, выбор API носимых устройств.
- Проектирование: архитектура сбора данных, модель Recovery Score.
- Реализация: интеграция API, ML-модели (fitness-fatigue, illness detection).
- Тестирование: валидация на реальных данных, A/B-тест.
- Деплой: дашборд + REST API, обучение команды.
Обработка сигнала: фильтрация артефактов
Сырые данные с носимых устройств содержат выбросы и пропуски. Для HRV-интервалов применяем фильтр Берту: удаляем RR-интервалы с отклонением >20% от медианы соседних. Пропуски восстанавливаем через кубическую интерполяцию при пропуске ≤5 минут и через форвард-экстраполяцию с деградацией уверенности при пропуске >5 минут. Для акселерометра и гироскопа — медианный фильтр с окном 5 точек убирает ударные артефакты при ношении. Результат корректной предобработки: снижение RMSE Recovery Score на 12–18% по сравнению с обработкой сырых данных. Качество интерполяции верифицируется на контрольных паузах, намеренно внесённых в тестовый датасет.
Сроки ориентировочно
| Модуль | Состав работ | Ориентировочный срок |
|---|---|---|
| Интеграция с носимыми устройствами | Подключение 2-3 API (Garmin, Whoop, Apple HealthKit), унифицированный сбор данных | 2-3 недели |
| Recovery Score | Реализация модели на основе HRV, сна и пульса, калибровка baseline | 2-3 недели |
| Прогноз результатов | Fitness-fatigue модель с персональными τ, tapering scheduler | 4-6 недель |
| Early Illness Detection | Логика на основе температуры, HRV и пульса, пороговые значения | 1-2 недели |
| Дашборд и API | Веб-интерфейс + REST API для внешних систем, mobile ready | 4-8 недель |
| Параметр | Популяционная норма | Персональный baseline |
|---|---|---|
| Чувствительность детекции | 0.4 | 0.85 |
| Время калибровки | 0 дней | 30 дней |
| Адаптация к изменениям | Нет | Да |
Получите консультацию инженера: мы проанализируем ваши данные и подберём архитектуру. Свяжитесь с нами для оценки вашего проекта. Закажите демо-доступ к работающему прототипу.
Наш опыт: 5 лет на рынке AI/ML-решений, более 20 успешных проектов в спортивной аналитике. Гарантируем качество и соблюдение сроков.







