有兴趣的朋友可以相互讨论技术

标记:公式(2)、(3)、(4)、(5)、(6)不太理解

论文:https://arxiv.org/abs/1612.00137

官方代码:https://github.com/MVIG-SJTU/AlphaPose

上海交大的AlphaPose介绍:http://mvig.sjtu.edu.cn/research/alphapose.html

总结

该论文指出,定位和识别中不可避免的会出现错误,这些错误会引起单人姿态估计(single-person pose estimator,SPPE)的错误,特别是完全依赖人体检测的姿态估计算法。因而该论文提出了区域姿态估计(Regional Multi-Person Pose Estimation,RMPE)框架。主要包括:

1、symmetric spatial transformer network (SSTN)   对称空间变换网络:在不准确的bounding box中提取单人区域

2、Parametric Pose Non- Maximum-Suppression (NMS)    参数化姿态非最大抑制:解决冗余

3、Pose-Guided Proposals Generator (PGPG)。  姿态引导区域框生成器:增强训练数据

并且使用symmetric spatial transformer network (SSTN)、deep proposals generator (DPG) 、parametric pose nonmaximum suppression (p-NMS) 三个技术来解决野外场景下多人姿态估计问题。

1.Introduction

多人姿态估计有两个主流方案:Two-step framework & Part-based framework。第一种方案是检测环境中的每一个人体检测框,然后独立地去检测每一个人体区域的姿态(自顶向下的方法)。第二种方案是首先检测出环境中的所有肢体节点,然后进行拼接得到多人的骨架(自底向上的方法)。第一种方案,姿态检测准确度高度依赖目标区域框检测的质量。第二种方案,如果两人离得十分近,容易出现模棱两可的情况,而且由于是依赖两个部件之间的关系,所以失去了对全局的信息获取。

论文采用自顶向下方法。我们的目标是检测出正确的人体姿态即使在第一步中检测到的是不精准的区域框。为了说明之前的算法存在这些问题,我们使用Faster-RCNN和SPPE Stacked Hourglass进行实验,主要的问题是位置识别错误和识别冗余,如图1和图2所示。事实上,SPPE对于区域框错误是非常脆弱的,如下图所示。红框为真实框,黄框为检测到的框(IoU>0.5)。由于定位错误,黄框得到的热图无法检测到关节点。

冗余的区域框会产生冗余的姿态。冗余:两个bounding box框住同一个人,会检测两遍,形成两个骨架

因此,提出了RMPE(区域多人姿态检测)框架,提升SPPE-based性能。在SPPE结构上添加SSTN,能够在不精准的区域框中提取到高质量的人体区域。并行的SPPE分支(SSTN)来优化自身网络。使用parametric pose NMS来解决冗余检测问题,在该结构中,使用了自创的姿态距离度量方案比较姿态之间的相似度。用数据驱动的方法优化姿态距离参数。最后我们使用PGPG来强化训练数据,通过学习输出结果中不同姿态的描述信息,来模仿人体区域框的生成过程,进一步产生一个更大的训练集。

我们的RMPE框架是通用的,适用于不同的人体探测器和单人姿势估计器。将RMPE框架应用于MPII(多人)数据集,达到state-of-the-art效果76.7 mAP。我们还进行了切除研究,以验证我们框架中每个组件的有效性。

2.Related Work

2.1 Single Person Pose Estimation

在单人姿态估计中,姿势估计问题被简化为仅尝试去估计单人的姿势(人被认为主导了图像内容)。传统的方法考虑图像结构模型。例如:树模型和随机森林模型是非常有效的人体姿态估计模型。基于图的模型,如随机场模型和依赖图模型,也得到了广泛的研究。

近年来,深度学习已成为一种很有前途的目标/人脸识别技术,人体姿态估计也不例外。代表作包括DeepPose、基于DNN的模型和各种基于CNN的模型。除了简单的估计人体姿态,一些研究同时进行人的分析和姿势估计。对于单人姿态估计,只有在正确定位人体位置的情况下,这些方法才能取得良好的效果。然而,这一假设并不总是令人满意。

2.2. Multi Person Pose Estimation

1、part-based framework的代表性工作:Chen等人提出了一种利用图形模型来解析大面积遮挡人体的方法,该模型将人体建模为人体各部位的柔性组合。Gkiox等人使用k-poselets来联合检测人并预测人体姿势的位置。最后的位姿定位由所有激活的poselets加权平均得到。Pishchulin等人提出了DeepCut算法,首先检测所有身体部位,然后通过积分线性规划对这些部位进行标记和装配,Insafutdinov等人提出了一种基于ResNet的更强的部位检测器和更好的增量优化策略。虽然基于部位(part-based)的方法已经证明了良好的性能,但是由于只考虑了较小的局部区域,因此它们的身体部位检测器可能很弱。

2、Two-step Framework:我们的工作遵循two-step framework。我们使用基于SPPE方法的CNN来估计姿势,而Pishchulin等人使用传统的图像结构模型进行姿态估计。特别是,Insafutdinov等人提出了一个类似的两步流水线,它使用Faster R-CNN作为人体检测器,一元的DeeperCut作为姿态估计器。他们的方法在MPII数据集上的mAP只能达到51.0,而我们的方法可以达到76.7。随着目标检测和单人姿态估计的发展,two-step framework可以进一步提高其性能。本文的目的是最大限度地发挥SPPE的作用从而解决two-step framework下人体检测不完善的问题。

3. Regional Multi-person Pose Estimation

RMPE的处理过程如图:

如图3所示。首先通过目标检测算法,得到人体的区域框。然后将该区域框输入到STN+SPPE模块中,自动检测人体姿态。再通过p-Pose NMS进行refine。在训练过程中,使用Parallel SPPE来避免局部最优并进一步提升SSTN的效果。设计PGPG结构来增强已有的训练集。

图解:Symmetric SSTN=STN+SPPE+SDTN,

STN:空间变换网络,对于不准确的输入,得到准确的人的框。输入候选区域,用于获取高质量的候选区域。

SPPE:进行单人姿态估计,

STDN:空间逆变换网络,将估计的姿态映射回原始的图像坐标。产生姿态建议。

Pose-NMS:消除额外的估计到的姿态,去除冗余姿态。

Parallel SPPE:训练阶段作为额外的正则项,避免陷入局部最优,并进一步提升SSTN的效果。包含相同的STN及SPPE(所有参数均被冻结),无SDTN。测试阶段无此模块。

PGPG(Pose-guided Proposals Generator):通过PGPG网络得到训练图像,用来训练SSTN+SPPE模块。

3.1. Symmetric STN and Parallel SPPE

目标检测算法得到的人体区域框不是非常适合SPPE,因为SPPE算法是训练在单人图像上并且对于定位错误十分敏感。通过微小变换、修剪的方法可以有效的提高SPPE的效果。SSTN+Parallel SPPE可以在不完美的人体区域检测结果下有效的增强SPPE的效果,结构如图4所示。

图解:表示了SSTN + Parallel SPPE模块的结构:(STN)我们使用网格生成器和采样器去提取一个人的所在区域,SDTN结构接收一个由定位网络生成的参数θ,然后计算参数γ。在Parallel SPPE中,制作一个中心定位姿态标签。我们冻结Parallel SPPE的所有层的所有权重来增强STN去提取一个单人姿态区域。

不准确的输入(图中左侧input),先姿态估计,把估计结果映射到原图,以此来调整原本的框,使框变的精准。其中中间黑色虚线的框认为是准确的输入(即中心化的输入,将姿态对齐到图像中心)。

1、STN and SDTN

STN (spatial transformer network)and SDTN(spatial de-transformer network,空间反变换网络)。STN能很好地自动选取ROI,使用STN去提取一个高质量的人体区域框。数学形式如下:

公式解释\theta _{1}\theta _{2}\theta _{3} 都是二维空间的向量,\left \{ x_{i}^{s},y_{i}^{s} \right \}\left \{ x_{i}^{t},y_{i}^{t} \right \} 分别表示转换之前的坐标和转换之后的坐标。

在SPPE结束的时候,姿态结果会被映射到原始的人体区域框中(就是把姿态线绘制到对应的人体区域框中)。因此,SDTN应该将估计的人体姿态反映射回原图坐标中(这样子的话人体姿态线就会存在于原图尺寸的图像中)。SDTN中需要为反向转换和生成网格计算一个\gamma

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

为了在SDTN中进行反向传播,∂J(W,b)∂θ\frac{\partial J\left ( W,b \right )}{\partial \theta }可以分解为:

(5)式表示\theta _{1}\theta _{2},(6)式表示\theta _{3}

在得到高质量的人体检测框后,可以使用现成的SPPE算法来继续高精度的人体姿态检测,在训练过程中,SSTN和SPPE一起进行fine-tuned。

2、Parallel SPPE

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

3、Discussions

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

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

3.2 Parametric Pose NMS

人体定位不可避免的会产生冗余的检测框,同时也会产生冗余的姿态检测。所以,姿态非极大值抑制是十分有必要的,用来消除冗余。以前的方法要么效率不高,要么精确度不高。

在论文中,提出了一种parametric pose NMS(参数化姿态非极大值抑制)方法。对于一个人的姿态P_{i},有m 个关节点记做\left \{ \left \langle k_{i}^{1},c_{i}^{2} \right \rangle,\cdot \cdot \cdot , \left \langle k_{i}^{m},c_{i}^{m} \right \rangle\right \},k为坐标位置,c为置信度分数。

1、NMS schema

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

2、Elimination Criterion(估计标准)

我们需要定义姿态相似度来消除那些离得较近且比较相似的姿态。定义了:一种姿态距离度量d\left ( P_{i},P_{j} \mid \Lambda \right )来衡量姿态之间的相似度,\eta作为消除标准的阈值,在这里的\Lambda表示函数d(⋅)的一个参数集合。我们的消除标准可以定义为下面的形式:

如果d(⋅)小于阈值\eta,那么f(⋅)的输出是1,表示姿态P_{i}应该被消除,因为对于参考的P_{j}来说,P_{i}是冗余的。

距离函数定义为两种距离的和:

\lambda 为平衡姿态距离和空间距离的权重。

3、Pose Distance

用于消除和其他姿态太近且太相似的姿态,假定姿态P_{i}的bbox是B_{i},其定义为如下的soft matching公式(不同特征之间score的相似度):

其中B\left ( k_{i}^{n} \right )为中心在k_{i}^{n}的box,并且每个坐标B\left ( k_{i}^{n} \right )为原始坐标B_{i}的1/10。

解释:如下图所示。其中蓝框为关节点 P_{i} 的框,红框为宽高为蓝框1/10的子框,黑点为蓝框中心,即关节点 P_{i} 的中心 k_{i},三角为在红框内关节点 P_{j} 中心 k_{j} ,五星为在红框外关节点 P_{j} 中心 k_{j} 。则进行消除时,对三角使用上式的 if 进行消除,因该点在子框内;对五星使用 otherwise,因该点在子框外。

空间距离用于衡量不同特征之间空间距离的相似度,令 k_{i}^{n}k_{j}^{n} 为不同特征中心,其定义如下:

4、Optimization

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

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

1、Data Augmentation

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

2、Insight

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

3、Implementation

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

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

4、Proposals Generation

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

4.Experiments

所提出的方法在具有大遮挡情况的两个标准多人数据集上进行定性和定量评估:MPII 和MSCOCO 2016关键点挑战数据集。

4.1、Evaluation datasets

MPII:多人,3844训练,1758测试,有遮挡和重叠,28000个单人姿态估计样本。使用单人数据集中所有训练数据和90%多人训练集来微调SPPE,留下10%用于验证。

MSCOCO关键点挑战。105698训练,80000测试,100W个关键点。

4.2. Implementation details in testing

基于VGG的SSD-512作为人体检测器。检测到人体后,高度和宽度都延伸30%。使用stacked hourglass模型做单人姿态估计。对于STN网络,采用ResNet-18作为本地化网络,使用较小的4-stacked hourglass作为并行SPPE。

为了标明框架的应用能力,人体检测器可替换为基于Faster-RCNN的ResNet152,姿态估计可以替换为PyraNet。

4.3. Results

MPII。如表1所示,在手腕,肘部,踝关节和膝盖等困难关节时达到了72 mAP 的平均准确度。

MSCOCO。利用MSCOCO keypoints的训练集和验证集,来fine-tune SPPE,并留下5000图像用于验证。表2为测试结果,优于其他方法。

4.4. Ablation studies

为了验证这三个组件的有效性:SSTN,PGPG,PP-NMS。移除或者使用常规方法来替代。在MPII上实验,结果见表3.

Symmetric STN and Parallel SPPE

为了验证SSTN和parallel SPPE的重要性,进行了两个实验。在第一个实验中删除了SSTN和并行SPPE。在第二个实验中,我们只删除了并行SPPE并保持SSTN结构。这些结果均显示在表3(a)中。我们可以在去除平行SPPE时观察到性能下降,这意味着具有单人图像标签的并行SPPE能有效提升STN提取单个人区域的效果,以最小化总损失。

Pose-guided Proposals Generator

在表3(b)中,证明PGPG在系统中也起着重要作用。在本实验中,首先从训练阶段中删除数据增强。最终的mAP降至73.0 %。然后我们将数据增强技术与简单基线进行比较。通过抖动(jitter)人体检测器产生的边界框的位置和纵横比来形成基线,以产生大量附加的提议框。我们选择那些IoU > 0.5的ground-truth框。从我们在表3中的结果(b),我们可以看到我们的技术优于基线方法。根据分布生成培训建议可以看作是一种数据重新抽样,可以帮助模型更好地适应人类的建议。

Parametric Pose NMS

由于姿势NMS是一个独立的模块,我们可以直接从最终模型中删除它。实验结果如表3(c)所示。我们可以看到,如果删除了参数化姿势NMS,则mAP会显着下降。这是因为冗余姿势数量的增加最终会降低精确度。我们注意到之前的姿势NMS也可以在一定程度上消除冗余检测。最先进的姿势NMS算法[ 6,9]用于替换我们的PP-NMS,对结果于表3(C)。这些方案的效果不如我们的,因为缺少参数学习。在效率方面,在包含1300张图像的验证集上,[6]的姿势NMS需要62.2秒,而使用我们的算法只需1.8秒。

Upper Bound of Our Framework 上界

使用ground-truth的边界框作为人体提议框,如表3(e),84.2mAP ,(在MSCOCO keypoints 上63.3mAP),表示使用更强的人体检测器,我们的框架可以有更好的性能,证明RMPE框架是通用的,适合不同的人体检测器。

4.5. Failure cases

我们在图7中展示了一些失败案例。可以看出,SPPE无法处理很少出现的姿势(例如,在第一幅图像中,执行“人旗”的人)。当两个人高度重叠时,系统混乱,无法将他们分开(例如第二张图片左边的两个人)。人检测器的缺失也会导致人体姿势(例如,在第三张图像中躺下的人)检测不到。最后,当一个物体看起来与人类非常相似时,仍然可以检测到错误的姿势,这可以欺骗人类探测器和SPPE(例如第四幅图像中的背景物体)。

5. Conclusion

在本文中,提出了一种新的区域多人姿态估计(RMPE)框架,其在准确性和效率方面明显优于最先进的多人人体姿态估计方法。当SPPE适用于人体检测器时,它验证了two-step框架的潜力,即人体检测器+ SPPE。我们的RMPE框架由三个新颖的组件组成:具有并行SPPE的对称STN、参数化姿势非最大抑制(parametric pose NMS)和姿态引导区域框生成器(PGPG)。特别地,PGPG通过学习给定人体姿势的边界框提议的条件分布,对训练数据进行了大量的论证。由于使用对称STN和并行SPPE,SPPE能够很好地处理人的定位误差。最后,参数化姿势NMS可用于减少冗余检测。

在未来的工作中,探索训练我们的框架以端到端方式与人类检测器结合的可能性。

 

参考:

https://arxiv.org/abs/1612.00137

https://www.cnblogs.com/darkknightzh/p/12150171.html

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

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

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐