米娜·迪莫娃(Mina Dimova)2021年3月29日
COVID-19大流行迫使人们在室内花更多的时间,以及智能电视的最新发展,为我们提供了新的,新兴的体验,并将其引入人们的客厅,这是必要的,也是机遇。现在,许多人的生活方式截然不同,并决定在家锻炼。有了合适的技术,这将是一种非常方便有效的方法,远程锻炼对于许多消费者而言仍然是一个有吸引力的选择。摄像头是这项技术的关键部分,它们重返数字电视(DTV)市场创造了机会。鉴于现代电视的高分辨率和大屏幕尺寸,这些用户体验可能会非常令人身临其境,同时带来健康益处。
在此博客中,我们将讨论如何使用大屏幕智能电视上的应用程序使人们在舒适的家中锻炼。我们首先从应用程序概述开始,然后是适用于Android TV的用于姿势估计和跟踪的深度学习方法。我们讨论了选择正确的卷积神经网络(CNN)模型的主要考虑因素以及它们的功能和局限性。
概述
让我们从对应用程序的简短描述开始。我们的目标是估计并持续跟踪用户的身体位置,并将其与健身教练的参考身体位置进行比较。我们想从摄像机流中找到学生身体的每个关节的位置,并从预先录制的视频中找到老师的每个关节的位置。然后,应用程序应向用户提供有关其位置与参考的相似程度的反馈。这可以是简单的得分值,也可以是更加用户友好的方法,突出显示需要校正的身体部位。计分功能应考虑到人们的身体形状不同。它可以使用每个关节的概率得分并计算加权距离或完全丢弃低置信度估计。有关更多信息,请阅读此 博客。
除了量化两个身体姿势之间的差异的挑战之外,我们还必须解决如何从两个视频流中正确识别相应的帧的问题。不可避免地,导师和进行练习的学生之间会有一定的等待时间。为此,并考虑到锻炼的不同步调,我们必须进行搜索以确定必须比较哪些精确的图像对。
如您在下图中所看到的,在我们的应用程序中,我们正在可视化覆盖有骨架数据的视频流和百分比得分。
图1:我们使用BlazePose模型的Fitness应用程序
在此博客中,我们将重点放在智能电视上,因为我们看到了该领域的巨大潜力。但是,我们在此处讨论的许多软件模型和工具也适用于您可能定位的其他消费类设备。
深度学习方法
自微软开发使用Kinect传感器的人体姿势估计随机森林模型以来,已经过去了将近十年。这突出了此任务对许多最终用户应用程序的重要性。从那时起,一直有大量的机器学习(ML)研究专注于2D和3D人体姿势估计。近年来,深度学习方法已显示出巨大的潜力,目前在该领域处于市场领先地位。
在估计和跟踪身体位置的深度学习方法中,有很多事情要考虑。通常,用于智能电视,移动电话和家用设备的解决方案必须具有出色的性能,因此选择合适的CNN模型可能是一项艰巨的任务。用于姿势估计的轻量级模型通常从摄像机获取RGB图像作为输入和输出人体关键点的2D或3D位置。可以使用单个端到端模型执行此操作,也可以在两个模型之间进行拆分,第一个模型可以检测到人,第二个模型可以定位关节或地标。第一种模型的示例是 PoseNet (基于MobileNetV1或ResNet50),第二种示例是 BlazePose (类似于MobileNetV2,带有自定义块)。
图2:来自BlazePose模型的结果,红色表示检测框
最重要的考虑因素是准确性和性能。为了更好地理解准确性,我们需要查看训练数据集和错误度量,但是通常这不能给我们完整的画面。通常,数据集是手动注释的,由于自遮挡和分辨率低,可能会引入较大的错误。 即使我们使用现有的CNN模型,也应考虑创建自己的小型数据集以进行评估。这样可以更好地了解它在特定用例中的执行情况。
此外,我们必须不断评估性能。终极战役–准确性与性能。TensorFlow的基准测试工具是了解不同模型和推理引擎性能的一个很好的起点。
对于TFLite模型,无论是在软件(SW)还是在硬件(HW)方面,都有许多用于在Android设备上运行推理的选项,并且它很快就会引起混乱。在软件方面,有NNAPI,TFLite CPU或GPU委托,在软件方面,您可以在多个可用于推理的计算单元(例如CPU,GPU,NPU等)之间进行选择。对于Arm平台,一个不错的选择是使用提供更高级别抽象的ArmNN TFLite委托。或者,您可以直接定位 Arm计算库(ACL) 和ArmNN,从而可以对用户进行更多控制。就我们而言,我们在两种型号的Mali GPU上均取得了最佳性能,但在您的设备上可能并非如此。
图3:ArmNN推理流程图
其他注意事项
现在,模型的性能只是方程式的一部分,还必须考虑预处理和后处理操作。例如,对于PoseNet,该模型获取257 x 257 RGB输入图像,并输出热图和偏移矢量。然后必须对它们进行处理,以在原始摄像机图像中定位每个关节的最终位置。另一方面,BlazePose的地标模型输出x,y,z坐标以及每个关节的可见性和存在性。尽管这听起来更简单,但实际上涉及更多的处理阶段。这是因为必须将界标模型的输出坐标投影到原始帧,从而还原与检测模型相关的预处理和后处理阶段。
图4:带有BlazePose模型的示例
这些处理阶段以及应用程序中的其他功能也必须非常高效,并且作为开发人员,您希望尽可能多地利用系统。您想集中精力优化可为您带来最大性能提升的零件。为此, Arm的Streamline Performance Analyzer 可能就是正确的工具。它为您提供了系统中不同单元的详细硬件计数器。然后,如果 在代码中添加注释,则 可以看到管道中每个软件阶段的确切影响。 Florent的博客 很好地概述了ML应用程序的Streamline功能。
由于我们的应用程序中既有视频流又有摄像机流,因此我们必须对两者都进行推断。幸运的是,可以提前处理教师的视频。我们可以将骨架位置离线写入文件中,然后实时读取它,计算出分数并简单地绘制,从而提高了宝贵的性能。
当前模型的局限性
如前所述,由于与智能电视和家用设备相关的硬件限制,我们使用的CNN模型必须轻巧,这会影响整体精度。但也许更重要的是,这些模型仅依赖RGB输入数据。这种限制是由于有限的计算预算,也是由于这些产品中缺少深度传感器。深度传感器的存在会影响设备的价格,同时会增加带宽和处理能力。当然,在较小的设备上,功率预算和可用空间也是主要考虑因素。但最终,可以从深度信息中大大受益的是用例和身体姿势估计。
由于它们仅具有RGB特性,因此这些模型对照明条件的变化以及背景和衣服的颜色特别敏感。应用程序的类型还意味着我们可以预期由于摄像头角度,摄像头帧频和锻炼步伐而受到限制。此外,某些模型是在静止图像而非视频上训练的,特别容易受到运动模糊的影响。即使是最强壮的相机,也要承受大量的运动模糊。您必须仔细检查相机的功能,锻炼的类型以及图像的后处理才能处理此类情况。当然,也有自我遮挡–并非总是可见身体的所有部分。最后要注意的一点是,许多模型是在数据集中训练到人主要面对摄像机的数据集上进行训练的,
图5:带有模糊和遮挡的BlazePose的结果
结论
在这一点上,我们希望我们能共享足够的信息,以便读者可以通过深度学习来了解身体姿势估计中的挑战。我们已经讨论了一些模型,工具和局限性。我们已经从BlazePose模型中看到了一些出色的结果,并且更好地了解了为Android智能电视构建健身应用程序需要做什么。但这只是等式的一部分。借助更好的硬件计算功能,可以大大改善此类DTV解决方案的未来实现。与当前的高端移动设备类似,数字电视还可以提供新的交互式体验,并将其带入您的客厅屏幕。添加深度传感器将进一步提高姿势估计的准确性和鲁棒性,并允许3D重建和场景理解,以提供更身临其境的体验。
我期待听到您在Arm平台上实施深度学习应用程序的经验。并且不要忘记访问developer.arm.com 上的 ML部分,在这里您可以找到更多的帮助和有用的 指南。