智能八段锦 app 中的身体动作识别

原文链接: https://medium.com/tensorflow/body-movement-recognition-in-the-smart-baduanjin-app-2a4e2d5159c8

这依然是一篇翻译的文章,原文作者分享了在健身app中应用机器学习的经验。原文标题:Body movement recognition in the ‘Smart Baduanjin’ App。点击阅读原文可跳转到英文原文。

介绍

OliveX是一家总部位于香港的公司,致力于健身相关软件的开发,自2018年首次推出以来,已为200万用户提供服务。我们的许多用户都是老年人,智能八段锦应用程序可帮助他们练习八段锦,同时最大程度地减少受伤的可能性。为此,我们在应用程序中利用最新的人工智能技术来自动检测八段锦的练习动作并向用户提供相应的反馈。

目标与需求

八段锦是一种流行的运动,包括八种肢体动作和控制呼吸。精确的动作和控制对于八段锦至关重要,它可以改善身心健康。

智能八段锦 app 中的身体动作识别_第1张图片

通过使用智能八段锦应用程序,用户可以通过 AI 跟踪动作来确定他们动作是否正确。利用最新的机器学习技术,我们希望取代传统的观看健身视频的学习方法,使用户可以实时获取有关其身体运动的反馈,获得更愉悦的互动体验。我们也希望这些功能可以帮助老年人更有效地练习八段锦,减少受伤的风险。

智能八段锦 app 中的身体动作识别_第2张图片

在分析并确定了目标的优先级之后,我们定义了总体产品需求:

  1. 用户通常在户外进行八段锦,因此我们的产品需要“移动”。

  2. 用户练习八段锦时,通常需要观看演示视频并模仿教练的动作,因此我们的产品应该能够播放有声视频。

  3. 为了向用户提供有价值的实时反馈,需要使用前置摄像头捕获用户的身体动作。

特别是关于身体运动识别,我们希望算法能够做到以下几点:

  1. 识别一串动作中的每个八段锦动作

  2. 根据用户身体动作的正确性打分

  3. 为不满意的动作提供纠正指导

技术分析

ML框架选择

基于上述需求,我们需要选择正确的深度学习框架来实施项目。我们特别寻找具有以下功能的框架:

  1. 对移动设备的强大支持,即使在中低端智能手机上也可以平稳运行

  2. 友好的 API 设计和丰富的调试工具

  3. 成熟的社区支持和丰富的资源

经过全面调查和评估,我们发现 TensorFlow Lite 满足需求。此外, Google 开源了专门用于检测人体姿势的应用程序 PoseNet ,并提供了基于TensorFlow.js的演示代码(编辑注:我们最近发布了基于 TensorFlow Lite 的 PoseNet 示例)。Google 不仅借助开放源代码帮助我们完成了人体姿势识别的初步工作,而且使我们确信动作识别算法可以在移动设备上运行,因为 JavaScript 上的性能已经如此出色。

算法

身体动作识别

在开发的起始阶段,我们研究了现有的人体运动识别算法。当前,主流算法主要基于分析视频帧顺序。尽管这些算法可以满足我们的需求,但网络相当复杂,对它们进行运行推断会消耗大量计算资源。但是,由于我们的主要需求之一是在移动设备上运行模型,因此我们必须在准确度和性能之间进行权衡。

我们的方法是首先通过 PoseNet 获取关键的人体关节,然后根据人体关节运动的顺序识别特定的动作。由于 PoseNet 仅跟踪 17 个身体关节,因此与全尺寸图像相比,计算量大大减少了。下面展示了算法的工作流程:

首先,我们使用 PoseNet 从输入视频中提取身体关节数据,然后根据身体关节数据进行动作分类。

智能八段锦 app 中的身体动作识别_第3张图片

关键动作

在确定技术方法之后,我们需要定义对于应用程序而言重要的关键身体运动。为此,我们将身体运动识别问题转换为典型的机器学习分类问题。以下是我们如何定义关键的八段锦运动的示例:

智能八段锦 app 中的身体动作识别_第4张图片

我们训练了传统的深度神经网络对用户的身体运动进行分类。经过几次超参数调整迭代和训练数据的优化 / 扩充,最终模型具有良好的准确性,并且能够满足我们的产品需求,如下所示。

智能八段锦 app 中的身体动作识别_第5张图片

移动设备面临的挑战

在完成深度学习模型之后,我们的下一步是在 iOS 和 Android 移动设备上部署我们的模型。首先,我们尝试了TensorFlow Mobile。[译注:TensorFlow Mobile已经废弃,以后Google只支持TensorFlow Lite] 但是由于我们需要实时获取识别结果,TensorFlow Mobile并不是可行的选择,因为其性能无法满足此需求。

在我们试图解决性能挑战的过程中,Google发布了TensorFlow Lite,它在性能方面与TensorFlow Mobile相比是的巨大飞跃。比较以下两种产品:

智能八段锦 app 中的身体动作识别_第6张图片

下面显示了在我们的模型中初始基准测试结果:

智能八段锦 app 中的身体动作识别_第7张图片

根据基准测试数据,我们得出结论,在大多数Android 设备上基于 512 x 512 输入尺寸的进行实时人体运动识别是不可行的。为了解决这个问题,我们分析了机器学习模型,发现 PoseNet 是瓶颈,消耗了 95% 的计算时间。因此,我们调整了 PoseNet 输入大小和超参数,并重新训练了动作识别算法,以补偿由于输入大小减小而导致的精度损失。最后,我们选择 337 x 337 RGB 作为输入,并选择 0.5 作为Android MobileNet的宽度倍增器。

我们的目标用户主要是老年人,他们倾向于使用低端设备。尽管我们通过调整 PoseNet 参数提高了性能,但仍然不能令人满意。因此,我们求助于智能手机中无处不在的加速器:GPU。Google 恰巧在那个时候发布了 TensorFlow Lite GPU 委托(实验版),这节省了大量的工程资源。

移动GPU大大加快了我们模型的执行速度。以下是我们在几种流行设备上有/无GPU委托的情况下的基准测试。

智能八段锦 app 中的身体动作识别_第8张图片

由于老年用户八段锦的移动速度相对较慢,因此在集成 TensorFlow Lite GPU委托(实验版)后,我们的产品可以在大多数设备上流畅运行。

结论

我们已成功完成 iOS 和Android上的智能八段锦产品,并获得了测试用户的积极反馈。通过利用 ML 技术和 TensorFlow ,我们为八段锦初学者提供了“教学模式”,以便他们可以跟随演示视频学习动作。对于经验丰富的八段锦练习者,我们提供了宝贵的反馈意见,例如分数,以帮助他们进一步提高技能。目前,智能八段锦在 App Store 和 Google Play 中均免费提供。

同时, OliveX 正在积极探索将人体姿势估计应用于其他健身锻炼。我们发现许多其他锻炼方法就像八段锦一样,因为练习者动作的正确性非常重要。正确的身体运动不仅可以帮助人们避免身体伤害,还可以提高运动效率。因此,我们也希望将从八段锦项目中获得的知识和技能也转移到其他领域。

智能八段锦 app 中的身体动作识别_第9张图片

你可能感兴趣的:(智能八段锦 app 中的身体动作识别)