AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点

论文原文:https://arxiv.org/pdf/1612.00137.pdf

 

                                                 AlphaPose

0 Abstract

复杂环境中的多人姿态检测是非常具有挑战性的。现在最好的人体检测算法虽然已经得到了很好的效果,但是依然存在一些错误,这些错误会导致单人检测任务single-person pose estimator(SPPE)失败,尤其是那些十分依赖人体框检测结果的。这里应该是描述的自顶向下的检测技术,使用Faster-RCNN等算法进行目标检测(与之对应的有CPM等)。目前该算法得到了在MPII数据集上最高的mAP值。这个算法是由三部分组成的:

Symmetric Spatial Transformer Network (SSTN),

Parametric Pose NonMaximum-Suppression (NMS),

Pose-Guided Proposals Generator (PGPG).

1 Introduction

在实践中,识别环境中的多人姿态要比识别图片中的单人姿态困难的多。为了解决这些问题,有两个主流的方案:Two-step framework & Part-based framework第一种方案是检测环境中的每一个人体检测框,然后独立地去检测每一个人体区域的姿态(自顶向下的方法)。第二种方案是首先检测出环境中的所有肢体节点,然后进行拼接得到多人的骨架(自底向上的方法)。

第一种方案,姿态检测准确度高度依赖目标区域框检测的质量。第二种方案,如果两人离得十分近,容易出现模棱两可的情况,而且由于是依赖两个部件之间的关系,所以失去了对全局的信息获取。我们的方法依然是自顶向下的方法。我们的目标是检测出正确的人体姿态即使在第一步中检测到的是不精准的区域框。为了说明之前的算法存在这些问题,我们使用Faster-RCNN和SPPE Stacked Hourglass进行实验,主要的问题是识别错误和识别冗余。事实上,SPPE对于区域框错误是非常脆弱的,而且冗余的区域框会产生冗余的姿态。即使是使用IoU>0.5的边界框认为是正确的,检测到的人体姿态依然可能是错误的。因此,提出了RMPE(区域多人姿态检测)框架。在SPPE结构上添加SSTN,能够在不精准的区域框中提取到高质量的人体区域。一种新奇的SPPE分支(SSTN)来优化自身网络。使用parametric pose NMS来解决冗余检测问题,在该结构中,使用了一种新奇的姿态距离度量方案比较姿态之间的相似度。用数据驱动的方法优化姿态距离参数。最后我们使用PGPG来强化训练数据,通过学习输出结果中不同姿态的描述信息,来模仿人体区域框的生成过程,进一步产生一个更大的训练集。

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第1张图片

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第2张图片

2.1 Single Person Pose Estimation

单人姿态估计总是需要保证人被正确的定位。

2.2 Multi Person Pose Estimation

Part-Base 先检测关键点,再连接;先检测肢体

Two-Step 目标检测+单人姿态估计

3 Regional Multi-person Pose Estimation

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第3张图片

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

3.1 Symmetric STN and Parallel SPPE(对称空间变换网络(STN)结构和并行单人姿态估计(SPPE))

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

 

 AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第4张图片

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

 

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

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第5张图片

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

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第6张图片

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

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第7张图片

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

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第8张图片

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

总结:不准确的检测框经过STN+SPPE+SDTN,先做姿态估计,把估计结果映射到原图,以此来调整原本的框,使框变成精准的。

   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的效果。

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

人体定位不可避免的会产生冗余的检测框,同时也会产生冗余的姿态检测。所以,姿态非极大值抑制是十分有必要的,用来消除冗余。以前的方法要么效率不高,要么精确度不高。在论文中,提出了一种parametric pose NMS(参数化姿态非极大值抑制)方法。对于一个人的姿态Pi,有m 个关节点记做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。然后我们定义一个软匹配函数:

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第9张图片

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

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

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

 

3.3. 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:

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第10张图片

Proposals Generation

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

四、  实验

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

4.1评估数据集

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

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

4.2测试实现细节

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

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

4.3结果

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

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第11张图片

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

 AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第12张图片

 

4.4消除实验

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

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第13张图片

 

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框架是通用的,适合不同的人体检测器。

 

五、 结论 

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

 

 

AlphaPose运行

1.先下载模型代码

git clone -b pytorch https://github.com/MVIG-SJTU/AlphaPose.git

2.安装相关依赖包

pip install -r requirements.txt

3.下载两个模型文件

 duc_se.pth 和yolov3-spp.weights,分别将他们放在./models/sppe and ./models/yolo文件夹里

原作者提供的下载链接:

链接:https://pan.baidu.com/s/1JOQlOlMUzJeHFi5f5jmOlg
提取码:c5ob

 

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第14张图片

使用以下命令运行:

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第15张图片

 

我是用windows10 pytorch1.2GPU版本  运行的,在运行测试图像和测试视频时,出现报错信息。

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第16张图片

解决方案:

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第17张图片

 

更改后可以使用:

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第18张图片

 

AlphaPose —— RMPE:Regional Multi-Person Pose Estimation 论文翻译+源码运行+知识点_第19张图片

 

找的一个视频测试了一下运行效果:

运行效果:

AlphaPose运行效果

 

知识点:

人体姿态信息可以进一步进行动作识别、人机信息交互、异常行为检测等。

 

在2D人体姿态识别中,自顶向上和自顶向下方法有什么区别?

自底向上的人体姿态识别算法:

自底向上方法也称为基于部件(part-based)的方法,它首先检测出图像或视频中的人体的关键点,然后对于不同的关键点进行匹配,将属于同一个人的关键点连接起来。

这类方法的识别速度通常不会受图像或视频中人数的影响,并能用较小的模型来实现,因此一般比较快速;但在人体关键点的连接过程中,对于距离近或存在遮挡的人体,准确率较低。

在自底向上的方法中,人体姿态识别又可以通过关键点回归和关键点检测两种方式来实现。

(1)一般来说,关键点回归方法期望得到的是精确的坐标值(x,y)。早期使用深度网络解决人体姿态识别的DeepPose就是采用回归方法。

(2)通过关键点检测,检测方法通常希望获得图像的热图(heatmap),并将热图中响应值较大的区域视为人体关键点,每个关键点对应一个热图。假设共需要检测20个点的响应,那么将会产生20个热图,每一个热图是对特定感兴趣的关键点的响应。

由于关键点的检测受热图尺寸的影响较大,各个团队针对网络结构做了优化。提出堆叠沙漏网络结构。这种结构不仅在姿态识别、动作识别方向被广泛应用,还推广到检测及分类领域。该结构主要由下采样与上采样操作构成,其下采样是通过卷积及池化操作实现的,以获得分辨率较低的特征图,降低计算复杂度;之后通过反卷积操作,使图像特征的分辨率提高。该网络结构提取的特征融合了多尺度及上下文信息,具有较强的预测物体位置的能力。此外可以将多个沙漏结构进行堆叠,从而使整体网络结构更具表达能力。

 

自顶向下的人体姿态识别算法:

自顶向下的方法将人体姿态识别任务排斥分为人体检测与关键点检测两个步骤。首先设计人体检测器,在图像或视频中找到目标人体,然后针对每个人体分别做关键点检测。这类方法虽然姿态识别准确度较高,但运算时间会随着图中人体数量的增多大致呈线性增长。

此论文RMPE就是自顶向下。自顶向下的算法通常设计为多任务框架,同时处理人体检测、关键点检测、人体分割等问题。框架中的多个任务往往是互相关联并相互促进的,通常采用联合优化或者交替优化的优化策略。当检测出人体候选框或人体区域后,我们不仅可以有效降低关键点检测过程中背景区域的干扰,还能在关键点连接过程中确定哪些关键点属于同一个人体。

 

人体姿态检测面临的问题和挑战:

一方面,关键点检测不仅存在背景干扰,还会由于背景的遮挡或多个人体的相互遮挡使得关键部位缺失,给人体的关键点部位连接带来困难。另一方面,人体不同关键点检测难易程度不同,对于较为灵活的关键点,如手臂,脚裸,手指等的检测尤为困难,。针对这些问题,研究者给出了一系列的解决方法,如预测关键点连接方向、对困难关键点设计精炼网络等。

 

 

 

参考文章,如有侵权请联系删除

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

https://blog.csdn.net/qq_38522972/article/details/82993216?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160091446519724839264537%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160091446519724839264537&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v28-1-82993216.pc_first_rank_v2_rank_v28&utm_term=AlphaPose&spm=1018.2118.3001.4187

《百面深度学习——算法工程师带你去面试》

https://github.com/MVIG-SJTU/AlphaPose/issues/195

 

 

你可能感兴趣的:(论文阅读)