姿态估计

姿态估计是指使用 ML 模型从图像或视频中估计人体的姿态,方法是估计关键身体关节(关键点)的空间位置。

入门

如果您是 TensorFlow Lite 的新手,并且正在使用 Android 或 iOS,请探索以下示例应用程序,它们可以帮助您入门。

Android 示例 iOS 示例

如果您熟悉 TensorFlow Lite API,请下载 MoveNet 姿态估计模型和支持文件。

下载入门模型

如果您想在 Web 浏览器上尝试姿态估计,请查看 TensorFlow JS 演示

模型描述

工作原理

姿态估计是指计算机视觉技术,它可以检测图像和视频中的人体,以便您可以确定,例如,某人的肘部在图像中的位置。重要的是要注意,姿态估计只是估计关键身体关节的位置,而不会识别图像或视频中的人是谁。

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

我们提供了两种 TensorFlow Lite 姿态估计模型的参考实现

  • MoveNet:最先进的姿态估计模型,有两种版本:Lighting 和 Thunder。请参阅下面部分中这两种版本的比较。
  • PoseNet:2017 年发布的上一代姿态估计模型。

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

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

下面显示了一个示例输出

Animation showing pose estimation

性能基准

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 论文 此处

此外,请查看姿态估计的这些用例。