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

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

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 для левой руки пользователя отрицательны, так как они находятся перед центром бедер субъекта и по направлению к камере.

Ориентир Тип Должность InFrameLikelihood
11 ЛЕВОЕ ПЛЕЧО (734,9671, 550,7924, -118,11934) 0,9999038
12 ПРАВОЕ_ПЛЕЧО (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 .

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