RMPE: Regional Multi-person Pose Estimation 论文解读

paper title: RMPE: Regional Multi-person Pose Estimation
paper link: https://arxiv.org/pdf/1612.00137.pdf
project: https://www.mvig.org/research/alphapose.html
oral or demo video:https://www.youtube.com/watch?v=RHNdbEY5xn4
github: https://github.com/MVIG-SJTU/AlphaPose
conf & anthor: ICCV 17, Hao-Shu Fang et al.(SJTU)
arXiv submit v1: 2016.12

姿态估计系列:

主要内容
这篇文章主要介绍了一种two-stage的多人人体姿态估计方法。与通常的two-stage方法一致,第一阶段使用人体检测器检测出图像中的人,第二阶段使用单个人人体姿态估计(SPPE)模型进行人体关键点检测。
文章在two-stage的算法流程基础上,有三点主要变化:
(1) 在SPPE网络之间增加了一个Spatial Transformer Network(STN,关于STN可参考 Spatial Transformer Network)
对检测出的人体的区域做一个空间变换,并在SPPE之后进行一个反变换;设置了两个SPPE网络分支,一个是(1)中所述,另外一个主要用来对网络进行正则;
(2) 提出了一种参数化的Pose NMS方法去除冗余;
(3) 使用了一种Pose Guided Porposal Generate(PGPG)方法进行训练集扩增。

网络结构
RMPE的网络结构如下图所示:
RMPE framework
首先是一个人体检测网络产生人体proposal;然后是两个单人人体姿态估计网络分支,暂称之为主SPPE和辅SPPE,辅SPPE只在训练的时候用到,训练的时候使用PGPG产生proposal;之后是Pose NMS处理模块,最后得到姿态估计结果。下面就这几个部分作更详细一些的说明。

(1)SPPE
主SPPE是一个单人人体姿态估计网络,可以是Hourglass Network等网络。这里的特殊之处是在网络之前和之后分别添加了了一个STN)和SDTN,STN会对输入的图像进行一个空间变换(如仿射变换),然后经过SPPE进行人体关键点检测,检测完后再通过SDTN变换回原来的空间状态。STN中的localization network在训练的时候是有参数参与训练的,训练得到变换参数 θ \theta θ,而SDTN中则直接使用STN中的 θ \theta θ的反向变换即可。

(2)Parallel SPPE
parallel SPPE的模型结构与主SPPE一致,但是在训练过程中,模型中的参数都是冻结的,并不参与训练,推理的时候是不需要该分支的。另外这条分支使用的label是center-located,目的是让STN变换后的pose是处在图像中心的,以降低关键点检测的难度并提高准确性。这条分支对STN起到一个正则化的作用。
既然parallel SPPE的目的是反向传播center-located的误差,那么是不是可以直接在主SPPE的SDTN模块之前加一个center-located的回归损失?文章对这个问题作出了解释,如果在主SPPE分支上直接加一个损失,输入的坐标空间可label的坐标空间表示的不同,会降低原本的SPPE的姿态估计效果。

(3)PGPG(Pose Guided Proposal Generator)
在得到人体检测的bounding box之后,可以通过对bounding box平移缩放等操作扩增数据集,提高模型的性能。文章提出的PGPG是基于已知的pose label 和检测的bounding box,通过发现不同pose的bounding box和label box之间的一些位置关系的统计情况,为不同的pose设置“pose-guided”的不同的数据增强方式。
具体来说,不同的pose P P P的lable和检测的bbox的偏移 δ B \delta B δB的分布情况是不同的,如下图,可以找到这个分布 P ( δ B ∣ P ) P(\delta B|P) P(δBP)
pose-offset distribution
但是直接求分布 P ( δ B ∣ P ) P(\delta B|P) P(δBP)是比较困难的,文章中首先都所有ground truth pose进行归一化并使用k-means进行聚类,聚类中心使用atom pose。最后将atom pose的偏移 δ B \delta B δB建模成混合高斯分布。

(4)Parametric Pose NMS
人体检测会出现冗余的bbox,导致估计的人体姿态也有冗余,需要使用NMS消除冗余,文章提出了一种参数化的Pose NMS方法,通过检测的关键点的置信度和距离来衡量不同pose之间的距离,依此进行冗余消除,方法中使用的参数都是从数据中学习到的。
具体来说,对于第i和Pose P i P_i Pi, k i j k_i^j kij c i j c_i^j cij分别表示第j个关键点的位置和置信度。对于 P i P_i Pi P j P_j Pj分别计算它们之间两个距离:
(1)一定空间范围内的对应关键点的置信度距离:
D c ( P i , P j ∣ σ 1 ) = ∑ n t a n h ( c i n / σ 1 ) ∗ t a n h ( c j n / σ 1 ) D_c(P_i,P_j|\sigma_1) = \sum_ntanh(c_i^n/\sigma_1)*tanh(c_j^n/\sigma_1) Dc(Pi,Pjσ1)=ntanh(cin/σ1)tanh(cjn/σ1)
P j P_j Pj位于以 P i P_i Pi为中心的矩形框内的时候按照上式计算置信度距离,否则直接为0;j矩形框的大小设置为 P i P_i Pi的bbox长宽各自的十分之一;tanh(·)是对置信度做一个非线性变换;
(2)对应关键点的位置距离:
D k ( P i , P j ∣ σ 2 ) = ∑ n e x p ( ( k i n − k j n ) 2 / σ 2 ) D_k(P_i,P_j|\sigma_2) = \sum_nexp((k_i^n-k_j^n)^2/\sigma_2) Dk(Pi,Pjσ2)=nexp((kinkjn)2/σ2)
最后, P i P_i Pi P j P_j Pj的距离为:
D ( P i , P j ∣ λ ) = D c ( P i , P j ∣ σ 1 ) + λ D k ( P i , P j ∣ σ 2 ) D(P_i,P_j|\lambda) = D_c(P_i,P_j|\sigma_1) + \lambda D_k(P_i,P_j|\sigma_2) D(Pi,Pjλ)=Dc(Pi,Pjσ1)+λDk(Pi,Pjσ2)
λ \lambda λ调节置信度距离和位置距离的权重。最后设置一个阈值参数 η \eta η,如果 D ( P i , P j ∣ λ ) D(P_i,P_j|\lambda) D(Pi,Pjλ)大于 η \eta η,则保留,否则去掉该pose。
上面说的NMS中的四个参数 σ 1 , σ 2 , λ , η \sigma_1,\sigma_2,\lambda,\eta σ1,σ2,λ,η都是在验证集上最大化mAP优化得到的。

论文实验和结果
(1)论文实验
实验中使用VGG-based SSD-512作为人体检测器,stacked hourglass network作为主SPPE, 4-stacked hourglass network作为parallel SPPE, ResNet-18作为STN中的localization network。

实验测试了文章中主要的几个模块对结果的影响,具体如下:
experiment result

(2)数据集上结果
MPII:
RMPE-MPII-result
COCO:
RMPE-COCO-result
(文本图片均来自原论文)

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值