Обнаружение позы

API ML Kit Pose Detection — это легкое универсальное решение для разработчиков приложений, позволяющее определять позу тела объекта в реальном времени на основе непрерывного видео или статического изображения. Поза описывает положение тела в определенный момент времени с помощью набора ориентиров скелета. Ориентиры соответствуют различным частям тела, таким как плечи и бедра. Относительное расположение ориентиров можно использовать, чтобы отличить одну позу от другой.

iOS Android

ML Kit Pose Detection производит сопоставление скелета всего тела по 33 точкам, включая ориентиры лица (уши, глаза, рот и нос) и точки на руках и ногах. На рисунке 1 ниже показаны ориентиры, смотрящие через камеру на пользователя, поэтому это зеркальное изображение. Правая сторона пользователя отображается слева от изображения:

Рисунок 1. Ориентиры

Для достижения отличных результатов ML Kit Pose Detection не требует специального оборудования или опыта ML. С помощью этой технологии разработчики могут создавать уникальные возможности для своих пользователей с помощью всего лишь нескольких строк кода.

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

Ключевые возможности

  • Кроссплатформенная поддержка. Наслаждайтесь одинаковыми возможностями как на Android, так и на iOS.
  • Отслеживание всего тела Модель возвращает 33 ключевые ориентиры скелета, включая положения рук и ног.
  • Оценка InFrameLikelihood. Для каждого ориентира — мера, указывающая вероятность того, что ориентир находится в кадре изображения. Оценка имеет диапазон от 0,0 до 1,0, где 1,0 указывает на высокую степень достоверности.
  • Два оптимизированных SDK. Базовый SDK работает в режиме реального времени на современных телефонах, таких как Pixel 4 и iPhone X. Он возвращает результаты со скоростью ~30 и ~45 кадров в секунду соответственно. Однако точность координат ориентира может варьироваться. Точный SDK возвращает результаты с более низкой частотой кадров, но выдает более точные значения координат.
  • Координата Z для анализа глубины. Это значение может помочь определить, находятся ли части тела пользователя впереди или позади бедер пользователя. Для получения дополнительной информации см. раздел «Координата Z» ниже.

API обнаружения позы похож на API распознавания лиц тем, что возвращает набор ориентиров и их местоположение. Однако, хотя распознавание лиц также пытается распознать такие особенности, как улыбающийся рот или открытые глаза, распознавание позы не придает никакого значения ориентирам в позе или самой позе. Вы можете создавать свои собственные алгоритмы интерпретации позы. Некоторые примеры см. в разделе «Советы по классификации поз» .

Обнаружение позы может обнаружить только одного человека на изображении. Если на изображении присутствуют два человека, модель назначит ориентиры тому человеку, который обнаружен с наибольшей достоверностью.

Координата Z

Координата Z — это экспериментальное значение, которое рассчитывается для каждого ориентира. Оно измеряется в «пикселях изображения», таких как координаты X и Y, но не является истинным трехмерным значением. Ось Z перпендикулярна камере и проходит между бедрами объекта. Начало оси Z находится примерно в центральной точке между бедрами (слева/справа и спереди/сзади относительно камеры). Отрицательные значения Z относятся к камере; положительные ценности находятся вдали от него. Координата Z не имеет верхней или нижней границы.

Примеры результатов

В следующей таблице показаны координаты и InFrameLikelihood для нескольких ориентиров в позе справа. Обратите внимание, что координаты Z для левой руки пользователя отрицательны, поскольку они находятся перед центром бедер объекта и по направлению к камере.

Ориентир Тип Позиция InFrame Вероятность
11 ЛЕВОЕ ПЛЕЧО (734,9671, 550,7924, -118,11934) 0,9999038
12 RIGHT_SHOULDER (391.27032, 583.2485, -321.15836) 0,9999894
13 LEFT_ELBOW (903.83704, 754.676, -219.67009) 0,9836427
14 RIGHT_ELBOW (322.18152, 842.5973, -179.28519) 0,99970156
15 ЛЕВОЕ ЗАПЯСТЬЕ (1073,8956, 654,9725, -820,93463) 0,9737737
16 RIGHT_WRIST (218,27956, 1015,70435, -683,6567) 0,995568
17 LEFT_PINKY (1146,1635, 609,6432, -956,9976) 0,95273364
18 RIGHT_PINKY (176,17755, 1065,838, -776,5006) 0,9785348

Под капотом

Дополнительные сведения о реализации базовых моделей машинного обучения для этого API можно найти в нашем блоге Google AI .

Чтобы узнать больше о наших методах обеспечения справедливости в сфере ML и о том, как обучались модели, см. нашу карточку модели.