姿势检测

机器学习套件姿势检测 API 是一个轻量级的多用途解决方案,可供应用开发者从连续视频或静态图片中实时检测正文的姿态。一个姿势通过一组骨架地标点描述身体在某一时刻的位置。这些地标对应于肩部和臀部等不同的身体部位。地标的相对位置可用于区分不同姿势。

iOS Android

机器学习套件姿势检测可生成全身 33 点的骨架匹配,包括面部特征(耳朵、眼睛、嘴巴和鼻子)以及手和脚的点。下面的图 1 显示了用户看向镜头时看到的地标,因此它是镜像。用户的右侧会显示在图片左侧:

图 1. 地标

机器学习套件姿势检测无需专用设备或机器学习专业知识即可实现出色的结果。借助该技术,开发者只需几行代码即可为用户打造一种独特的体验。

必须存在用户的脸部才能检测姿势。当正文的整个身体在画面中可见时,姿势检测效果最佳,但它也可以检测局部身体姿势。在这种情况下,无法识别的地标会被分配图像外部的坐标。

主要功能

  • 跨平台支持:在 Android 和 iOS 上获得相同的体验。
  • 全身跟踪:该模型会返回 33 个关键的骨架地标点,包括手脚的位置。
  • InFrameLikelihood 得分:对每个地标进行的一项测量,用于指示地标位于图片帧中的概率。得分在 0.0 到 1.0 之间,1.0 表示高置信度。
  • 两个优化的 SDK 基本 SDK 在 Pixel 4 和 iPhone X 等现代手机上实时运行。分别以约 30 fps 和 45 fps 的速率返回结果。不过,地标坐标的精确度可能会有所不同。 准确的 SDK 会以较低的帧速率返回结果,但会产生更准确的坐标值。
  • Z 坐标进行深度分析:此值可帮助确定用户身体部位是正面还是背部臀部。有关详情,请参阅下面的 Z 坐标部分。

Pose Detection API 与人脸识别 API 类似,它会返回一组地标及其位置。不过,人脸检测也会尝试识别笑脸或睁眼等特征,而姿势检测不会向姿势中的地标或姿势本身附加任何含义。您可以创建自己的算法来解释姿态。有关示例,请参阅姿态分类提示

姿势检测只能检测图片中的人物。如果图像中有两个人,则模型会将地标分配给检测到置信度最高的人。

Z 坐标

Z 坐标是为每个地标计算出的一个实验值。它以 X 和 Y 坐标表示,但并非真正的 3D 值。Z 轴与相机垂直,并在摄影对象的臀部之间传递。Z 轴的源站约是臀部之间的左侧中心点(相对于相机而言,左右/前/后)。Z 负值朝向镜头;正值离摄像头。 Z 坐标没有上限或下限。

示例结果

下表展示了右侧姿态中几个地标的坐标和 InFrameLikelihood。请注意,用户左手的 Z 坐标为负值,因为它们位于正文的臀部前方并靠近相机镜头。

地标类型位置帧内可能性
11向左箭头(734.9671、550.7924、-118.11934)0.9999038
12 权利所有者 (391.27032、583.2485、-321.15836) 0.9999894
13 向左箭头 (903.83704、754.676、-219.67009) 0.9836427
14 向右方箭头 (322.18152、842.5973、-179.28519) 0.99970156
15 左手腕 (1073.8956、654.9725、-820.93463) 0.9737737
16 向右腕 (218.27956、1015.70435、-683.6567) 0.995568
17 左 PINKY (1146.1635、609.6432、-956.9976) 0.95273364
18 向右箭头 (176.17755、1065.838、-776.5006) 0.9785348

深入了解

如需详细了解此 API 的底层机器学习模型的实现,请查看我们的 Google AI 博文

如需详细了解我们的机器学习公平性做法以及模型的训练方式,请参阅我们的模型卡片