RMPE:Regional Multi-Person Pose Estimation------多人区域姿态估计 论文学习

本小白刚开始学习论文RMPE,在博客里面稍微总结一下,方便以后快速查阅。

虽然目前最新的人体检测器表现良好,但是在定位和识别的方面存在着不可避免的错误。这些错误会导致SPPE的失败,特别是完全取决于人体检查的结果。

该论文从三个方面改进当前不精确的姿态估计:空间对称转换网络(Symmetric Spatial Transformer Network SSTN)、参数化姿态非最大化抑制(Parametric Pose Non-Maximum-Suppression NMS)和引导姿态样本生成器(Posse-Guided Proposals Generator PGPG)该论文可以解决不精确的框图问题和冗余的检测(如Figure 1)。

由于识别多人的姿态是一个很大的挑战,最近的尝试解决问题的方法有两种,两步走(two-step framework)框架和基于部分框架(part-based framework)。两者各有优缺点,其中two-step framwork先检测出人物的大概位置然后进行框图,随后在框的图片当中的进行姿态检测,其缺点是精确度很大的概率取决于框图的质量。而part-based framework先检测人体的特定的部位然后进一步检测人的姿态,其缺点是如果多个人靠的近则会产生模棱两可的结果并且如果图片当中缺失人的某个部分则可能无法识别出人体。

该论文是检测出正确的人体姿态即使是在第一步当中检测到的是不精确的边框图。为了说明之前算法研究所存在的问题,作者引用了Faster-RCNN和SPPE Stacked Hourglass进行验证。主要的问题有位置识别错误以及识别冗余。所以,SPPE对于区域框图是不稳定的,即使是使用了IoU(检测的准确率)>0.5的边界框,可能检测到的人体识别结果依然存在错误。冗余的边框图会产生冗余的姿态。

为了解决以上的问题,作者提出了RMPE框架,来提升SPPE-based人体姿态算法的性能。在SPPE当中添加了SSTN,使得SPPE在不精准的边框图当中提取高质量的人体区域图。并行的SPPE分支SSTN来优化自身的网络。并且使用parametric pose NMS来解决冗余检测问题,通过自创的姿态距离度量方案来比较姿态之间的相似度。用数据驱动来优化姿态距离参数。最后,作者使用PGPG来强化训练样本。通过学习输出结果中不同姿态的描述信息,来模仿人体边框图的生成过程,进一步产生更大的训练集。并且RMPE可以检测单人和多人的区域姿态图。
RMPE:
RMPE通过人体检测器获取人的区域框,然后将区域框放入"STN+SPPE"的模块当中,自动地检测人的姿态。将检测到的姿态进一步放入parametric Pose NMS当中精炼。在训练期间,引入"并行的SPPE(Parallel SPPE)"来提升SSTN的效果。而PGPG将用来增强训练集(如Figure 3)。

SSTN和Parallel SPPE:

因为SPPE算法是训练在单人图像上并且对于定位错误十分敏感。通过微小变换、修剪的方法可以有效的提高SPPE的效果。SSTN+Parallel SPPE可以在不完美的人体区域检测结果下有效的增强SPPE的效果。STN能够很好地自动选取特征区域(region of interests)使用STN去提取一个高质量的人体区域框。数学形式如下,2D affine transformation:

其中θ1,θ2和θ3都是二维空间的向量,{xsi,ysi}和{xti,yti}分别表示转换之前的坐标和转换之后的坐标。在SPPE结束的时候,姿态结果会被映射到原始的人体区域框中(就是把姿态线绘制到对应的人体区域框中)。因此,SDTN应该将估计的人体姿态反映射回原图坐标中(这样子的话人体姿态线就会存在于原图尺寸的图像中)。SDTN中需要为反向转换和生成网格计算一个γ:

因为SDTN是STN结构的反向结构,所以可以得到以下关系:

为了在SDTN中进行反向传播,∂J(W,b)/∂θ可以分解为:

在得到高质量的人体检测框后,可以使用现成的SPPE算法来继续高精度的人体姿态检测,在训练过程中,SSTN和SPPE一起进行微调。即即使获取到不准确的边框图经过STN+SPPE+SDTN,先做姿态估计,把估计结果映射到原图,以此来调整原本的边框,使得框变成精准的,这便可以消除SPPE在边框图不精确的情况下产生的误差。

Parallel SPPE:

Parallel SPPE。为了进一步帮助STN去提取更好的人体区域位置,在训练阶段添加了一个Parallel SPPE分支。这个Paralell SPPE也是从STN中链接出来,然后和SPPE并行处理,但是SDTN被忽略掉。这个分支的人体姿态标签被指定为中心。更准确的说,SPPE网络的输出直接和人体姿态标签的真实值进行对比。在训练过程中会关闭Parallel SPPE的所有层。这个分支的权重是固定的,其目的是将姿态定位后产生的误差反向传播到STN模块。如果STN提取的姿态不是中心位置,那么Parallel SPPE会返回一个较大的误差。通过这种方式,我们可以帮助STN聚焦在正确的中心位置并提取出高质量的区域位置。在测试阶段,Parallel SPPE不会使用,因此只有在训练阶段Parallel SPPE才会产生作用。

Discussions。Parallel SPPE可以看作是训练阶段的正则化过程,有助于避免局部最优的情况(STN不能把姿态转换到提取到人体区域框的居中位置)。但是SDTN的反向修正可以减少网络的错误进而降低陷入局部最优的可能性。这些错误对于训练STN是很有影响的。通过Parallel SPPE,可以提高STN将人体姿态移动到检测框中间的能力。

感觉上似乎可以在SPPE的输出时添加一个中心定位点的回归损失来取代Parallel SPPE。然而,这种方法会降低我们整个系统的性能。尽管STN可以部分修改输入,但是不可能完美的将人定位在标签的位置。在坐标空间上的输入和SPPE标注的差异会很大程度的损害训练姿态估计的能力。这会导致我们主分支SPPE的性能下降。因此,为了确保STN和SPPE同时发挥自己的作用,一个固定权重的Parallel SPPE是不可缺少的。Parallel SPPE总是会产生较大的误差因为会将没有中心的姿态来推动STN产生一个有中心的姿态,但是不会影响到主分支SPPE的效果。

Parametric Pose NMS 参数化姿态非最大抑制

人体定位不可避免的会产生冗余的检测框,同时也会产生冗余的姿态检测。所以,姿态非极大值抑制是十分有必要的,用来消除冗余。以前的方法要么效率不高,要么精确度不高。在论文中,提出了一种parametric pose NMS(参数化姿态非极大值抑制)方法。对于一个人的姿态Pi,有m 个关节点记做{(k1i,c1i),(k2i,c2i),...,(kmi,cmi)},kji 和 cji 分别表示第 j 个部位的坐标位置和置信度分数。

NMS schema。NMS体系。回顾一下NMS:首先选取最大置信度的姿态作为参考,并且根据消除标准将靠近该参考的区域框进行消除。这个过程多次重复直到冗余的识别框被消除并且每一个识别框都是唯一的出现(没有超过阈值的重叠)。

Elimination Criterion。消去法则。 我们需要定义姿态相似度来消除那些离得较近且比较相似的姿态。我们定义了一种姿态距离度量d(Pi,Pj|Λ)来衡量姿态之间的相似度,定义η作为消除标准的阈值,在这里的Λ表示函数d(⋅)的一个参数集合。我们的消除标准可以定义为下面的形式:

如果d(⋅)小于阈值η,那么f(⋅)的输出是1,表示姿态Pi应该被消除,因为对于参考的Pj来说Pi是冗余的。

Pose Distance。姿态距离。定义距离函数dpose(Pi,Pj)。假设姿态Pi的区域框是Bi。然后我们定义一个软匹配函数:

B(kni)表示部位i的区域位置,维度上大约是整体图像的1/10。Tanh可以滤掉低置信度的姿态,当两个姿态的置信度都比较高的时候,上述函数的输出接近1。这个距离表示了姿态之间不同部位的匹配数。空间距离可以定义为:

因此最终距离可以定义为:

其中λ是一个权重系数,来平衡这两种距离,Λ表示{σ1,σ2,λ},参考之前的pose NMS进行参数设置。

Optimization 。优化。给定检测到的冗余姿态,消除标准f(Pi,Pj|Λ, η)的这四个参数被优化以实现验证集的最大mAP。由于在4D空间中的穷举搜索是难以处理的,所以在迭代的过程中,固定两个参数变化另外两个参数进行搜索最优解。一旦收敛,这些参数将会固定,并用在测试阶段。

Pose-guided Proposals Generator 姿态引导的区域框生成器

Data Augmentation 数据增强

对于Two-Stage姿态识别(首先定位区域,然后进行姿态点定位),适当的数据增强有助于让SSTN+SPPE适应不完美的人体区域定位结果。否则,模型在测试阶段运行时可能不是很适应奇怪的人体定位结果。一种直观的方法是在训练阶段使用检测出来的区域框。然而,目标检测对于一个人而言只会产生一个定位区域。通过使用生成的人体定位,可以产生一定得效果。因为我们已经有了每一个人的真实位置和检测出来的定位框,我们可以通过与人体检测结果一致的样本生成一个大样本的训练集。通过这种技术,我们可以进一步提高系统的性能。

Insight

我们寻找对于不同姿态之间真实值和实际预测值的相对偏移量的分布。为了进一步明确过程,这里定义P(δB|P),δB表示检测到的人体位置的坐标和实际人体的标注坐标之间的偏移量,P是真实情况中一个人。我们可以根据目标检测得到的推荐位置生成一些训练集。

Implementation

直接学习P(δB|P)对于易变的人体姿态是比较困难的。因此我们使用P(δB|atom(P)),atom(P)表示P的原子组成部分(P是一个姿态,包含多个关节点)。为了得到姿态的原子结构,我们首先排列好所有的具有相同长度肢体。然后使用K-means聚类得到的聚类中心做为姿态的原子姿态。

对于每一个共享原子姿态a的实例,计算真实值和检测边界框的偏移量。然后使用该方向上的真实边框的边长进行归一化处理。处理后,偏移量会形成一个频率分布,并将我们的数据拟合成高斯混合分布。对于不同的原子姿态,我们会得到不同的高斯混合分布,如图5:

 

Proposals Generation

在训练阶段的SSTN+SPPE,对于每一个在训练集中标注的姿态,我们首先找到对应的原子姿态a。然后通过密集采样计算P(δB|a)来得到增强的训练建议。

 

 

参考博客:

https://www.cnblogs.com/taoshiqian/p/9593901.html

https://blog.csdn.net/TwT520Ly/article/details/79258594

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值