标签:http src 探测器 目标检测 自底向上 2018年 元组 github 并行
人体姿态骨架以图形格式表示人的方向。本质上,它是一组可以用来描述个人姿态的坐标骨架。其中的每一个坐标都可以称为一个部分(或一个关节,或一个关键点)。两个部分之间的有效连接称为一对(或一个肢体)。注意,并不是所有的部件组合都会产生有效的一对。人体姿态骨架样本如下图所示。
左图:COCO 关键点格式的人体姿态骨架。右图:绘制的人体姿态骨架。(来源Source)
了解一个人的方向为现实生活中的应用开拓了道路,其中一些将在本文的末尾讨论。多年来,人们引进了几种对人体姿态估计的方法。最早的(也是最慢的)方法一般是在只有一个人的图像中估计一个人的姿态。这些方法通常首先识别出个体部分,然后在它们之间形成连接来创建姿态。
自然,这些方法在图像包含多人的真实场景中不太有用。
由于不清楚图像中的位置和人数,因此多人姿态估计比单人的情况更困难。通常可以使用以下两种方法之一来解决上述问题:
· 一个简单的方法是首先加入一个人体探测器,然后估计各个部分,接着计算每个人的姿态。这种方法称为自顶向下方法。
· 另一种方法是检测图像中的所有部分(即每个人的部分),然后将属于不同的人的部分关联/分组。这种方法称为自底向上方法。
上方:典型的自顶向下方法。下方:典型的自底向上方法。(图片来源Image Source)
通常,自顶向下方法比自底向上方法更易实现,因为添加人体探测器要比添加关联/分组算法简单得多。很难判断哪一种方法整体性能更好,因为归根结底是衡量人体探测器和关联/分组算法哪个更好。
这篇文章将聚焦如何用深度学习技术来完成多人姿态估计。下文将介绍几种流行的自顶向下和自底向上方法。
OpenPose是最流行的自底向上的多人姿态估计方法之一,一部分是因为它有很好的注解使用。
GitHub执行:https://github.com/CMU-Perceptual-Computing-Lab/openpose)。
与许多自底向上的方法一样,OpenPose首先检测图像中属于每个人的部件(关键点),然后将部件分配给不同的个体。下面显示的是OpenPose模型的体系结构。
OpenPose体系结构流程图。(来源Source)
OpenPose网络首先使用前几层(上图中的VGG-19),从一个图像中提取特征。然后将这些特征输入到卷积层的两个并行分支中。第一个分支预测了一组18个置信图,每个置信图表示人体姿态骨架的一个特定部分。第二个分支预测了一组38个部件亲和域(PAFs),表示部件之间的关联程度。
使用OpenPose进行人体姿态估计的步骤。(来源Source)
后续阶段用于细化每个分支做出的预测。利用部分置信图,在部分组对之间形成二部图(如上图所示)。利用PAF值,对二部图中较弱的链接进行削减。通过以上步骤,可以估计出人体姿态骨架,并将其分配给图像中的每一个人。
DeepCut 是一种自底向上的多人姿态估计方法。作者通过定义以下问题来完成这项任务:
(1)生成一组 D身体部位候选项。这代表了图片中每个人身体部位的所有可能位置。从上面的身体部位候选中选择一组。
(2)用 C 身体部位类中的一个标记每个选定的身体部位。身体部位分类代表部位的类型,如“手臂”、“腿”、“躯干”等。
(3)分割属于同一个人的身体部分。
图形表示法。(来源Source)
通过建模为整数线性规划(ILP)问题,共同解决了上述问题。它是通过考虑二元随机变量域的三元组(x, y, z)来建模的,如下图所示。
二元随机变量域。(来源Source)
考虑两个主体部分候选d和d‘来自主体部分候选d和c类以及c‘来自主体部分候选的c类。通过 Faster RCNN或密集CNN获得身体部位候选。现在可以发展以下语句集。
· 如果x(d,c) = 1,则表示身体部位候选 d属于c类。
· 同样,y(d,d‘) = 1表示身体部位候选d和d‘属于同一个人。
· 再者定义z (d、d、c, c) = x (d c) (d c) y (d, d ‘)。如果上述值为1,则表示身体部位候选d属于 c类, 身体部位候选 d‘属于c‘类,最后身体部位候选 d,d ‘属于同一个人。
最后一个语句可以用来划分属于不同人的姿态。显然,上述表述可以用线性方程表示为(x,y,z)的函数。通过这种方法,建立了整数线性规划(ILP),可以估计出多人的姿态。
RMPE是一种流行的自顶向下的姿态估计方法。假设自顶向下的方法通常依赖于人体检测器的准确性,因为位置估计是对人所在的区域进行的。因此,定位误差和重复的边界框预测可能导致姿态提取算法执行次优。
重复预测的影响(左)和低置信边界框(右) (来源Source)
为了解决这一问题,作者们提出利用对称空间变换网络(SSTN)从不准确的边界框中提取高质量的单人区域。在提取的区域中,使用单人姿态估计(SPPE)来估计该人的人体姿态骨架。利用空间非变换网络(SDTN)将估计的人体姿态重映射回原始图像坐标系。最后,采用参数姿态的非极大值抑制(NMS)技术来处理多余的姿态推导问题。
此外,作者还介绍了一个姿态引导的样本生成器来扩充训练样本,以更好地帮助训练SPPE和SSTN网络。RMPE的显著特点是,该技术可以扩展到人的检测算法和SPPE的任何组合。
Mask RCNN是一种流行的用于执行语义和实例分割的体系结构。该模型并行地预测了图像中不同对象的边界框位置和语义上分割对象的掩码。基本结构可以很容易地扩展为人体姿态估计。
描述Mask RCNN架构的流程图。(来源Source)
基本架构首先使用CNN从图像中提取特征映射。区域候选网络(RPN)使用这些特征映射来获取对象存在的候选框。候选框从CNN提取的特征映射中选择一个区域。由于候选框的大小各不相同,因此使用一个称为RoIAlign的层来减小提取的特征的大小,使它们的大小一致。现在,将提取的特征传递到CNNs的并行分支中,最终预测边界框和分割掩码。
下面来关注执行分割的分支。假设图像中的一个对象可以属于K类中的一个。分割分支输出大小为m x m的K个二进制掩码,其中每个二进制掩码表示仅属于该类的所有对象。可以通过将每种类型的关键点建模为一个不同的类,并将其作为一个分割问题来处理,从而提取出属于图像中每个人的关键点。
同时,可以训练目标检测算法来识别人的位置。通过结合人的位置信息和他们的一组关键点,可以得到图像中每个人的人体姿态骨架。
这种方法近似于自顶向下的方法,但是人员检测阶段是与部件检测阶段并行执行的。也就是说,关键点检测阶段和人的检测阶段是相互独立的。
多人姿态估计是一个具有多种方法解决这一问题的广阔领域。为了简单起见,这里只解释了几种选择的方法。如欲查阅更详尽的方法,请浏览以下链接:
· Awesome Human Pose Estimation
https://github.com/cbsudux/awesome-human-pose-estimation
· Papers with Code
https://paperswithcode.com/sota/multi-person-pose-estimation-on-mpii-multi
姿态估计在许多领域都有应用,其中一些如下所示。
跟踪一个人在一段时间内的姿态变化也可以用于行为、手势和步态识别。同样的,也提供了几个用例,包括:
· 检测一个人是否跌倒或生病的应用。
· 可以自主教授正确的健身方法、运动技巧和舞蹈活动的应用。
· 能够理解全身手势语的应用。(例如:机场跑道信号、交通警察信号等)
· 可以增强安全性和监视的应用。
跟踪人的步态对于安全和监视目的很有用。(图片来源Image source)
人体姿态估计的一个有趣的应用是电脑三维动画应用。如果其人体姿态可以估计,图形、图案、风格、精致强化、装备和艺术品就可以叠加在人身上。通过跟踪人体姿态的变化,渲染的图形可以“自然地适应”人体的移动。
电脑三维动画渲染的例子。(来源Source)
尽管上面的研究只追踪了人脸的结构,但这可以推断出一个人的关键点。同样的概念也可以用来渲染模仿个人动作的增强现实技术(AR)元素。
机器人不需要手动编程来跟踪轨迹,而是可以沿着正在执行动作的人体姿态骨架的轨迹运行。导师可以通过展示同样的动作高效完成对机器人特定动作的教学。机器人再计算如何移动关节来执行相同的动作。
姿态估计的一个有趣的应用就是在交互式游戏中跟踪人体运动。体感普遍使用3D姿态估计(使用红外传感器数据)来跟踪人类玩家的运动,并用其呈现虚拟角色的动作。
体感器的运行。(来源Source)
人体姿态估计领域取得的进展,能够更好地服务相关应用。此外,姿态跟踪等相关领域的研究可以大大提高其在多个领域的生产利用。本文中列出的概念并不详尽,但这些算法的流行版本及其现实生活应用应该能够引发你的一些思考。
编译组:杨雨心、温媛
相关链接:
https://medium.com/beyondminds/an-overview-of-human-pose-estimation-with-deep-learning-d49eb656739b
如需转载,请后台留言,遵守转载规范
ACL2018论文集50篇解读
EMNLP2017论文集28篇论文解读
2018年AI三大顶会中国学术成果全链接
ACL2017 论文集:34篇解读干货全在这里
10篇AAAI2017经典论文回顾
标签:http src 探测器 目标检测 自底向上 2018年 元组 github 并行
原文地址:https://blog.51cto.com/15057819/2567448