姿态估计是视频动作分析识别的基础工作,我有一篇小综述讲了姿态估计相关技术路线的发展,可以点这个链接看。
本文是MVIG大佬们发表在CVPR2019上的一篇论文,上号交通大学,基于AlphaPose思路,进一步提升了拥挤情况下准度
代码:github点这,基于Pytorch,是实时多人姿态估计系统
论文:论文点这
论文第二版点这
Abstract
多人姿态估计是大量计算机视觉任务的基础,近年来也取得了很大成就。然鹅(故意打成鹅的),几乎没有先进的方法探究拥挤场景中姿态估计问题,这个问题在仍然是具有挑战性且实用中不可避免。与此同时,当下的基准也难以对这种情况进行适当的评估。本文中,我们提出了一种新颖有效的方法来解决人群中的姿态估计问题。我们的模型有两个关键部分:候选点的单人姿态估计(SPPE)和全局最大节点关联算法。
通过使用图模型对每个关键点与全局关联进行多峰预测(multi-peak),我们的方法对于在拥挤场景中不可避免的干扰具有鲁邦性,且推理效率很高。提出的方法比CrowPose数据集上最新方法高5.2mAP,MS COCO上也证明了泛化能力,数据和代码已公开。
一、Introduction
姿态估计两大类方法,自上而下Top-down、自下而上Bottom-up。
现有方法上,看上去效果不错,但是拥挤情况下性能严重下降如图3。如图1直观的看
本文提出新的方法,采用全局视图来解决干扰问题。
我们采用Top-Down方式,先检测每个人,然后使用单人姿态估计 single person pose estimation (SPPE)
我们提出了一个节点候选SPPE和一个全局最大节点关联算法。与以前仅仅预测输入人体区域的目标节点有所不同,我们的联合候选SPPE方法输出每个节点的候选位置列表。候选列表包括目标节点和干涉节点。然后我们的关联算法利用这些候选集,建立人与人之间的联系图。
最后,我们使用全局最大节点关联算法,解决了这个图模型中的 关键点关联问题。此外,我们的图优化算法的计算复杂度与常规NMS相同。
综上所述,本文的主要工作如下:i)提出了一种解决拥挤的姿态估计问题的新方法。ii)我们收集了一个新的拥挤人体姿势数据集,以更好地评估拥挤场景中的算法。我们对提出的方法进行实验。当使用相同的基于ResNet-101的网络骨干网时,我们的方法在数据集上比所有最新技术都高5.2mAP。此外,我们使用模块将SPPE和后处理步骤替换为最新方法,并在MSCOCO数据集上带来了0.8mAP的改进。也就是说,我们的方法可以在不拥挤的场景中正常使用。
2 Related Work
3 Our Method
流程如图2,人体检测器获得的人体边界框送入联合候选(JC)单人姿态估计器SPPE,JC SPPE在热力图上找到不同相应分数的联合候选(3.1节)。然后,联合关联算法建立人-节点连接图(3.2节)
3.1 Joint-Candidates SPPE
JC SPPE接受人的区域,输出一组热力图,表示人体关键点位置。即便输入一个框按理只有一个人,但是拥挤场景下,一个框里肯不可避免的有其他人的大量节点。以前的工作使用SPPE来抑制干扰节点,但是SPPE在拥挤场景中失效。为了解决这个问题,我们提出 JC SPPE,拥有在更多全局视角下的新的损失函数。
3.1.1 Loss Design
对于第i个人的区域
R
i
R_i
Ri , 有两种节点,一种是人体节点target joints,另一种是干扰节点interference joints。损失模块中采用热力图,由于其像素级别的监督和全卷积结构,因而被广泛使用。想增强target joints的响应,抑制其他的相应。但是我们并不直接抑制,因为当前的干扰节点可能是其他区域的人体节点。
因此,我们在干扰节点中以全局方式估计人体姿态和其他人的人体推荐区域。
所以,为了利用两种候选节点,我们以不同的强度输出他们。
Heatmap Loss
Ω
i
k
Ω_i^k
Ωik 是干扰节点的集合。
C
i
k
C_i^k
Cik 是热力图中的干扰节点。µ是[0,1],取0.5,即不被注意到,又不被覆盖掉。常规的热力图损失函数是µ=0
3.1.2Discussion
常规的SPPE取决于高质量的人为检测结果。它的任务是根据给定的人的包围框来定位和识别关键点节点。如果SPPE误将干扰节点用作目标节点,则将是无法恢复的错误。丢失的节点无法在诸如pose-NMS的后处理步骤中恢复。
我们提出的候选节点损失旨在解决此缺陷。此损失函数鼓励JC SPPE网络预测多峰热图,并将所有可能的节点设置为候选。在拥挤的场景中,尽管传统的SPPE很难识别目标关节,但JC SPPE仍然可以预测出候选关节列表并保证高召回率。我们将关联问题留给下一个过程,在那个过程中,我们可以从其他JC SPPE(根据其他人体建议)获得更多全局信息来解决该问题。
3.2 Person-Joint Graph人体关键图
由于我们的候选节点机制和人体检测器的冗余包围框,候选节点在数值上比实际多很多。为了减少多余的节点,我们构建了一个人体节点图,并应用最大人体节点匹配算法来构造最终的人体姿势。
3.2.1 Joint Node Building 合并节点
由于高度重叠的人体区域往往会预测出相同的实际节点(如图4所示),因此我们首先将这些可以组合的对象归为一组,它们代表与一个节点相同的实际节点。
由于高质量的关节预测,指示同一节点的候选节点始终彼此靠近。因此,我们可以使用以下规则对它们进行聚类:
对于第k个节点(身体各部位节点编号为1…k),给定两个位于
p
1
k
和
p
2
k
p_1^k和p_2^k
p1k和p2k 的候选关节,及控制偏差δ,如果p1-p2欧氏距离 ≤ min{u1, u2}δ,我们将它们标记为同一组。
u
2
k
u_2^k
u2k 是p2在热度图上的高斯响应,由高斯响应的误差决定。
δ是控制第k个关节偏差的参数,我们直接采用MSCOCO关键点数据集中的参数。
使用min{u1,u2}而不是恒定阈值的原因是为了确保只有在
p
1
和
p
2
p_1和p_2
p1和p2 同时落入彼此的控制域(半径分别为u1δ,u2δ)时,我们才将它们组合在一起。 一个Node表示一组按上述标准聚集在一起的节点。
现在,通过将一个节点组合为一个Node,我们有了Node集
J
=
v
j
k
:
k
∈
1...
K
,
j
∈
1...
N
k
J={v^k_j:k∈{1...K},j∈{1...N_k}}
J=vjk:k∈1...K,j∈1...Nk ,其中
N
k
N_k
Nk 是身体部位k的关节节点数,
v
j
k
v^k_j
vjk 是身体部位k的第j个节点。J中的节点总数为∑Nk。
3.2.2 Person Node Building个人节点的构建
person nodes代表人体检测器检测到的人体区域。我们将person nodes表示为
H
=
h
i
:
∀
i
∈
1...
M
H={h_i:∀i∈{1...M}}
H=hi:∀i∈1...M ,其中
h
i
h_i
hi 是第i个人节点,M是检测到的人体区域的数量。
理想中,高质量的行人检测器应该紧贴着人,然鹅(故意打成鹅的),拥挤场景中,很难如此。人体检测器将产生许多多余的建议,包括截断和不紧凑的边界框。 在Sec 3.3中进行全局人关节匹配时,我们将消除这些低质量的人体区域。
3.2.3Person-Joint Edge
在获得node和person nodes之后,我们将它们连接起来以构建我们的人节点图。对于每个人的节点hi,JC-SPPE将预测节点的多个候选结果。如果这些候选结果中有对node
v
j
k
v^k_j
vjk 有所贡献,我们将在他们之间建立一个边缘
e
k
i
j
e^k~ij~
ek ij 权重e是双参关节点的响应评分,记为
w
i
k
j
w^k_ij
wikj 这样我们可以构造边缘集合E={ekij:∀i,j,k}。
人关节图可以写成:
G
=
(
(
H
,
J
)
,
E
)
G=((H,J), E)
G=((H,J),E)
3.3 Globally Optimizing Association
从现在开始,我们估计人群中人体姿势的目标已转变为求解上述人节点图并最大化总边缘权重。我们的目标函数如下图,d表示是否保留边,Eq.5和6约束每个人体区域只能匹配1-K的节点各一个。
如方程式10所示,求解人节点图G中的全局分配问题在数学上等效于分别求解其子图Gk。Gk是由人体子集和第k个节点子集组成的二部图。 对于每个子图,应用更新的Kuhn-Munkres算法[1]以获得优化结果。通过分别求每个Gk,我们获得最终结果集R。
给定图匹配结果,如果dkij=1,则vkj的加权中心被分配给第i个人体提案的第k个节点。在此,加权中心表示vkj中的候选节点坐标的线性组合,权重是他们的热力图响应分数。以这种方式,可以构造每个人体区域的姿势。无法匹配任何节点的人员区域将被删除。
Computational Complexity
姿势估计的推理速度在许多应用中至关重要。我们证明了我们的全局节点算法与普通的贪婪NMS算法效率相同
3.4 Discussion
我们的方法采用基于图的方法,以全局最佳方式将节点与人体区域相关联。人体区域相互竞争节点。通过这种方式,没有主导人体实例的不合格人体区域将不会被分配任何节点,因为由于缺少主导人体实例,它们的节点响应分数都相对较低,将许多糟糕的人体区域拒绝。与我们的方法相比,常规NMS是一种基于贪婪和基于实例的算法,效率较低。尽管[10,17,27]提出了姿势-NMS来利用姿势信息,但是他们的算法是基于实例的,无法解决节点缺失和装配错误的问题。我们的全局优化关联方法可以很好地处理此类情况。
4 数据集CrowdPose Dataset
4.1 拥挤程度定义
第i个人的包围框中,属于i的关键点是
N
i
a
N_i^a
Nia 不属于的是
N
i
b
N_i^b
Nib ,请看图6
4.2 数据收集
各个组都选了些,即拥挤,又是生活化的场景。MS COCO有17个关键点,MPII有16个,AI Challenger有14个关键点。我们就定14个吧。30000张图,选20000高质量的图。共有80000个人。训练验证测试分别是5:1:4,平均IOU是0.27,而MSCOCO是0.06,MPII是0.11,AI那个是0.12
5 实验
简单使用YOLOV3来检测人,姿态估计采用AlphoPose,训练时旋转30度以内,尺度30%以内,输入320 x 256,热度图输出为80 x 64,学习率10-4,80 epochs后10-5,minibatch是64,RMSprop的优化器。测试时检测器结果先宽和高扩大30%,使用 JC SPPE,2块1080Ti上训练,基于Pytorch。
使用ResNet-101,不同对比实验中我们使用了相同的backbone来对比实验。
Inference Speed
如表2,我们和AlphoPose速度差不多。我们使用最精确的OpenPose对比的,它的输入是1024 X 736。
Conclusion
推出了创新的方法来解决遮挡等问题。基于候选关键点的SPPE,我们构建了行人关键点图模型。我们将姿态估计问题转换到图匹配问题,在全局视野优化了结果。
为了更好的评估拥挤场景的效能,创建CrowdPose数据集,并且明显的达到了最好效果,在MSCOCO也表明了方法具有泛化场景的能力。