姿态估计是指使用 ML 模型从图像或视频中估计人体的姿态,方法是估计关键身体关节(关键点)的空间位置。
入门
如果您是 TensorFlow Lite 的新手,并且正在使用 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 | 右踝 |
下面显示了一个示例输出
性能基准
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 论文 此处
此外,请查看姿态估计的这些用例。