AI-обработка сигналов носимых устройств: PPG, HRV, сон

Заказчики приходят с сырыми записями с датчиков, где шум и пропуски мешают считать сон и восстановление. Мы разрабатываем обработку данных носимых устройств под ключ: от очистки сигнала до готовых показателей в вашем приложении. Сокращаем время подготовки показателей вдвое и передаём регламенты, чтобы результат воспроизводился без нас.
Часто задаваемые вопросы

Обработка данных носимых устройств: где теряется сигнал

Сырой сигнал с браслета — не аккуратный ряд, а поток с плавающим шагом. Отсчёты приходят с неравномерными интервалами: устройство меняет частоту опроса под заряд и режим сна, поэтому между замерами оказываются то короткие, то длинные промежутки. Усреднение «по индексу массива» вместо привязки к метке времени сдвигает пики и превращает ровный ритм в дрожащую кривую.

Второй источник потерь — артефакты движения. Шаг, поворот кисти, поправленный ремешок дают выбросы, сопоставимые по амплитуде с полезной волной: пороговый фильтр либо пропускает их в метрику, либо срезает вместе с ними реальные сокращения. Рядом — дрейф базовой линии: за ночь меняются температура кожи и кровенаполнение, уровень сигнала медленно уезжает, и без опорного окна детектор ищет пики не там, где они есть.

Третий дефект — пропуски в записи. Устройство сняли с руки, сел заряд, прервалась связь — в массиве появились дыры. Часть обработчиков молча заполняет их интерполяцией, и метрика выглядит правдоподобно, хотя опирается на выдуманные точки. На выходе это пульс покоя, который «плывёт» между соседними ночами, вариабельность, взлетающая на артефактах, и качество сигнала сна, где стадии размечаются движением, а не физиологией.

Цена — решения на неверных данных: скачет доля глубокого сна, не подтверждается тренд восстановления, ложными оказываются предупреждения о сбоях ритма. Разбираем, как это закрывается: от сырого потока до устойчивых метрик пульса, вариабельности и сна.

Что даёт выстроенный конвейер обработки сигналов

Конвейер — это цепочка шагов от сырого сигнала к метрике: приведение к единой частоте, очистка сигнала, разметка эпизодов и контроль качества сигнала на выходе. Источники разные — от Garmin до недорогих браслетов, поэтому правила приведения к общему виду заданы заранее, а каждый шаг измеряется.

Стабильные метрики пульса и вариабельности при движении

Опорный канал движения отделяет артефакты от физиологии, поэтому ложные пики, которые появлялись на ходьбе и лестнице, отсекаются до расчёта. В активных сценариях доля пригодных записей выросла с 60–70% до 90%+, а разброс вариабельности на одной и той же нагрузке сократился вдвое.

Меньше пропусков в ночных записях

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

Воспроизводимость результата от партии к партии

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

Где считать: на устройстве, на сервере или гибрид

Точка расчёта определяет две вещи, которые пользователь замечает сразу: задержку выдачи метрики и расход заряда устройства. Один и тот же поток сырых сигналов — пульсовую волну, интервалы между ударами сердца, движения корпуса — можно очищать по-разному, и у каждого варианта своя плата по ресурсам и качеству итоговых показателей.

Вариант Когда подходит Ограничения
Расчёт на устройстве Показатель нужен в момент измерения, связь с сервером нестабильна Ограниченные вычислительные ресурсы и память: алгоритмы упрощают, расход заряда растёт
Серверная пакетная очистка Массовая обработка накопленных записей, сложная фильтрация артефактов, единая версия модели Метрика доступна только после синхронизации; нужны каналы передачи и хранение сырых данных
Гибридная схема Большинство продуктов: быстрые показатели на устройстве, тяжёлая обработка на сервере Требует согласованных форматов и синхронного обновления алгоритмов на обеих сторонах

Когда расчёт на устройстве обязателен

Если результат нужен в момент измерения — счёт шагов, оценка стадии сна в реальном времени, сигнал по ритму — ждать синхронизации нельзя. Считаем на самом устройстве, но держим лимит по расходу заряда: тяжёлые пересчёты запускаем только при достаточном заряде и покое датчика.

Когда выгоднее серверная очистка

Накопленные за ночь записи удобнее обрабатывать пакетно: на сервере доступны более тяжёлые модели фильтрации артефактов и одна версия алгоритма для всех устройств. Задержка выдачи метрики здесь измеряется минутами, зато воспроизводимость и качество показателей выше.

На практике рабочее умолчание — гибрид: устройство снимает сырой сигнал и считает быстрые метрики, сервер докачивает данные и пересчитывает тяжёлые. Дальше делим обязанности между сторонами так, чтобы расход заряда и задержка оставались в заданных рамках.

Этапы внедрения: от аудита сигналов до передачи

Порядок работ одинаков для любого носителя — часов, кольца, браслета, нагрудного ремня. Сначала разбираем то, что реально приходит с устройства, и только потом собираем конвейер обработки и трогаем модели.

Аудит сырых записей и разметки

  1. Аудит записей. Смотрим выгрузки целиком: пропуски по времени, артефакты движения, рассинхрон каналов, обрывы сессий. Итог — отчёт о пригодности и перечень фрагментов, которые в обучение не идут.
  2. Схема конвейера. Приём → очистка → детекция пиков пульсовой волны → интервалы между ними → сегментация сна → признаки. Схему согласуем до кода, чтобы не переделывать стыки между блоками.
  3. Фильтрация и разметка. Настраиваем частотные фильтры и правила отбраковки, сводим разметку нескольких разметчиков к одному эталону, спорные случаи описываем письменно.

Проверка на отложенной выборке

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

Модели, схемы конвейера и регламенты разметки

Обученная модель — это ещё не решение: без описания окружения, в котором она работает, её нельзя ни дообучить, ни откатить, ни защитить от дрейфа входных данных при обновлении прошивки браслета. Поэтому передаём не только артефакты вывода, но и весь свод правил вокруг них. Ниже — то, что остаётся у вашей команды, с правом изменять и версионировать.

Схемы конвейера и форматы данных

  • Схема потока сигналов — от сырых записей пульсовой волны и акселерометра до витрин с эпизодами сна и метриками вариабельности ритма, с указанием точек фильтрации и того, какие сегменты отбраковываются как артефакт движения.
  • Форматы обмена — согласованные структуры для пакетной выгрузки и для потоковой передачи с носимого устройства, включая схему именования полей, единицы измерения и правила обработки пропусков во временных рядах.
  • Правила постобработки — сглаживание, пороги качества записи, логика склейки разорванных сессий; каждое правило с обоснованием, чтобы его можно было изменить осознанно.
  • Документация решения — описание слоёв, зависимостей между ними и того, где заканчивается модель и начинается эвристика.

Регламенты разметки и контроль качества

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

Опишите вашу задачу — вернёмся с оценкой объёма и планом, что из этого перечня закрываем мы, а что разумнее оставить на вашей стороне.

Кейс: вариабельность и стадии сна по сырым записям

Задача пришла с исследовательской стороны: непрерывный ночной мониторинг по записям с носимых браслетов — нужны вариабельность ритма по интервалам между сокращениями и разметка стадий сна по всей ночи. Данные собирали как есть: разные партии устройств, участки с движением и обрывами сигнала. Разметку делали вручную — эксперт просматривал ночь целиком, выставлял стадии и помечал спорные участки как неопределённые. На один массив уходило несколько недель, а сопоставимость серий держалась на памяти конкретного разметчика.

Метрики до и после

  • Отбракованные записи: 34% ночей уходили в брак из-за артефактов движения — стало 6%, и брак приходится только на нечитаемые участки.
  • Пропущенные интервалы: доля выпавших из ряда вариабельности интервалов снизилась с 12% до 1,5% за счёт восстановления коротких пропусков.
  • Расхождение с эталоном: согласие по стадиям сна выросло с 0,61 до 0,84, смещение границ фаз сократилось вдвое.
  • Время подготовки набора: с нескольких недель до двух дней, включая ручную вычитку спорных эпох.

Что изменили: фильтрацию артефактов собрали в один проход с фиксированными порогами, короткие обрывы восстанавливали интерполяцией, автоматическую разметку стадий оставили с обязательной проверкой спорных эпох. Сверку вели по открытому корпусу PhysioNet с эталонными стадиями, поэтому расхождение считалось одинаково на всех сериях. Каждый набор получил версию — к прежней разметке можно вернуться, если меняются критерии включения ночей.

Чем отличается потоковая фильтрация от пакетной очистки?

Это не выбор «одно лучше другого», а две точки одного компромисса — точности и скорости. Потоковая фильтрация считает показатель в момент приёма сигнала, пакетная очистка — по накопленному массиву записей, и именно от этого зависит задержка выдачи метрики.

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

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

Вариант Когда подходит Ограничения
Потоковая фильтрация Нужен отклик в реальном времени Нет будущего контекста, выше доля ложных срабатываний
Пакетная очистка Ночные отчёты, ретроспектива, клинические выборки Задержка выдачи метрики — часы, нагрузка на хранилище
Совмещённый контур Метрика в реальном времени и итоговая отчётность Два контура, нужен контроль версий алгоритма

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

Технические сомнения: шум, пропуски, приватность

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

В архиве есть записи с провалами и артефактами — их ещё можно использовать?

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

Результат зависит от модели браслета?

Зависит: различаются частота опроса, встроенное сглаживание и посадка датчика. Поток приводим к единому представлению, а точность проверяем отдельно по каждой модели. Между устройствами сопоставимы динамика и тренды, абсолютные значения — только внутри одной модели.

Как обезличиваются чувствительные данные здоровья?

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

Какая погрешность считается допустимой?

Порог задаёт задача: для фаз сна ошибка в пределах одной эпохи не критична, для вариабельности ритма важнее порядок интервалов, чем средние. Порог фиксируем до старта и принимаем по доле записей, которые его превысили, — 85–90% ночей проходят без ручной правки.

Обсудим задачу: что прислать для оценки

Чтобы вернуться с оценкой и планом работ, а не с предположениями, нам нужны вводные по вашим данным. Ниже — перечень того, что снимает большую часть неопределённости: чем полнее картина по сигналам, тем точнее состав этапов и порядок работ.

  • Образец выгрузки. Несколько файлов за реальный период — с пропусками, шумом и аномалиями. Вычищенный фрагмент скрывает как раз те случаи, на которых потом ломается обработка.
  • Описание форматов. Схема полей, шаг дискретизации, привязка ко времени и часовым поясам, единицы измерения, разметка сегментов и правила, по которым фиксируется отсутствие сигнала.
  • Целевые метрики. Что считаем корректным результатом: доля восстановленных участков, устойчивость показателей на покое, согласованность стадий сна с экспертной разметкой или дневником.
  • Целевые сценарии. Какие выводы нужны на выходе — динамика восстановления, недельные тренды, пороговые оповещения — и как они доходят до пользователя.
  • Ограничения приватности. Где хранятся сырые записи, нужна ли обезличенность на входе, можно ли выносить данные за ваш контур, кто из специалистов получает доступ.
  • Объёмы истории и текущая схема. Число устройств и записей, глубина хранения, как обработка устроена сейчас и на каком шаге перестаёт держать нагрузку.

С этим набором мы возвращаемся с оценкой, схемой обработки и планом работ, где у каждого этапа есть проверяемый результат.

  • Ждать результат от готовых показателей устройства. Клиент просит «улучшить пульс и сон», а на вход отдаёт уже сглаженные устройством величины вместо сырых записей. Из такого материала нельзя ни увидеть причину сбоя, ни переобучить модель: любая ошибка встроенной обработки остаётся внутри и наследуется без возможности исправления.
  • Учить на идеальных записях. Модель собирают на спокойных лабораторных фрагментах, а в реальности сигнал портят движение руки, пот, слабый контакт датчика, разговор, дрожь. Итог — расхождение заявленной и фактической точности в разы, и переделка начинается с повторного сбора записей, а не с доработки модели.
  • Не учитывать пропуски и разный ритм съёма. Записи с разных устройств приходят с несовпадающим шагом и разрывами, а их сшивают как есть. Ряды смещаются относительно друг друга, метки стадий сна «плывут», и обучение идёт на искажённой картине.
  • Размечать сон по дневнику и опросу. Самоотчёт человека расходится с физиологией: человек помнит пробуждения, но не помнит их длительность. Без параллельного эталонного измерения метки получаются размытыми, и модель уверенно воспроизводит мнение респондента вместо состояния организма.
  • Одна модель на всех. Не закладывают разницу в возрасте, состоянии здоровья, температуре кожи и плотности прилегания датчика, не оставляют места индивидуальной настройке. На части людей результат стабильно хуже среднего, а заметить это удаётся уже после запуска.
  • Проверять на тех же людях, что и учили. Отложенную выборку собирают из тех же записей, что попадали в обучение. Модель показывает красивые результаты в отчёте и рассыпается на новых пользователях — единственная честная проверка здесь на людях, которых модель не видела.
  • Откладывать приватность на потом. Сырые записи копят без ограничения срока, передают подрядчикам без обезличивания, а правила доступа не описывают. Когда требования ужесточаются, перестраивать приходится весь путь данных, включая разметку и обучение.
  • Не фиксировать версии разметки. Правила разметки правят по ходу проекта, а прежние версии меток не сохраняют. Через несколько итераций невозможно понять, почему модель ведёт себя иначе, и воспроизвести удачный вариант уже нельзя.

Направления AI-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1141