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

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

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

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

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

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

Розпізнавання поз у мобільному застосунку: де втрачається точність

Розпізнавання поз у мобільному застосунку — це конвеєр із трьох ланок: кадр із камери, модель, скелет на екрані. Точність втрачається не в самій моделі, а на стиках — між кадром і обчисленням, між сусідніми кадрами, між очікуваннями продукту й бюджетом часу на пристрої. Метрика на тестовому наборі при цьому тримається, а в руці користувача скелет тремтить і з'їжджає.

Помилки оцінки пози найчастіше видно як тремтіння опорних точок. Модель розбирає кожен кадр незалежно, тому шум детектора на кистях, стопах і в зонах перекриття не гаситься, а переноситься в координати.

Без тимчасової стабілізації — відстеження точки між кадрами, згладжування, передбачення на пропущеному кадрі — кут згину рахується з розкидом, і підрахунок повторень починає брехати.

Другий збій — розбіжність відеопотоку й моделі в часі. Черга кадрів зростає, обчислення йде за застарілим кадром, а розмітка малюється поверх поточного: скелет приходить із затримкою і «пливе» повз тіло. Для підрахунку повторів це втрачені фази руху.

Лікується відкиданням застарілих кадрів за міткою часу та розділенням потоку камери й потоку обчислень.

Третє — бюджет слабкого пристрою. Апарат не тягне потік, гріється й скидає частоту, після чого застосунок або пропускає кадри, або змінює клас моделі на ходу.

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

Вимірюваний ефект: що змінюється в продукті після впровадження

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

Після переведення основної гілки на легку модель за ключовими точками затримка відгуку стиснулася до одного-двох кадрів — інтерфейс реагує майже в момент руху, навіть коли людина прискорюється.

Стійкість до втрати кадру — метрика, на якій зазвичай розсипається прототип. Раніше один змазаний або перекритий кадр обнуляв історію, і підрахунок повторень з'їжджав.

Тепер поза відновлюється за часовим вікном: пропуск не скидає траєкторію, а частка втрачених кадрів на швидких рухах падає з одиниць відсотків до десятих часток.

Вимірювання в MLPerf Mobile і наші прогони на живих людях збігаються: легкі гілки тримають точність там, де важкі вже не встигають за рухом.

Охоплення слабких пристроїв розширюється не «на око», а за бюджетом обчислень.

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

Головне — зниження класу відмов: зникає масова категорія звернень «не розпізнає мене».

Кадри з неповною фігурою, боковим світлом або людиною, що частково увійшла в кадр, більше не дають помилки: скелет добудовується за видимими точками з оцінкою достовірності, а спірна поза позначається м'яко — пропозицією виправити положення, а не повідомленням про збій.

Режими роботи моделі: на пристрої, у хмарі, гібрид

Три контури розрізняються не «якістю моделі», а тим, де обчислюються ключові точки скелета і як при цьому поводяться мережа, батарея та приватність.

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

Контур Коли підходить Обмеження режиму
Обробка на пристрої Безперервний потік камери та вимога приватності: кадри не залишають телефон Потрібне квантування моделі та ощадлива робота з пам'яттю; на слабких пристроях падає частота розбору
Хмарний контур Складні багатоперсонні сцени, розбір довгих записів, аналітика постфактум Залежить від каналу: затримка та втрати мережі; потрібна передача відео й явна згода на обробку
Гібридна схема Різнорідні сценарії: розмітка в реальному часі плюс докладний розбір на сервері Дорожче в розробці: дві гілки виконання, синхронізація результатів, складніше тестувати

Гібрид — не «середній» варіант, а перемикана схема. Ми закладаємо єдиний набір класів і спільну постобробку, щоб під час переходу з хмари на пристрій точки не «стрибали». Саме перемикання задається умовами: доступність каналу, заряд, тип вправи.

Обмеження перевіряємо на пілотному наборі реальних пристроїв: частка кадрів, розібраних без затримки, поведінка за слабкого каналу, стійкість до частково перекритого тіла.

За цими вимірами обираємо контур і фіксуємо його в технічній документації разом із поведінкою під час деградації — що бачить користувач, якщо розбір недоступний.

Етапи впровадження: від аудиту даних до передачі контуру

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

  1. Аудит даних. Дивимося, як реально знімають користувачі: ракурси, освітлення, перекриття, тривалість сесій. На виході — перелік сценаріїв, які рішення зобов'язане відпрацювати, та оцінка обсягу розмітки.

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

  3. Проєктування контуру. Вирішуємо, що обчислюється на пристрої, а що на сервері, як застосунок поводиться без мережі та як оновлювати модель, не випускаючи нову версію.

  4. Налаштування моделі. Донавчаємо на своєму корпусі, окремо перевіряємо рідкісні пози та крайні ракурси, стежимо, щоб точність не просідала на слабких пристроях.

  5. Оптимізація. Вимірюємо нагрівання, витрату батареї та затримку відгуку на реальних апаратах: точність, через яку телефон гріється, у продукт не йде.

  6. Приймальна перевірка. Запускаємо погоджений набір сценаріїв і метрик, перевіряємо погане світло та обрив мережі. Розбіжність із порогом — повернення на потрібний етап, а не «доопрацювання на око».

  7. Передача контуру. Віддаємо інтеграційний код, схему контуру, скрипти розмітки та навчання, документацію з оновлення моделі й чек-лист діагностики, навчаємо команду замовника.

Склад постачання: конфігурації моделей, схеми потоків, регламенти

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

  • Конфігурації моделі: ваги, пороги впевненості за ключовими точками, налаштування вхідної роздільної здатності кадру. До кожного параметра — коментар, що він змінює і на якій метриці відображається: частка хибних спрацювань, стійкість до частково перекритого тіла, робота за слабкого освітлення.
  • Схеми потоків даних: від захоплення кадру до вихідного скелета. Позначено, де стоїть буфер, де кадри відкидаються за нестачі часу на обробку, що відбувається за просідання частоти зйомки та як поводиться черга під навантаженням.
  • Політики доступу: які модулі застосунку звертаються до моделі, що йде на серверну частину, а що обчислюється на пристрої. Окремо — правила роботи з відеопотоком користувача: де він зберігається, чим маскується, коли видаляється.
  • Регламент оновлення моделі: повний цикл — розмітка нових записів, донавчання, перевірка на еталонному наборі, поступовий викат на частку користувачів. З критеріями відкату: якщо цільова метрика просіла, попередня версія повертається однією командою.
  • Еталонний набір для регресії: записи із заздалегідь розміченим результатом, на яких запускається кожна нова збірка. Дозволяє ловити деградацію до релізу, а не за скаргами в підтримці.
  • Профілі за класами пристроїв: де модель обчислює кадри в реальному часі, де перемикається на полегшений варіант, а де логіка деградує до аналізу окремих кадрів замість потоку.
  • Документація супроводу: карта модулів, точки розширення під нові типи рухів, перелік відомих обмежень та інструкція для чергового інженера — що перевіряти насамперед, коли метрики розходяться з очікуваннями.

Кейс впровадження: метрики до і після на реальному навантаженні

Кейс впровадження — застосунок-тренер для домашніх занять: камера телефона відстежує позу, а система підказує, чи правильно виконується вправа. На вході частка правильних поз на тестовій вибірці трималася близько 68%, час відгуку на зміну положення — порядку пів секунди.

На швидких рухах скелет «тремтів», присідання зараховувалося як провал, і користувачі кидали тренування на середині.

Що змінили в моделі та обробці

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

Додали згладжування ключових точок за послідовністю кадрів і окремі пороги впевненості для статичних і динамічних вправ: скелет перестав «смикатися», а система навчилася розрізняти паузу між повтореннями та завершений рух.

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

Частка правильних поз на тій самій вибірці зросла з 68% до 94%, час відгуку скоротився до десятих часток секунди. Вимірювання звіряли з еталонними розмітками відкритого набору COCO, тому цифри зіставні між релізами й не залежать від того, хто саме запускав тест.

Побічний ефект — частка доведених до кінця тренувань піднялася з 41% до 73%.

Рахуємо не «на око»: фіксована вибірка, прогін на трьох класах пристроїв, звіт із розподілом помилок за типами вправ і регрес-тест на кожному релізі — за наступного оновлення метрики не поїдуть униз непомітно.

Чи потрібна своя розмітка, якщо готова модель уже працює?

Готова модель на кшталт MediaPipe навчена на масових даних: людина на повний зріст, камера на рівні грудей, звичайний одяг, одна людина в кадрі.

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

Доналаштування закриває зміщення, але не змінює природу задачі.

Якщо ваші рухи — варіація загальної задачі (та сама людина, та сама проєкція, інший одяг або ракурс), достатньо доналаштувати модель на кількох сотнях розмічених кадрів і стежити за якістю саме на своїх рухах, а не на загальній перевірці.

Своя розмітка стає обов'язковою, коли змінюється об'єкт спостереження або сама метрика. Інвентар у руках, положення кисті під час хвату, темп і амплітуда руху — готова модель такі відмінності не розрізняє: її цільова змінна «де суглоб», а вам потрібно «чи правильно виконано рух». Розмічати доводиться під свою задачу.

Вартість підтримки якості рахується не разово. Розмітка поз — це десятки точок на кадр, узгодженість між розмітниками, частка переперевірки, набір регресійних перевірок за вже закритими випадками й повторне доналаштування на нових даних. Без цього конвеєра якість на своїх рухах просідає за кожної зміни сцени.

Практичне правило просте: спочатку запустити готову модель на своєму записі й розділити помилки на систематичні та випадкові. Систематичні лікує доналаштування, випадкові та «не ті» рухи — лише власний розмічений набір. На короткому пілоті це видно за лічені дні, і рішення спирається на метрику, а не на очікування.

Технічні сумніви: точність, приватність, відмови

Сумніви перед стартом майже завжди ті самі: чи витягне модель на поганому світлі, чи не витече відео, що буде з батареєю на довгій сесії та хто відповідає за якість після запуску. Від відповідей залежить, що ми обчислюємо на пристрої, а що йде на сервер.

Наскільки просідає точність на поганому світлі?

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

Відео йде на сервер?

Кадри обробляються на пристрої й назовні не йдуть — передаються лише координати точок або агреговані метрики. Серверна обробка вмикається точково, за згодою користувача та з шифруванням каналу.

Як довго тримає батарею?

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

Хто відповідає за якість після запуску?

Точність просідає не сама по собі, а від зміни умов — новий майданчик, інший одяг, оновлення системи. Тому в постачання входить набір контрольних записів і метрика, за якою просідання видно до скарг користувачів.

Обговоримо задачу: які дані та доступи потрібні для старту

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

Чим точніше описано сценарій, тим менше припущень у кошторисі й тим раніше видно вузькі місця: наприклад, що частина поз нерозрізненна за слабкого світла або що рух занадто швидкий для обробки в реальному часі.

  • Сценарій: які рухи та пози розпізнаємо, скільки людей одночасно в кадрі, що відбувається при помилці — підказка, пауза, повтор вправи.
  • Цільові платформи та мінімальні версії ОС, перелік моделей пристроїв, на яких застосунок зобов'язаний працювати стабільно.
  • Джерело відео: камера в реальному часі, запис із галереї або зовнішній потік. Якщо обчислення йдуть на пристрої (наприклад, на MediaPipe), відео не залишає телефон — це знімає частину питань щодо приватності.
  • Референси: застосунки-аналоги, приклади відео з рухами та розбір, що в них подобається, а що не підходить під ваш сценарій.
  • Доступи: репозиторій, акаунти магазинів застосунків, тестові збірки та парк пристроїв для перевірки на реальному залізі.
  • Обмеження: вимоги до зберігання відео, робота без мережі, витрата батареї та нагрівання корпусу за тривалої сесії.
  • Терміни та етапність: чи є жорстка дата, чи потрібен пілот на обмеженій групі користувачів перед релізом.

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

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

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

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714