第十四周周报

文章目录

  • 摘要
  • 文献阅读
  • Openpose方法
    • 模型的任务
    • 具体工作流程
    • 模型工作流程
    • PAF(部分亲合场)
      • 匈牙利算法
  • 数据标签的制作
  • 总结

摘要

上周在那篇综述文章里,分视角和单视角去实现3d人体姿态估计。我就找了一篇多视角实现的人体估计的文章。使用openpose和评估3d无标记运动捕捉,然后我看了一篇使用openpose和评估3d无标记运动捕捉。
然后我实在不懂这个openpose的原理,我就又去找了openpose的那篇文章。Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields再看。OpenPose就使用的自下而上的方法,它提出了使用一个叫做部分亲和域 (PAF)的非参数表示的方法,将识别到的身体部位与图像中的每个人相关联。模型的主要任务是:
1.预测关键点(利用生产的这个高斯热力图,然后进行回归)
2.预测关键点正确的连接

In the review article last week, we discussed the implementation of 3D human pose estimation using both multi-view and single-view perspectives. I then came across a paper on multi-view human pose estimation, which utilized OpenPose and evaluated 3D markerless motion capture. Subsequently, I read another paper that also employed OpenPose and assessed 3D markerless motion capture.
As I struggled to comprehend the principles of OpenPose, I sought out an article specifically dedicated to OpenPose. I delved into “Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields.” OpenPose adopts a bottom-up approach, proposing a method that employs a non-parametric representation called Part Affinity Fields (PAF) to associate identified body parts with each person in the image. The primary tasks of the model are as follows:
Predicting key points (utilizing generated Gaussian heatmaps and subsequently performing regression).
Predicting the correct connections between key points.

文献阅读

现在主要存在两种处理方法:
一种是自上而下的处理方法,它先用人体检测器,检测到单个人,再在检测到的单人图像上,进行单人的姿态估计,这种方法的好处是比较容易实现,但问题是姿态估计的好坏严重依赖人体检测,当两个人靠得很近或者交叉出现时,人体检测的效果会很不好,进而影响姿态估计,其次这种方法的运行时间与图像中的人数成正比,当一张图片出现的人数很多的时候,运行速度就会很缓慢。

另一种是自下而上的方法,自下而上的方法就是,先检测人体的关键位置,比如说,手,手肘,肩等。再将检测到的关键点位置相互匹配连接,组合成多人的姿态。此种方法的优点它们为早期承诺提供了稳健性(就是说人体关键部分的检测相较于检测单人要稳定),并且有可能将运行时复杂性与图像中的人数分离,然而,自下而上的方法不直接使用来自其他身体部位和其他人的全局上下文线索。(就是说原先是从一个人的身上找出人的各种关节位置,它给定了你这一个人,而现在就是单纯的从一张图片里找出所有的人手,所有的肩膀这样。没有了当前区域是一个人这个全局上下文,自下而上的第一步,寻找人体关键部分,将会变的困难很多),同时,对于关键点的匹配问题,也不是一个容易的事,有的时候两个人的身体部分会重叠在一起,怎么样不让你的手被连接到别人的肩膀上是一个很棘手的问题。

OpenPose就使用的自下而上的方法,它提出了使用一个叫做部分亲和域 (PAF)的非参数表示的方法,将识别到的身体部位与图像中的每个人相关联。
Top-down方法的优点:属于一个人的关键点,永远不可能连到其他人身上去。
Top-down方法的缺点:需要目标检测精度高,如果两个出现重叠,只能显示一个人;计算效率低,如果存在很多人,姿态估计相当慢 。
通过热度图(高斯)得到每一个关键点的预测结果。
做数据集 的时候,也是将对应的关键点转化为热度图的形式

Openpose方法

PAF是一组向量表示的,这些向量对人体身体部位之间的非结构化成对关系进行编码。相比与前人的方法OpenPose有效地从 PAF 获得成对分数,而无需额外的训练步骤。 这些分数足以让贪婪解析获得具有实时性能的高质量结果,用于多人估计。
a) 我们的方法将整个图像作为 CNN 的输入来 联合预测
(b) 身体部位检测的 置信度图 和 部位关联的 PAF
(d) 解析步骤执行一组 二部匹配 以 关联身体部位 候选。
(e) 我们最终将它们组合成图像中所有人的全身姿势

模型的任务

第十四周周报_第1张图片
1.预测关键点(高斯热力图)
2.预测关键点正确的连接

具体工作流程

第十四周周报_第2张图片
首先,前馈网络同时预测身体部位位置(图2b)的一组二维置信度图S和部分亲和度的(PAF)一组二维矢量场L(向量),其表示了身体部分之间的关联程度(图2c)。
S=(S1,S2,…,Sj)有j个置信度地图(高斯热力图),每个身体部分一个。
L=(L1,L2,L3…,LC)有c个向量场,每个肢体一个。
在L c中的位置编码2D矢量(如图1所示)。 最后,通过贪心推理(图2d)分析置信度图和亲和度字段,为图像中的所有人输出二维关键点。
总的来说,就是分别经过两个分支得到各自预测结果。基于各分支结果组合成骨架。

模型工作流程

第十四周周报_第3张图片

1.我们的架构,上图所示,同时预测编码部分到部分关联的检测置信度图和亲和性字段。 网络分为两个分支:以米色显示的顶部分支来预测置信图,以蓝色显示的底部分支预测部分亲和字段,每个分支都是一个迭代预测体系结构,遵循Wei et al。[31],这提炼了连续阶段的预测,t∈{1,…。。。 ,T},在每个阶段进行中间监督。
在这里插入图片描述

图像首先由卷积网络分析(由VGG-19的前10层初始化并被微调),生成一组输入到每个分支的第一阶段的特征图F.

在第一阶段,网络产生一组检测置信图S1 =ρ1(F)和一组部分亲和性字段L1 =φ1(F),其中ρ1和φ1是在阶段1用于推断预测的CNN网络。在随后的每个阶段中,将来自前一阶段的两个分支的预测与原始图像特征F一起串联并用于产生精确的预测。

第十四周周报_第4张图片

图4展示了经提炼的各个阶段的置信图和亲和字段。为了引导网络迭代地预测第一支路中的身体部位和第二支路中的PAF的置信度图,我们在每个阶段结束时分别应用两个损失函数。

W是在图像位置p处缺少注释时W(p)= 0的二进制掩码。 面具用于避免在训练期间惩罚真实的积极预测。 每个阶段的中间监督通过定期补充梯度来解决梯度消失问题。
总的来说,就是每一步都要采用梯度下降来优化其预测,前面的stage检测一些简单的关键点,后面的stage再根据前面检测出的关键点检测更复杂一些的关键点,这是一个渐进优化的过程。

2.2身体部分检测的置信度地图

每个置信图是关于特定身体部位出现在每个像素位置的信念的2D表示。如果有一个人那么就只有一个峰,如果有多个人,每个人会对应一个峰值。我们取最大值的置信度图而不是平均值,以便峰值的精确度保持不同,如右图所示。 在测试时,我们预测置信度图,并通过执行非最大抑制来获得身体部位候选者。
每一个stage都加损失函数,也就是中间过程也得做的好才行。

2.3 基于PAF(部分亲和字段)的部分关联

给定了一系列被检测到的身体部分,我们如何把他们组装起来,形成一个未知人数的全身姿势。

我们需要一个关于每对身体部位检测的关联的置信度度量,即它们属于同一个人。 测量关联的一种可能的方法是检测肢体上每一对部件之间的附加中点,并检查候选部件检测之间的发生率,如图5b所示。 然而,当人们聚集在一起时,这些中点可能会支持错误的关联(如图5b中的绿线所示)。 这种错误的关联是由于表示法中的两个限制而产生的:(1)它只编码每个肢体的位置而不是方向; (2)将肢体的支撑区域缩小到一个点。

为了解决这些限制,我们提出了一个创新的方法,称为部分亲和性字段的表示,其在肢体的支持区域上保存位置和方向信息(如图5c所示)。 部分亲和力是每个肢体的2D矢量场,也如图1d所示:对于属于特定肢体的区域中的每个像素,2D矢量编码从肢体的一部分指向另一部分的方向。 每种类型的肢体都有一个相应的亲和力场,连接两个相关的身体部位。

考虑下图中显示的单个肢体。令xj1和xj2为图像中人k的肢体c的部分j1和j2的真实位置。 如果点p位于肢体上,则L(p)处的值是从j1到j2的单位矢量;对于所有其他点,矢量是零值。

在测试过程中,我们通过计算相应PAF上的线积分,沿连接候选部分位置的线段,来测量候选部分检测之间的关联。 换句话说,我们测量预测的PAF与将通过连接检测到的身体部位而形成的候选肢体的对齐。具体而言,对于两个候选部位位置dj1和dj2,我们沿线段对预测的部位亲和性领域Lc进行采样以测量其关联的置信度。
第十四周周报_第5张图片

PAF(部分亲合场)

如何确定关键点的连接:
利用二分图,生成代价矩阵,使用匈牙利算法进行推到。
19种连接方式: 预测19*2=38个方向。
Part Affinity Fields 部件关联场:通过肢体找关键点直接的链接。将属于同一个人的不同关键点按顺序拼接。
PAF标签的定义:
第十四周周报_第6张图片
k表示同一个人。Xj不同关键点。
蓝色和红色分别是两个关键点,v是其向量。
V要做成单位向量:
v = ( x j 2 , k − x j 1 , k ) / ∥ x j 2 , k − x j 1 , k ∥ 2 \mathbf{v}=\left(\mathbf{x}_{j_2, k}-\mathbf{x}_{j_1, k}\right) /\left\|\mathbf{x}_{j_2, k}-\mathbf{x}_{j_1, k}\right\|_2 v=(xj2,kxj1,k)/xj2,kxj1,k2
在手臂上任何一点的向量与V一致。
L c , k ∗ ( p ) = { v  if  p  on  limb ⁡ c , k 0  otherwise  \mathbf{L}_{c, k}^*(\mathbf{p})= \begin{cases}\mathbf{v} & \text { if } \mathbf{p} \text { on } \operatorname{limb} c, k \\ \mathbf{0} & \text { otherwise }\end{cases} Lc,k(p)={v0 if p on limbc,k otherwise 
P点满足条件,论文中给定了距离阈值
0 ≤ v ⋅ ( p − x j 1 , k ) ≤ l c , k  and  ∣ v ⊥ ⋅ ( p − x j 1 , k ) ∣ ≤ σ l 0 \leq \mathbf{v} \cdot\left(\mathbf{p}-\mathbf{x}_{j_1, k}\right) \leq l_{c, k} \text { and }\left|\mathbf{v}_{\perp} \cdot\left(\mathbf{p}-\mathbf{x}_{j_1, k}\right)\right| \leq \sigma_l 0v(pxj1,k)lc,k and v(pxj1,k)σl
意思就是把图像的上在这个向量所构成的矩形里的所有点,标注出相同的方向。在矩形外的各点,就是0向量。在计算不同关键点之间的亲和力。

PAF模块内部

PAF网络模块,由5个卷积块(Convolution Block)和2个11的卷积层(Convolution)加上一个L2损失函数组成,其中每个卷积块有三个33的卷基层,每个卷积层的输出不但直接向后一层传输同时也直接传输到卷积块的末尾。

匈牙利算法

在openpose中,是在最后匹配各个关键点使用的算法,光是PAF和PCM还不够,因为无法简单根据最大值来匹配,因此采用的是图论中匈牙利算法进行关键点的匹配。
在目标跟踪中,不同时刻,物体的位置等信息会发生变化,但我们需要让它保持同一个ID。第十四周周报_第7张图片

数据标签的制作

标签数据的制作,无论是这里的PAF还是置信图,它们的Groundtrue都是通过已有的数据集生成而来的对于置信图的groundtrue,OpenPose首先先为每个人生成一个个人置信图,公式如下:

在这里插入图片描述
X j,k 是图像中人 k 的身体部位 j 的在GT图上的位置。其中 σ 用于控制峰值的传播。生成了个人置信图之后,网络预测的真实置信度图是通过最大算子(求MAX)对单个人的置信度图进行聚合(有K个人,那么最后置信图上P的值,就是这K个人他们单人置信图上对应的P的值其中的最大值)我们取置信图的最大值而不是平均值,以便附近峰值的精度保持不同,如下图所示。在测试时,我们预测置信度图,并通过执行非极大值抑制来获得候选的关键身体部位点。
在这里插入图片描述

第十四周周报_第8张图片

总结

Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields这篇文章的主要创新和贡献在于提出了一种bottom-up的PAF(部分亲和场)的方法,解决了肢体中点的匹配问题,使用2D向量来编码肢体的位置与方向,不再局限于单点。但在之前的研究当中,大部分的研究主要集中在对于单人图像的人体姿态估计上,并且对于单人姿态的估计现有的技术已经做的不错了。OpenPsoe主要着重于解决多人的2d姿态估计问题——即一张图片上可能存在许多人,他们相互交错,位置混乱。

你可能感兴趣的:(机器学习,图像处理)