基于直接姿态级推理的拥挤场景鲁棒姿态估计

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,大大超过最近的研究工作。

文章目录

  • 基于直接姿态级推理的拥挤场景鲁棒姿态估计
  • 1 Introduction
  • 2 Related Work
  • 3 Methodology
    • 3.1 Overview
    • 3.2 Part-based Pose Generation
    • 3.3 Pose Refinement
    • 3.4 Pose Fusion
  • 4 Experiments
    • 4.1 Datasets and Evaluation Protocol
    • 4.2 Implementation Details
    • 4.3 Ablation Study
    • 4.4 Comparison with Recent Works
  • 5 Discussion and Conclusion

1 Introduction

拥挤场景下由于人体重叠很难检测精确的人体边界框,且检测中常用的 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 根据可见身体部位和人边界框优先比率来检测被遮挡的人体。

图1: (a) Top-down 法难以检测红色边界框中的重叠人体;(b) bottom-up 法对红圈中被遮挡的关键点敏感,因此无法推断出准确的姿态线索;(c) DPLI从身体部分(例如,图中的三个部分)推断初始姿态线索。初始部位线索被细化并融合,以获得被遮挡者的姿态线索。

使用 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 的潜力。

2 Related Work

Crowded Scenes Pose Estimation. CrowdPose 构建了一个大型拥挤姿态估计基准,并提出应用全局关联来处理拥挤场景。OPEC-Net 引入图卷积网络来改进初始估计姿态,但它需要边界框来区分人体,因此存在人体检测问题。PINet遵循一种新的直接姿态级推理 pipeline,对拥挤场景中的人体检测和关键点分组更加鲁棒。

3 Methodology

3.1 Overview

给定具有多个人的图像 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 的坐标,(δxk,δyk)(δx_k, δy_k)(δxk​,δyk​) 表示第k个姿态关键点到 p 的偏移。根据 eq1,姿态估计可以通过检测p和估计偏移o来进行。(center-offset 法)
训练阶段应仔细选择 p,p应该位于有区分的且未被遮挡的部位,以推断出高质量的姿态显示。SPR使用中心点作为 p 可能会产生遮挡,因此我们将每个人分成 s 个部分,每个部分的中心用作p。3.2节和图3 详细讨论了身体分区和p的选择。
为定位每个人的 {pj}j=1s\{p_j\}^s_{j=1}{pj​}j=1s​并获取相应的{oj}j=1s\{o_j\}^s_{j=1}{oj​}j=1s​,我们提出PPG来推理每个部分的置信图和偏移图,即:

PjP_jPj​表示第 j 部分位置的置信图,OjO_jOj​ 表示偏移图,Φ(·) 代表特征提取backbone。通过在 PjP_jPj​ 上应用NMS 获取多个局部最大点 pj∈Pjp_j∈ P_jpj​∈Pj​ 并采样其对应的偏移量 oj∈Ojo_j∈O_joj​∈Oj​来获取初始姿态线索,{pj,oj}\{p_j, o_j\}{pj​,oj​} 对,组成初始姿态 Pj′P'_jPj′​。
PR 模块根据姿态结构先验G和特征图F中的上下文信息来优化粗糙姿态 Pj′P'_jPj′​,即:

因为每个部分都预测一个姿态线索,所以同一个人存在重复姿态,因此使用后处理模块PF来识别重复的姿态线索:

P(i)P^{(i)}P(i) 表示第i个人的最终姿态估计,t是由PPG和PR生成的姿态数量。PF可以通过测量姿态线索间的相似性合并相似姿态来实现。
通过以端到端的方式训练 backbone Φ(·)、PPG(·) 和 PR(·) 模块来学习PINet。总体训练目标为:

图2 为 PINet 的pipeline。通过使用PPG、PR和PF,即使高度遮挡也能推断出高质量的人体姿态。

图2:PINet的框架。使用CNN提取特征图。Part-based Pose Generation (PPG) 从不同的身体部分(用不同颜色的圆圈表示)中推断出整个人粗糙的姿态。Pose Refinement (PR) 使用动态姿态关键点图来优化粗糙的人体姿态。PF 融合来自不同部分的姿态并输出最终姿态。图只显示了被遮挡者姿态。

3.2 Part-based Pose Generation

根据人体骨架将每个人分成 s 个身体部分,以利用可见信息,通常身体分区越细,越可能存在可见部分,但小的部分缺乏全局上下文信息,难以回归完整的人体姿态 offset,且 s 过大也会加大密集回归优化的难度。
如图3所示,分区策略由粗到细列出,例如,center 表示将人分成一个部分,而 keypoints 表示使用13个部分。为测试不同分区策略对遮挡的鲁棒性,图3列出了OCHuman上的遮挡率,没有任何可见关键点的分区被视作遮挡,从图中可以看出分区越精细,对遮挡越鲁棒,但Sec.4也验证了使用过多部分难以优化模型,part-large 分区策略能实现很好的 trade-off,因此我们将每个人分为 s=3 个部分,即上部、中部和下部(upper,middle,bottom)。

图3:PPG中不同身体分割策略图解:(a)五种不同的分割策略,矩形表示身体部位,棕色圆圈表示部位中心,(b)对应于OCHuman数据集中的遮挡率统计。

根据上述分析,PPG为每个人检测上中下三部分,并生成相应的offset,遵循 CenterNet,通过用热图 P 估计部分的center来检测每个part。具体而言:backbone生成的特征图 F=Φ(x) 喂给关键点检测头和偏移回归头:

Pj,OjP_j, O_jPj​,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=[Pu;Pm;Pb]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 损失是上述两个损失的权重和,即:

3.3 Pose Refinement

尽管PPG可以生成完整的人体姿态,但它仍存在几个问题:① 首先,part-based 生成策略增强了PINet 的遮挡鲁棒性,但消除了每个部分推断整体姿态的人体全局信息,例如,由于感受野有限,upper 特征难以编码脚。② 其次,被遮挡的关键点应该借助关键点连接(即姿态结构)而不仅仅是用视觉信息来推断。
因此我们提出PR 模块来解决上述问题,对于 PPG 中的点特征 fpf_pfp​ 生成的姿态 Pj′\mathcal{P}_j'Pj′​ ,为其提供关键点特征 fkf_kfk​ 来编码人体全局信息,关键点特征通过对特征图 F(F 编码 k-th 关键点位置)双线性插值上采样获取。为充分利用姿态结构姿态先验,我们提出一个动态图卷积网络 DGCN 利用关键点连接信息来细化并聚合关键点特征:

W是 DGCN 参数,σ表示ReLU,XlX^lXl和Xl+1X^{l+1}Xl+1 是第l层的原始和更新后的特征,G是根据人体骨架初始化并作为模型参数更新的动态图。我们采用具有残差连接的3层DGCN来细化这些特征,初始特征矩阵X0的每一行表示一个关键点,应用最大池和平均池应来细化的关键点特征,以获得姿态的全局特征与 fp concat,并pass 给两个全连接层来预测初始姿态Pj′\mathcal{P}_j'Pj′​ 和 gt 间的 offset: ∆Pj′∆\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显示了训练期间动态图的一个示例。

3.4 Pose Fusion

PPG从不可见的身体部位生成重复姿态和低质量姿态,因此需要 pose-processing 操作进行消除,但由于long regression,不同 parts 生成的重复姿态的良好关键点不同,因此可以将其融合来获得更好的结果。upper part 回归的姿态在定位鼻子关键点上表现良好,但 bottom part 推断的姿态不擅于定位该关键点。基于上述分析,我们提出一个 PF 模块来融合重复姿态并移除低质量姿态。
给定 PPG 和 PR 推断的姿态:{P^j}j=1t\{\hat{P}_j\}^t_{j=1}{P^j​}j=1t​,PF先基于 OKS的匹配策略(OKS-NMS)找出属于同一人体的 pose set,即,对于两个姿态,通过以下公式计算它们的OKS:

αk是控制衰减的每个关键点常数,若两个姿态间的OKS大于γ,则二者为重复姿态。根据上述匹配策略和NMS操作,可以将 {P^j}j=1t\{\hat{P}_j\}^t_{j=1}{P^j​}j=1t​ 分为m个组,其中每个组 {P^j}j=1ti\{\hat{P}_j\}^{t_i}_{j=1}{P^j​}j=1ti​​ 表示第 i 个人的 pose set,然后PF遍历每个pose set: {P^j}j=1ti\{\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 而不仅仅是中心点。

4 Experiments

4.1 Datasets and Evaluation Protocol

数据集用了OCHuman、CrowdPose、COCO,评估标准遵循各数据集的评估准则,基于OKS的AP。

4.2 Implementation Details

基于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])测试。

4.3 Ablation Study

Components analysis. 结果如表1所示。

表1:PINet单个组件的消融研究。

图4:OCHuman test set 的定性结果。每幅子图依次为: PPG、PPG+PR和PPG+PR+PF的预测结果。从图中可以观察到,PR和PF都可以提高关键点定位的准确性。

4.4 Comparison with Recent Works

表2:OCHuman test set 上与 sota 的比较。∗ 表示基于作者源码的实现。

表3:代表性top方法和PINet的GFLOPs和参数。∗ 表示我们的实现。

表4:CrowdPose test set 上与 sota 方法的比较。∗ 表示我们的实现。†表示多尺度测试。

图5:不同IoU阈值下与DEKR、SPM和PINet的比较。我们的方法总是优于其他方法,尤其在高度拥挤的场景(高IoU)。

表5:COCO和OCHuman上与sota方法的比较。模型在COCO train set上训练。

5 Discussion and Conclusion

本文解决了拥挤场景下的多人姿态估计问题。我们提出的PINet 通过一个使用身体部分线索和姿态结构先验的直接姿态级推理 pipeline,能显著提高拥挤场景下的多人姿态估计性能。在几个拥挤场景姿态估计基准上的实验验证了我们方法应对遮挡的有效性,但拥挤场景的性能仍低于非拥挤场景。此外,PINet直接回归姿态,不如热图法准确。需要进一步研究来解决这些问题。

Robust Pose Estimation in Crowded Scenes with Direct Pose-Level Inference 阅读笔记相关推荐

  1. 笔记:PoseCNN:A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes

    PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes (Robotics: ...

  2. 论文笔记(三):PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes

    PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes 文章概括 摘要 1. ...

  3. PoseCNN(A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes)复现记录

    PoseCNN: A Cbjonvolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes 挖个坑,希望研究 ...

  4. 论文阅读笔记《PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes》

    核心思想   本文提出一种基于卷积神经网络的物体分割与位姿估计的方法(PoseCNN).如下图所示,输入图像经过卷积层特征提取之后,分成三个任务分支:语义分割.平移矩阵预测和旋转矩阵(四元数)预测.最 ...

  5. PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes—2017(笔记)

    PoseCNN:用卷积神经网络估计杂乱场景中目标6D姿态-2017(笔记) 文章提出了新的PoseCNN姿态估计网络,通过CNN提取图像特征,然后分三路进行目标分割标签标注.平移估计和姿态估计得到目标 ...

  6. 论文笔记01——PoseCNN:A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes

    参考链接: https://blog.csdn.net/nwu_NBL/article/details/83176353 论文标题:<PoseCNN:杂乱场景中物体6D姿态估计的卷积神经网络&g ...

  7. 《CrowdDetection:Detection in Crowded Scenes: One Proposal, Multiple Predictions》论文笔记

    参考代码:CrowdDetection 1. 概述 导读:在一些密集场景下检测算法由于算法自身问题导致其对密集场景检测存在问题,整篇文章正是解决这样的场景下的检测问题.这篇文章主要的思想就是将原来单个 ...

  8. pose estimation papers and datasets

    pose estimation 相关文章和数据集 文章 openpose 系列 alphapose 系列 CrowdPose: Efficient Crowded Scenes Pose Estima ...

  9. 6D Pose Estimation各方法对应的经典论文

    单目RGB.传统方法 (1) D. G. Lowe. Object recognition from local scale-invariant features. In ICCV, 1999. (2 ...

最新文章

  1. AR凭什么成为元宇宙和现实间的技术纽带?听听业内怎么说|量子位· 对撞派...
  2. 【控制】《复杂运动体系统的分布式协同控制与优化》-方浩老师-第9章-固定翼飞行器的编队跟踪与队形旋转控制
  3. php new static,PHP面向对象中new self( )和 new static( ) 的区别
  4. 为什么大厂都在造车?原因找到了
  5. Gradle+IDEA使用说明
  6. C# 采用线程重绘图形要点记录
  7. 述职答辩提问环节一般可以问些什么_内部资料,仅供阿里在职同事传阅:晋升答辩成功要诀...
  8. 2016年开源软件排名TOP50,最受IT公司欢迎的50款开源软件
  9. Kafka学习之broker配置(0.8.1版)(转)
  10. C#中的换行符、回车
  11. Julia : Array !, [1,2] !=[1 2]'
  12. 电脑常用音频剪辑软件_常用手机视频剪辑软件
  13. 滑动门套滑动门css,CSS选项卡、滑动门代码
  14. 怎么做应力应变曲线_如何用Origin画应力应变曲线
  15. python 学习(三)
  16. 博弈论完全信息博弈思维导图
  17. Cloud Native 演进可行性研究
  18. Micropython教程之TPYBoard DIY电子时钟(萝卜学科编程教育)
  19. html获取随机字母,html5 canvas随机生成英文字母数字组合图片验证码代码
  20. CC2530基础实验:(1)按键控制LED跑马灯

热门文章

  1. 理解你的排序操作(stable_sort,sort,partial_sort,nth_element,stable_partition,partition)
  2. csgo搬砖是什么?我们如何操作赚钱?
  3. 安杰思在科创板IPO过会:拟募资约8亿元,达安基因为其主要股东
  4. 那些坚持买彩票想中500万的人,都是一些什么心态?分析一下
  5. 连接正常(或者能上QQ)但是上不了网
  6. 学习ES6 The Dope Way Part I:const,let&var
  7. linux通过无线网卡上网,在Ubuntu中使用PHS无线网卡上网
  8. jess笔记_(2)
  9. 三七总皂苷脂质体纳米粒子修饰负载RNA核糖核酸(实验注意事项)
  10. 一种使用可满足性模数理论模型检查可编程逻辑控制器系统的恶意软件检测方法