Alphapose算法

以下内容仅供个人学习,理解。

4.2.1 Alphapose算法简介:

        Alphapose是多人姿态估计方法。目前多人姿态估计的方法分为两类:一种是自顶向下,另一种是自底向上。自顶向下检测方法是先检测图片中的每个人的边界框,再独立检测每个人体边界框中的姿态。这种方法的缺点是高度依赖人体边界框的检测质量,如果人体边界框定位不准确,就无法正确预测人体姿态。自底向上是先检测出图像中的所有关节点,然后拼接得到人体骨架,这种方法的缺点是当人体距离相近时,关节点的分组容易出现模棱两可的情况,肢体关节不知道如何匹配到相应的骨架。Alphapose采用的是自顶向下的方法。

4.2.2 存在的问题:

        目前自顶向下检测的方法存在两个问题。

  1. 边界框定位错误:

        下图 是用Faster-RCNN(目标检测器)和SPPE(堆叠沙漏模型)进行人体姿态估计的结果,红色虚线框是人体真实位置,黄色虚线框是Faster-RCNN检测出的人体位置,黄色虚线框与红色虚线框的IoU>0.5(IoU指检测边界框和真实框的重叠面积),IoU>0.5说明黄色虚线框能够正确检测出人体。右边两张是经过SPPE进行估计出的关节点热图,热图中高亮区域表示有关节点的概率。由图2.2.1可知即使在IoU > 0.5认为边界框定位准确的情况下,黄色虚线框的关节点热图仍然不能检测出关节点位置,也就是说SPPE并没有预测出人体姿态,这是因为边界框的定位会影响SPPE的检测效果,如果想要正确检测出人体,就必须定位出更准确的人体边界框。

Alphapose算法_第1张图片 

                                                                边界框定位错误

  1. 冗余的姿态:

        下图中左图显示了Faster-RCNN检测到的人体边界框,右图显示了估计的人体姿态。每个边界框经过SPPE都会产生一个姿态,因为每个边界框都是独立操作的,所以一个人会估计出多个姿态。但我们最后只需要一个姿态,其他的姿态都是多余的,并且会对最后估计姿态产生影响,因此需要删除多余姿态。

         Alphapose算法_第2张图片

                                                                        冗余的姿态

4.2.3 Alphapose网络结构

        为了解决上面两个问题,Alphapose提出了一种区域多人姿态估计(RMPE)框架,如图所示。(RMPE)框架改进了基于sppe的人体姿态估计算法的性能。为了从边界框中提取出高质量的单人区域,设计了一种附加在SPPE上的对称空间变换网络(SSTN),为了优化该网络又并联了一条SPPE支路。针对姿态冗余问题,提出了参数化姿态非最大抑制( Parametric Pose NMS),制定一个度量标准测量姿态间的相似度,从而消除冗余的姿态。最后,用姿态引导区域框生成器(PGPG)来增强训练样本,通过学习不同姿态人体检测器的输出分布,模拟人体边界框的生成,生成大量的训练样本。

Alphapose算法_第3张图片

 

                                                区域多人姿态估计(RMPE)框架

4.2.4 SSTN对称空间变换网络

        为了解决问题一:边界框定位错误,Alphapose提出了SSTN(对称空间变换网络),如图1-6所示。如果人体检测框定位不准确,可以通过SSTN对人体检测框进行空间变换(移动或剪裁)使人体处于人体检测框的中央。

SSTN包括两部分:STN(空间变换网络)和SDTN(反向空间变换网络)。

STN利用移动、剪裁等空间变换使边人体处于检测框的中央;

SDTN将SPPE估计出的人体姿态线和图片反向变换到输入图像中。

Parallel SPPE的作用:优化STN,Parallel SPPE先估计出人体姿态,然后判断人体姿态的中心点是否在人体检测框的中心,不在中心就返回较大误差,进而达到优化STN的目的,促使STN提取更精确的人体检测框。Parallel SPPE只在训练阶段使用,在测试阶段没有Parallel SPPE。

Alphapose算法_第4张图片

                                                        SSTN对称空间变换网络

4.2.5 parametric pose NMS参数化非极大值抑制

        图片经过检测器会生成的多个人体检测框,但在用SPPE进行人体姿态估计时,多余的人体检测框也会生成相应的人体姿态,这就导致了姿态冗余,会降低人体姿态估计的精度,为了消除冗余的姿态,之前的方法大都采用非极大值抑制(NMS)。

        而为了提高人体姿态估计的精度,必须消除冗余的姿态。因此Alphapose提出了parametric pose NMS参数化非极大值抑制,用这种方法可以有效的消除冗余的姿态。

        参数化非极大值抑制由两种消除标准组成:置信度消除和距离消除,冗余姿态只要满足其中一个消除标准就会被消除。

(1)置信度消除:消除置信度相似的关节点。

                  

上图公式中各参数含义:

Pi和Pj:人体姿态
Bi:Pi检测框的1/10
ki和kj:Pi和Pj的关节点坐标
ci和cj:Pi和Pj关节点的置信度

原理:统计两个姿态关节点置信度相似的总个数,原理如图所示

                                         Alphapose算法_第5张图片

                                                                置信度消除

步骤如下:

1.根据置信度得分进行排序。

2.首先选择置信度最高的姿态Pi作为参考姿态,判断姿态Pj是否需要被消除。

3.如果关节点kj在Bi范围内,且此时两个关节点的置信度分数相似,则函数值是1,不相似函数值为1。

4.如果关节点kj不在Bi范围内,函数值为0

5.重复步骤3和4,对比姿态的17个关节点后,统计相似关节点的总数,如果超过五个,姿态Pj就会被消除

6.重复上述过程,直至检测框列表为空。

(2)距离消除:消除位置相近的关节点。

                图1-2中公式是用来计算两个姿态关节点的空间距离总和,选取置信度较高的姿态Pi,如果Pj姿态与Pi距离比较近,这说明两者重叠度较高,那么Pj就会被消除。

                                  

4.2.6 PGPG姿态引导区域框生成器

        对于Alphapose,适当的数据增强有助于训练SSTN+SPPE模块,一种增强方法是在训练阶段使用检测出来的人体检测框,但是由于在进行目标检测只能生成一个人体检测框,所以STN+SPPE模块得不到充分训练,因此需要PGPG进行数据增强。

        数据集图片中的每个人都有一个标签检测框,这些图片经过目标检测器,每个人都会产生一个预测框,我们的目的是尽可能让预测框和标签框重合,但实际情况是预测框总会或多或少的偏离标签框,我们的SSTN+SPPE模块就是针对偏移较大的预测框进行矫正,如果想训练SSTN+SPPE模块,我们就需要大量的预测框,我们可以模拟预测框的偏移生成大量的预测框,这样就可以训练SSTN+SPPE模块。但是不同姿态的检测框和标签检测框之间的偏移量分布是不同的,例如躺着和站着是两种姿态,它们的偏移量分布是不同的。Alphapose用P(δB|atom§)表示原子姿态P的偏移量分布,atom§是原子姿态(代表一个种类的姿态,通过聚类获得),原子姿态的含义可以这样理解,在一张图片里有两个人都是站立的姿态,但一个是大人,一个是小朋友,他们两者的高度和宽度有很大区别,但他们的原子姿态是一样的(都是站立姿态)。

        计算每个原子姿态预测框的偏移量,将这些偏移量与标签框进行归一化处理后,原子姿态偏移量会形成一个频率分布,将频率分布拟合成高斯混合分布。就得到了不同原子姿态的高斯混合分布。根据这些高斯分布,生成大量预测框,就可以训练SSTN+SPPE模块。

你可能感兴趣的:(算法,计算机视觉,opencv)