您的位置: 首页>滚动新闻 > >正文

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

2021-04-07 10:35:46来源:

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

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

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

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

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

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

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

    视频来源--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人体姿势估计系统的基本工作原理,以及运作流程。当然,根据实际项目的具体特征,该流程可能会随着业务需求的变化,而有所增、删、减、改。下面是我的一些经验总结:

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

      原文标题:HumanPoseEstimationTechnology2021Guide,作者:MaksymTatariants

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

      来源:51CTO

      相关阅读
      • 国内
      • 社会
      • 财经
      • 娱乐
      • 滚动
      • 粤港澳
      • 大都市
      推荐阅读