论文阅读|Openpose

原文链接:https://openaccess.thecvf.com/content_cvpr_2017/papers/Cao_Realtime_Multi-Person_2D_CVPR_2017_paper.pdf

参考资料:[多图/秒懂]白话OpenPose,最受欢迎的姿态估计网络 - 知乎 (zhihu.com)

人体姿态估计论文笔记-OpenPose - 知乎 (zhihu.com)

【人体姿态识别】 Openpose论文 - 知乎 (zhihu.com)

目录

Abstract

Introduction

Method

Simultaneous Detection and Association 同时检测和关联

Confidence Maps for Part Detection( PCM )

 Part Affinity Fields for Part Association (PAF)

Multi-Person Parsing using PAFs 多人关节连接

二分图

​二分图匹配

多人关节连接举例

 Results

Results on the MPII Multi-Person Dataset

Results on the COCO Keypoints Challenge​

 Runtime Analysis

Discussion


Abstract

提出了一种有效检测图像中多人二维姿态的方法。该方法使用非参数表示(我们称之为部分亲和场(PAF))来学习将身体部位与图像中的个体相关联。该体系结构对全局上下文进行编码,允许贪婪的自下而上的解析步骤,该步骤在获得实时性能的同时主要保持高精度,而与图像中的人的数量无关。该结构被设计为通过同一顺序预测过程的两个分支来联合学习部分位置及其关联。我们的方法在首届COCO 2016关键点挑战赛中名列前茅,在性能和效率上都大大超过了之前MPII多人基准测试的最先进结果

Introduction

人体 2D二维姿势判断——一个关于定位人体关键点或者称“部分”【parts】问题——已经主要集中在寻找个体的人体部分【人体的关键点】。要检测出图像中多个人的姿势,将面临一系列前所未有的挑战,尤其是一些社会性的个体(可能指图像中有交流,互相遮挡的个体)。

多人的2D姿态估计的难点:

(1)人数规模及人的位置不确定;

(2)人与人之间存在干扰,使关节关联变得困难;

(3)人数越多复杂度越高,实时性能越差。

通常的方法是使用单人检测器,并对每个检测执行单人姿势估计。这些自上而下的方法直接利用现有的单人姿势估计技术,但受到单人检测技术的影响:如果单人检测器失败-就像人们靠近时容易发生的那样-就没有恢复的途径。此外,这种自上而下的方法的运行时间与图像中人的数量成比例关系:每次检测都要运行一个单人姿态估计器,人越多,计算量就越大。相比之下,自下而上的方法很有吸引力,因为它们提供了对早期承诺的鲁棒性,并且有可能缓解因图像中人数上升引起的运行时间复杂度的上升。然而,自下而上的方法并不直接使用来自其他身体部位其他人的全局上下文线索。在实践中,以前的自下而上方法没有维持效率上的提升,因为最终划分需要代价高昂的全局推理,(将检测出来的关键点划分到不同的个体时需要消耗巨大的运算成本)。例如,Pishchlin等人的主要工作。提出了一种自下而上的方法,即联合标注候选关键点,并将其与单个人相关联。然而,求解完全连通图上的整数线性规划问题是一个NP-hard问题,平均处理时间约为几个小时。Insafutdinov等人以基于ResNet和基于图像的成对分数的更强的部件检测器,并且极大地改善了运行时间,但是该方法在每个图像上仍然需要几分钟,并且对部件建议的数量(part proposals)有限制。文献[11]中使用的成对表示法很难回归,因此需要单独的Logistic回归。

在本文中,我们提出了一种超过多个公共基准的具有最高精度的多人姿态估计的有效方法。我们通过部分亲和场(PAF)首次提出了关联分数(association scores)自下而上表示,PAF是一组2D向量场,用于编码图像域上肢体的位置和方向。我们证明,同时推断这些自下而上的检测和关联表示足够好地编码全局文本,从而允许贪婪的解析以一小部分的计算代价获得高质量的结果。

Method

 Figure2展示了整个流程,输入是w×h的彩色图片(2.a),输出是二维的带有每个人的人体关键点位置的图像。首先是一个前馈网络,它同时预测出关于身体部分位置的二维置信图S(2.b)和一组关于部分亲和度的2D向量场L(2.c),其中二维向量域的集合L编码了部分的关联的程度。集合S具有J个置信度图,S=(S1,S2,...SJ),每个部分一个映射即S_{j}\in \mathbb{R}^{w\times h}, j\in \left \{ 1...J \right \}。集合L=(L1,L2,...LC)有C个向量域,每个四肢对应一个向量域,L_{c}\in \mathbb{R}^{w\times h\times 2}, c\in \left \{ 1...C \right \}。(这里×2可能是因为向量表示起点和终点,起点在一个w×h中,重点在一个w×h中),LC中的每个图像位置编码一个2D矢量。最后,通过贪婪推理(2.d)对置信度图和亲和域进行解析,以输出图像中所有人的2D关键点。

Simultaneous Detection and Association 同时检测和关联

我们的结构(Figure 3)同时预测检测置信度图和编码了部分到部分联系的亲和域。网络被分成两个分支:顶部分支(以米黄色显示)预测置信图,底部分支(以蓝色显示)预测亲和场。两个分支都是采取反复预测的结构,(如同引用的第31篇论文的S.-E. Wei等人所采用的方式),这种结构是通过连续重复的阶段来优化预测结果的,其中每个阶段都有中间监管,确保结果不会向着错误的方向发展。  

图像首先通过一个卷积网络来进行分析(通过引用的第26篇论文中的VGG-19的前10层来进行初始化和微调),来生成一组特征映射 F,用于输入到两个分支的第一阶段first stage。在第一阶段,网络产生一组检测置信度映射S1=ρ1(F)和一组部分亲和域L1=φ1(F),其中ρ1和φ1是用于在阶段1进行推理的CNN。在每个后续阶段中,将来自前一阶段中的两个分支的预测与原始图像特征F连接并用于产生精细化预测,

其中ρt和φt是用于在阶段t进行推理的CNN。

 图4展示了跨阶段的置信度图和亲和度字段的细化。为了指导网络预测第一分支的身体部位和第二分支的PAF的置信度图,我们在每个阶段的末尾应用了两个损失函数,每个分支分别一个。 我们在估计的预测和真实的域和映射之间使用L2损失,在这里,我们在空间上对损失函数进行加权,以解决一些数据集不能完全标记所有人的实际问题。 具体来说,在阶段 t 两个分支的损失函数是:

S_{j}^{*}是groundtruth中的置信度值,L_{*}^{c}是groundtruth中的部分亲和矢量场。是一个二进制掩码,当注释在图像位置P中丢失时,该掩码用于在训练过程中避免惩罚正确的正面(positive)的预测。(意思是指避免对正确的预测进行抑制)。每个阶段的中间监管通过定期地补充梯度来处理梯度 消失问题。总体目标是:

Confidence Maps for Part Detection( PCM )

为了在训练过程中估计方程式(5)中 fs,我们从带注释的 2D 关键点生成 groundtruth 置信度图 S*。 每个置信度图都是对特定身体部位出现在每个像素位置的信念(belief)的 2D 表示。 理想情况下,如果图像中出现单个人,并且对应部分可见,则每个置信度图中应该存在单个峰值; 如果多人出现,那么对于每个人 k 的每个可见部分 j 都应该有一个峰。在关节点上的像素的置信度为1,其周围像素点根据距离呈高斯分布扩散,距离越远,置信度越低;距离越近,置信度越高。

首先是为每个人k生成个体置信度图S_{j,k}^{*},设图中第K个人的第j个身体部分的groundtruth为x_{j,k}\in \mathbb{R}^{2},p处的值定义为:

其中σ控制峰值的扩散。网络要预测的groundtruth置信度图是个体置信度图经过max运算操作后得到的聚集体(aggregation)

我们取置信度图的最大值而不是平均值,以便接近峰值的精度保持不同,如下图所示。在测试时,我们预测置信度图(如图 4 的第一行所示),并通过执行非极大值抑制获得身体部位候选者。图中表示j关节点的置信图,2条高斯曲线表示像素p对2个人j关节的响应,出现这种情况时,我们取最大响应值,即图中的虚线。

 

 Part Affinity Fields for Part Association (PAF)

 给定一组检测到的身体部位(如图 5a 中的红色和蓝色点所示),我们如何组装它们以形成未知人数的全身姿势? 我们需要对每对身体部位的相关性进行置信度测量,即它们属于同一个人。 测量关联的一种可能方法是检测肢体上每对部位之间的额外中点,并检查其在候选部位检测之间的发生率,如图 5b 所示。 然而,当人们聚集在一起时——正如他们倾向于做的那样——这些中点可能会支持错误的关联(如图 5b 中的绿线所示)。 这种错误关联的出现是由于表示中的两个限制:(1)它只编码每个肢体的位置,而不是方向; (2) 它将肢体的支撑区域减少到一个点。

为了解决这些限制,我们提出了一种新的特征表示,称为部分亲和场PAF,它保留了肢体支撑区域的位置和方向信息(如图 5c 所示)。 部分亲和力是针对每个部位的二维向量场,如图 1d 所示:对于属于特定肢体的区域中的每个像素,二维向量编码从肢体的一个部分指向另一部分的方向。 每种类型的肢体都有一个对应的亲和场,连接其两个相关的身体部位。

 以这个图片为例,这是一个右手的小臂部分的肢体图像,假设x_{j1,k}x_{j2,k}是第k个人的肢体c的部位j1和j2的groundtruth值。如果点P在这个肢体c上,那么L_{c,k}^{*}(p)就是的值就是从j1指向j2的一个向量,而对于其他不在这个部位上的点,这个向量都是0。

定义了groundtruth的部分亲和矢量场( part affinity vector field)L_{c,k}^{*},对于一个图像点p来说,

其中 v = (x_{j2,k} - x_{j1,k})/||x_{j2,k} - x_{j1,k}||_{2}是在这个肢体骨骼方向上的单位向量。

在这个肢体上的一系列点p都可以由以下这个式子定义:

l_{c,k} = ||x_{j2,k} - x_{j1,k} ||_{2}是肢体长度, \sigma_{l}是肢体宽度,v_{\perp }是垂直于v的一个向量。

真实的PAF(part affinity field)是将上面提出的对于每个人k计算的值再进行平均化:

其中n_{c}(p)是在某个点p上对于所有k个人的非零向量个数。(不同人的肢体重叠的像素的平均值)

在测试期间,我们通过计算候选部件位置的连接线段的相应 PAF 上的线积分来测量候选部件之间的关联。 换句话说,我们测量预测的 PAF 与将通过连接检测到的身体部位形成的候选肢体的对齐情况。具体地说,对于两个任意的关节点位置d_{j1}d_{j2},可以通过计算PAFs的线性积分可以来表征肢体关联的置信度:

其中p(u)是通过均匀采样u的方式插值两个候选身体部位d_{j1}d_{j2}的位置得到的位置,用来得到这两个关节点的相似度:

Multi-Person Parsing using PAFs 多人关节连接

 在得到身体部位候选的confidence maps时使用NMS以获得一组离散的身体部位候选位置。 对于每个部分,由于图像中有多个人或错误的候选,我们可能有多个候选者(如图 6b 所示)。 这些候选部分定义了大量可能的肢体。我们使用公式10中定义的PAF上的线积分计算对每个候选肢体进行评分。找到最佳解析的问题对应于一个已知为 NP-Hard 的K维匹配问题(如图 6c 所示)。在这篇文章中,我们提出了一种贪婪的松弛(greedy relaxation),它能持续地产生高质量的匹配。我们推测原因是由于 PAF 网络的大感受野,成对关联分数隐式编码了全局上下文

我们首先得到一组多人的身体部位检测候选集D_{j}D_{j}=\left \{ d_{j}^{m}, for j\in \left \{ 1...J \right \},m\in \left \{ 1...N_{j} \right \} \right \},

N_{j}是部位j的候选位置的数量,d_{j}^{m}\in \mathbb{R}^{2}是身体部分j的第m个检测候选的位置。这些部件检测候选者仍然需要与来自同一个人的其他部件相关联-换句话说,我们需要找到实际上是相连的肢体的部件检测对。定义z_{j_{1}j_{2}}^{mn}\in \left \{ 0,1 \right \},表示两个探测出来的候选的关节点位置d_{j_{1}}^{m}d_{j_{2}}^{n}是否有连接,并且目标是为所有可能连接的集合找到最优分配,定义Z:

 

给出以上约束条件,其中D_{j1}D_{j2}是部位探测出来的关节点位置候选,这两条约束条件限制了没有两个相同的肢体是包含了同一个身体部位的。在这个约束的基础上,通过匈牙利算法在图里寻找最大匹配权重。

二分图

是图的一种特例,图中包含两个点群X、Y,同一个点群内无边,不同点群之间有边。

 

为了减小计算量,将关节点多分图转化为关节点二分图,再进行匹配,见下图

二分图匹配

二分图上进行匹配,一个点群中的点只与另一个点群中的点进行唯一匹配,即任意两条边没有公共顶点

在寻找多人的全身姿势时,确定Z是一个K维匹配问题。 这个问题是NP Hard并且存在许多relaxations。 在这项工作中,我们为优化添加了两个relaxation,专门针对我们的领域。 

  • 我们选择数量最小的边来获得人体姿态的生成树骨架,而不是使用完整的图,如图所示6c。 
  • 其次,我们进一步将匹配问题分解为一组二部匹配子问题,并独立地确定相邻树节点中的匹配,如图6d所示。

我们在3.1节中给出了详细的比较结果,证明了最小贪婪干扰以很小的计算代价很好地逼近了全局解。这是因为相邻树节点之间的关系是由PAF显式建模的,而在内部,不相邻树节点之间的关系是由CNN隐式建模的。 这个属性的出现是因为 CNN 训练有一个大的感受野,并且来自非相邻树节点的 PAF 也会影响预测的 PAF

有了这两个relaxation,优化被简单地分解为:

 

因此,我们使用公式12-14 独立地获得每种肢体类型的肢体连接候选。而最后对于所有的肢体(骨骼)候选,我们可以将共享相同部位检测候选的连接组装成多人的全身姿势。 我们对树结构的优化方案比对全连接图的优化要快几个数量级。

多人关节连接举例

Results

Results on the MPII Multi-Person Dataset

表1比较了我们的方法与其他方法在相同的288幅测试图像子集和整个MPII测试集上的MAP性能,以及在我们自己的验证集上的自我比较。此外,我们还比较了每幅图像的平均推理/优化时间(以秒为单位)。对于288个图像子集,我们的方法比以前最先进的自下而上方法高出8.5%的MAP。值得注意的是,我们的推理时间减少了6个数量级。

对于整个MPII测试集,我们的方法在没有尺度搜索的情况下已经大大超过了以前最先进的方法,即在MAP上增加了13%的权重。使用3比例尺搜索(×0.7、×1和×1.3)进一步将MAP的性能提高到75.6%。AP与以前自下而上的方法的比较表明了我们的新特征表示PAF在关联身体部位方面的有效性。基于树结构,我们的贪婪解析方法比基于完全连通图结构的图形切割优化公式获得了更高的准确率。

在表 2 中,我们在验证集上显示了不同骨架结构的比较结果,如图 6 所示,即从 MPII 训练集中排除的 343 张图像。 我们基于全连接图训练我们的模型,并通过选择所有边(图 6b,通过整数线性规划近似求解)和最小树边(图 6c,通过整数线性规划近似求解,和图 6d)来比较结果 ,由本文提出的贪心算法解决)。它们的相似性能表明,使用最小边就足够了。我们训练了另一个只学习最小边的模型来充分利用网络容量-本文提出的方法-被表示为图6D(SEP)。这种方法在保持效率的同时优于图6C甚至图6B。原因是部件关联通道的数量要少得多(树的13条边与图的91条边)使得训练收敛变得更容易。 

图7a示出了对我们的验证集的消融分析。对于PCKh-0.5的阈值,使用PAFS的结果比使用中点表示的结果要好,具体来说,它比一个中点高2.9%,比两个中间点高2.3%。对人体肢体的位置和姿态信息进行编码的PAF能够更好地区分常见的交叉情况,例如重叠的手臂。使用未标记人员的面具进行训练可以进一步提高2.3%的性能,因为它避免了对训练过程中损失的真实正面预测的惩罚。如果我们将地面真实关键点定位与我们的解析算法结合使用,我们可以获得88.3%的mAP值。在图 7a 中,由于无定位误差,我们使用 GT 检测进行解析的 mAP 在不同的 PCKh 阈值上是恒定的。 使用 GT 连接和我们的关键点检测实现了 81.6% 的 mAP。 值得注意的是,我们基于 PAF 的解析算法使用 GT 连接实现了类似的 mAPas(79.4% 对 81.6%)。 这表明基于 PAF 的解析在关联正确部分检测方面非常稳健。 图 7b 显示了跨阶段的性能比较。 mAP 随着迭代细化框架单调增加。 图 4 显示了各个阶段预测的定性改进。

Results on the COCO Keypoints Challenge

Table3:Openpose在COCO2016 keypoint挑战赛上的结果 

Openpose在小尺度人群(AP^{M})上的准确性低于自上而下的方法。 原因是我们的方法必须处理的范围要大得多,图像中的所有人都可以在一次拍摄中扫视。相比之下,自上而下的方法可以将每个检测区域的斑块重新缩放到更大的尺寸,从而在较小的尺度上受到较小的退化。

Table4:在COCO验证集子集上的自我比较实验 

如果我们使用GT Bbox和单人CPM,使用CPM可以达到自上而下方法的上限,为62.7%的AP;如果我们使用最先进的对象检测器Single Shot Multi Box检测器(SSD),性能下降了10%,这表明自顶向下方法的性能严重依赖于Person检测器。相比之下,我们的自底向上方法达到了58.4%的AP。如果我们改进我们的方法的结果,将单人CPM应用于我们的方法分析的每个重新缩放的估计人的区域,我们得到了2.6%的总体AP增加。请注意,我们只更新对两种方法完全一致的预测的估计,从而提高了精确度和召回率。

我们期望更大范围的搜索可以进一步提高我们的自下而上方法的性能。图8显示了我们的方法在COCO验证集上的错误明细。大多数误报来自于不精确的定位,而不是背景混乱。这表明在捕捉空间相关性方面比在识别身体部位外观方面有更大的改进空间

Runtime Analysis

为了分析我们方法的运行时性能,我们收集了不同人数的视频。原始帧大小为1080×1920,我们在测试过程中将其调整为368×654以适应GPU内存。运行时分析是在一台装有NVIDIA GeForceGTX-1080 GPU的笔记本电脑上进行的。在图8D中,我们使用人物检测和单人CPM作为自上而下的比较,其中运行时间大致与图像中的人数成正比。相比之下,我们的自下而上方法的运行时间随着人数的增加而增加得相对较慢

该运行时间主要由两部分组成:(1)CNN处理时间,其运行复杂度为O(1),随人数的变化而不变;(2)多人解析时间,其运行复杂度为O(n^{2}),其中n表示人数。然而,解析时间对总体运行时间没有显著影响,因为它比CNN处理时间少两个数量级,例如,对于9个人,解析花费0.58ms,而CNN花费99.6ms。对于19个人的视频,我们的方法达到了8.8fps的速度。

Discussion

在本文中,我们考虑了这种感知的一个关键组成部分:实时算法来检测图像中多人的 2D 姿势。 我们提出了关键点关联的显式非参数表示,该关联对人体四肢的位置和方向进行编码。 其次,我们设计了一种用于联合学习部位检测和部位关联的架构。 第三,我们证明了贪心解析算法(greedy parsing algorithm)能够产生高质量的身体姿势解析,即使图像中的人数增加也能保持效率。 

  • 9
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【资源说明】 基于C++图像视觉实现的坐姿检测矫正提醒系统源码(openpose算法+演示视频+论文).tar基于C++图像视觉实现的坐姿检测矫正提醒系统源码(openpose算法+演示视频+论文).tar基于C++图像视觉实现的坐姿检测矫正提醒系统源码(openpose算法+演示视频+论文).tar基于C++图像视觉实现的坐姿检测矫正提醒系统源码(openpose算法+演示视频+论文).tar基于C++图像视觉实现的坐姿检测矫正提醒系统源码(openpose算法+演示视频+论文).tar基于C++图像视觉实现的坐姿检测矫正提醒系统源码(openpose算法+演示视频+论文).tar基于C++图像视觉实现的坐姿检测矫正提醒系统源码(openpose算法+演示视频+论文).tar 基于C++图像视觉实现的坐姿检测矫正提醒系统源码(openpose算法+演示视频+论文).tar 基于C++图像视觉实现的坐姿检测矫正提醒系统源码(openpose算法+演示视频+论文).tar基于C++图像视觉实现的坐姿检测矫正提醒系统源码(openpose算法+演示视频+论文).tar 基于C++图像视觉实现的坐姿检测矫正提醒系统源码(openpose算法+演示视频+论文).tar 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,也适用于小白学习入门进阶。当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!
A: 下面是一个常见的 LaTeX 论文阅读报告模板,您可以根据需要进行修改: \documentclass[12pt]{article} \usepackage[utf8]{inputenc} \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{graphicx} \usepackage{float} \usepackage{hyperref} \usepackage{listings} \title{阅读报告} \author{作者名字} \date{} \begin{document} \maketitle \section{论文概述} 在这一部分中,您需要介绍一下要报告的论文。具体来说,您需要提供以下信息: \begin{itemize} \item 论文的标题和作者; \item 论文发表的会议或期刊; \item 论文研究的问题和主要贡献; \item 论文使用的方法和实验设计等。 \end{itemize} \section{研究问题} 在这一部分中,您需要介绍论文中所涉及的研究问题,并说明该问题的重要性。您需要回答以下问题: \begin{itemize} \item 论文研究的问题是什么? \item 该问题在相关领域中的位置和历史背景是什么? \item 为什么该问题很重要?它解决了什么实际问题,或者对研究有什么重要的贡献? \end{itemize} \section{主要贡献} 在这一部分中,您需要介绍论文所提出的主要贡献。具体来说,您需要回答以下问题: \begin{itemize} \item 该论文提出了什么新方法或新技术? \item 该方法或技术相对于现有方法和技术有什么优势? \item 该方法或技术在实验中的表现如何?它是否能够解决研究问题? \end{itemize} \section{方法和实验设计} 在这一部分中,您需要介绍论文使用的方法和实验设计。您需要回答以下问题: \begin{itemize} \item 该论文使用了哪些方法和技术? \item 这些方法和技术对解决研究问题有什么帮助? \item 该论文进行了什么样的实验设计?实验结果如何? \end{itemize} \section{评价和讨论} 在这一部分中,您需要评价论文的内容,并提出自己的批评和建议。您需要回答以下问题: \begin{itemize} \item 您认为该论文的论点和论据是否充分?有哪些不足之处? \item 该论文是否有进一步的研究方向和改进空间? \item 您是否有其他的评价和建议? \end{itemize} \section{结论} 在这一部分中,您需要总结整个阅读报告,并得出自己的结论。您需要回答以下问题: \begin{itemize} \item 该论文的主要研究问题是什么? \item 该论文的主要贡献是什么? \item 您对该论文的评价和建议是什么? \end{itemize} \end{document}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值