SPPE由于非常依赖human detection 的结果,所以很多的因素使得SPPE结果很不稳定。
所以现在提出了RMPE框架来解决多人姿态检测问题。
RMPE主要包括三个部分:
SSTN:对称空间变压网络
NMS:parametric pose non-maximum-suppression
PGPG :pose guided proposal generator
上面的主要是可以较好地处理不精确的bbox和一些多余的detection。
现在比较流行的有两种检测方法,一个是二步法,一个是自底向上的方法。
二步法是首先检测出每个pose的bbox,然后我们独立的去检测每个框的人体的pose。
而自底向上是:首先检测所有的人的关节点,检测出来关节点以后然后再把每个人各自的关节点连接起来。
RMPE是采用的二步法,那么首先解决的问题是如何在bbox检测不好的情况下检测出精确地pose。所以提出了优化的SSTN来解决这个问题。(在SPPE这里会讲到)
其次是解决冗杂的检测问题,提出了计算pose们的距离,具体的参数采用数据驱动的方法来优化,pose的距离用来衡量pose的相似度。
至于最后的PGPG,我觉得是data augmentation。。
下面我们开始介绍模型了!
第一部分是介绍:Symmetric STN + paralell SPPE
因为SPPE太敏感了(训练的时候是用单人训练的),所以提出了SSTN+parallel SPPE 为SPPE保驾护航。
STN是用来调整检测模块输出的框(相当于在传统的一层Convolution中间,装了一个“插件”(就是矩阵的仿射变换),可以使得传统的卷积带有了裁剪、平移、缩放、旋转等特性;目标是可以减少CNN的训练数据量,以及减少做data argument,让CNN自己学会数据的形状变换,将输入图像做任意空间变换。),然后把它输入到SPPE中进行估计姿态。
SDTN是STN的逆变换,在原图中生成pose proposal,这样更好地是用标注的lable进行训练。
Parallel SPPE 用在 training phrase。他和SPPE共享了STN(也就是说他接受的也是STN生成的框框),但是没有用SDTN。特殊的是,在训练的阶段,parallel sppe的所有层的参数是固定的(我也不知道为什么),并且这个分支的human pose lable 都是指定为居中的。并且它的output直接和居中的ground truth pose进行比较,(什么意思。。)把损失值通过反向传播传递给STN,让STN聚焦正确的区域。
对于Pose NMS。和传统NMS类似,但是计算两个proposal的距离或者相似度的时候,用到pose相关的一个distance。