Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

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

GitHub代码:https://github.com/CMU-Perceptual-Computing-Lab/openpose

CVPR2017年的一篇论文,实时多人姿态估计,开创性地提出了PAFs(Part Affinity Fields),在MPII和COCO数据集上都取得了不错的结果。

在正式介绍网络结构之前,为了更清晰理解该网络,因此先介绍本篇论文最大的亮点PAFs。

Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields    Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

PAFs,指的是一个由joint指向joint的2D unit vector。对于每一个pixel,如果该pixel在一个limb上,那么就赋予该pixel一个unit vector,方向由joint指向joint,否则,就赋予0。pixel是否在limb上遵循如下公式:

Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

对于multi-person可能存在肢体交叉的情况,因此,对于每个pixel,其值由所有person在该pixel的的vector做一个求和然后取平均,公式如下:

Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

至此,PAFs就已经介绍完了,下面介绍该网络的结构。

网络结构基于2016年的一篇CVPR论文Convolutional Pose Machines,论文地址:https://arxiv.org/abs/1602.00134,在Convolutional Pose Machines网络结构的基础上额外添加一个branch用于训练PAFs,以下是它的网络结构:

Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

网络通过一个10层的VGG-19对输入进行finetuned,得到一组feature maps F 输入stage1。branch1用于预测confidence maps,branch2用于预测PAFs,在每个stage之后,将branch1和branch2以及feature maps F 做一个concat,作为下一个stage的输入。在每个stage的branch的输出,计算一次loss,loss计算公式如下:

Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields        Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

其中,当p点缺少annotation的时候,W(p) = 0。

对于confidence maps的annotation,由于存在joint距离过近的情况,因此作者做了如下的处理:

Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

取最大而不取平均,通过这种方法来分离距离过近的joint的confidence map的peak,从而保证了精度。

对于multi-person parsing,通过PAFs,可以很轻易地实现joint的matching。作者使用了一种贪心算法,通过对所有matching组合的limb上的PAFs进行积分求和,选取最大的结果作为matching的结果。

有别于传统的top-down的结构,比如SSD + Convolutional Pose Machines,作者采用了先检测joint再进行matching的bottom-up的方法,对于人数的增长不敏感,time cost主要集中在CNN网络对于confidence maps和PAFs的predict中,因此大幅提升了multi-person的pose estimation速度。

 

 

个人笔记,水平有限,欢迎指正。