姿态预测

PoseNet 能够通过预测图像或视频中人体的关键位置进行姿态的预测。

开始使用

下载此模块

Android 示例 iOS 示例

如果您熟悉 TensorFlow Lite API,请下载入门 MoveNet 姿态预测模型和支持文件。

下载入门模型

如果你想在 Web 浏览器上尝试姿态预测,请查看 TensorFlow JS Demo

工作原理

使用案例

为了达到清晰的目的,该算法只是对图像中的人简单的预测身体关键位置所在,而不会去辨别此人是谁。

姿态预测模型会将处理后的相机图像作为输入,并输出有关关键点的信息。检测到的关键点由部位 ID 索引,置信度分数介于 0.0 和 1.0 之间。置信度分数表示该位置存在关键点的概率。

我们提供了两个 TensorFlow Lite 姿态预测模型的参考实现:

  • MoveNet:最先进的姿态预测模型,有两个版本可供选择:Lightning 和 Thunder。在以下部分可以看到这两者之间的对比。
  • PoseNet:2017 年发布的上一代姿态预测模型。

姿态预测模型检测到的各种身体关节如下表所示:

ID 部位
0 鼻子
1 左眼
2 右眼
3 左耳
4 右耳
5 左肩
6 右肩
7 左肘
8 右肘
9 左腕
10 右腕
11 左胯
12 右胯
13 左膝
14 右膝
15 左踝
16 右踝

输出示例如下所示:

Output stride and heatmap resolution

性能基准

MoveNet 有两种版本:

  • MoveNet.Lightning 比 Thunder 版更小、更快,但准确率较低。它可以在当下的智能手机上实时运行。
  • MoveNet.Thunder 是更准确的版本,但比 Lightning 版更大、更慢。对于需要更高准确率的用例,它非常有用。

MoveNet 在各种数据集上的表现都优于 PoseNet,尤其是在包含健身动作的图像上。因此,我们建议使用 MoveNet 而不是 PoseNet。

性能基准数值使用此处介绍的工具生成。准确率 (MAP) 数值在 COCO 数据集的子集上测得,在该数据集中,我们筛选并裁剪了每个图像,使其仅包含一个人。

模型 大小 (MB) mAP 延迟 (ms)
Pixel 5 - CPU 4 线程 Pixel 5 - GPU Raspberry Pi 4 - CPU 4 线程
MoveNet.Thunder(FP16 量化) 12.6MB 72.0 155ms 45ms 594ms
MoveNet.Thunder(INT8 量化) 7.1MB 68.9 100ms 52ms 251ms
MoveNet.Lightning(FP16 量化) 4.8MB 63.0 60ms 25ms 186ms
MoveNet.Lightning(INT8 量化) 2.9MB 57.4 52ms 28ms 95ms
PoseNet(MobileNetV1 主干,FP32) 13.3MB 45.6 80ms 40ms 338ms

补充阅读和资源

  • 请查看这篇博文,了解更多使用 MoveNet 和 TensorFlow Lite 进行姿态预测的信息。
  • 请查看这篇博文,了解更多关于 Web 姿态预测的信息。
  • 请查看此教程,了解如何使用 TensorFlow Hub 的模型在 Python 上运行 MoveNet。
  • Coral/EdgeTPU 可以加快姿态预测在边缘设备上的运行速度。有关更多详细信息,请参阅 EdgeTPU 优化模型
  • 请在此处阅读 PoseNet 论文。

另外,请查看以下姿态预测的用例。