Реалізація AI-аналізу якості сну за даними датчиків у мобільному застосунку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація AI-аналізу якості сну за даними датчиків у мобільному застосунку
Складний
~1-2 тижні
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

AI-Аналіз якості сну по даних датчиків мобільного додатку

Акселерометр на запястті під час сну пише характерні паттерни для різних фаз: глибокий сон—майже повна нерухомість з періодичними мікродвижениями, REM—рідкі рухи з наростаючим пульсом, бодрствування—явна активність. Задача моделі—правильно розмітити 8 годин цих даних.

Джерела сирих даних

На iOS дані сну доступні через HealthKit як HKCategoryType(.sleepAnalysis). Apple Watch та сторонні трекери (Oura, Fitbit, Garmin) записують туди етапи сну. Але для сирих даних акселерометра та GyroScope для власної ML-класифікації—HealthKit їх не отдає в ретроспективі. Потрібно фонове приложение з CMMotionManager, яке пише дані на диск.

class NightMotionRecorder {
    private let motionManager = CMMotionManager()
    private var dataBuffer: [(timestamp: Date, x: Double, y: Double, z: Double)] = []

    func startNightRecording() {
        guard motionManager.isAccelerometerAvailable else { return }
        motionManager.accelerometerUpdateInterval = 1.0 / 25.0  // 25 Hz достатньо для сну

        motionManager.startAccelerometerUpdates(to: .main) { [weak self] data, error in
            guard let data = data else { return }
            self?.dataBuffer.append((
                timestamp: Date(),
                x: data.acceleration.x,
                y: data.acceleration.y,
                z: data.acceleration.z
            ))
        }
    }
}

25 Hz—баланс між точністю та розрядкою батареї. Сон не потребує 100 Hz акселерометра. Background режим для CMMotionManager потребує UIBackgroundModes: motion у Info.plist—але iOS агресивно завершає фонові задачі. Надійніше: BGProcessingTask для ночної обробки даних з частковими записами.

SpO2 з HealthKit

Дані пульсоксиметрії через HKQuantityType(.oxygenSaturation). Apple Watch Series 6+ пише SpO2 кожні 1-2 години ночей у фоне. Падіння нижче 90%—ознака апное сну. Але Apple не пише ночний SpO2 безперервно (з міркувань батареї), тому перервані дані потребують обережної інтерполяції.

Алгоритм класифікації фаз сну

Стандартна задача—4 класи: Wake, Light NREM, Deep NREM (N3), REM. Клінічно валідний стандарт—полісомнографія (PSG) з ЭЭГ. Акселерометра та ЧСС достатньо для Wake/Sleep розділення з точністю ~85%, повна 4-стадійна класифікація—60–75% agreement з PSG.

Feature engineering із акселерометра

Із сирого 25 Hz сигналу за 30-секундні епохи обчислюєте:

  • Activity count—сума абсолютних змін вектора прискорення (Cole-Kripke алгоритм)
  • ZCR (Zero Crossing Rate)—частота пересічень нуля, корелює з мілкою моторикою
  • ENMO (Euclidean Norm Minus One)—стандарт в актиграфії, sqrt(x²+y²+z²) - 1g, убирає гравітацію
  • Angle z-axis—кут запястя, характерний для різних поз сну

З ЧСС (якщо є) додаємо:

  • ЧСС у спокої vs поточна ЧСС (дельта)
  • HRV (RMSSD з RR-інтервалів)—у REM вище ніж у глибокому сні

Модель

Random Forest на цих фічах дає розумну базу. Для temporal context—LSTM поверх RF-фич: RF видає вектор ознак для кожної 30-сек епохи, LSTM враховує послідовність епох. Паттерн із досліджень Stanford Sleep Lab.

# Feature extraction для однієї епохи (30 сек, 750 семплів при 25 Hz)
def extract_epoch_features(epoch_data):
    x, y, z = epoch_data[:, 0], epoch_data[:, 1], epoch_data[:, 2]
    enmo = np.maximum(np.sqrt(x**2 + y**2 + z**2) - 1, 0)
    angle_z = np.arctan(z / np.sqrt(x**2 + y**2 + 1e-6)) * 180 / np.pi

    return {
        'enmo_mean': np.mean(enmo),
        'enmo_std': np.std(enmo),
        'enmo_max': np.max(enmo),
        'angle_z_mean': np.mean(angle_z),
        'angle_z_std': np.std(angle_z),
        'activity_count': np.sum(np.abs(np.diff(enmo)))
    }

Конвертація та деплой моделі

Для iOS: sklearn Random Forest → coremltools.converters.sklearn.convert().mlmodel. LSTM слой—окремо CoreML нейромережа. Об'єднуємо в CoreML Pipeline. Для Android: обидві моделі через TFLite з делегатом NNAPI для аппаратного прискорення.

UI: інтерпретація результату

Гіпнограмма (графік фаз сну за часом)—стандартний спосіб відображення. Додатково: Sleep Score як агрегатна метрика, breakdown за часом у кожній фазі, виявлені паттерни (пізне засипання, частих пробуджень).

Рекомендації привязуємо до конкретних паттернів: "Доля N3 (глибокого сну) упала з 18% до 9% за останні 5 ночей" + конкретний совет, а не "покращіть якість сну".

Процес розробки

Вибір джерел даних (HealthKit vs сирий акселерометр). Розробка pipeline обробки ночних даних. Feature engineering та обучение моделі класифікації. Конвертація та інтеграція в додаток. UI компоненти гіпнограми та рекомендацій. Тестування точності на реальних даних з носимих пристроїв.

Орієнтири за часом

Wake/Sleep детектор з актиграфією та базовим UI—1–2 тижні. Повноцінний 4-стадійний класифікатор з гіпнограмою та персоналізованими рекомендаціями—3–5 тижнів.