PAF基于PAF(部分亲和字段)的实时多人2D姿态估计-CMU_
这是CVPR2017的一篇文章。
在本文中,文章通过实时算法来检测图像中多个人的二维姿态。 文章提出了关键点关联的明确的非参数表示,其编码人体肢体的位置和方向。 其次,设计了一个联合学习身体部分检测和身体部分关联的框架。 第三,证明一个贪心解析算法足以产生高质量的身体姿势分析,即使随着图像中人数的增加,效率也会保持高效(但是测试时间会随着人数增加而放缓)。 在文章中展示了代表性的失败案例。本文已经公开发布了我们的代码(包括受过训练的模型),以确保完全可重复性并鼓励在该领域的未来研究。
没有使用跟踪技术,而是基于PAF(部分亲和字段)分段分部分进行连接(基于置信度)把属于一个整体的连接起来。
整个检测过程如下图所示,输入一幅图像,然后经过7个stage,得到PCM和PAF。然后根据PAF生成一系列的偶匹配,由于PAF自身的矢量性,使得生成的偶匹配很正确,最终合并为一个人的整体骨架。
关键点定位:在图像有多少能识别多少就定位多少,把已经有的点进行个体关联。把处于同一个身体的不同part连接起来。
通过CNN计算得到置信度矩阵S(每个像素点所拥有的置信度),L(是方向向量,2个维度分别为x方向和y方向的分量)
S:每个点的置信度 confidence;
L:每个点的方向向量 在x,y方向的分量。
open pose 可以让用户自行选择脸部检测器,即既可以使用openpose自带的,也可以使用opencv中的。可以开启/关闭身体部分检测,也可以开启/关闭头部检测,即单独启用一个方面。
输出结果:
1、poseKeypoints 索引值表示是身体的哪个部分;
2、faceKeypoints 面部关键点
3、handKeypoints[0] –left [1]--right xL=handKeypoints[0][{person, part, 0}]
yL=handKeypoints[0][{person, part, 1}]
2.方法
下图说明了我们方法的整个流程。 系统采用尺寸为w×h的彩色图像(图2a)作为输入,并生成图像中每个人的解剖关键点的2D位置(图2e)作为输出。
首先,前馈网络同时预测身体部位位置(图2b)的一组二维置信度图S和部分亲和度的(PAF)一组二维矢量场L(向量),其表示了身体部分之间的关联程度(图2c)。
S=(S1,S2,...,Sj)有j个置信度地图,每个身体部分一个。
L=(L1,L2,L3...,LC)有c个向量场,每个肢体一个。
在L c中的位置编码2D矢量(如图1所示)。 最后,通过贪心推理(图2d)分析置信度图和亲和度字段,为图像中的所有人输出二维关键点。
2.1同时检测和协助
我们的架构,如下图所示,同时预测编码部分到部分关联的检测置信度图和亲和性字段。 网络分为两个分支:以米色显示的顶部分支来预测置信图,以蓝色显示的底部分支预测部分亲和字段,每个分支都是一个迭代预测体系结构,遵循Wei et al。[31],这提炼了连续阶段的预测,t∈{1,...。。。 ,T},在每个阶段进行中间监督。
图像首先由卷积网络分析(由VGG-19的前10层初始化并被微调),生成一组输入到每个分支的第一阶段的特征图F.
在第一阶段,网络产生一组检测置信图S1 =ρ1(F)和一组部分亲和性字段L1 =φ1(F),其中ρ1和φ1是在阶段1用于推断预测的CNN网络。在随后的每个阶段中,将来自前一阶段的两个分支的预测与原始图像特征F一起串联并用于产生精确的预测。
图4展示了经提炼的各个阶段的置信图和亲和字段。为了引导网络迭代地预测第一支路中的身体部位和第二支路中的PAF的置信度图,我们在每个阶段结束时分别应用两个损失函数。
W是在图像位置p处缺少注释时W(p)= 0的二进制掩码。 面具用于避免在训练期间惩罚真实的积极预测。 每个阶段的中间监督通过定期补充梯度来解决梯度消失问题。
2.2身体部分检测的置信度地图
每个置信图是关于特定身体部位出现在每个像素位置的信念的2D表示。如果有一个人那么就只有一个峰,如果有多个人,每个人会对应一个峰值。我们取最大值的置信度图而不是平均值,以便峰值的精确度保持不同,如右图所示。 在测试时,我们预测置信度图(如图4的第一行所示),并通过执行非最大抑制来获得身体部位候选者。
2.3 基于PAF(部分亲和字段)的部分关联
给定了一系列被检测到的身体部分,我们如何把他们组装起来,形成一个未知人数的全身姿势。
我们需要一个关于每对身体部位检测的关联的置信度度量,即它们属于同一个人。 测量关联的一种可能的方法是检测肢体上每一对部件之间的附加中点,并检查候选部件检测之间的发生率,如图5b所示。 然而,当人们聚集在一起时,这些中点可能会支持错误的关联(如图5b中的绿线所示)。 这种错误的关联是由于表示法中的两个限制而产生的:(1)它只编码每个肢体的位置而不是方向; (2)将肢体的支撑区域缩小到一个点。
为了解决这些限制,我们提出了一个创新的方法,称为部分亲和性字段的表示,其在肢体的支持区域上保存位置和方向信息(如图5c所示)。 部分亲和力是每个肢体的2D矢量场,也如图1d所示:对于属于特定肢体的区域中的每个像素,2D矢量编码从肢体的一部分指向另一部分的方向。 每种类型的肢体都有一个相应的亲和力场,连接两个相关的身体部位。
考虑下图中显示的单个肢体。令xj1和xj2为图像中人k的肢体c的部分j1和j2的真实位置。 如果点p位于肢体上,则L(p)处的值是从j1到j2的单位矢量;对于所有其他点,矢量是零值。
在测试过程中,我们通过计算相应PAF上的线积分,沿连接候选部分位置的线段,来测量候选部分检测之间的关联。 换句话说,我们测量预测的PAF与将通过连接检测到的身体部位而形成的候选肢体的对齐。具体而言,对于两个候选部位位置dj1和dj2,我们沿线段对预测的部位亲和性领域Lc进行采样以测量其关联的置信度。
2.4 基于PAF的多人解析
在形式上,我们首先为多个人获得一组身体部位检测候选Dj
第j个部位有Nj个。d(m,j)表示第j个部分的第m个candidate(候选点).
我们定义一个变量z (j1 j2 mn)∈{0,1}来表示是否连接两个检测候选dj1m和d j2n,目标是为所有可能的连接集合找到最优分配。
我们需要找到实际上连接四肢的部分检测对。如果我们考虑第c个肢体的一对部分j 1和j 2(例如,颈部和右臀部),则找到最佳关联可以缩减为 最大权二部图匹配问题。在图5b中显示出来。
在该图匹配问题中,图的节点是身体部位检测候选D j 1和D j 2,并且边都是检测候选对之间的可能连接。 另外,每个边由方程 10 - 部分亲和力聚合。 二分图中的匹配是以这样的方式选择的边的子集:没有两个边共享节点。我们的目标是找到所选边的最大权重匹配。