OpenPose


摘要

    我们提出了一个的方法,它能在有多个人的图像中高效地进行 2D【二维】姿势检测。该方法运用了 非参数表示【non-parametric representation】,我们称之为 部分亲和域【PAFs】,我们用它来学习怎么将身体部分和个体联系起来。该结构编译了全局,这允许了贪婪的自底向上分解的步骤,使得不管图片中有多少人,它都可以在实现实时性的同时保持高识别准确度。我们设计的这个结构,通过相同的顺序预测过程的两个分支,来同时学习 部分位置【part location】和它们的 关联【即部分位置的关联】。我们的方法首先用在了 最早的【inaugural】COCO 2016关键点挑战上【COCO 2016 keypoint challenge,应该是某种比赛】,而且在 检测表现(可以理解为“准确度”)和效率上,明显地超越了 MPII Multi-Person benchmark(他们是当时做的最好的)的运行效果。

1.Introduction

       人体 2D【二维】姿势判断——一个关于定位人体关键点或者称“部分”【parts】问题——已经主要集中在寻找个体的人体部分【parts,我理解为人体的关键点】。要检测出图像中多个人的姿势,将面临一系列前所未有的挑战,尤其是一些社会性的个体(可能指图像中有交流,互相遮挡的个体)首先,每一个的图像可能包含未知数量的人,他们可能出现在图像的任何位置,大小也不一定(应该指离镜头近就大,离镜头远就小)其次,例如相互接触【contact】、闭塞【occlusion,这个不懂怎么翻译】、肢体关节【limb articulations,这个不懂怎么翻译】等由人们之间的互动引起的空间交互(反正这一句大概指不同个体之间的交流和遮挡造成的问题),都使得对部分【parts,我理解为关键点】的关联更加困难。还有,随着图像中人的数量增加,程序的运行时间复杂度也会上升,这使得实时监测的表现成为一个挑战(应该是指在运行时间复杂度上升的前提下,保证满足实时性的基础上,保证准确度将变得很有困难,很有挑战)

       一种常见的方法是用一个 人检测子【person detector】并在每一次检测后都呈现单人姿势判断【single-person pose estimate】。这些 自上而下【top-down】的方法直接借助了现有的用于单人姿势判断的技术(我的理解是,这些方法直接在一个多人图像中,用了单人检测的方法不断进行探测,从而检测出多个人),而且受制于单人检测技术的前提声明【early commitment】:如果 人检测子【persondetector】失败了【当图片中人之间的距离太过接近时很容易出现失败】,那么将没有东西可以对其进行恢复。(这后半句理解了很久,可能还是翻译的不好,但大概意思就是:运用了单人检测子的多人检测任务中,假如检测子检测失败了,就无法恢复了。如果有人有更好的理解,请一定联系本人进行修改,感谢!)此外,这些自上而下方法的运行时间和图像中人的数量呈正比的:每一次检测,一个单人的姿势检测子将会运行,而且图像中人越多,计算成本越大。相反,自底向上【bottom-up】方法是很受人欢迎的,因为它拥有对于前期声明【earlycommitment,前面运用单人检测方法那里提过】的鲁棒性(即健壮性)和具有缓解因图像中人数上升引起的运行时间复杂度上升的潜力。然而,自底向上方法没有直接运用来自其他人体部分【body parts,基本可以确定是指人体关键点】和其他人的全局条件【globalcontextual cues】。实际运用中,以往的自底向上方法没能维持住在效率上的提升,因为最终的划分需要巨大的全局推算成本(大概意思是指将检测出来的关键点,划分到不同个体时需要消耗巨大的运算成本)。举个例子,像 Pishchulin 等人做的开创性的研究工作。他们提出了一个自底向上方法,可以标记出候选的部分检测【part detection candidates,大概指检测出来的待分类的关键点】,并且将它们和每个个体关联起来。可是,在全连接图上求解整数线性编程问题,是属于 NP-hard 问题【non-deterministic polynomial,非确定性多项式,NP-hard 问题通俗来说是其解的正确性能够被“很容易检查”的问题,这里“很容易检查”指的是存在一个多项式检查算法(摘自百度)】,而且解决这类问题的平均处理时间大概要几个小时。Insafutdinov 等人以基于 ResNet 的更强大的部分检测子【part detector】和基于图像的一对分数【pairwisescores】来进行实验,然后在运行时间上取得了巨大的提升,但是这种方法仍然需要花费几分钟来处理一幅图像,因为其受限于部分提议【part proposals】的数目。运用在引用的第【11】篇论文的一对表示【pairwise representation】,很难准确的回归,因此需要用到独立的逻辑回归。

      在这篇论文中,我们提出了一个针对多人姿态检测【multipersonpose estimation】的有效的方法,而且它的准确性达到了多人检测的公共标准【mutiplepublic benchmarks】的领先水平【state-of-the-art】。我们提出了第一个相关分数的【association scores】自底向上的表示【representation】,它是通过部分亲和域【Part Affinity Fields,PAFs】来实现的。而部分亲和域【Part Affinity Fields,PAFs】是一个在图像域【image domain】中编码了四肢的位置和方向的2D【二维】向量域【2D vector field】。我们证明了,同时推测这些探测和关联的自底向上的表示【bottom-up representations of detection】,将全局编译的非常好且有效(前面这一整句是在顺不过来,有看懂的请一定联系本人进行修改,感谢!),足以让贪心划分【greedy parse】达到一个高质量的运行结果,而且是在耗费十分小的计算成本情况下。为了项目的可重现性(估计就是让每个需要的人都能利用到这项技术),我们已经开源了项目的代码,并正式发表这史上第一个实时多人2维姿势探测系统【realtime system for multi-person2D pose detection】

2.Method

      图 2【Figure 2】展示了我们的方法的整个流程。本系统将一副尺寸为 w×h的彩色图片【Fig. 2a】作为作为输入,输出一张2维的带有每个人人体关键点位置的图像。首先,一个前馈网络【feedforwardnetwork,前馈神经网络是一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层,各层间没有反馈。(摘自百度,具体请度娘:前馈神经网络)】同时预测出一组关于身体部分位置【body part locations】的二维自信映射【2Dconfidence map】S【Fig.2b】,和一组关于部分亲和【part affinities】的二维向量域【2D vector fields】L,其中二维向量域的集合 L 编码了部分【parts,应该指关键点】的关联的程度【Fig. 2c】。集合 S = (S1,S2,...,SJ) J 个自信映射【confidence maps】,每个部分【parts】一个映射,其中(这个条件应该是指 S1 到 SJ都是图像R中某一点)。集合 L = (L1,L2,...,LC) C 个向量域,四肢中每一个(即每一只手,或者每一只脚)对应一个向量域,其中(这个条件应该是指 L1 到 LC 在图像集合 R中,而因为向量有起点和终点,所以有w×h×2,即起点在一个 w×h 中,终点在一个 w×h,综合起来就是w×h×2,这只是我个人的理解,有更好的理解的请联系博主修改,感谢!),而 Lc 中的每一个图像位置(应该是指LC中的每一个像素点,前面提过,LC指一个手臂或脚对应的向量域)编码了一个2维向量【如图 Figure 1】。最终,自信映射【confidence maps】和亲和域通过贪心推断【greedyinference】这种方式来进行划分【parse】,来为图像中每个人输出二维关键点。【Fig. 2d】

 

2.1.Simultaneous Detection andAssociation

       我们设计的结构,(如图3【Fig】),同时预测 探测自信映射【detection confidence maps】和编码了 部分到部分【part-to-part】联系的亲和域。该网络有两个分支:上方的分支,(图中米黄色框内的部分),预测自信映射【confidence maps】;而下方的分支,(图中蓝色框内的部分),预测 亲和域【affinity field】。两个分支都是采取反复预测的结构,(如同引用的第31篇论文的S.-E. Wei等人所采用的方式),这种结构是通过连续重复的阶段【stage】来优化预测结果的,其中每个阶段都有中间监管【intermediatesupervision,应该是为了确保结果不会向着错误的方向发展】。

      图像首先通过一个卷积网络来进行分析(通过引用的第26篇论文中的VGG-19的前10层来进行初始化和微调),来生成一组特征映射 F,用于输入到两个分支的第一阶段【first stage】。在第一阶段,该网络产生一组检测 自信映射【detection confidence maps】和一组部分亲和域,其中是在第一阶段中的 推断【inference】的。在每一个 后续的阶段中【subsequentstage】,两个分支在前一阶段的 预测【prediction】和原始的 图像特征 F【image feature】,将被联系起来,并且用于产生更准确的预测,其中,和是在第 t 阶段中的 推断【inference】的。

       图 4【Figure 4】展示了 自信映射【confidence maps】和亲和域在各个 阶段【across stages】的优化效果【refinement】。为了引导网络去 反复地【iteratively】预测第一个分支中身体部分【body parts】的自信映射和第二个分支中的PAFs(Part Affinity Fields),我们在每个阶段的结尾处均应用了两个 损失函数【loss fuctions】,其中每个分支一个损失函数。我们用的是 估计预测【estimatedprediction】与正确【groundtruth,参考网页:https://www.zhihu.com/question/22464082】的映射和域之间的L2损失【l2 loss,或者说误差】。我们对损失函数【loss fuction】进行 空间【spatially】加权来解决一个实际问题,即某些数据集并没有完全标记所有人。特别地,两个分支在 t 阶段的损失函数【loss fuction】是:

其中是正确【groundtruth,参考网页:https://www.zhihu.com/question/22464082】的部分自信映射,是正确的部分亲和向量域,是一个二进制掩码,当注释【annotation】在图像位置 P 中丢失【missing】时,。该掩码用于在训练过程中避免 惩罚【penalizing】正确【true】正面【positive】的预测。(意思是指避免对正确的预测进行抑制)每个阶段的中间监管【intermediate supervision】通过 定期地补充梯度【replenishingthe gradient periodically,如引用的第31篇论文】来 处理【adress】梯度 消失【vanishing】问题。总体目标【overall objective】是:

2.2.Confidence Maps for Part Detection

       为了在训练过程中估计方程式(5)中 fs,我们从注释了的2维关键点中生成 正确【groundtruth】自信映射 S*。每一个自信映射都是一个信念【belief】的2维表示,该信念即每个 像素位置【pixel location】都是独一无二的身体部分【body part】。理想情况下,如果图像中有一个人,那么在对应的 部分【part】可见的情况下,在每个置信图【confidence map】中都应该存在一个单锋【single peak】;如果图中有多个人,那么对于每个人 k 的每个可见部分 j 都应该有一个 峰【peak】。

       我们首先为每个人 k 生成个体置信图【individualconfidence maps】。设是图中第 k 个人第 j 个身体部分的 准确【goundtruth】位置。那么在中处在位置的值定义为,

其中 δ 控制峰【peak】的延展范围。由网络预测的 正确【groundtruth】置信图是个体置信图【individual confidence maps】经过max算子【max operator】操作后得到的 聚集体【aggregation】,

       我们采用置信图的最大值而不是平均值,这样就可以使得 邻近的峰【close by peaks】的准确度保持不同【distinct】,如同右图所示。在测试时,我们预测置信图(如图 4 第一行所示),并通过执行非最大值抑制【non-maximum suppression,详情请百度“非最大值抑制”】来获得 人体部分的候选【body part candidates】。

 

2.3.Part Affinity Fields for PartAssociation

       给出一组检测出来的 人体部分【body parts】(如图 5a 中的红点和蓝点),在人的数量未知的情况下,我们要怎么组合他们【指检测出来的人体部分】来形成一个全身姿势【full-body poses】呢?我们需要为每一对 人体部分探测【body part detections】的相关性【association】进行置信测量【confidence measure】,即 他们【指检测出来的人体部分】是否属于同一个人。一种可行的检测其相关性的方法是,在每一对处在同一肢体上的部分【parts on a limb】之间 检测【detect】出一个额外的中间点【midpoint】,然后检查它们在 候选部分探测【candidatepart detections】之间的 关联【incident,这个意思不知道怎么翻译】,如图 5b。



  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值