编程实现一种运动估计算法_单人或多人的人体姿态骨架估计算法汇总

如何在大片中实现人物的特效,最终应用人体姿态估计。本博客介绍了使用深度学习技术及其应用的多人姿势估计方法。

人体骨骼骨架以图形格式表达人体运动。基本上,它是一组坐标,用于描述一个人的姿势。骨架中的每个坐标称为此图的零件(或关节,关键点)。我们将两个组件之间的有效连接称为一对(对或肢)。但是,应该注意,并非所有组件组合都产生有效对。下图是人体骨架图的示例。

6153db908c37c0fb2c70711c874875c1.png

左图:人体骨骼骨架的COCO关键点格式; 右图:渲染后的人体姿势图

该图来源:https://github.com/CMU-Perceptual-Computing-Lab/openpose

获取人体姿势信息为多个真实世界的应用程序开辟了道路,其中一些应用程序将在本博客的最后讨论。近年来,研究人员提出了各种人体姿势估计方法,最早(也是最慢)的方法通常是在一个人的图像中估计一个人的姿势。这些方法通常识别各个组件,然后通过在它们之间形成连接来创建姿势。

当然,如果您处于多人的真实场景中,这些方法并不是非常有用。

多人姿势估计

由于图像中的人的位置和总人数未知,因此多人姿势估计比单人姿势估计更困难。一般来说,我们可以通过以下方法解决上述问题:

简单的方法是首先添加人体检测器,然后分别估计每个组件,最后计算每个人的姿势。这种方法称为“自上而下”的方法。

另一种方法是检测图像中的所有组件(即所有者的组件),然后关联/分组属于不同人的组件。这种方法称为“自下而上”的方法。

b188ebfea278a2b5f6f64df5f172e1ff.png

上部:传统的自上而下方法; 下部:传统的自下而上的方法。

通常,自上而下的方法比自下而上的方法更容易实现,因为添加人类检测器比使用关联/分组算法容易得多。很难判断哪种方法总体上表现更好,因为比较人体检测器和相关/分组算法会更好。

在这篇博客中,我们专注于使用深度学习技术的多人姿势估计技术。在下一节中,我们将回顾一些流行的自上而下和自下而上的方法。

深度学习方法

1.OpenPose

OpenPose是最受欢迎的自下而上多人姿势估计方法之一,部分原因在于其GitHub实现的友好文档。

与许多自下而上的方法一样,OpenPose首先检测图像中的部分(关键点),然后将部分分配给不同的个体。下图显示了OpenPose模型的体系结构。

4d5ef93e5318b36ecad8ddcaa7482c32.png

OpenPose网络首先使用前几层(上图中的VGG-19)从图像中提取特征。然后将这些特征输入卷积层的两个平行分支。第一分支预测一组置信图(18),每个置信图表示人体骨架图的特定部分。第二个分支预测另一组部件亲和力字段(PAF,38),PAF表示组件之间的关联程度。

8facd5e9554efca3468ca461f741411a.png

其余的OpenPose步骤用于优化每个分支的预测。使用组件置信度图,在组件对之间形成二分图(如上所示)。然后使用PAF值修剪二分图中的较弱链接。通过上述步骤,我们可以估计人体骨架图并将其分配给图像中的每个人。

2. DeepCut

DeepCut是一种自下而上的方法,可用于多人姿势估计。作者通过定义以下问题来完成此任务:

生成一组身体部位候选集D.此集合表示图像中所有人的身体部位的所有可能位置。从身体部位候选组中选择身体部位的子集。

用身体部位C类中的类别标记每个所选身体部位。身体部位类指示部位的类型,例如“手臂”,“腿”,“躯干”等。

指定属于同一个人的身体部位。

57c1ca544c3fb14ed9407b58e842da49.png

上述问题可以通过建模为整数线性规划(ILP)来解决。使用二进制随机变量的三元组(x,y,z)进行建模,二进制随机变量的域如下所示:

825140160e1ab9d252b9310054b397c2.png

考虑来自身体部位候选组D的两个身体部位候选d和d',以及来自类别集C的类别c和c',其中通过更快的RCNN或密集CNN获得身体部位候选。现在我们可以开发以下一组语句。

如果x(d,c)= 1,则意味着身体部位候选d属于类别c。

如果y(d,d')= 1,则意味着身体部位候选者d和d'属于同一个人。

它们还定义z(d,d“,c,c”)= x(d,c)* x(d“,c”)* y(d,d“)。如果上述值是1,则意味着身体部位候选d属于类别c,身体部位候选d'属于类别c',并且最后的身体部位候选d,d'属于同一个人。

最后一个陈述可用于划分属于不同人的姿势。上述陈述显然可以使用线性方程表示为(x,y,z)的函数。通过这种方式,我们可以构建整数线性规划(ILP)模型并估计多人的姿势。有关完整的方程式和详细分析,请参阅文章“DeepCut:多人姿态估计的联合子集分区和标签”。

3. RMPE(AlphaPose)

RMPE是一种流行的自上而下的态度估计方法。作者认为,自上而下的方法通常依赖于人体探测器的性能,因为姿势估计是在某人所在的区域进行的。因此,定位误差和重复边界框预测可能导致姿态提取算法仅获得次优解。

a2ca42ae9735e733c39a285956563507.png

为了解决这个问题,作者提出使用对称空间变换器网络(SSTN)从不准确的边界框中提取高质量的单人区域。在该区域中,使用单人姿势估计器(SPPE)来估计人体姿势骨架图。然后我们使用空间变换器网络(SDTN)将估计的人体姿势重新映射回原始图像坐标系。最后,参数姿态NMS技术用于解决冗余问题。

此外,作者还介绍了Pose Guided Proposals Generator,以增强训练样本,以更好地帮助训练SPPE和SSTN网络。RMPE的一个显着特征是该技术可以扩展到人类检测算法和SPPE的任何组合。

4.Mask RCNN

Mask RCNN是一种用于执行语义和实例分割的流行架构。该模型可以并行地预测图像中各种对象的边界框的位置以及用于对象的语义分割的掩模。该基本架构可以容易地扩展到用于人体姿势估计的方法。

0d13cb2da0ce9ec4ec3176f1b892a248.png

基本架构首先使用CNN从图像中提取特征图。区域提议网络(RPN)使用这些要素图来获取对象的候选边界框。通过从CNN提取的特征图中选择区域来获得这些候选边界框。由于候选边界框可以具有各种大小,因此我们使用名为RoIAlign的层来减小提取的要素的大小,使它们具有相同的大小。现在,提取的特征被传递到CNN的并行分支,以最终预测边界框和分割掩模。

现在让我们看看执行拆分的分支。首先假设图像中的对象属于类别集K.分割分支可以输出大小为m×m的K个二进制掩码,其中每个二进制掩码仅表示属于该类的所有对象。我们可以将每种类型的关键点建模为不同的类,并将其视为分割问题,以提取属于图像中每个人的关键点。

同时,我们还可以训练目标检测算法来识别人的位置。通过将人们的位置信息与他们的关键点相结合,我们可以得到图像中每个人的人体骨架图。

该方法类似于自上而下的方法,但人类检测阶段与组件检测阶段并行执行。换句话说,临界点检测阶段和人体检测阶段彼此独立。

其他方法

多人体姿评估有很多解决方案。为简洁起见,本文仅介绍几种方法。有关方法的更详细列表,您可以查看以下信息:

可以应用于:

态度估计在许多领域都有应用,其中一些在下面列出。

1.活动识别

跟踪身体姿势随时间的变化也可用于活动,手势和步态识别。这些用例是:

  • 用于检测人是否摔倒或生病的应用程序。
  • 可以自主地教授正确的运动机制,运动技术和舞蹈活动的应用。
  • 可以理解全身手语的应用(例如:机场跑道信号,交警信号等)。
  • 可以增强监控的安全性和应用程序。
42da1265d31dff21a44e6abaf7869d5c.png

跟踪一个人的步态对于安全和监视区域非常有用

2.动作捕捉和增强现实

CGI应用程序是一种有趣的应用程序类型,它也利用了人体姿势估计。如果您可以估计一个人的姿势,您可以在人物上叠加图形,样式,设备和艺术品。通过跟踪这种人体姿势的变化,渲染的图形可以在人移动时“自然地适应”。

160691a02d7b3a27cfd10b733646e1c6.png

Animoji就是一个很好的例子。虽然上述研究仅追踪了脸部的结构,但这种想法可以扩展到人类的关键跟踪。相同的概念也可用于渲染模仿人体运动的增强现实(AR)元素。

3.训练机器人

我们可以跟踪执行动作的人体骨骼的轨迹,而不是手动编程机器人来跟踪轨迹。人类教练可以通过示范行动有效地教导机器人这些行动。然后,机器人可以计算如何移动关节以执行相同的动作。

4.控制台动作跟踪

姿势估计的另一个有趣的应用是跟踪交互式游戏中人体的运动。通常,Kinect使用3D姿势估计(使用红外传感器数据)来跟踪人类运动员的运动并使用它来渲染化身的动作。

4a3c89b6fc8762a4f09c4403eb639c34.png

总结

我们在人体姿态估计领域取得了很大进展,这使我们能够更好地服务于可能使用该技术的大量应用。此外,对姿势跟踪等相关领域的研究可以大大提高其在许多领域的生产利用率。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值