Advertisement

OpenPose姿态估计(Pose Estimation)

阅读量:

一、概述

人体姿态估计是计算机视觉领域的一项核心技术,在这一领域中它是指通过图像或视频数据来检测并跟踪这些关键部位及其连接关系(如头部、肩部、肘部等身体关键部位及其连接关系),并基于此重建出完整的姿态模型。简单来说,则是让计算机"感知"人类的身体状态,并理解其各种动态姿势。

在一般情况下进行标注时采用的数据集为COCO格式,并包含共计17个关键点。这些数据点的具体分布因不同数据集而异。然而,在本研究中为了更全面地覆盖人体姿态特征我决定采用18个关键点这一方案其中新增一个关键点位于颈部该位置通过取两侧肩膀坐标的平均值来进行估算因此该标记相对于真实颈部位置可能会略微偏低一些

主要运用深度学习的方法,在人体姿态估计领域展现出显著成效。这些方法具备了识别复杂特征的能力,在处理多样化的人体姿态时展现出了较高的识别能力。

二、主要方法

2.1 TopDown方法

两步走:①检测到所有人的框②对每个框进行姿态估计输出结果

这种方法确保了精确度。由于每个框内仅包含一人,在进行独立回归分析后,该框架能够准确识别关键点的位置。

但是缺点同样存在,在姿态估计领域中主要依赖于目标检测的准确性;当两个物体出现重叠情况时,在这种情况下可能会导致仅识别出其中一人;这将导致至少一个目标被遗漏;

由于计算效率相对较低的原因,在处理多个人存在的图像时,则需要先进行目标检测(例如Yolo算法),这会导致姿态估计的速度会变得较慢;这也是该方法的主要缺陷之一——难以实现实时的姿态估计;因此该方法通常适用于离线场景——为了提高姿态估计的准确性而使用这种方法

2.2 OpenPose的方法

思路:第一步是获取所有特征点的具体位置(包括头部、肩关节、手臂骨骼、腿部骨骼和足部骨骼等),接着将这些来自同一人体的骨骼配对起来(这就好比是一位法医在面对两具散落的骨骼碎片,在经过复杂的分析和匹配后成功还原出完整的个人身份信息(这项工作对法医来说确实具有挑战性))。

小挑战:

以下是两个人的关键点,你能否通过线条将他们连接呢?

我来试试:

以下是正确答案:

显而易见的是,在人工完成这个任务方面存在一定难度;就计算机而言,则更为棘手的问题。若要让模型明白正确的拼接方式是什么,则是一个关键问题。

2.2.1Multi-Person Pose Estimation using Part Affinity Field

①关键点:

看起来像是一个回归问题,并且在处理数据时需要考虑如何进行标注?我们可以利用热力图来实现对每个关键点的位置进行预测,并且采用高斯分布的方法(即均值周围的区域概率更高)来确定颜色分布。下图展示了肩膀关键点预测的结果:

我们一共有18个关键点,那么会得到18个这样的图像特征。

抖音中的众多特效都必须先识别出关键点。随后才会将这些特效属性附加到这些关键点上。例如头戴闪电 bolt, 身穿风火轮, 拥有长剑, 以及穿着盔甲的手臂肩膀...

②拼接方式

通过将同一个人的关键节点依次进行链接组装,在身体结构中实现各关键节点间的关联关系。具体而言,在人体骨骼构造中存在多种特定的联结模式,在脊椎部位通常仅能与胸椎或肩胛骨相衔接,在上肢部位则常见于关节处与肩部骨骼相扣合。这些联结模式共计19种类型,并且考虑到每对节点间的联结具有方向性(分为正向和反向两种),因此总共生成38个特征图。

PAF(Part Affinity Field)旨在实现这一目标。如图所示(右侧),当通过获取每个人的肩部关键点和肘部关键点后,在图中总共有6个实例中进行分析。针对某一个实例的肩部关键点而言,在与之相连的肘部关键点中存在多种可能的连接组合;其中只有一种组合能够满足特定的要求条件;而其主要任务即在于找到这种精确的配对关系。

三、确定关键点的连接

借助一个权重(分数型指标或代价矩阵),这个任务自然就能得以完成。参考下图所示内容:左侧红色节点能够连接到两个蓝色节点;然而左侧较近的那个蓝色节点具有较高的权重(得分为1),而左侧较远的那个蓝色节点则具有较低权重(得分为0.01)。因此,在这种情况下,默认情况下左侧红色节点会优先选择与左侧较近的那个蓝色节点建立联系。

3.1 Part Affinity Fields

3.1.1标签定义

既然我们旨在让模型预测出方向,则应在标签值中体现这种方向性特征。若我们能获取到两个关键点之间的连接关系,则可由此计算出这两个点坐标之间的向量。其结果就是PAF向量。具体原理如下:

观察第二条处理方式可知,在计算各点处对应的向量时会进行归一化处理即除以模长这一步骤其目的是为了消除长度的影响仅保留方向信息因此生成单位向量能够更好地反映目标方向随后研究者通过分析图像特征确定了一组关键像素位置这些位置处的向量方向与v一致其余位置设值为零最终通过连接两端关键像素并构造一个具有特定宽度(该宽度由图中最后一条公式确定)的区域来识别手臂上的像素点

即效果如上所示,在右图中我们仅关注向量的方向而不考虑其大小。同样地,在左图中每个关键点之间的连接都呈现相同的方向

3.1.2 PAF权重计算

在某个特定的PAF特征图中(其中一种是19种可能连接方式之一),等价于获得了该点位上的标签值,并且包含了所有参与该连接部位的人群所对应的向量信息。

计算两个关键点 j₁ 和 j₂ 之间权重的方法如图所示;其中 dj₁ 和 dj₂ 分别代表这两点的坐标;其计算过程涉及对连接这两个关键点的线段 j₁-j₂ 上所有取样位置处进行操作;具体而言即是在线段 j₁-j₂ 上对每个取样位置处进行操作;将该位置处对应的 PAF 向量在其所在位置到线段两端连线方向上的投影分量进行累加求和;其核心思想在于:线段上每一点处的 PAF 方向与其所在位置到线段两端连线的方向越吻合,则该点处赋予更高的权重

3.1.3匹配方法

一般都是二分匹配(利用上面的积分值),如下最右边,直接套用匈牙利算法。

四、CPM-Convolution Pose Machines

CPM主要是在2016年到2017年间提出的,并为后续的OpenPose研究提供了重要的理论基础。它可作为关键框架,在多个阶段进行关键点定位的逐步精进(stage1预测效果非常差,在后续的阶段中进行纠正和调整)。

随着阶段数量的增加, 模型的层级深度也随之提升。模型的感受野随之扩大。姿态估计依赖于更为宽广的感受野。

每个阶段都包含损失函数,在中间环节也需要进行相应的优化工作以确保整体效果。以下是CPM的结构图:

五、框架

整体框架:

以下是整个框架,两个部分分别针对的是1关键点预测、2姿势的PAF向量

下面的F前经过了backbone得到了HWC的特征。

以下是序列的作用,多个stage,相当于纠正的过程,不断调整预测结果

两个分支经过多个阶段,注意每个阶段后把特征拼接在一起。

全部评论 (0)

还没有任何评论哟~