|
|
|
|
公众号矩阵

人体姿态评估技术的开发与实现

本文基于实现经验,和您讨论如何为AI健身领域开发和实现3D人体姿势估计的应用。

作者:陈峻来源:51CTO|2021-04-06 09:00

【51CTO.com快译】根据有关研究报告,到2022年,数字健身市场的规模预计将达到274亿美元。如果有人告诉您:有某种技术能够取代健身教练的话,那么他一定指的是3D人体姿势估计(Human Pose Estimation)技术。作为数字健身中一种相对较新、但发展迅速的技术,它能够利用用户输入的体能练习视频,以自动化的方式,分析他们的各项运动参数指标。下面,我将基于自己的实现经验,和您讨论如何为AI健身领域开发和实现3D人体姿势估计的应用。

什么是人体姿势估计?

作为一种基于计算机视觉的技术,人体姿势估计可以通过人体建模,来检测和分析人体的各种动作与姿势。此类技术通常包含如下三种人体模型:

  • 基于骨骼的模型 - 由一组关节(关键点)组成,例如脚踝、膝盖、肩膀、肘部、手腕和四肢的姿势。这些组成了人体的骨骼结构。鉴于其灵活性,此类模型可用于2D和3D人体姿势估计技术。
  • 基于轮廓的模型 - 由人体躯干和四肢轮廓的粗略宽度组成,其中人体部位是以轮廓的边界和矩形呈现的。
  • 基于体积的模型 - 由3D人体形状和姿势组成。这些姿势由具有几何网格和形状的体积模型,通过3D扫描而捕获。

来源--https://arxiv.org/pdf/2006.01423.pdf

下面,我将主要讨论由2D或3D视角检测到的、基于骨骼的模型。其中:2D姿态估计的检测和分析是基于RGB图像中人体关节的X、Y坐标;而3D姿势估计则检测和分析的是X、Y、Z坐标。通常,对于健身应用而言,最好使用3D估计,来更加精确地分析体育运动中的人体姿势。因此,AI健身教练类App的基本流程是:

1. 捕捉用户练习时的动作

2. 分析运动表现的正确性

3. 在用户界面上显示错误

下面,我们来讨论一下3D人体姿势估计技术是如何检测人体关键点的:

如上图所示,该过程首先要提取人体的关节,然后通过深度学习算法分析人体的姿势。如果人体姿势估计系统使用视频记录作为数据源的话,就需要从一系列实际动作的帧,而不是单个稳定姿势的图片中检测关键点(即:关节位置),以获取更高的准确性。

虽然目前有多种方法可以用来开发3D人体姿势估计系统,但是,我们最常用的还是通过训练深度学习模型,从给定的图像/帧中提取3D或2D关键点。我们将对如下视频采用具有时空卷积的卷积神经网络(convolutional neural networks,CNN)进行分析。

来源--https://github.com/facebookresearch/VideoPose3D/blob/master/images/convolutions_anim.gif

通过对现有模型的分析,我们发现VideoPose3D是健身类应用的合适选择。它能够从输入中将COCO 2017数据集用作预训练的2D检测器,以检测出一组2D关键点。同时,为了准确地预测特定关节的位置,它会处理在不同时间段捕获到的多个帧中的视觉数据。

如何在AI健身教练App中使用人体姿势评估

假设我们的目标是:让系统能够对给定的输入视频进行检查,以发现是否存在着常见的动作错误。也就是说,该应用需要将输入的视频,与专业运动员相同示范动作的参考视频进行比较。下面,我们来讨论其具体处理流程:

1.根据动作的开末来剪切输入视频

对于起点和终点的标注,我们可以使用任意阈值,来自动检测身体控制点的位置。例如:在下蹲时,我们可以检测手臂的角度和手的高度位置,然后通过使用任意阈值(arbitrary thresholds),来比对捕获到的练习动作的起点和终点(如下图所示)。

视频来源--https://www.youtube.com/watch?v=M-qAx0yGK9w

当然,我们也可以使用另一种方法:要求用户刻意示意他们动作的开始和结束。

2.检测用户身体上的2D和3D关键点

根据上述检测到的始末点,算法会自动将其对应转换为2D和3D关键点。

3.练习阶段的分解

提取关键点(关节)位置的过程中,我们需要将其与参考视频的位置进行比较。由于用户实际的动作速度,与参照视频中专业运动员的动作速度有所差异,因此我们无法进行直接比较。

针对此类差异,我们可以通过将练习动作分解为多个阶段予以解决。如下图所示,下蹲练习可被分为下蹲和站起,两个主要阶段。

来源--stronglifts.c​​om

接着我们可以通过逐帧分析的方式,从输入视频中检测到的关键点,然后通过动作标准,将它们逐个与参考视频中的关键点进行比较,以完成分解。

4.搜索常见错误

在完成了3D关键点的检测,以及练习阶段的分解后,我们便可以在输入的视频中检测练习动作中的常见错误了。如下图所示,在该用户下蹲时,我们检测到其腿部是向外弯曲,而不是笔直的。同时,他的膝盖应当比双脚更靠近躯干。

视频来源--https://www.youtube.com/watch?v=W73Mc0Gil9A&t=244s

5.将输入视频与参考视频进行逐帧比较

为了更加精准地纠正用户的动作,我们需要通过如下分步流程,将输入视频与参考视频进行逐帧比较:

1) 通过减慢或快进参考视频,使其与输入视频的进度相匹配。

2) 将用户和专业运动员的骨骼模型对齐,使他们旋转的角度和对照点相匹配。

3) 由于参考视频和输入视频可能是从不同的距离拍摄的,因此我们需要合并或归一化两套骨骼。

4) 通过逐帧比较关键点,以检测并发现动作的不一致性。

5) 对不同的关节处(如:脚、膝盖、手、肘等位置)分别重复执行上述流程。

6.显示结果并为用户生成建议

当整个分析周期完成后,用户需要获得以不同格式显示的结果。例如,输出结果可以包括带有错误提示信息的各种交互式3D重建,以便用户可以对某个动作细节进行放大、缩小、后退、前进或暂停。当然,输出结果也可以收集和显示有关某些动作的统计信息,例如:重复的次数、单次循环动作的平均速度、以及持续时间等。

下图便是基于视频的3D人体姿势估计系统的输出示例:

来源--stronglifts.c​​om的男性健康频道

经验总结

综上所述,我从AI健身教练App的开发角度,描述了3D人体姿势估计系统的基本工作原理,以及运作流程。当然,根据实际项目的具体特征,该流程可能会随着业务需求的变化,而有所增、删、减、改。下面是我的一些经验总结:

  • 3D人体姿势估计可用于检测健身练习中的动作错误。
  • 选择合适的2D关键点检测器,对于获得高质量3D关键点是至关重要的。
  • 快速移动的关节,对于检测2D关键点模型,以及发现错误是极具挑战的。
  • 预训练的模型可能对于异常的动作和身体姿势,无法很好地发挥作用。此时,您可能需要微调或重新训练,让具有特定属性的数据,对模型进行优化。

注:本文源自https://mobidev.biz。MobiDev是一个提供技术研究和软件开发服务经验的网站。

原文标题:Human Pose Estimation Technology 2021 Guide,作者: Maksym Tatariants

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【编辑推荐】

  1. PHP断点调试技术(Xdebug)视频课程
  2. Direct Access直接访问内网技术视频课程
  3. 人工智能系列之机器学习入门实战-XGBoost算法【肢解原理+算法实战】
  4. Windows 7/8.1能免费升Windows 10:技术上“洗白”、依然不属正版
  5. 区块链是什么与区块链技术有关的理论依据
【责任编辑:华轩 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

数据湖与数据仓库的分析实践攻略

数据湖与数据仓库的分析实践攻略

助力现代化数据管理:数据湖与数据仓库的分析实践攻略
共3章 | 创世达人

7人订阅学习

云原生架构实践

云原生架构实践

新技术引领移动互联网进入急速赛道
共3章 | KaliArch

36人订阅学习

数据中心和VPDN网络建设案例

数据中心和VPDN网络建设案例

漫画+案例
共20章 | 捷哥CCIE

230人订阅学习

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微