综述专栏 | 姿态估计综述

779 阅读25分钟

作者:Ilias Mansouri

翻译:仿佛若有光

Introduction

顾名思义,通过姿势估计,我们尝试从图像中推断出物体或人的姿势。这涉及识别和定位身体上的关键点。由于身体的小关节、遮挡和缺乏上下文、旋转和方向,关键点的识别是一项非常具有挑战性的任务。在本文其余部分将主要关注人体姿势估计的情况下,膝盖、肘部、肩部和手腕等主要关节代表这些关键点。

在分类方面,姿态估计器可以分为以下几类:

  • 维度(2D 与 3D)
  • 单姿势和多姿势(检测一个或多个物体)
  • 方法论(基于关键点与基于实例)

我们可以使用 2D 姿态估计器预测图像或视频帧中关键点的 2D 位置,而 3D 姿态估计器通过在预测中添加深度将图像中的对象转换为 3D 对象。显然,使用 3D 更具挑战性。单姿态估计器通常以检测和跟踪一个人或物体为目标,而多姿态估计方法检测和跟踪多个人或物体。就方法论而言,广义上讲,我们发现模型尝试检测特定关键点的所有实例,然后尝试将关键点分组为骨架。基于实例的姿态估计器首先使用对象检测器来检测对象的实例,然后估计每个裁剪区域内的关键点。在文献中,这也通常称为自下而上与自上而下的方法。

自上而下的方法包括在图像上应用人物检测器,对于每个检测到的人,使用单人姿势估计器进行关键点推断。如果您的人物检测器失败,那么您的姿势估计也会失败。此外,所需的处理量与人数成正比。自下而上受这些缺点的影响较小,但将关键点检测候选与个人关联起来,仍然具有挑战性。

点个关注,专注于计算机视觉的技术总结,论文分享

DeepPose

在本文中,作者首次将深度神经网络 (DNN) 应用于人体姿势估计挑战。下面,我们找到了所使用的架构。

使用输入图像,可以回归每个身体关节及其位置。通过将原始的初始姿态估计传递给此类 DNN 的级联,可以进一步完善联合预测,从而实现 SOTA 结果。

Deep(er) Cut

使用 DeepCut,图像中未知人数的姿态估计问题被重新表述为优化问题。问题是:

  • 在图像中创建一组所有候选身体部位,从中选择一个子集。
  • 从这个子集中,对每个身体部位(例如,手臂、腿和头)进行分类
  • 将同一个人的身体部位聚集在一起。

然后通过将其建模为整数线性规划问题来解决这 3 个问题。

为了找到图像中的所有身体部位,使用了 Fast R-CNN 的改编版本(AFR-CNN)。具体来说,适应性包括用可变形部件模型 (DPM) 替换选择性搜索建议生成并改变检测大小以允许 DPM 捕获更多上下文。

从 70 年代的研究开始,他们处理对视觉对象进行一些描述的问题,如何在实际照片中找到这个对象?在真正的工程形式中,一个对象是由一组以可变形配置排列的部件组成的。

Part-based model of a human

通过以可变形配置排列的部件集合来表示人类。然后分别对每个零件的外观进行建模。一对零件由弹簧表示以引入必要的变形能力。

怀疑使用 DPM 可能不是最理想的(确实如此),而是训练了基于 VGG 的密集 CNN 构建。然后将身体部位的检测重新表述为多标签分类。该模型为每个候选输出一个部分概率得分图。此外,与其他分割任务类似,使用步幅为 8 的扩张卷积来进行更精细的部分定位。

DeeperCut 基于 DeepCut 的 Dense-CNN,但使用 ResNet 骨干网代替。与 VGG 主干类似,32px 的原始步长太大了。然而,由于内存限制,使用空洞算法是不可行的。通过移除最后一层来调整 ResNet 架构,减少第一个卷积层的步幅以防止下采样。在第 5 次卷积中,所有 3x3 卷积都添加了空洞。层和反卷积层用于上采样。

DeeperCut 还受益于更大的感受野来推断附近其他部分的位置。这种见解称为图像条件成对项,可以计算部件的成对概率。

成对part-to-part预测:通过计算每对的成本,回归的偏移量和角度用作特征来训练逻辑回归,从而产生成对概率

DeepCut 为图像中的所有候选身体部位解决了一个 ILP 实例,DeeperCut 提出了一种增量 3 阶段优化,其中:

  • ILP 解决了头肩问题
  • 肘部/手腕被添加到第 1 阶段的解决方案中,并重新优化了 ILP
  • 将剩余的身体部位添加到第 2 阶段的解决方案中,并重新优化 ILP

用于人体姿态估计的卷积网络和图形模型的联合训练

在本文中,检测pipeline由卷积网络和马尔可夫随机场 (MRF) 组成。与之前类似,ConvNet 架构用于身体部位定位。架构如下图所示:

Multi-Resolution Sliding-Window With Overlapping Receptive Fields

该架构通过使用滑动窗口方法处理输入图像,从而产生表示每个关节位置可能性的像素热图。

有 2 个重叠的多分辨率字段,一个是 64x64 输入(上卷积),另一个是下采样到 64x64 的 128x128 输入,从而将更多“上下文”输入到下卷积路径中。然后在传入网络之前使用局部对比度归一化 (LCN) 对两者进行归一化。

作者提到,使用重叠场的主要优势在于能够以相对较低的权重增加看到图像的更大部分。 此外,通过使用 LCN,两个窗口之间的重叠光谱内容最小。由于这需要相当大的计算能力,因此模型进行了改进,如下所示。

保留了多分辨率(下 ConvNet)和滑动窗口(上 ConvNet)的概念。高上下文和低分辨率输入需要比滑动窗口模型的步长一半。因此,需要处理 4 个下采样图像。滑动窗口的特征图被复制,其中添加和交错低分辨率特征图,导致输出热图低于输入。

Part-Detector 将输出许多解剖学上不正确的姿势,因为没有对身体关键点的隐式约束进行建模。通过使用高级空间模型在连接互连和姿势的解剖一致性方面创建约束,巧妙地解决了这一问题。该空间模型被表述为 MRF 模型。通过首先训练一个部分检测器并重用产生的热图输出来训练空间模型,我们能够训练一个 MRF,它将在图模型中制定联合依赖关系。最后,在统一模型(Part-Detector + Spatial Model)上进行微调和反向传播。

使用卷积网络的高效对象定位

基于前面提到的工作,这项研究实现了一个多分辨率的 ConvNet 来估计图像小区域内的联合偏移位置。下面,我们找到了架构,并且很容易看到与之前讨论的架构的相似之处。

此外,还添加了一个 Spatial Dropout 层。发现由于特征图中的强空间相关性,应用标准 dropout 并不能防止过度拟合。解决方案是删除整个一维特征图,以促进特征图之间的独立性。与之前类似,(粗)热图被传递到 MRF,它将过滤掉解剖学上不可行的姿势。

下一步是恢复由于池化而丢失的空间信息。这是通过使用另一个 ConvNet 来细化粗热图的结果来实现的。

卷积姿势机器

卷积姿势机器 (Convolutional Pose Machines--CPM) 继承并建立在姿势机器 (PM) 架构上,该架构将来自身体部位和不同尺度的丰富空间交互整合到一个模块化和顺序框架中。正如我们将看到的,CPM 通过利用卷积架构进一步提升 PM,该架构学习图像和空间上下文的特征表示。

正如我们在下面看到的,PM 是一种顺序预测算法,它模拟消息传递的机制来预测每个身体部位的置信度。基本原理是每个身体部位的估计置信度在每个阶段迭代提高。消息传递可以理解为一个概率分类序列,其中预测器(无论是哪种类型的多类分类器)的输出成为下一个预测器的输入。

Architecture of a 1 Stage Pose Machine (a) and a 2 Stage Pose Machine (b)

在每个阶段,分类器根据先前分类器的输出和图像的特征,为每个身体部位以置信度预测位置。然后,对于每个阶段,都会对预测进行细化。最后,我们可以观察到,对于每个图像,通过以不同的比例重用图像来创建分层表示。

在第 1 级,如图像中所见,对整个模型进行粗略表示,而第 2 级表示身体部位的组成,最后第 3 级,即最精细的表示,由关键点周围的区域构成。在所有层次结构级别上训练每个阶段的单个多类预测器。这意味着训练每个预测器以从特征向量输出每个关键点的一组置信度,特征向量可以来自任何层次级别。

在 (a) 行下方,我们可以观察如何通过连接位置 z 中的置信度分数来构建每个身体部位的置信度之间的空间相关性,从而生成矢量化补丁。为了获得远程交互,应用非极大值抑制来获得每个关键点/身体部位的峰值列表(高置信度位置),从中可以计算极坐标中的偏移量。

用 CNN 替换预测和特征提取部分,然后产生我们的 CPM,一个端到端的架构。

Architecture of the Pose Machine (a & b) and Convolutional Pose Machine (c & d)

该架构的第一阶段基于输入图像从不断增长的感受野中创建特征图。随后的阶段将使用输入图像和前一阶段的特征图来细化每个身体部位的预测。使用中间损失层可以防止梯度在训练过程中消失。

正如论文中所述,后续预测器可以利用先前的特征图作为某些部分应该在哪里的强线索,从而有助于消除错误的估计。通过逐渐增加感受野,该模型可以学习在特征图中结合上下文信息,从而使其能够学习身体部位的复杂关系,而无需对任何表示人体的图形模型进行建模。

堆积沙漏网络

由于需要在每个尺度上捕获信息,因此开发了一种新颖的 CNN 架构,其中处理所有尺度的特征以捕获人体的空间关系。局部信息对于识别身体部位是必要的,而解剖学理解在不同的尺度上得到更好的识别。

Architecture of an hourglass module

在上图中,我们可以立即看出自下而上和自上而下处理的对称分区。这种类型的架构之前讨论过语义分割,只是它被称为 conv-deconv 或encoder-decoder架构。

通常,一组卷积和最大池化层处理输入特征。在每个最大池化层之后,我们将网络分支出来,并将另一组卷积和最大池化层应用于原始特征输入。在上图中,每个块由一组卷积和最大池化层组成。 conv层的精确配置非常灵活。

从 ResNets 的成功来看,作者最终在每个块中实现了一个残差模块。一旦达到最低分辨率,就会启动解码器或自上而下的方法,其中网络有效地组合了不同尺度的特征。最后,在图像中不可见,应用两个 1x1 卷积来生成一组热图,其中每个热图预测关键点存在的概率。

通过创建一系列沙漏模块,其中一个的输出馈送另一个的输入,获得了一种重新评估特征和高阶空间关系的机制。与以前类似,它提供了具有中间损失函数的关键。按原样,损失(或监督)只能在上采样阶段之后提供。因此,无法在更大的全局环境中重新评估这些特征。

这意味着,如果我们希望网络改进预测,这些预测不仅必须是局部尺度的,而且必须具有更大的尺度,以使预测能够在更大的图像上下文中相关联。下面,我们可以观察到提出的解决方案:

在生成的热图上应用损失的中间监督过程概述(蓝色)

生成中间热图,对其应用损失,然后使用 1x1 conv 将这些热图重新映射到特征,并将它们与先前沙漏模块输出的特征相结合。

训练是在 8 个沙漏模块的序列上完成的,其中彼此不共享权重。在热图上使用均方损失,每个模块使用相同的损失函数和基本事实。

OpenPose

OpenPose 也是第一个用于实时关键点检测的开源库,是一种改进的 CMUPose。在 CMUPose 中,提出了第一个使用部件亲和域 (Part Affinity Fields--PAF) 的自底向上姿态估计器。

给定输入图像,表示关键点出现在每个像素上的概率的热图是,并生成部分亲和力的向量场。 两者都是由下面观察到的 2 分支多级 CNN 产生的。

输入图像通过微调 VGG 的前 10 层,从中生成特征图 F。然后将此特征图 F 用作每个分支的第一阶段的输入。分支 1(顶部分支)预测关键点的置信度图,而分支 2 预测部分亲和力字段。通过连接来自两个分支的先前预测和特征图 F 来细化置信度图和亲和力字段。在阶段结束时,L2 损失应用于估计和真实值之间。

正如之前经常看到的,置信度图是 2D 热图,表达了关键点存在于给定像素的信念。部分亲和字段是二维矢量字段,它编码从肢体的一个部分到另一部分的方向。这种特征表示的优势在于它保留了肢体支撑区域的位置和方向信息。执行非最大抑制,我们获得一组候选身体部位位置。然后可以将其中的每一个分配给几个人。使用线积分计算来量化沿曲线的场对亲和场的影响,身体部位与人类相匹配。

在 CMUPose 工作的基础上,OpenPose 仅利用 PAF 进行姿势估计任务,从而消除了身体部位的置信度。下面,我们可以观察到 PAF 首先被编码,它代表了部分到部分的关联,然后被输入到 CNN 中以推断检测置信度图。

Architecture of multi-stage OpenPose

通过用 3 个连续的 3x3 内核替换 7x7 卷积层来增加网络深度,这些内核输出连接。在计算方面,处理减半,因为不再需要在每个阶段细化 PAF 和置信度图。相反,首先将 PAF 细化并传递到下一阶段,然后再细化置信度图。如果处理 PAF,则可以推断出身体部位的位置,但反之则不然。

(Higher)HRNet

讨论了一种新颖的架构,其中从高到低分辨率的子网络是并行连接的,而不是像大多数现有解决方案那样串联连接,这些解决方案保持高分辨率表示。

HRNet architecture

通过跨子网络的多尺度融合获得丰富的高分辨率特征,使得每个从高到低的分辨率表示从其他并行表示接收信息。 下采样通过使用跨步卷积发生,而上采样通过 1x1 卷积和最近邻上采样发生。热图从主要的高分辨率分支回归。

基于这项初步工作,Higher HRNet 解决了 2 个主要挑战:

  • 如何在不牺牲大人物的推理性能的情况下提高小人物的推理性能?
  • 如何生成高分辨率热图用于小人物的关键点检测?

使用 HRNet 作为主干,HigherHRNet(下图)添加了一个反卷积模块,其中热图是从更高分辨率的特征图预测的。

stem是 2 个 3x3 conv 层的序列,将分辨率降低四分之一,然后输入通过 HRNet 主干。4x4 反卷积层,然后是 BatchNorm 和 ReLU,将特征和预测热图作为输入,并生成两倍于输入大小的特征图。

在 de-conv 层之后添加残差块 (4) 以细化高分辨率特征图。最后,通过使用双线性插值对低分辨率特征图进行上采样来聚合特征金字塔的热图,并通过对所有热图求平均值来获得最终预测。

PifPaf

PifPaf 的开发目标是估计城市环境中拥挤人群中的人体姿势,使其适用于自动驾驶汽车、送货机器人等。下面,我们观察到 ResNet 主干与 2 个头一起使用:部分强度场 (Part Intensity Field--PIF) 预测关键点的位置、大小及其置信度,而部分关联场 (Part Association Field--PAF) 预测关键点之间的关联。

PifPaf Architecture

更具体地说,PIF 输出一个置信度,一个向量分量指向最近的关键点,具有扩展因子和比例。如下所示,置信度图非常粗糙。因此,通过将其与生成更高分辨率置信图的矢量场融合,可以改进该置信图的定位。然后可以从这个领域学习关节的尺度或空间范围。这种规模和上述传播有助于提高不同体型的人的姿势估计性能。

Left: confidence map, Middle: vector field, Right: fused confidence map

通过尝试连接一对关键点关联,使用 PAF 将关节位置自下而上连接成姿势。这 19 个关联的示例是:

  • 左脚踝到左膝
  • 左臀到右臀
  • 鼻子到右眼

PAF 关联左肩和左髋

对于给定的特征图,在每个位置,关键点关联的两个向量的原点被 PAF 预测为置信度(左上图)。高于 0.5 的关联置信度显示在右侧。

最后,解码器获取两个字段(PIF 和 PAF)并将它们转换为一组代表人体骨骼的坐标 (17)。贪心算法通过降低置信度来创建所有关键点类型的优先级队列。这些点用作候选(种子),它们从队列中弹出,并在 PAF 字段的帮助下添加到其他关节的连接。由于当前和下一个关键点之间可能发生双重连接,因此对 PAS 关联进行评分。最后,对每个关键点类型应用非最大抑制来生成人体骨骼。

DirectPose

提出了第一个多人姿势估计器,其中关键点注释用于端到端的训练,而对于推理,该模型能够将输入映射到每个单独实例的关键点,而无需进行任何框检测。基于无锚物体检测的出现,它立即回归目标边界框的两个角,研究人员解决了这种检测技术是否可用于检测关键点的问题。

基本原理是检测任务可以重新表述为具有 2 个以上角点的特殊边界框。他们证明它表现不佳,主要是因为只有一个特征向量用于回归所有关键点。他们通过使用一个用于关键点检测的输出分支扩展全卷积单阶段对象检测 (FCOS) 架构来解决这一挑战。

FCOS Architecture

FCOS 以每像素的方式重新制定目标检测任务。与语义分割类似,FCOS 将输入图像上的像素视为训练样本,而不是基于锚的检测器中的锚框。落入边界框基本事实的像素被认为是积极的,并获得以下内容:

  • 基本事实的类标签
  • 一个 4D 向量,表示从该位置到边界框四个边的距离,用作该位置的回归目标

使用特征金字塔网络 (FPN) 可确保对不同尺度的对象大小具有更好的鲁棒性。由主干 (ResNet50) 生成的特征图后跟 1x1 卷积。特征层P3、P4、P5、P6和P7的步长分别为8、16、32、64和128。除P6和P7外,各自的横向连接和自上而下的路径通过加法合并。多级预测还处理两个不同大小的不同边界框相互重叠的可能性。

FCOS 使用以下阈值限制不同特征图级别的回归:0、64、128、256、512 和所有特征级别(P3 到 P7)的无穷大。这些阈值表示特征级别 Pn 需要回归的最大距离。如果仍然出现重叠的边界框,则选择最小的边界框。

由于不同的特征级别回归不同的尺寸范围,因此需要不同的头部。最后,由于远离对象中心的许多低质量的预测边界框,作者引入了中心度的概念。这个头部根据边界框的 4 个边的位置预测归一化距离。

DirectPose 将关键点视为具有 K 个角点的非常特殊的边界框。然而,在他们的实验中,由于特征与预测的关键点之间缺乏对齐,观察到了较差的性能。这是因为许多关键点远离特征向量的感受野中心。随着输入信号越来越偏离感受野的中心,特征对该输入的响应强度逐渐衰减。

因此,提出了关键点对齐模块(Keypoint Align Module--KPAM)。以一个 256 通道的特征图作为输入,KPAM 会密集地滑动这个特征图。

定位器,顾名思义,定位特征向量预测关键点实例的位置的索引,特征样本从中采样长度为 256 的特征向量。对于第 n 个关键点,第 n 个卷积层将作为输入第 n 个特征向量并将预测相对于采样特征向量位置的坐标。

通过对来自 Locator 和来自 KPAlign 的 K 个偏移量求和,我们获得需要重新缩放以匹配原始特征图的坐标。最后使用了一个小的调整,其中始终存在于一个区域(鼻子、眼睛和耳朵)中的关键点被分组并使用相同的特征向量。

最后,我们可以看到 KPAM 如何替换前面提到的 FCOS 架构的边界框模块。我们确实观察到一个额外的热图分支,它被用作辅助任务/损失,使基于回归的任务更加可行。

DirectPose Architecture

Conclusion

显然,估计姿态的任务是相当大的挑战。 一再证明自下而上的方法优于自上而下的方法,但需要将关键点与人相关联。 这种生成最终实例感知关键点的分组或组装过程可以使用启发式、人体骨骼建模(图形结构)和/或堆叠置信度图来完成。此外,当认为未知数量的人可以出现在图像上的任何地方和任何比例时,复杂性就会爆炸。人机交互、关节和当然遮挡使关键点组装过程变得复杂。

姿势估计在人机交互、动作识别、监视、图片理解、威胁预测、机器人、AR 和 VR、动画和游戏等领域有重要应用。

原文链接:medium.com/@ilias_mans…

本文来源于公众号 CV技术指南 的综述系列。

欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

在公众号中回复关键字 “技术总结” 可获取以下文章的汇总pdf。

其它文章

计算机视觉中的自注意力

经典论文系列--胶囊网络:新的深度学习网络

综述专栏 | 姿态估计综述

漫谈CUDA优化

为什么GEMM是深度学习的核心

使用深度神经网络为什么8位足够?

经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷

如何看待人工智能的泡沫

使用Dice loss实现清晰的边界检测

PVT--无卷积密集预测的多功能backbone

CVPR2021 | 开放世界的目标检测

Siamese network总结

视觉目标检测和识别之过去,现在及可能

在做算法工程师的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?

计算机视觉专业术语总结(一)构建计算机视觉的知识体系

欠拟合与过拟合技术总结

归一化方法总结

论文创新的常见思路总结

CV方向的高效阅读英文文献方法总结

计算机视觉中的小样本学习综述

知识蒸馏的简要概述

优化OpenCV视频的读取速度

NMS总结

损失函数技术总结

注意力机制技术总结

特征金字塔技术总结

池化技术总结

数据增强方法总结

CNN结构演变总结(一)经典模型

CNN结构演变总结(二)轻量化模型

CNN结构演变总结(三)设计原则

如何看待计算机视觉未来的走向

CNN可视化技术总结(一)特征图可视化

CNN可视化技术总结(二)卷积核可视化

CNN可视化技术总结(三)类可视化

CNN可视化技术总结(四)可视化工具与项目