论文原文地址:https://arxiv.org/abs/1611.08050(在网页右上角附近,有“PDF”字样,点击即可下载)
本论文有提供代码,最新网址:https://github.com/CMU-Perceptual-Computing-Lab/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】:如果 人检测子【person detector】失败了【当图片中人之间的距离太过接近时很容易出现失败】,那么将没有东西可以对其进行恢复。(这后半句理解了很久,可能还是翻译的不好,但大概意思就是:运用了单人检测子的多人检测任务中,假如检测子检测失败了,就无法恢复了。如果有人有更好的理解,请一定联系本人进行修改,感谢!)此外,这些自上而下方法的运行时间和图像中人的数量呈正比的:每一次检测,一个单人的姿势检测子将会运行,而且图像中人越多,计算成本越大。相反,自底向上【bottom-up】方法是很受人欢迎的,因为它拥有对于前期声明【early commitment,前面运用单人检测方法那里提过】的鲁棒性(即健壮性)和具有缓解因图像中人数上升引起的运行时间复杂度上升的潜力。然而,自底向上方法没有直接运用来自其他人体部分【body parts,基本可以确定是指人体关键点】和其他人的全局条件【global contextual cues】。实际运用中,以往的自底向上方法没能维持住在效率上的提升,因为最终的划分需要巨大的全局推算成本(大概意思是指将检测出来的关键点,划分到不同个体时需要消耗巨大的运算成本)。举个例子,像 Pishchulin 等人做的开创性的研究工作。他们提出了一个自底向上方法,可以标记出候选的部分检测【part detection candidates,大概指检测出来的待分类的关键点】,并且将它们和每个个体关联起来。可是,在全连接图上求解整数线性编程问题,是属于 NP-Hard 问题【non-deterministic polynomial,非确定性多项式,NP-hard 问题通俗来说是其解的正确性能够被“很容易检查”的问题,这里“很容易检查”指的是存在一个多项式检查算法(摘自百度)】,而且解决这类问题的平均处理时间大概要几个小时。Insafutdinov 等人以基于 ResNet 的更强大的部分检测子【part detector】和基于图像的一对分数【pairwise scores】来进行实验,然后在运行时间上取得了巨大的提升,但是这种方法仍然需要花费几分钟来处理一幅图像,因为其受限于部分提议【part proposals】的数目。运用在引用的第【11】篇论文的一对表示【pairwise representation】,很难准确的回归,因此需要用到独立的逻辑回归。
在这篇论文中,我们提出了一个针对多人姿态检测【multiperson pose estimation】的有效的方法,而且它的准确性达到了多人检测的公共标准【mutiple public 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-person 2D pose detection】。
2. Method
图 2【Figure 2】展示了我们的方法的整个流程。本系统将一副尺寸为 w×h的彩色图片【Fig. 2a】作为作为输入,输出一张2维的带有每个人人体关键点位置的图像。首先,一个前馈网络【feedforward network,前馈神经网络是一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层,各层间没有反馈。(摘自百度,具体请度娘:前馈神经网络)】同时预测出一组关于身体部分位置【body part locations】的二维自信映射【2D confidence 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】和亲和域通过贪心推断【greedy inference】这种方式来进行划分【parse】,来为图像中每个人输出二维关键点。【Fig. 2d】
2.1. Simultaneous Detection and Association
我们设计的结构,(如图3【Fig】),同时预测 探测自信映射【detection confidence maps】和编码了 部分到部分【part-to-part】联系的亲和域。该网络有两个分支:上方的分支,(图中米黄色框内的部分),预测 自信映射【confidence maps】;而下方的分支,(图中蓝色框内的部分),预测 亲和域【affinity field】。两个分支都是采取反复预测的结构,(如同引用的第31篇论文的S.-E. Wei等人所采用的方式),这种结构是通过连续重复的阶段【stage】来优化预测结果的,其中每个阶段都有中间监管【intermediate supervision,应该是为了确保结果不会向着错误的方向发展】。
图像首先通过一个卷积网络来进行分析(通过引用的第26篇论文中的VGG-19的前10层来进行初始化和微调),来生成一组特征映射 F,用于输入到两个分支的 第一阶段【first stage】。在第一阶段,该网络产生一组检测 自信映射【detection confidence maps】和一组部分亲和域,其中和是在第一阶段中的 推断【inference】的。在每一个 后续的阶段中【subsequent stage】,两个分支在前一阶段的 预测【prediction】和原始的 图像特征 F【image feature】,将被联系起来,并且用于产生更准确的预测,
其中,和是在第 t 阶段中的 推断【inference】的。
图 4【Figure 4】展示了 自信映射【confidence maps】和亲和域在各个 阶段【across stages】的 优化效果【refinement】。为了引导网络去 反复地【iteratively】预测第一个分支中 身体部分【body parts】的自信映射和第二个分支中的PAFs(Part Affinity Fields),我们在每个阶段的结尾处均应用了两个 损失函数【loss fuctions】,其中每个分支一个损失函数。我们用的是 估计预测【estimated prediction】与正确【groundtruth,参考网页:https://www.zhihu.com/question/22464082】的映射和域之间的L2损失【l2 loss,或者说误差】。我们对损失函数【loss fuction】进行 空间【spatially】加权来解决一个实际问题,即某些数据集并没有完全标记所有人。特别地,两个分支在 t 阶段的损失函数【loss fuction】是:
其中是正确【groundtruth,参考网页:https://www.zhihu.com/question/22464082】的部分自信映射,是正确的部分亲和向量域,W 是一个二进制掩码,当注释【annotation】在图像位置 P 中丢失【missing】时,。该掩码用于在训练过程中避免 惩罚【penalizing】正确【true】正面【positive】的预测。(意思是指避免对正确的预测进行抑制)每个阶段的中间监管【intermediate supervision】通过 定期地补充梯度【replenishing the 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 生成个体置信图【individual confidence 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 Part Association
给出一组检测出来的 人体部分【body parts】(如图 5a 中的红点和蓝点),在人的数量未知的情况下,我们要怎么组合他们【指检测出来的人体部分】来形成一个 全身姿势【full-body poses】呢?我们需要为每一对 人体部分探测【body part detections】的相关性【association】进行置信测量【confidence measure】,即 他们【指检测出来的人体部分】是否属于同一个人。一种可行的检测其相关性的方法是,在每一对处在 同一肢体上的部分【parts on a limb】之间 检测【detect】出一个额外的 中间点【midpoint】,然后检查它们在 候选部分探测【candidate part detections】之间的 关联【incident,这个意思不知道怎么翻译】,如图 5b。可是,当人们聚集到一起时,(人很容易会聚集到一起),这些中点很可能会支持了 错误的关联【false association】。(如图 5b 中的绿线所示)。这种 错误关联【false association】的出现时由于表示的两个限制【two limitationsin the representation】:(1)它只为每个 肢体【limb】编码了位置,却没有编码方向;(2)它减少了 肢体【limb】对于一个单点的支持区域。
为了解决这些限制,我们提出了一个 新的特征表示【novel feature representation】,即部分亲和域【part affinity fields】,它保存了 肢体的支持区域【the region of support of the limb】中的位置和方向信息(如图 5c 所示)。部分亲和是每一个肢体的二维向量域,如图 1d 所示:对于属于 每个肢体(指手臂,或腿,或躯干)的区域中的每个像素,二维向量编码了从肢体上的一个 部分【part】指向另一个 部分【part】的方向。每一种肢体(指手臂,或腿,或躯干)都有对应的亲和域来联系起它们的 身体部分【body parts】。
现在考虑如下图中只有一个手臂的情况。设和是图中第 k 个人的肢体 c 的 身体部分【body parts】j1 和 j2 的 正确【groundtruth】位置。如果一个点 p 在手臂上, 处的值是一个从 j1 指向 j2 单位向量;对于所有其他点,其向量是零向量。
为了在训练的过程中计算方程式 5 中的,我们在图像的点p处定义了 正确部分亲和向量域【groundtruth part affinity vector field】,
这里,是一个在 肢体【limb】方向上的单位向量。肢体上的点集【The set of points on the limb】的定义是在 线段【line segment】的 距离阈值范围【distance threshold】内的点,即满足以下条件的点 p,
其中肢体宽度 δl 是以像素为单位的距离,肢体长度是,而是垂直于V的的向量。
正确【groundtruth】部分亲和域 拉平【average】了图像中所有人的亲和域,
其中是所有 k 个人在点 p 处的非零向量的数目(即不同人的肢体重叠处的像素平均值)。
在测试中,我们通过在对应的 PAF【part affinity field,部分亲和域】上,沿着 连接候选部分位置【connecting the candidate part locations】的线段计算 线积分【line integral】,来测算【measure】 候选部分探测的相关性【association between candidate part detections】。换句话说,我们通过 候选肢体【candidate limb】,来测量 预测的PAF【predicted PAF,part affinity field,部分亲和域】的准线,即那些可能能通过连接 预测的身体部分【detected body parts】来获得的线。(这句翻译不知道准不准确)特别的,对两个 候选部分位置【candidate part locations】和,我们沿着线段对 预测部分亲和域【predicted part affinity field】Lc进行取样,来测量它们联系的置信度【confidence in their association】:
其中 p(u) 插入【interpolate,值的是】了两个 身体部分【body parts】和的位置,
实际中,我们通过取样和求和 u 的 等间距值【uniformly-spaced values】来 估算积分【approximate the integral】。
2.4. MultiPerson Parsing using PAFs
我们在 探测置信图【detection confidence maps】上运用 非最大值抑制【non-maximum suppression,详情请百度“非最大值抑制”】来获得 部分候选位置【part candidate locations】的离散集【discrete set】。对于每个 部分【part】,我们可能有几个候选的,这是由于有多个人在图像中或者出现了错误的探测结果。(如图 6b 所示)。这些 部分候选【part candidates】形成了一个巨大的 有可能肢体【possible limb】的集合。我们用在 PAF【part affinity field,部分亲和域】上的线积分计算结果来给每个候选肢体【candidate limb】打分【score】,如方程式(10)所示。找出 最优划分【optimal parse】这种问题是一个 k 维匹配问题【K-dimensional matching problem】,即一个NP-Hard问题【non-deterministic polynomial,非确定性多项式,NP-hard 问题通俗来说是其解的正确性能够被“很容易检查”的问题,这里“很容易检查”指的是存在一个多项式检查算法(摘自百度)】。在本篇论文中,我们提出了一个 贪婪松弛【greedy relaxation】,它会持续地产生高质量的(即准确的)匹配。我们猜测它的原因是:由于 PAF【part affinity field,部分亲和域】网络巨大的 接收区【receptive field】,成对的相关分数【pair-wise association scores】隐式地【mplicitly】编码了 全局【global context】。
正式地,我们首先为 众人【multiple people】获取 身体部分探测候选【body part detection candidates】的集合,其中,而 Nj 是 部分 j 的候选的数目【number of candidates of part j】,是 身体部分 j 【body part j】的 第 m 个探测候选的位置【location of the m-th detection candidate】。这些 部分探测候选【part detection candidates】仍需要与 同一个人的其他部分【other parts from the same person】进行关联——换句话说,我们需要找到那些真正属于 连接肢体【connected limb】的 部分探测对【pairs of part detections】。我们定义了一个变量来表示两个 探测候选【detection candidates】和是否相连的,目标是为了找到 所有可能相连的集合【set of all possible connections】的 最优分配【optimal assignment】,其中:
如果我们考虑第 c 个 肢体【limb】的一对 部分【parts】j1 和 j2,那么寻找 最优相关【optimal association】将简化为一个 最大权重二部图匹配问题【maximum weight bipartite graph matching problem,“二部图”详细可百度】。这个的例子如图 5b 所示。在这个 图匹配问题中【graph matching problem】,图的节点是 身体部分探测候选【body part detection candidates】和,它的边是 探测候选对【detection candidates】之间所有可能的连接。另外,每条边由方程式 10 来确定权重——即部分亲和的总和。二部图中的配对是以 没有两条边共享同一个节点【no two edges share a node】这种方式选择出来的边的子集。我们的目标是找到 一个被选择的边有最大权重的匹配【a matching with maximum weight for the chosen edges】,
其中 Ec 是 c 类型肢体的匹配的 总体权重【overall weight】,Zc 是 c 类型肢体的 Z 的子集,Emm 是部分和【如方程式 10 中所定义】之间的部分亲和。方程式 13 和 14 确保 没有两个边共享一个节点【no two edges share a node】,即没有 相同类型的肢体【two limbs of the same type】分享同一个部分。我们可以用 Hungarian 算法【引用的论文的第 14 篇】来获得最优匹配。
当需要寻找多人的全身姿势时,确定 Z 是一个 K维的匹配问题。这个问题是一个 NP Hard【non-deterministic polynomial,非确定性多项式,NP-hard 问题通俗来说是其解的正确性能够被“很容易检查”的问题,这里“很容易检查”指的是存在一个多项式检查算法(摘自百度)】而且有很多 释放【relaxation,有关于relaxation的解释:https://blog.csdn.net/lanchunhui/article/details/52422031】。在这项工作中(指前面的确定 Z 的值),我们在我们的范围【domain,域】里面给 优化【optimization】增加两个 释放【relaxation】。首先,我们选择一个 最小边数【minimal number of edges】来获得人体姿势的一颗生成树的基本骨架,而不是用完全树,如图 6c 所示。然后,我们 进一步【further】将配对问题分解成一组偶匹配问题,并 分别【independently】确定 相邻树节点【adjacent tree nodes】的匹配,如图 6d 所示。我们在 3.1 节中展示了详细的结果对比,其证明了 最小贪心推断【minimal greedy inference】在很小的【a fraction of】计算成本的情况下 很好的近似【well-approximate】出 全局结果【global solution】。原因是相邻树节点的关系被 PAFs【Part Affinity Fields】精确地模型化【modeled explicitly】了,但本质上【internally】,非相邻树节点之间的关系通过 CNN 隐式地模型化【implicitly modeled】了。这一性质的 出现【emerges】是因为 CNN 是通过一个巨大的 接收区【receptive field】进行训练的,而 PAFs 非相邻树节点的 PAFs【Part Affinity Fields】也影响着 预测的 PAF【predicted PAF】。
通过这两个释放【relaxation】,最优化被简单地分解为:
我们因此分别地获得了对每个肢体类型的 肢体连接候选【limb connection candidates】,通过用方程式 12 - 14。利用所有 肢体连接候选【limb connection candidates】,我们可以 组合【assemble】那些共享同一 部分探测候选【part detection candidates】的连接【connection】成多个人的全身姿势。我们对树结构的 优化方案【optimization scheme】数量级倍地快于【orders of magnitude faster】基于 全连接图【fully connected graph】的优化。
3. Results
我们用两个针对多人姿势估计的 基准【benchmarks】来评估我们的方法:(1)MPII human 多人数据集【MPII human multi-person dataset】和(2)COCO 2016 关键点挑战数据集【COCO 2016 keypoints challenge dataset】。这两个数据集收集了不同情景【diverse scenario】下的图像, 包含许多 现实世界【real-world】的挑战,例如拥挤的人群,尺度的变化,闭塞,和接触【crowding, scale variation, occlusion, and contact】。我们的方法在 开始的【inaugural】COCO 2016 关键点挑战中 创下了新的最好的效果【set the state-of-the-art】,而且明显地超过了之前在 MPII multi-person benchmark 中 最好的结果【state-of-the-art result】。我们也提供了 运行时间分析【runtime analysis】来来 量化【quantify】系统的效率。图 10 展示了我们的算法的一些 定性结果【qualitative results】。
3.1. Results on the MPII MultiPerson Dataset
为了对比 MPII 数据集【MPII dataset】,我们用工具包【toolkit】,基于 PCKh 阈值,来测量所有 身体部分【body parts】的 平均AP值【mAP,mean Average Precision,参考:https://blog.csdn.net/jningwei/article/details/78955536】。表 1 对比了在 有 288 个测试图片的同一子集上【如引用的第 22 篇论文中所使用的】我们的方法和其他方法的 mAP 表现,另外还有整个 MPI 测试集,还有在我们自己的验证集上的自我比较。除了这些 测量【measure】,我们比较了 短时间内【in seconds】每幅图的平均 推断/优化【inference/optimization】时间。对于那个 288 幅图的子集,比之前最先进的自底向上方法要好上【outperform,比......好】8.5%的mAP。惊人的是,我们的推断时间比起其他方法有 6 倍数量级的减少。在第 3.3 节,我们有更详细的运行时间分析。对于整个 MPII 数据集,我们的方法不用 尺度搜索【scale search】就已经比之前最先进的方法要好上 许多【a large margin】,即在mAP上 13% 的绝对增长。使用一个3级搜索【×0.7,×1 和 ×1.3】后,进一步将表现增加到 75.6% mAP。与以前的自底向上的方法的 mAP 比较,表明了我们新的特征表示【PAFs,Part Affinity Fields】关联身体部分【body parts】的有效性【effectiveness】。基于树结构,我们的 贪心划分方法【greedy parsing method】达到了比基于 全连接图结构【fully connected graph structure】的 图割优化公式【graphcut optimization formula】更好的准确度。
在表 2 中,我们利用我们的验证集,展示了在不同骨架结构中的对比结果【如图 6 所示】,即 343 幅不在 MPII 训练集里的图像。我们基于全连接图去训练我们的模型,还有通过选择所有边来对比结果(这句不知道怎么翻译)【图 6b,通过整形线性规划来近似求解】,还有通过最小树边【图 6c,通过整数线性规划来近似求解,和图 6d,通过本篇论文中提出的贪心算法来解决】。它们相似的表现表明,使用最小边是可以的【it suffices to use minimal edges】。我们训练另一个模型,它只学习最小边,来 完全利用【fully utilize】网络容量——在这篇论文中提出的方法——如图 6d 所表示的。在保持效率的同时,这个方法比图 6c,甚至比图 6b都要效果好。这是由于其远远更小的 部分关联通道【part association channels】【树的 13 条边 VS 图的 91 条边】使它更加达到训练收敛。
图 7a 展示了在我们验证集上的一个消除分析【ablation analysis,参考:https://www.zhihu.com/question/60170398】。对于 PCKh-0.5 的阈值,使用 PAFs【Part Affinity Fields,部分亲和域】的结果比使用 中点表示【midpoint representation】的结果要好,明确地说,是高于 单中点【one-midpoint】2.9%,高于 两中点【two intermediate points】2.3%。PAFs同时编译了人类肢体的位置和方向信息,更能区分常见的 肢体交叉重叠【common cross-over】的情况,例如手臂重叠。用未标记人的mask(不知道怎么翻译)进行训练可以进一步提升 2.3% 的性能表现,因为在训练过程中,它可以避免 惩罚【penalizing】真正正确的对损耗的预测【true positive prediction in the loss】。如果我们用我们的划分算法【parsing algorithm】来用正确【ground-truth】关键点位置,我们可以达到 88.3% 的 mAP。在图 7a 中,在不同的 PCKh 阈值下,我们利用 GT 探测子进行划分得到的 mAP 是都一个常量,这是由于没有定位错误【no localization error】。使用 GT 连接【GT connection】和我们的关键点探测,可以使 mAP 达到 81.6%。值的注意的是,我们基于 PAFs【Part Affinity Fields】的划分算法【parsing algorithm】达到了与使用 GT 连接【GT connections】相近的 mAP【79.4% VS 81.6%】。这表明基于 PAFs【Part Affinity Fields】的划分 在关联正确的部分探测时【in associating correct part detections】相当 具有健壮性的【robust】。图 7b 展示了在不同阶段的表现的比较。在 迭代改良框架【iterative refinement framework】下,mAP 单调递增。图 4 展示了经过多个阶段后,预测结果的质量的提升。
3.2. Results on the COCO Keypoints Challenge
COCO 训练集包括超过 100K 个人的实例,其中有总共超过一百万个关键点标记【即身体部分,body parts】。该测试集包括“测试挑战”,“开发测试”和“测试标准”子集【“test-challenge”,“test-dev”and“test-standard”subsets】,其中每一个包含大概 20K 张图片。COCO 评估【COCO evaluation】定义了 目标关键点相似性【the object keypoint similarity (OKS)】并用在 10 个 OKS 阈值【OKS thresholds】上的 平均AP【mean average precision】作为主对抗度量【main competition metric】。OKS 在目标探测上和 IoU 作用一样。它由 人的尺度【scale of the person】和 预测点【predicted points】与 GT 点间的距离来计算的。表 3 展示了挑战中顶尖队伍的实验结果。值的注意的是,在人的尺度较小时( ),我们的方法比起自顶向下方法的准确度要低。原因是我们的方法需要同一时间内【in one shot】处理一个大得多的 尺度范围【scale range】,而这个范围由于图像中的所有人而被扩展了。(这句不知道怎么翻译)相比之下,自顶向下方法可以重新调整每个被探测区域的补丁【patch,不知该怎么翻译】到一个更大的尺寸,并因此在小尺度下承受更少的 恶化【degradation】。在表 4 中,我们公布了在 COCO 验证集的子集上的自我比较【self-comparisons】,即 1160 幅随机选取的图像。如果我们用 GT 边框【GT bounding box】和单人 CPM,我们可以用 CPM 来达到自顶向下方法的 上界【upper-bound】,即 62.7%。如果我们用最先进的 目标探测子【object detector】,Single Shot MultiBox Detector【SSD】,表现会下降 10%。这一比较表明自顶向下方法的表现很依赖 人探测子【person detector】。相比之下,我们的自底向上方法达到了 58.4% AP。如果我们通过在 用我们的方法划分的被估计的人的每一个重新调整尺度的范围内【each rescaled region of the estimated persons parsed by our method】应用一个单人 CPM来优化我们方法的结果,我们会获得 2.6% 整体 AP 增长【overall AP increase】。注意,我们只更新 两种方法都相当吻合【both methods agree well enough】的预测的估计【estimations on predictions】,从而提升准确度和召回率【recall,参考:https://www.zhihu.com/question/19645541】。我们期望 一个较大尺度的搜索【a larger scale search】可以进一步提升我们自底向上方法的表现。图 8 展示了一个在 COCO 验证集上我们的方法发生错误引起的崩溃。大多数的 假正确【false positives】来自不准确的定位【imprecise localization】,而不是背景混乱【background confusion】。这表明比起识别 身体部分外观【body parts appearances】,捕获空间依赖有更多的提升空间。
3.3. Runtime Analysis
为了分析我们的方法的运行时间表现,我们收集了录有不同人数的视频。视频原始的帧大小是 1080 × 1920,在测试中我们将它重新调整大小为 368×654,使它可以适用于 GPU 的内存。该运行时间分析被执行在配有 NVIDIA GeForce GTX-1080 GPU 的笔记本电脑上。在图 8d 中,我们用人检测与单人 CMP 作为一个自顶向下比较,其运行时间大概与图像中的人数成比例。相比之下,随着图像中人数的增加,我们自底向上方法的运行时间增加得相对要慢一些。运行时间包含两个主要方面:(1)CNN 处理时间,运行时间复杂度是 O(1),随人数变化它依旧是常数;(2)多人划分时间,运行时间复杂度是 O(n?),其中 n 代表人数。可是,划分时间不是整体运行时间的主要影响因素,因为它比 CNN 的处理时间要小两个数量级,即当有9个人时,划分耗时 0.58 毫秒,而 CNN 耗时 99.6 秒。当视频中有19个人时,我们的方法达到了 8.8 fps 的处理速度。
4. Discussion
一些有社会意义的时刻,驱使人们拍下相片和视频。我们图片收集倾向于 捕获【capture】有个人意义的时刻:生日,婚礼,假期,朝圣,运动赛事,毕业典礼,家庭合照等等。为了让机器能够理解这些图片的意思,它们需要对图片中的人有一定的理解。被赋予了这种实时感知能力的机器,能够做出反应,甚至参与到人的个体和社会行为中。
在这篇论文中,我们考虑了【consider,不知道怎么翻译】上面所说的那种感知的一个重要组成部分:检测图像中多人的二维姿势的实时算法。我们提出了关键点关联的一个明确的非参数表示,其编码了人肢体的位置和方向信息。其次,我们设计了一个同时学习部分探测和部分关联的结构。另外,我们证明了贪心划分算法能够给身体部分提供高质量的划分,而且甚至在图像中人数增加时仍能保持效率。我们在图 9 中展示了具有代表性的失败案例。我们已经开源了我们的代码【包括训练模型】来确保 再现性【reproducibility】和鼓励该领域内的进一步研究。