PoseNet 能够通过预测图像或视频中人体的关键位置进行姿态的预测。
开始使用
如果您熟悉 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 | 右踝 |
输出示例如下所示:
性能基准
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 论文。
另外,请查看以下姿态预测的用例。