Впровадження розпізнавання поз (Pose Estimation) у мобільний додаток

При розробці фітнес-додатку зіткнулися з тим, що сира модель PoseNet давала хибні спрацьовування на кожному другому кадрі — недостатня часова стабільність. Рішенням стало впровадження pose estimation на основі [MediaPipe](https://github.com/google-ai-edge/mediapipe) з кастомним згладжуванням OneEuro

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Впровадження розпізнавання поз (Pose Estimation) у мобільний додаток
Складний
~1-2 тижні

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

При розробці фітнес-додатку зіткнулися з тим, що сира модель PoseNet давала хибні спрацьовування на кожному другому кадрі — недостатня часова стабільність. Рішенням стало впровадження pose estimation на основі MediaPipe з кастомним згладжуванням OneEuroFilter. Ми інтегруємо в мобільні додатки розпізнавання поз — детекцію ключових точок скелета в реальному часі. Це затребувано у фітнесі (підрахунок повторень, аналіз техніки), медицині (реабілітація, діагностика ходи) та AR. Технічно задача складніша за детекцію об'єктів: потрібна не тільки точність локалізації, але й часова стабільність. Наша команда має 5+ років досвіду в комп'ютерному зорі та реалізувала більше 30 проєктів з pose estimation. Вартість впровадження визначається індивідуально, залежить від кількості вправ та платформ. Економія часу на налагодження порівняно з самостійною розробкою може досягати 40%.

Яку модель обрати: MoveNet, BlazePose або ML Kit?

Модель Точок Швидкість (на iPhone 12) Типовий сценарій
MoveNet Lightning 17 30+ FPS Фітнес-трекінг повторень
MoveNet Thunder 17 ~15 FPS Медичний аналіз з підвищеною точністю
MediaPipe BlazePose 33 ~25 ms (Pixel 7 GPU) Аналіз ходи, AR з деталізацією обличчя/рук
ML Kit Pose Detection 33 ~30 FPS Швидка крос-платформна інтеграція

MoveNet Lightning — найкращий баланс для мобіля: TFLite-оптимізований, доступний через PoseLandmarker. BlazePose дає z-координати для 3D-кутів. ML Kit — простий, але трохи менш точний. У нашому кейсі MoveNet Lightning виявився в 2 рази швидшим за BlazePose на iPhone 11 (35 FPS vs 17 FPS), що критично для real-time фідбеку.

Як правильно підраховувати повторення у фітнес-додатку?

Наївний підхід — стежити за Y-координатою стегна — ламається в реальності. Правильне рішення — обчислювати кут у колінному суглобі через скалярний добуток векторів [HIP → KNEE] і [KNEE → ANKLE]. Присідання = кут нижче 120°, вставання = вище 160°. Скінченний автомат: STANDING → DOWN → STANDING = 1 повтор. Кути з z-координатами стабільніші, якщо камера не строго збоку. Згладжування landmarks — обов'язкове: сирі дані стрибають на 3–5 пікселів між кадрами. Додатково використовуємо фільтр медіанного згладжування для відсікання викидів.

Який метод згладжування кращий?

Метод Затримка Стабільність Застосування
EMA (α=0.6) Низька Середня Швидка реакція, фітнес
VelocityFilter (MediaPipe) Середня Висока Медицина, AR
OneEuroFilter Налаштовувана Висока Універсальний

Для фітнесу достатньо EMA, для реабілітації — OneEuroFilter. У наших проєктах ми кастомізуємо параметри OneEuroFilter під конкретну вправу: для присідань низька частота зрізу (min_cutoff=0.5), для швидких рухів — вище (min_cutoff=1.0).

Інтеграція: iOS та Android — покроково

  1. Вибір моделі — на основі потрібної точності та швидкості. MoveNet Lightning для старту.
  2. Підготовка стеку: MediaPipe Tasks Vision (SPM або Gradle) версії 0.10.0.
  3. Налаштування інференсу: PoseLandmarker з runningMode = .liveStream та PoseLandmarkerOptions.
  4. Обробка результатів: нормалізовані точки (0..1) або worldLandmarks (метрові). Для кутів використовуємо worldLandmarks — вони не залежать від crop камери.
  5. Відмальовка скелета: на iOS — CAShapeLayer з анімацією, на Android — Canvas.drawLine на SurfaceView або Compose Canvas.
  6. Тестування — перевірка FPS та точності на цільових пристроях (iPhone 11, Pixel 6, Galaxy S21).

Типові помилки при впровадженні:

  • Малювання скелета в нормалізованих координатах без трансформації в координати прев'ю — забувають aspect ratio та crop. Використовуйте convertNormalizedLandmarksToImageCoordinates.
  • Запуск інференсу на main thread — знижує FPS до нуля. Використовуйте фонові черги (userInteractive в iOS, SingleThreadExecutor в Android).
  • Відсутність згладжування landmarks — візуальний джитер та неправильний підрахунок повторень. Навіть простий EMA (α=0.7) вирішує проблему.

Що входить в роботу

  • Консультація з вибору моделі та оцінка feasibility.
  • Проектування архітектури (інференс, UI, зберігання історії).
  • Інтеграція pose estimation на iOS та/або Android.
  • Реалізація логіки підрахунку повторень або аналізу рухів.
  • Налаштування згладжування та оптимізація під конкретний девайс.
  • Документація з використання та калібрування.
  • Підтримка після запуску (гарантуємо стабільність оновлень).

Строки

Базовий скелет на відеопотоці + одна вправа — 1–2 тижні. Повноцінний фітнес-модуль з кількома вправами, голосовим зворотним зв'язком та історією — 3–4 тижні. Вартість розраховується індивідуально.

Зв'яжіться з нами для оцінки вашого проєкту — ми допоможемо вибрати модель та спроектуємо рішення під ключ. Отримайте консультацію з впровадження pose estimation вже сьогодні.