Paper Reading:Regional Multi-person Pose Estimation

来源:互联网 发布:免费卡盟源码 编辑:程序博客网 时间:2024/06/10 08:26

  这是上海交大的一篇文章,他们的项目主页在RMPE: Regional Multi-person Pose Estimation

  这篇文章的主要目标是解决在野生图片下的多人姿态估计问题,因为人体的识别要忍受来自定位和识别的双重误差,这会导致很多基于CNN的识别算法无能为力。这篇文章使用了symmetric spatial transformer network (SSTN)、deep proposals generator (DPG) 、parametric pose nonmaximum suppression (NMS).三个技术来解决这一问题。
  
  首先作者对现有的姿态估计的算法进行了评(吐)价(槽):单人姿态估计的方法不能用在多人上面,而多人姿态估计方法虽然效果不错,但是太慢了(485 seconds per image)。然后作者在下面提出了自己的模型。

整体模型

  整体的模型如下图所示
这里写图片描述

  这是一个类似于r-cnn的模型,整个过程分为了2步。
  1、首先用一个human detector来提取建议框(human proposal),在这里作者选取了SSD(Single Shot MultiBox Detector. In ECCV, 2016)作为他们的human detector。
这里作者加了一句:今年来human detector虽然有很大的进步,但是得到的大部分人体建议框还是不能达到作为SPPE(single person pose estimation)输入的标准。所以需要SEEP有一定的鲁棒性来解决这一问题,后面会提到针对这一问题的解决方案。
  2、将上一步提取到的人体建议框输入到一个”Symmetric STN + SPPE” 结构中去,来完成每个输入建议框的姿态估计。

详细介绍

  ”Symmetric STN + SPPE” 模型入下图
  这里写图片描述
  如图所示,整体的 ” Symmetric STN + SPPE” 是由一个 STN网络+一个SPPE网络+一个反向的STN网络 组成。

  这个模型的识别过程主要如下(关于STN在前一篇的博客中讲到了,这里使用了一个反向的STN,推导过程原文中也已经给出,就不详细推导)
  1、首先将上一步得出的human proposal在长宽方向上个延迟20%,以确保可以把人完整的框起来。而且经过验证,这样确实可以把大部分的人整个框起来。
  2、然后经过一个STN网络将延伸过的图像进行仿射变换,可以生成一个比较精确的、适合作为SPPE输入
  3、把SPPE的输出经过与前边相反的STN变换,将坐标变换回原来的坐标系,完成整个的识别过程。

Parallel SPPE

  为了进一步加强STN提取单个的人物形象,作者提出了Parallel SPPE,其结构入下图
这里写图片描述
  
  将之前的”Symmetric STN + SPPE” 结构做了修改,保持前边的STN不动,将后面的”SPPE+SDTN”分成了2条支路,上边的支路还是原来的”SPPE+SDTN”,下边的支路是一个单纯的SPPE,并且将他的label设置为single person pose。训练时使用2条支路输出的总误差来训练网络,在测试时将下面的 Parallel SPPE丢掉,只使用Symmetric STN进行前向传播。

Deep Proposals Generator

数据增强

  symmetric STN + SPPE应该用human detector产生的人体建议框充分训练,不然测试时就不是很准确。然而通过human detector每张图片只能产生20~30张人体建议框,这是远远不够的。所以需要适当的数据增强。
  这里写图片描述
  这里训练了一个网络(如图),输入是一个建议框(框内是白色,框外是黑色)和一个标注的姿态的图片,输出是这个建议框的分数。之后随机生成大量的建议框,输入到该网络,然后选取高于阈值的分数的框作为下一阶段的输入。

Parametric Pose NMS

  最后网络的输出的结果中,不可避免的会出现冗余,所以我们要通过非极大值抑制(NMS)来消除这些冗余。
  我们假设P为网络输出的pose,它包含m个joints,分别为{<k1i,c1i>,<k2i,c2i>...<kmi,cmi>},其中kji为第j个joint的位置,cji第j个joint的得分。
  
  这里定义了一个淘汰标准:
     f(Pi,Pj|Λ,η)=d(Pi,Pj|Λ,λ)η
  当d(.)小于阈值 η时,判定Pi相对于Pj应该被删除。
 
  这里的判定标准定义为:
    d(Pi,Pj|Λ)=Ksim(Pi,Pj|σ1)+λHsim(Pi,Pj|σ2)
    
  其中的KsimHsim分别如下。

    这里写图片描述
  上式中的B(kni)是指一个中心在kni的框,大小为0.1倍的整个人体的size。tanh 操作过滤掉了大部分低置信度的joint。如果2个joint的confidence都比较高,则输出接近于1。

    这里写图片描述
  这个就主要是2个joint之间的举例度量了,若离得比较近则输出较小,更容易判定为同一个pose。

  上面式子中的σ1σ2λη全都是试出来的。

1 0