OpenPose论文笔记《Realtime Multi-Person 2D Human Pose Estimation using Part Affinity Fields》

OpenPose最新论文《Realtime Multi-Person 2D Human Pose Estimation using Part Affinity Fields》笔记

摘要

能有效检测图像中多个人的2D姿态。使用PAFs (Part Affinity Fields),来学习关键点和人体的关联。这种结构对global context(全局上下文)进行编码,自下而上的解析。特点:多人,高精度,实时。通过序列结构神经网络的两个分支来联合学习:关键点位置、关键点之间的联系。该方法取得了2016关键点检测挑战赛冠军,准确率与效率都大大超过了MPII基准。

一、    简介

难点:1.每张图中,人的数量、位置、大小,都未知。 2.人与人之间的行为(接触、遮挡等)会干扰不同身体关键点的联系。 3.人数多使得运算复杂性增加,保证实时性很困难。自上而下的方法(先检测出人,再进行单人的姿态估计)会因为人越多计算量越大,而且严重依赖检测效果。

PAFs(Part Affinity Fields,部分亲和域???个人感觉:关键点亲和场,表示关键点配对的矢量关系)是二维矢量场的集合,表示肢体的位置和方向(也代表了两个关键点的关联程度)。

 

二、    方法

    执行过程如下图所示,一张输入图像w*h,经过两个分支,一个得到confidence maps (表示关键点位置,该集合记为S),一个得到PAFs(表示关键点的关联,该集合记为L)。然后转化成图上的匹配问题,使得边权值最大的二分图匹配(后文使用匈牙利算法解决)。

 

2.1Simultaneous Detection and Association(检测与关联)其实是介绍了整体的网络结构

    原图经过VGG-19,得到feature maps,记为F,经过如图所示的网络,该网络分上下两个分支,每个分支都有t个阶段(表示越来越精细),每个阶段都会将feature maps进行融合。其中     表示网络。

 

 

为了引导网络不同的分支做不同的预测任务,使用不同的损失函数,如下所示。其中带上标*的是ground truth,带上标t的是不同阶段的预测值,p是每一个像素点,W(p)=0代表该点缺失标记,防止惩罚了true positive predictions(真阳性的预测)。每个阶段的中间监督通过定期补充梯度来解决消失的梯度问题。

 

 

 

   2.2 Confidence Maps for Part Detection(人体区域检测的置信图)

置信度图S*由ground truth的关键点生成,每一张置信度图是对特定关键点的2D表示(如果图像中只有一个人且关键点可见,则每个置信度图应存在单个峰值;若图像中有k个人,其中该关键点可见的有j个,比如j个脖子,则应该有 j 个峰值)。S的意义理解为对于图像属于关键点j的概率

首先对第k个人产生部位j的置信度图。其中是图中第k个人部位j的位置,p是图像坐标,表示了峰值的蔓延程度,

 

总置信度图的计算公式为:

 

取最大置信度图而不是平均值,是为了峰值附近的精确度保持不同,如下图所示。在预测置信度图时通过非极大值抑制来获得身体关键点的候选区域。

 

非极大值抑制:假设有N个候选框,(1)将所有框的得分排序,选中最高分对应的框,(2)遍历其余的框,如果和当前最高分框的重叠面积(IOU)大于一定阈值,我们就将框删除。3)从未处理的框中继续选一个得分最高的,重复上述过程。。。以此来保留各个待检测的区域,最佳的检测框。

    2.3 PAFs

已知关键点,如何形成未知人数的全身姿态?需要对每一种关键点的连接进行置信度的度量,图a是所有的连接候选;另一种方式是附加每对连接的中点,如图b,检查中点的发生率,这样错误率依然很高。错误的原因是:1.只编码位置信息,没有方向信息;2.将一个区域只用一个点去表示。

 

    PAFs是一个2D矢量场,保留了位置和方向,如图c所示。令和表示ground truth中的关键点j1,j2的坐标,这两个关键点组成第k号人的一个肢体c,如果一个点P在这个肢体上面,如图所示,则的值为j1指向j2的单位矢量;其他点都是零向量,如公式8。每一个点上都有一个向量,L可以理解为对于图像中肢体的单位向量表示

 

 

在肢体上的点P满足下式(其实代表的就是P在肢体对应的矩形内)

 

其中是肢体的宽度,是肢体的长度,v-是垂直矢量。

点乘 又叫向量的内积、数量积,是一个向量和它在另一个向量上的投影的长度的乘积;是标量。点乘 反映着两个向量的“相似度”,两个向量越“相似”,它们的点乘 越大。

一张图像中肢体c的PAFs是(重叠处,多个人的同一肢体)所有人物进行平均得到(此情况很少出现)

 

Nc(P)是P点处所有非0向量的个数,即k个人重叠肢体在像素上的平均。

在测试时,通过预测出的PAFs沿着候选区域计算关键点之间的线积分,与肢体方向做对比,来表示这两个关键点连接后是肢体的可能性。具体的说,预测的两个关键点的位置是和,从预测出的PAFs中采样,Lc表示沿着线段求这两个关键点相关联的置信度。

 

其中p(u)是两个部位(关节点)和之间内插的位置。

在实践中,通过对u的均匀间隔采样来近似求积分。

 

2.3 多人的PAFs

对检测出来的置信度图执行非极大值抑制,获得离散的关键点位置候选集。由于图中有多人,对于每种关键点,有若干候选,因此有很多可能的肢体,如图6b所示。通过计算PAF上的线积分(公式10)评估每一个候选肢体。找到最优肢体是一个NP问题,在本文中使用一个贪心松弛策略(匈牙利算法?),使得每次都能产生高质量的匹配,其根据是:由于PAF网络的大感知场,成对关联分数隐含地编码了全局上下文。

 

    首先,得到一系列关键点候选(整张图像多个人),记为Dj={},表示关节j的图中第m个候选关键点。这些关键点候选需要跟同一个人的其他关键点进行关联,找到关键点的成对关系,即肢体。定义变量={0或1}表示关键点候选和是否关联。算法目标:找到所有最佳关联,记为Z。

 

    考虑一对关键点j1,j2(例如脖子,右臀)组成肢体c,找到最佳匹配,是最大权重二分图匹配问题:节点是候选集Dj,边的权值由公式10计算,二分图匹配选择最大权重的边,使得没有边共享节点(由公式13-14强制要求)。找最佳二分图匹配使用匈牙利算法。

  

当找到多人的全身姿势时,确定出Z是NP Hard问题并且存在许多松弛。专门针对这个领域,该论文增加了两个松弛:1.选择边最少的生成树来构造人体姿态骨架(不使用完全图),如图6c;2.将这个匹配问题进一步分解成一个个的子问题,独立地确定相邻树节点的匹配,如图6d。在3.1节展示了详细的比较结果,证明最小贪心推理可以近似全局最优解,而计算消耗却大大减少。原因在于相邻树节点之间的关系由PAF明确建模,在内部,非相邻节点之间的关系由CNN隐式建模。此属性的出现是因为:使用大型感知场训练CNN网络,而非相邻树节点的PAFs也影响预测的PAF。

通过这两个松弛策略,该优化目标为:

 

因此,我们独立地使用公式12-14获得每种肢体类型的肢体连接候选者。通过所有肢体连接候选,将共享相同关键点候选的连接组装成多人的全身姿势。树结构上的优化方案比完全连通图上的优化要快很多。

 

三、    结果

在两个基准上评估:1.MPII human mutil-person dataset 2. COCO 2016 keypoints challenge dataset . 包含了不同场景、拥挤、遮挡、接触、比例变化。

3.1 MPII Multi-Person

使用参考论文22的工具包来测量基于PCKh阈值的所有身体部位的mAP.简单的说,准确率高,运行极快。

在全部测试集上,3种尺度(0.7,1,1.3),大大提高准确率。

   

表2.说明贪心策略可行,效率提高很多,且效果更好(收敛更快)。

 

3.2 COCO key points challenge

在此数据集上不是所有指标都最好,原因是该数据集人员突出,自上而下方法裁取单个人的变化尺度很小。自上而下的单人CPM(也是该团队的工作)有更好的指标。

3.3 运行时间分析

自顶向下的方法:人体检测+CPM,与该方法比较。本方法快。

猜你喜欢

转载自www.cnblogs.com/taoshiqian/p/9335525.html
今日推荐