OpenPose:使用PAF的实时多人2D姿势估计。
code:GitHub - ZheC/Realtime_Multi-Person_Pose_Estimation: Code repo for realtime multi-person pose estimation in CVPR'17 (Oral)
paper:[1611.08050] Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields (arxiv.org)
0 摘要
一种检测图像中多人的2D姿态的方法。 使用非参数表示(关节亲和力场PAF)学习将身体部位与图像中的人体相关联。对全局上下文进行编码,允许自下而上的解析步骤,在保持高精度的同时实现实时性。该架构旨在共同学习关节位置和它们通过同一顺序预测过程的两个分支进行关联。 在COCO 2016关键点挑战中排名第一。
1 介绍
人体2D姿势估计的问题,主要集中在寻找个体的身体部位上。 推断图像中的多个人的姿势,困难在于:首先,每个图像可能包含未知数量的人;其次,人与人互动导致遮挡,空间干扰,部位的关联困难。 第三,运行时复杂度随人数而增加,给实时性带来了挑战。
常用的方法是:自上而下的单人姿势估计,但缺点很多。自下而上的方法:联合标记了部位检测的候选对象,并将其与单个人体相关联。但是,在完全连接的图上求解整数线性规划问题是一个NP难题,平均处理时间约为几小时。
本文提出了一种有效的方法,进行多人姿势估计:通过部分亲和力字段(PAF),展示了关联分数的自下而上的表示形式,该部分是一组2D矢量场,可对肢体在图像域上的位置和方向进行编码。 同时推断出检测和关联的这些自下而上的表示方式,可以很好地编码全局上下文,从而可以实现贪心解析高质量的结果,而计算成本少。
图1 顶部: 多人姿势估计。 属于同一个人的身体部位被链接。 左下:部位亲和力场(PAF)对应于连接右肘和右肢的肢体腕。 颜色编码方向。 右下:放大预测PAF的视图。 在场中的每个像素处,一个2D向量编码肢体的位置和方向。
2 方法
图2 总体流程。将整个图像作为两分支CNN的输入,以共同预测(b)中所示的身体部位检测,以及(c)中所示的部位关联的部位亲和力场(PAF)。 解析步骤执行一组二分匹配以关联身体部位候选者(d)。 最终组装成图像中所有人的全身姿势(e)。
将大小为w×h的彩色图像作为输入(图2a)。并为图像中的每个人生成解剖学关键点的二维位置(图2e)。首先,前馈网络同时预测身体部位位置的一组2D置信度图S(图2b)和部位亲和力的一组2D矢量场L,它们编码各个部位之间的关联度(图2c)。集合有J个置信图,每个关键点部位一个,。集合 有C个向量场,每个肢体一个, 。 Lc中的每个图像位置都编码一个2D向量(如图1所示)。最后,通过贪心推断来解析置信度图和亲和力场(图2d),以输出图像中所有人的2D关键点。
2.1 同时检测和关联
图3 两个分支的多级CNN。第一个分支中的每个stage预测置信度图S,第二个分支中的每个stage预测PAF。在每个stage之后,S和L以及图片的feature拼接在一起传入到下一个stage中。
同时预测检测置信度图和PAF。网络分为两个分支:顶部分支预测置信度图,底部分支预测PAF。首先通过卷积网络分析图像(由VGG-19的前10层初始化并微调),生成一组输入到每个分支的第一阶段的特征图F。在第一阶段,网络产生一组检测置信度图和一组PAF ,其中 ρ1 和 φ1 是在第1阶段进行推理的CNN。在每个后续阶段中,前一阶段中两个分支的预测以及原始图像特征F被拼接(concat)起来产生精确的预测。
ρt 和 φt 是在第t阶段进行推理的CNN。
图4 右手腕(第一行)和PAF的置信度图跨阶段的右前臂(第二行)。 尽管在早期阶段左右身体部位和四肢之间存在混淆,但如在突出显示的区域中所示,通过后期的全局推断,估算值将越来越完善。
图4显示了跨阶段的置信度图和PAF的细化。 为了指导网络迭代地预测第一分支中的身体部位和第二分支中的PAF的置信度图,在每个阶段的末尾应用两个损失函数,分别在每个分支处应用一个损失函数。 在估计的预测与GT map和PAF之间使用L2损失。 对损失函数进行空间加权,以解决一个实际问题,即某些数据集不能完全标记所有人。 具体而言,在阶段t的两个分支处的损失函数为:
是GT置信度图,是GT PAF,W是一个二进制掩码,当在图像位置p缺少注释时,W(p)= 0。Mask是用来避免惩罚训练期间的真实积极预测。每个阶段的中级监督都通过定期补充梯度来解决了消失的梯度问题。整体目标函数是:
2.2 用于部位检测的置信度图
评估方程式(5)中的 fs 。在训练过程中,从带注释的2D关键点中生成GT置信度图。每个置信度图是出现在每个像素上位置的特定身体部位的2D表示。如果有多个人出现,对于每个人 k,都有对应于每个可见部分 j 的峰。
首先为人体目标k生成单独的置信度图 。令 为图片中人物k的第j个部位的GT位置。 中位置 的价值定义为:
σ控制峰的扩展。网络要预测的GT置信度图是通过max运算符汇总的各个置信度图,
用置信度图的最大值代替平均值,以使峰值接近的精度仍然保持不同。在测试时,我们预测置信度图(如图4的第一行所示),并通过执行非最大抑制来获得候选的身体部位。
图5.部位关联策略。(a)身体部位检测两个身体部位类型的候选者(红色和蓝色圆点)候选连接(灰线)。(b)使用中点(黄点)表示的连接结果:正确的连接(黑线)和不正确的连接(绿线)也能满足入射约束。(c)使用PAF的结果(黄色箭头)。 通过编码位置和方向的支持PAF消除了假肢。
2.3 用于部位关联的PAF
给定一组检测到的身体部位(图5a中红色和蓝色),如何组装它们以形成未知人数的全身姿势?需要每对身体部位检测的关联的置信度测量,即它们属于同一部位人。衡量关联的一种可能方法是检测肢体上每对部位之间的附加中点,并检查其在候选对象部位检测的发生率,如图5b所示。但是当人们聚集,这些中点可能支持虚假关联(图5b中绿线)。原因是表示形式有两个限制:(1)仅对位置进行编码,而不是每个肢体的方向;(2)将肢体的支撑区域减少到单个点。
为了解决这些限制,我们提出了部位亲和力场,它同时保留肢体区域的位置和方向信息 (如图5c)。部位相似性是每个肢体的2D矢量场,也如图1d所示:对于属于特定肢体的区域中的每个像素,一个2D矢量编码从肢体一个部位指向另一部位的方向。每种类型的肢体都有一个对应的亲和力场,将其两个相关的身体部位连接在一起。如下图一个单独肢体。
人物k的肢体c的部位 j1 和 j2 的真实位置表示为 。如果一个点p在肢体上, 是一个由 j1 指向 j2的联合向量。其他的所有点,值是0。
PAF简单来说就是描述PCM热力点之间的亲和力,使用2D向量建模骨骼。
按照前文所述Part confidence map和PAF结合,按照原理说可以很好的模拟二维人体的各种效果,按照亲和力高的pcm点,属于同一个人,按理说就能够实现目标效果了,但是实际上并非如此。看到这篇文章中的大佬这样解释:DL-Practise:[多图/秒懂]白话OpenPose,最受欢迎的姿态估计网络
大体表述意思是是很多时候亲和力接近,无法完全根据此配对成功。单单依靠亲和力最大值匹配会出现不想要的结果。
转化为二分图匹配问题,解决方法是使用匈牙利算法。
通过采样和对u的等距值求和来估算积分。
图6.图的匹配。(a)带有部位检测的原始图像; (b)K部分图; (c)树结构; (d)一组二部图
参考:深度学习论文翻译(12)——OpenPose - 知乎 (zhihu.com)
论文阅读笔记(1)OpenPose:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields - 知乎 (zhihu.com) [多图/秒懂]白话OpenPose,最受欢迎的姿态估计网络 - 知乎 (zhihu.com)