OpenPose:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields
OpenPose 是一个 down-up 的多人姿态检测模型,一次性输出所有人的关节点 heatmap 预测,为了区分同一个人的关节点,模型同时输出关键点之间的亲和力PAFs,最终通过求二部图,得到预测结果
什么是 OpenPose ?
- OpenPose 是第一个用于多人2D 姿态检测的开源实时系统,包括身体,脚,手和面部关键点
- OpenPose 是一个 down-up 的多人姿态检测模型,一次性输出所有人的关节点 heatmap 预测,为了区分同一个人的关节点,模型同时输出关键点之间的亲和力PAFs,最终通过求二部图,得到预测结果
OpenPose 的网络结构?
- 1)a)该方法将整个图像作为 CNN 的输入,以共同预测(b)用于身体部位检测的heatmap和(c)用于部位关联的 PAF;(d)解析步骤对关联的身体部位候选者执行一组二部图匹配;(e)最终将它们组装成图像中所有人的完整姿势
- 2)某一 stage 上的结构,其中 是 PAF 输出(w, h, 2), 是关键点打分 (w, h),其中 PAF 在每个位置使用 2D 向量编码该位置信息,每个阶段的预测及其对应的图像特征针对每个后续阶段进行级联。训练时对每个 stage 进行监督
- 3)多 stage 情况下的 PAF 输出,可以看出早期阶段左右身体部位和四肢之间存在混淆,但通过后期的全局推断,估计值越来越精确
OpenPose 的 Confifidence Maps for Part Detection?
- 理论上每个confidence map是对应groundtruth位置单个像素响应(为1),其他像素点位0;但在实际应用中,我们是用高斯函数生成对应groundtruth位置,周围像素响应(高斯响应)
- 单人场景下,一个 GT heatmap 只有一个峰,多人场景下,一个 GT heatmap 包含每个人 k 对应可见点 j 都应该有峰值响应
- 当多个峰之间有重叠时,对于一个位置,设置其最大值为 GT 值,如上图两个最大峰有重叠的区域,那么该区域取最大值 (虚线)
OpenPose 的2D 向量场集PAFs(part affinity vector field)解释?
- PAFs 用来编码部位之间的关联程度,上图的如右肘关节和右腕关节
- 生成 GT PAFs 的过程如右图,其中 和 表示第 k 个人的 GT 关节点位置,P 是图片上的某点,下面展示如何求取该点的 GT 值:
- 1)限制 P 点的范围:表示生成 PAFs 属于两个关节点形成的肢体之间,即满足以下公式,其中 表示肢体单位方向向量, 表示其的垂直向量, 表示肢体长度, 是肢体宽度
- 2)给 GT PAFs 赋值:对于哪些满足以上要求的点进行赋值,直接赋值单位向量即可,2 维平面的单位向量也是 2D 的,所以每个位置使用 2 个数编码方向
- 3)归一化:最终向量场 groundtruth 是平均图像中的所有个人,其中 表示非 0 点数的平均值
- 预测使用 PAFs 时,理论上是两个关节点之间向量场上的线段积分,但是由于计算复杂,直接在两个关节点之间等距采样即可
OpenPose 的 Part Affifinity Fields for Part Association?
- a 图模型输出的 6 个预测,如何将这 6 个预测按人分为 3 组呢?b、c 展示了两种编码预测点之间关系的方法
- b 图预测两个节点之间的中间节点,由于其缺少方向,发现还是有可能分组错误 (绿线)
- c 图预测两个节点之间的局部关联场(PAF),它将整个肢体区域作为支撑域,并同时编码位置和方向信息
OpenPose 的 Multi-Person Parsing using PAFs?
OpenPose 输出的 heatmap 分支得到全图的所有关节点预测,PAF 分支得到关节点之间的关系图,连接所有预测关节点,并使用 PAF 输出作为边权重,问题转为找出最大权重的图匹配。其中D 表示预测得到获选关节点,z 表示两个关节点之间的关系,通过 PAF 计算得到
OpenPose 使用两个简化图匹配问题,一是选用最少的边来或得一个人的骨架,而不是使用完整的图 ©;将匹配问题分解成一组二部匹配的子问题,独立地确定点的匹配 (d)
OpenPose 的损失函数?
- 训练时,对多个 stage 进行监督,损失函数使用 MSE 计算。以下是某个 stage 的损失,其中 S、L 分别表示打分和 PAFs,w (p)表示二值 mask
- 对所有 stage 损失汇总,得到总损失
参考:
- 2D多人关键点:《Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields》_paf时间开销_Godswisdom的博客-CSDN博客
- OpenPose论文解读——Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields(OpenPose学习笔记1) - 知乎
- 论文翻译 || openpose – Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_magic_ll的博客-CSDN博客
- 论文学习笔记:OpenPose: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields_wangyc1208的博客-CSDN博客
- [多图/秒懂]白话 OpenPose,最受欢迎的姿态估计网络 - 知乎