NeurIPS 2021
论文链接
代码链接
摘要:拥挤场景下的多人姿态估计具有挑战性,因为重叠和遮挡使得难以检测人体边界框并从单个关键点推断姿态线索(关键点位置)。为解决该问题,本文提出一个无需bbox检测和关键点分组的直接姿态级推理策略。姿态级推理网络(Pose-level Inference Network:PINet)不推理单个关键点,而是直接从人的可见身体部分推理出完整的姿态线索。PINet先应用 Part-based Pose Generation (PPG) 从每个人的身体部分推理出多个粗糙姿态,然后 Pose Refinement module 通过合并姿态先验来细化粗糙姿态并最终在 Pose Fusion module 中进行融合。PINet依靠辨别身体部位来区分重叠的人,并应用视觉身体线索来推理全局姿态线索。 在几个拥挤场景姿态估计基准上的实验证明了PINet的优越性。例如,它在OCHuman数据集上获得了59.8% AP,大大超过最近的研究工作。
拥挤场景下由于人体重叠很难检测精确的人体边界框,且检测中常用的 NMS 往往会抑制密集的边界框,导致人体漏检,这些问题降低了 top-down 方法的准确性。重叠和遮挡导致的不可见关键点也使 bottom-up 法难以从单个关键点推理出准确的姿态线索。
如图1(a) 和 (b) 所示,现有工作通常在拥挤场景中存在人体检测和关键点分组失败的问题。本文致力于一项无需人体检测与关键点分组的pipeline进行多人姿态估计。我们将人体姿态视为一个推断目标,并从一个人的可见身体部位直接推断出完整的姿态线索,即所有身体关键点的位置,换句话说:依靠有区别的可见部位,例如头,来区分重叠人体。 我们应用可见部位线索和上下文来推断全局姿态,包括可见和不可见的关键点。由于该pipeline直接推断完整姿态线索,我们将其命名为:Direct Pose-Level Inference (DPLI)。这一想法也受到了根据可见线索推断不可见线索工作:Progressive Refinement Network for occluded pedestrian detection,Peeking into occluded joints: A novel framework for crowd pose estimation,Occlusion-aware r-cnn: detecting pedestrians in a crowd. 的启发,例如,PRNet 根据可见身体部位和人边界框优先比率来检测被遮挡的人体。
使用 PINet 实现DPLI,从粗到细逐步推断被遮挡的姿态。
由于缺少可见部位标注,根据图3中的设置将每个人分成几个部分,以获取并利用可见部位。Part-based Pose Generation (PPG) 从每个部分生成初始姿态线索,随后 Pose Refinement model 采用动态图卷积利用上下文和姿态结构来优化姿态,最后,PINet使用 Pose Fusion model 来识别属于同一个人的姿态线索,并将其融合为最终的姿态估计。
在 OCHuman和CrowdPose 上的实验结果表明 PINet 对于遮挡姿态估计的有效性。例如,PINet 在OCHuman上实现了59.8%AP,分别超出 OPEC-Net和DEKR 30.7%和7.8%。PINet 在CrowdPose 的 Hard test set上实现了62.2%AP,优于 DEKR 4.7%。
OPECNet 也通过在可见关键点和上下文上应用图卷积网络(GCN)来检测被遮挡的关键点,但 OPEC-Net 应用 top-down 策略,需要边界框来区分人体,因此存在人体检测问题。据我们所知,DPLI 是一项针对拥挤场景姿态估计的的独创性贡献,它不同于 top-down 和 bottom-up pipeline。大量实验验证了PINet的有效性,显示出 DPLI pipeline 的潜力。
Crowded Scenes Pose Estimation. CrowdPose 构建了一个大型拥挤姿态估计基准,并提出应用全局关联来处理拥挤场景。OPEC-Net 引入图卷积网络来改进初始估计姿态,但它需要边界框来区分人体,因此存在人体检测问题。PINet遵循一种新的直接姿态级推理 pipeline,对拥挤场景中的人体检测和关键点分组更加鲁棒。
给定具有多个人的图像 I ,目标是估计每个人的姿态关键点的位置:
其中 { K ( i ) } 和 { K ˉ ( i ) } \{K^{(i)}\}和\{\bar{K}^{(i)}\} {K(i)}和{Kˉ(i)}分别表示第 i 个人的可见和不可见关键点,m表示图像 I 中的人数。使用 n = ∣ { K ( i ) } + { K ˉ ( i ) } ∣ n=|\{K^{(i)}\}+\{\bar{K}^{(i)}\}| n=∣{K(i)}+{Kˉ(i)}∣ 表示每个人的关键点个数(OCHuman的n=17,CrowdPose的n=14)。
PINet 直接为每个人推断出完整的姿态线索: { { K ( i ) } , { K ˉ ( i ) } } \{\{K^{(i)}\}, \{\bar{K}^{(i)}\}\} {{K(i)},{Kˉ(i)}},为实现这一目标,我们采用 Structure Pose Representation (SPR) 将姿态线索表示为一个点 p 和 offset set: o,即:
(x,y) 表示点 p 的坐标, ( δ x k , δ y k ) (δx_k, δy_k) (δxk,δyk) 表示第k个姿态关键点到 p 的偏移。根据 eq1,姿态估计可以通过检测p和估计偏移o来进行。(center-offset 法)
训练阶段应仔细选择 p,p应该位于有区分的且未被遮挡的部位,以推断出高质量的姿态显示。SPR使用中心点作为 p 可能会产生遮挡,因此我们将每个人分成 s 个部分,每个部分的中心用作p。3.2节和图3 详细讨论了身体分区和p的选择。
为定位每个人的 { p j } j = 1 s \{p_j\}^s_{j=1} {pj}j=1s并获取相应的 { o j } j = 1 s \{o_j\}^s_{j=1} {oj}j=1s,我们提出PPG来推理每个部分的置信图和偏移图,即:
P j P_j Pj表示第 j 部分位置的置信图, O j O_j Oj 表示偏移图,Φ(·) 代表特征提取backbone。通过在 P j P_j Pj 上应用NMS 获取多个局部最大点 p j ∈ P j p_j∈ P_j pj∈Pj 并采样其对应的偏移量 o j ∈ O j o_j∈O_j oj∈Oj来获取初始姿态线索, { p j , o j } \{p_j, o_j\} {pj,oj} 对,组成初始姿态 P j ′ P'_j Pj′。
PR 模块根据姿态结构先验G和特征图F中的上下文信息来优化粗糙姿态 P j ′ P'_j Pj′,即:
因为每个部分都预测一个姿态线索,所以同一个人存在重复姿态,因此使用后处理模块PF来识别重复的姿态线索:
P ( i ) P^{(i)} P(i) 表示第i个人的最终姿态估计,t是由PPG和PR生成的姿态数量。PF可以通过测量姿态线索间的相似性并合并相似姿态来实现。
通过以端到端的方式训练 backbone Φ(·)、PPG(·) 和 PR(·) 模块来学习PINet。总体训练目标为:
图2 为 PINet 的pipeline。通过使用PPG、PR和PF,即使高度遮挡也能推断出高质量的人体姿态。
根据人体骨架将每个人分成 s 个身体部分,以利用可见信息,通常身体分区越细,越可能存在可见部分,但小的部分缺乏全局上下文信息,难以回归完整的人体姿态 offset,且 s 过大也会加大密集回归优化的难度。
如图3所示,分区策略由粗到细列出,例如,center 表示将人分成一个部分,而 keypoints 表示使用13个部分。为测试不同分区策略对遮挡的鲁棒性,图3列出了OCHuman上的遮挡率,没有任何可见关键点的分区被视作遮挡,从图中可以看出分区越精细,对遮挡越鲁棒,但Sec.4也验证了使用过多部分难以优化模型,part-large 分区策略能实现很好的 trade-off,因此我们将每个人分为 s=3 个部分,即上部、中部和下部(upper,middle,bottom)。
根据上述分析,PPG为每个人检测上中下三部分,并生成相应的offset,遵循 CenterNet,通过用热图 P 估计部分的center来检测每个part。具体而言:backbone生成的特征图 F=Φ(x) 喂给关键点检测头和偏移回归头:
P j , O j P_j, O_j Pj,Oj 分别表示 j-th part 和相应的offset map,u,m,b 分别代表 upper,middle,bottom 三个parts。采用 trade-off l2 regression loss 来学习Pj,使用smooth l1 loss 来学习 Oj:
上标 * 表示 gt label, P = [ P u ; P m ; P b ] P=[P_u; P_m; P_b] P=[Pu;Pm;Pb] 代表 points map,M是一个用于降低背景权重的mask,part center 区域的权重为1,其他的为0.1。Ω 表示特征图上 part中心及其相邻点的 index set,Si是第i个人的 area。根据[Single-stage multi-person pose machines] 获得 GT。PPG 损失是上述两个损失的权重和,即:
尽管PPG可以生成完整的人体姿态,但它仍存在几个问题:① 首先,part-based 生成策略增强了PINet 的遮挡鲁棒性,但消除了每个部分推断整体姿态的人体全局信息,例如,由于感受野有限,upper 特征难以编码脚。② 其次,被遮挡的关键点应该借助关键点连接(即姿态结构)而不仅仅是用视觉信息来推断。
因此我们提出PR 模块来解决上述问题,对于 PPG 中的点特征 f p f_p fp 生成的姿态 P j ′ \mathcal{P}_j' Pj′ ,为其提供关键点特征 f k f_k fk 来编码人体全局信息,关键点特征通过对特征图 F(F 编码 k-th 关键点位置)双线性插值上采样获取。为充分利用姿态结构姿态先验,我们提出一个动态图卷积网络 DGCN 利用关键点连接信息来细化并聚合关键点特征:
W是 DGCN 参数,σ表示ReLU, X l X^l Xl和 X l + 1 X^{l+1} Xl+1 是第l层的原始和更新后的特征,G是根据人体骨架初始化并作为模型参数更新的动态图。我们采用具有残差连接的3层DGCN来细化这些特征,初始特征矩阵X0的每一行表示一个关键点,应用最大池和平均池应来细化的关键点特征,以获得姿态的全局特征与 fp concat,并pass 给两个全连接层来预测初始姿态 P j ′ \mathcal{P}_j' Pj′ 和 gt 间的 offset: ∆ P j ′ ∆\mathcal{P}_j' ∆Pj′。细化后的姿态即为:
类似于 offsetmap loss,通过下式计算 refinement loss:
T \mathcal{T} T是PR细化的采样姿态集,Si是第 i 个人的面积。
Discussions. OPEC-Net 也使用GCN,但 PR 在几个方面与之不同:① 首先,OPEC-Net专注于推断被遮挡的关键点,以关键点坐标作为输入,因此需要额外的特征自适应模块来提取上下文信息。而 PR 专注于利用姿态结构先验提取人体全局信息,不需要额外的模块。② 其次,PR采用动态图来细化关键点特征,可以捕获更多的关键点关系,例如,左右身体间没有骨架连接,但当右踝关节被遮挡时,可以参考左踝关节和膝盖进行推断。动态图更灵活,可以通过模型学习捕捉这些属性。图2显示了训练期间动态图的一个示例。
PPG从不可见的身体部位生成重复姿态和低质量姿态,因此需要 pose-processing 操作进行消除,但由于long regression,不同 parts 生成的重复姿态的良好关键点不同,因此可以将其融合来获得更好的结果。upper part 回归的姿态在定位鼻子关键点上表现良好,但 bottom part 推断的姿态不擅于定位该关键点。基于上述分析,我们提出一个 PF 模块来融合重复姿态并移除低质量姿态。
给定 PPG 和 PR 推断的姿态: { P ^ j } j = 1 t \{\hat{P}_j\}^t_{j=1} {P^j}j=1t,PF先基于 OKS的匹配策略(OKS-NMS)找出属于同一人体的 pose set,即,对于两个姿态,通过以下公式计算它们的OKS:
αk是控制衰减的每个关键点常数,若两个姿态间的OKS大于γ,则二者为重复姿态。根据上述匹配策略和NMS操作,可以将 { P ^ j } j = 1 t \{\hat{P}_j\}^t_{j=1} {P^j}j=1t 分为m个组,其中每个组 { P ^ j } j = 1 t i \{\hat{P}_j\}^{t_i}_{j=1} {P^j}j=1ti 表示第 i 个人的 pose set,然后PF遍历每个pose set: { P ^ j } j = 1 t i \{\hat{P}_j\}^{t_i}_{j=1} {P^j}j=1ti,并选择 top-n 得分的关键点来构建最终人体姿态: P ( i ) P^{(i)} P(i)。
第k个关键点得分由 r=rp·rk 计算,rp是 P 中点(每个part的中心点)的置信度得分,rk是通过热图获得的关键点置信度得分。PPG生成的低质量姿态的 rp 较小,因此不会出现在最终结果中,rk有助于选择估计良好的关键点并缓解 long regression 问题。实现中,学习带有 point map P 的 score map,并将等式7更改为:
Discussions. PF是一种 model-agnostic 操作,也可以应用于其他回归方法。但它更适用于重复预测来自不同 part 而不仅仅是中心点。
数据集用了OCHuman、CrowdPose、COCO,评估标准遵循各数据集的评估准则,基于OKS的AP。
基于PyTorch,采用 ImageNet 上预训练的HRNetW32 作为 backbone。所有实验的 λ和λo设置为0.03,γ设为0.7。对于PR,为每个 part 从PPG中抽取40个姿态。
训练:输入图像的大小调整为512*512,使用 Adam 优化模型,所有层的学习率都设置为0.001。在OCHuman和COCO上训练 140 epoch,学习率在第90、120 peoch 降为 0.0001。在 CrowdPose 训练 300 个peoch,并在第200、260 epoch 将学习率除以10。OCHuman 的 batchsize=20,CrowdPose和COCO 的 batchsize 设为40。采用了随机旋转(-30,30)、缩放([0.75,1.5])、平移([-40,40])和翻转(0.5)等数据增强策略。
测试:将图像的短边调整为512,保持高宽间的纵横比,采用单尺度和多尺度([0.5,1.0,2.0])测试。
本文解决了拥挤场景下的多人姿态估计问题。我们提出的PINet 通过一个使用身体部分线索和姿态结构先验的直接姿态级推理 pipeline,能显著提高拥挤场景下的多人姿态估计性能。在几个拥挤场景姿态估计基准上的实验验证了我们方法应对遮挡的有效性,但拥挤场景的性能仍低于非拥挤场景。此外,PINet直接回归姿态,不如热图法准确。需要进一步研究来解决这些问题。