
ML Kit Pose Detection API — это легкое универсальное решение для разработчиков приложений, позволяющее определять позу тела субъекта в режиме реального времени на основе непрерывного видео или статического изображения. Поза описывает положение тела в определенный момент времени с помощью набора скелетных ориентиров. Ориентиры соответствуют различным частям тела, таким как плечи и бедра. Относительное положение ориентиров можно использовать, чтобы отличить одну позу от другой.
ML Kit Pose Detection производит сопоставление скелета всего тела по 33 точкам, включая ориентиры лица (уши, глаза, рот и нос) и точки на руках и ногах. На рис. 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 .
Чтобы узнать больше о наших методах обеспечения справедливости машинного обучения и о том, как модели обучались, см. нашу карточку модели .