Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

#一.论文的简介
Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields提出了一种多人姿态估计的新方法,通过卷积神经网络输出四肢的位置和矢量信息,通过图的匹配把各个关键点连接在一起,从而实现人体姿态估计.该系统在COCO 2016 keypoints challenge和MPII Multi-Person benchmark上都获得第一的优秀成绩.

#二、2D人体姿态估计存在的挑战

  • 复杂的图片背景;
  • 人与人之间肢体相互接触等相互作用引起复杂的空间干扰;
  • 图片中的人数、人的位置、尺度,人数会影响计算消耗的时间。

Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第1张图片

#三、 主流的姿态估计方法

  • 本文介绍了top-down和down-top两种主流人体姿态检测方法。top-down 方法先检测出一个人,再对这个人进行姿态估计。down-top是先检测处关键点,再通过推理来确定每个人的姿态。
  • top-down方法,由于需要先检测出人,所以计算时间随着图片中人数的增加而增加。如果检测的人属于false positive就会输出错误的姿态。
  • down-top方法主要挑战是在怎么处理各个关键点之间的关联,例如采用全连接图去解决,会出现NP-hard problem。
  • 本文中使用的方法是down-top。通过卷积神经网络提取一张图片中的部位置信图和部位亲和向量场,再把两者结合起来通过贪心推理和图的匹配输出每个人的姿态。
    Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第2张图片

#四、深度神经网络的结构

  • 网络结构是由{VGG-19的前十层+两层CNN}和{CNN-Branch1、CNN-Branch2}两个部分组成。
    Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第3张图片

  • 网络第一部分,是由VGG前10层+2个CNN组成,输出feature maps F。每个conv层kernel为3,stride为1,pad为1。Pooling层,采用MaxPooling,kernel为2,stride为2。假设网络数据输入层大小为wh,则第一部分网络输出F的维度为128w/8*h/8。
    Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第4张图片

  • Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第5张图片

  • Branch1和Branch2两个网络是级联网络的结构,时间序列t {1,2,3,…,T}.当t=1,F为两个卷积神经网络的输入,两个卷积神经网络分别输出部位置信图S1和部位亲和向量场L1 .接下来2-T步, S t − 1 S^{t-1} St1 L t − 1 L^{t-1} Lt1、F三者进行融合做为Branch1和Branch2的输入,融合方式为每个map罗列在一起。重复T-1次,最终输出 S t S^{t} St L t L^{t} Lt
    Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第6张图片

  • Branch1和Branch2网络Loss层
    Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第7张图片

  • W§是权重,当位置p没有标注,则W§=0,避免训练期间true positive预测错误。

  • S j t ( p ) S_{j}^{t}(p) Sjt(p)是指Branch1在第t个网络中输出的第j个部位置信图上p点的置信值。 S j ∗ ( p ) S_{j}^{*}(p) Sj(p)是指ground truth的第j个身体部位图上p点的置信值。

  • L c t ( p ) L_{c}^{t}(p) Lct(p)是 Branch2在第t个网络中输出的第j个部位亲和向量场上p点的向量。 L c ∗ ( p ) L_{c}^{*}(p) Lc(p)是指ground truth的第j个身体部位亲和向量场上p点的向量。

  • 解决梯度消失的方法
    Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第8张图片

  • 为了解决梯度消失,周期性的补充梯度f. 具体做法:先求每一步的branch1的loss f s t f_{s}^{t} fst 和branch2的loss f L t f_{L}^{t} fLt 的和,最后再求总f。

#五、Part Confidence Maps

  • 在训练的时候,S*是指图片中标记的身体部位的置信图。
    Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第9张图片

#六、Part Affinity Fields

  • Part Affinity Fields是本文的核心内容,Part Affinity Fields是
    指在肢体区域内保存位置和方向信息,以2D的向量场表示,如图1。以每个肢体关键点都指向别的肢体,如图2所示。每种肢体都有一个相应的Affinity Field 连接它相关的身体部位。
    Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第10张图片
    Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第11张图片

    Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第12张图片

#六、Multi-Person Parsing using PAFs
Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第13张图片

Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第14张图片

  • 在一张图有多个人的情况下, 的取值是一个NP-hard问题。本文中提出了两种优化方法:①以最少边数来获得人体姿态的生成树c而不是采用完全图b。②把匹配问题分解为两个匹配子问题并单独确定相邻子节点的匹配,如图d。
    Openpose论文阅读 | Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_第15张图片

你可能感兴趣的:(深度学习)