2D Pose Estimation



【极简笔记】Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

论文地址:https://arxiv.org/abs/1611.08050

文章的核心是提出一种利用Part Affinity Fields(PAFs)的自下而上的人体姿态估计算法。研究自下而上算法(得到关键点位置再获得骨架)而不是自上而下算法(先检测人,再回归关键点),是因为后者运算时间会随着图像中人的个数而显著增加,而自下而上所需计算时间基本不变。
PAFs
PAFs是用来描述像素点在骨架中的走向,用L(p)表示;关键点的响应用S(p)表示。先看主体网络结构,网络采用VGG pre-train network作为骨架,有两个分支分别回归L(p)和S(p)。每一个stage算一次loss,之后把L和S以及原始输入concatenate,继续下一个stage的训练。随着迭代次数的增加,S能够一定程度上区分结构的左右。loss用的L 2  L2范数,S和L的ground-truth需要从标注的关键点生成,如果某个关键点在标注中有缺失则不计算该点。
网络架构
对于S,每一类关键点有一个channel,生成ground-truth的时候是按照多个高斯分布取max的方法来保留各个点的响应峰值。对于L 则复杂一点,先看准确定义,对于第k个person的第c个肢干上的PAFs:

L  c,k (p)={v0 if p on limb c,kotherwise  Lc,k∗(p)={vif p on limb c,k0otherwise

v=(x j 2 ,k x j 1 ,k )/||x j 2 ,k x j 1 ,k || 2  v=(xj2,k−xj1,k)/||xj2,k−xj1,k||2

x j,k  xj,k表示第k个person第j 个关键点的位置。而像素点p是否落在limb(肢干)则设了一个阈值范围
limb

0v(px j 1 ,k )l c,k and|v  (px j 1 ,k )|σ l  0≤v⋅(p−xj1,k)≤lc,kand|v⊥⋅(p−xj1,k)|≤σl

其中 l c,k  lc,k σ l  σl分别表示limb长度和宽度。最后也会对所有person相同类别肢干进行平均,使得L的输出的channel与肢干种数相等:
L  c (p)=1n c (p)  k L  c,k (p) Lc∗(p)=1nc(p)∑kLc,k∗(p)

知道PAFs和关键点位置 d j  dj之后,需要评估这俩关键点的相关性。文章中就是算了一下这两个关键点连线上各像素点PAF向量与连线向量的点积的积分:
E= u=1 u=0 L c (p(u))d j 2  d j 1  ||d j 2  d j 1  || 2  du E=∫u=0u=1Lc(p(u))⋅dj2−dj1||dj2−dj1||2du

p(u)=(1u)d j 1  +ud j 2   p(u)=(1−u)dj1+udj2

在得到关键节点以及边权之后,计算姿态骨架已经完全转化成了一个图问题。文中没有采用全局优化的方法,而是利用匈牙利算法对相邻节点进行了最优匹配(比如一堆左手腕节点和一堆左手肘节点,利用小臂的PAF计算边权,再进行最优匹配),最后获得整个的人形姿态骨架。

实验效果也非常好,主要是速度快。附带代码地址https://github.com/CMU-Perceptual-Computing-Lab/openpose
result

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值