当前位置:   article > 正文

论文阅读-PoseFormer:《3D HumanPose Estimation with Spatial and Temporal Transformers》

poseformer

目录

摘要

介绍

近期研究工作

方法

时序变压器

PoseFormer: 时空转换器

Spatial Transformer Module.空间变压器模块

Temporal Transformer Module.时序变压器模块

回归头

损失函数

实验

数据集

评估指标

1. MPJPE(Mean Per Joint Position Error)——协议1(Protocal 1)

2. P-MPJPE——协议 2 (Protocol 2)

实验详情

与目前先进技术比较

Human3.6M

MPI-INF-3DHP

Qualitative Results 定性评估

消融实验

PoseFormer设计

架构参数分析

计算复杂性分析

注意力机制的可视化实验

小数据集的泛化

结论


摘要

1. Transformer架构已经成为自然语言处理中的首选模型,现在正被引入到计算机视觉任务中,例如图像分类、对象检测和语义分割

2. PoseFormer,是一种纯粹基于Transformer的方法,用于视频中的3D人体姿势估计,不涉及卷积架构。

3. 设计了一个时空Transformer结构,以全面建模每帧内的人体关节关系以及帧间的时间相关性,然后输出中心帧的精确三维人体姿态

4. 在两个流行的和标准的基准数据集:Human3.6MMPI-INF-3DHP上定量和定性地评估了我们的方法。大量的实验表明,PoseFormer在两个数据集上都达到了最先进的性能。

介绍

        人体姿态估计(HPE)的目标是从输入数据(如图像和视频)中定位关节并构建身体表示(例如骨骼位置)。HPE提供了人体的几何和运动信息,并可以应用于广泛的应用中(如人机交互、运动分析、医疗保健等)。当前的工作通常可以分为两类:

        1. 直接估计方法:直接从2D图像或视频帧中推断出3D人体姿态,而无需先估计2D姿态表示。

        2. 2D到3D的提升方法:首先估计出2D姿态,然后从这些2D姿态中推断出3D人体姿态。由于现有2D姿态检测器的出色性能,这类方法通常比直接估计方法表现更好。但是,将这些2D姿态映射到3D并不简单;由于深度模糊和遮挡,同一个2D姿态可能产生多种潜在的3D姿态。

        为了缓解这些问题并保留自然的连贯性,许多最近的工作已将视频中的时间信息整合到其方法中。例如,[25, 5]使用时间卷积神经网络(CNNs)来捕获相邻帧之间的全局依赖关系,而[33]则使用循环架构达到类似的效果。但是,这两种架构的时间相关窗口都是有限的。基于CNN的方法通常依赖于膨胀技术,这种技术本质上具有有限的时间连通性,而循环网络则主要受限于简单的序列相关性。

        人体姿态估计是一个重要的研究领域,其中2D到3D的提升方法因利用现有2D姿态检测器的优势而备受关注。然而,从2D到3D的映射是一个挑战,尤其是当存在深度模糊和遮挡时。为了应对这些挑战,研究者们正在探索利用视频中的时间信息来提高姿态估计的准确性和连贯性。尽管已经取得了一些进展,但仍有待进一步的研究来改进这些方法并扩大其应用范围。

        另外,由于基于Transformer的自然扩展方法需要将给定序列中每帧的每个2D关节坐标视为一个标记(token),并从序列的所有帧中由这些关节形成输入,在处理长视频序列时可能会遇到内存需求过高的问题。

        对该基线的自然扩展是将每个2D关节坐标视为一个token,提供由序列所有帧中的这些关节组成的输入(图1(b))。然而,在这种情况下,当使用长帧序列时,token的数量变得越来越大(在3D HPE中,每帧最多243帧,17个关节是常见的,token的数量将为243×17=4131)。

        故PoseFormer采用了一种新的策略,PoseFormer使用两个维度的不同Transformer模块直接对空间和时间方面进行建模。空间自注意层考虑了2D关节的位置信息,并返回该帧的潜在特征表示,从而编码每个帧中二维关节之间的局部关系。时间Transformer模块分析了每个空间特征表示之间的全局依赖关系,并生成了准确的3D姿势估计。PoseFormer不仅能够有效地处理长序列,而且能够产生准确的3D姿态估计,同时避免了标记数量的爆炸式增长。

主要贡献:

1. 提出了第一个纯基于变压器的模型PoseFormer,用于3D HPE的2D到3D lifting

2. 设计了一个有效的时空Transformer模型,其中空间Transformer模块编码人体关节之间的局部关系,而时间Transformer模块捕获整个序列中跨帧的全局依赖关系。

3. PoseFormer模型在Human3.6M和MPI-INF-3DHP数据集上取得了SOAT效果

近期研究工作

3D单人单视图HPE方法

1. 直接估计方法:从二维图像中推断三维人体姿态,而不需要中间估计二维姿态表示。

2. 2D-to-3D lifting 方法:利用2D姿态作为输入来生成相应的3D姿态,这在该领域的最新方法中较为流行。任何现成的2D姿态估计器都可以有效地与这些方法兼容。

(其余略过)

方法

        通过现成的二维姿态检测器获取每帧的二维姿态,然后使用连续帧的二维姿态序列作为输入,估计中心帧的三维姿态。

时序变压器

Temporal Transformer Baseline 的关键组件和步骤:

1. 输入序列:该模块接收一个2D姿态序列,其中每个姿态由一系列关节坐标组成。

2. Patch Embedding:每个2D姿态被视作一个输入token,每个关节坐标对(在2D空间中)被视作一个patch。通过一个可训练的线性投影层(即patch embedding),将每个patch嵌入到一个高维特征空间。

3. 位置嵌入(Positional Embedding):为了保留序列中每个patch的位置信息,将位置嵌入添加到嵌入后的patch特征中。

        Patch Embedding的工作流程如下:

        

 公式解析:E是一个实数矩阵,其维度是 (J·2)行 和 C列 。其中 J 是关节数量,2表示每个关节有两个坐标(例如 x 和 y 坐标),C是嵌入的维度,所以 (J·2) * C表示的是一个 J 个关节每一位的两个坐标映射到 C 维空间的矩阵

4. Temporal Transformer Encoder:使用自注意力机制(Self-Attention)来关联输入序列中不同位置的嵌入特征。Temporal Transformer Encoder由多个多头自注意力(Multi-head Self Attention, MSA)块和多层感知机(Multilayer Perceptron, MLP)块组成,每个块前都有LayerNorm操作,并且每个块后都有残差连接。MSA多头自注意力机制是为了捕获不同子空间中的信息,其中每个头执行独立的自注意力计算,最终将结果合并。同时在自注意力之后,每个编码器层还包含一个前馈网络,这是一个简单的逐点全连接层,用于进一步处理特征。MLP块即前馈神经网络(FNN),位于MSA之后,主要作用是对经过自注意力机制处理的特征进行进一步的非线性变换,以增强模型的表达能力。在每个块钱添加残差连接和层归一化:每个子层(自注意力和前馈网络)的输出都会加上其输入,形成残差连接,这有助于避免在深层网络中梯度消失的问题。在每个子层之前应用层归一化,有助于稳定训练过程。经过多层自注意力和前馈网络处理后,得到最终的编码器输出,该输出包含了输入序列的全局时间依赖性信息。

为什么对特征进行非线性变换之后就能增强模型的表达能力?非线性变换在深度学习中可以可以怎么理解呢?

如果数据不是线性可分的,即不能通过一条直线或超平面完全分开,那么只使用线性变换是不够的。非线性激活函数可以提供额外的“弯曲”能力,帮助模型找到合适的决策边界。非线性变换可以导致特征交叉,即不同特征的相互作用,这有助于模型学习到更加丰富的特征表示。非线性变换使得损失函数的梯度下降路径更加复杂,有助于避免陷入局部最小值,特别是在使用随机梯度下降(SGD)等优化算法时。非线性变换可以导致特征交叉,即不同特征的相互作用,这有助于模型学习到更加丰富的特征表示…

        在3D人体姿态估计任务中,这一模块有助于理解视频中连续帧之间的动态关系,从而提高姿态估计的准确性。

        在Transformer模型中,Scaled Dot-Product Attention是实现Multi-Head Attention机制的一个关键步骤。具体来说,Scaled Dot-Product Attention用于计算每个注意力头中的注意力权重和输出。它由三个主要部分组成:查询(Query,Q)、键(Key,K)和值(Value,V)。这种注意力机制的目的是计算序列中每个元素对其他元素的关注度,从而允许模型在处理序列数据时动态地聚焦于序列的不同部分。以下是它在Multi-Head Attention中的使用流程:

        

        Scaled Dot-Product Attention 的关键优势在于其能够捕捉序列中不同元素之间的复杂关系,并通过缩放点积操作稳定训练过程。这种机制使得 Transformer 架构在处理如自然语言、图像和视频等序列数据时表现出色,特别是在需要捕捉长期依赖性的任务中。

5. 输出缩减:为了预测中心帧的3D姿态,将Temporal Transformer Encoder的输出在帧维度上进行平均,缩减成一个向量。

6. 回归头(Regression Head):最后,通过一个包含LayerNorm的MLP块和一个线性层,将缩减后的向量回归到中心帧的3D姿态。

PoseFormer: 时空转换器

        Temporal Transformer Baseline 主要关注输入序列中帧之间的全局依赖性。这意味着模型试图理解视频帧如何相互关联,以便更好地估计3D人体姿态。模型使用 Patch Embedding(一种线性变换)将每个关节的坐标投影到一个隐藏维度的空间。在这里,“patches”指的是人体的各个关节坐标。然而,基线模型在表示局部关节坐标之间的运动学信息方面存在局限性。这是因为简单的线性投影层无法学习到关节之间的注意力信息,即关节如何相互影响和关联。一个可能的解决方案是将每个关节坐标视为一个独立的“patch”,并将所有帧的关节作为输入提供给变换器。这样,模型就可以更细致地捕捉关节之间的空间关系。但是,这种方法会导致模型的计算复杂性迅速增加。具体来说,如果使用 f 帧和 J 个关节的2D姿态,那么需要的patches数量为f * J,计算复杂度为O((f*J)^2),举例来说,如果每个2D姿态有17个关节,并且使用81帧,那么总共需要处理的patches数量将是1377个。这与Vision Transformer(ViT)模型使用的576个patches相比,是一个显著的增加。为了解决这个问题,PoseFormer模型采用了一种空间-时间变换器结构,其中空间变换器模块用于编码单个帧内关节之间的局部关系,而时间变换器模块用于捕获整个序列中帧之间的全局依赖性。这种结构既能够捕捉局部关节之间的详细信息,又能保持对整个视频序列的全局理解,同时避免了计算复杂性过高的问题。

        PoseFormer由三个模块组成:空间变压器模块、时间变压器模块和回归头模块。

        

Spatial Transformer Module.空间变压器模块

目的:该模块旨在提取单个帧内2D关节之间的局部关系,通过考虑关节之间的空间关系来编码每个关节的特征。

输入:输入是一个单独的帧中的人体的所有关节坐标

Tokenization:每个2D关节坐标对(或称为“patch”)被视作一个独立的单元(token),这些单元将被用于后续的自注意力计算。

空间位置嵌入(Spatial Positional Embedding):为了保留关节在空间中的位置信息,每个关节坐标对通过一个可训练的线性层映射到一个高维特征空间,并且加上空间位置嵌入。

空间变换器编码器(Spatial Transformer Encoder):使用自注意力机制来处理关节特征,允许模型捕捉关节之间的局部空间关系。自注意力层可以是多头的(Multi-Head Self-Attention),以便并行处理多个表示子空间,从而捕获不同类型的空间关系。

输出特征:空间变换器编码器处理完输入的2D关节序列后,为每一帧生成一组高维特征,这些特征包含了关节之间的局部空间关系信息。空间变换器模块的最终输出是每一帧的编码特征,这些特征随后将被用作时间变换器模块的输入,以进一步捕捉帧之间的全局时间依赖性。

Temporal Transformer Module.时序变压器模块

由于空间转换器模块的输出为每个单独的帧编码后的高维特征,因此时间转换器模块的目标是将跨帧序列建模依赖关系

Temporal Transformer Module 的输入是空间变换器模块(Spatial Transformer Module)的输出。即每一帧的2D关节坐标经过空间变换器处理后的高维特征表示。这里需要将空间变换器输出的每一帧的高维特征向量展平,以准备输入到时间变换器。假设对于第 i 帧,空间变压器输出为 J行C列的矩阵,通过向量平坦化后生成一个 1*(J·c)的向量,然后在展平的特征向量中加入时间位置嵌入,以保留帧在视频序列中的时间位置信息,也就是把这些向量连接起来,假设有 f 帧,最后就得到一个 f 行 (J · C)列的矩阵。

在时序变压器模块之前还引入了位置嵌入来保留帧的位置信息。时序变压器编码器和空间变压器编码器采用相同的架构,即由多头自注意力模块和MLP模块组成。时序变压器模块的输出为 f * (J · C) 的矩阵

回归头

将Temporal Transformer Encoder的输出转换为预测中心帧的3D姿态。这通常涉及到一个加权平均操作和一个多层感知机(MLP)。

损失函数

使用标准的MPJPE(Mean Per Joint Position Error)损失函数来训练模型。该损失函数计算预测的3D关节位置与真实标注之间的平均欧氏距离。

实验

数据集

Human3.6M

MPI-INF-3DHP

评估指标

1. MPJPE(Mean Per Joint Position Error)——协议1(Protocal 1)

       每个关节的平均位置误差,用于衡量估计的3D关节位置与真实标注(ground truth)之间的误差。

       计算步骤:

       ① 计算每个关节的误差:对于每个关节,使用欧氏距离(L2范数)计算其在3D空间中估计位置与真实标注之间的距离。

       ② 求平均:将所有关节的误差求平均,得到整个姿态的平均误差。这个平均值反映了模型在估计所有关节位置时的准确性。

       ③ 单位:MPJPE通常以毫米(mm)为单位,因为它提供了一个直观的度量,表明模型预测与真实数据之间的物理距离误差。  

       计算公式:

        

2. P-MPJPE——协议 2 (Protocol 2)

       P-MPJPE 是 MPJPE 的一个变种,它在计算平均位置误差之前,对估计的姿态进行了一个额外的处理步骤,以提高评估的鲁棒性。

       计算步骤:

       ① 刚体对齐(Rigid Alignment):在计算P-MPJPE之前,首先对估计的姿态进行全局的刚体变换(通常是旋转和平移),以对齐估计的姿态和真实的姿态。这种对齐尝试在不考虑关节尺度的情况下,通过一个最优的旋转和平移操作来最小化估计姿态和真实姿态之间的距离。

       ② 计算每个关节的误差:与MPJPE一样,对于对齐后的估计姿态和真实姿态,计算每个关节的3D位置误差。

       ③ 求平均:将所有关节的误差求平均,得到整个姿态的平均位置误差。

Tips:P-MPJPE是MPJPE的升级版,但是为什么还要与MPJPE一起使用呢?

P-MPJPE(Protocol 2 Mean Per Joint Position Error)确实是MPJPE(Mean Per Joint Position Error)的一个改进版本,它通过刚体对齐步骤增加了评估的鲁棒性。尽管P-MPJPE考虑了全局对齐,但在实际研究和比较中,MPJPE和P-MPJPE通常一起使用,原因包括:

全面评估:MPJPE和P-MPJPE提供了模型性能的两个不同视角。MPJPE直接反映了模型预测的准确性,而P-MPJPE则考虑了全局对齐后的准确性,这有助于更全面地理解模型的性能。

鲁棒性对比:通过比较MPJPE和P-MPJPE,可以评估模型对全局姿态对齐的依赖程度。如果一个模型在MPJPE上表现不佳,但在P-MPJPE上表现良好,这可能表明模型对全局姿态的预测不够稳定。

不同应用场景:不同的应用可能对姿态估计的准确性有不同的要求。有些应用可能更关注整体的姿态对齐,而另一些应用可能需要精确的局部关节位置。同时报告MPJPE和P-MPJPE可以满足不同应用场景的需求。

算法公平性:在比较不同算法或模型时,使用MPJPE和P-MPJPE可以提供一个更公平的基准。一些算法可能在全局对齐方面做得更好,而另一些可能在局部精度上有优势。同时报告这两个指标可以更全面地评估和比较算法的性能。

研究趋势:在3D人体姿态估计的研究社区中,同时报告MPJPE和P-MPJPE已经成为一种标准做法。这有助于保持研究的连贯性,并使得不同研究之间的结果更易于比较。

误差来源分析:分析MPJPE和P-MPJPE之间的差异可以帮助研究人员理解模型在不同类型的误差上的表现,例如全局姿态偏差、局部关节位置误差等。

因此,尽管P-MPJPE是MPJPE的一个改进,但两者一起使用可以提供更丰富的信息,帮助研究人员和开发者更准确地评估和理解模型的性能。

实验详情

深度学习框架:pytorch

帧序列长度:实验设计了三种不同的帧序列长度,即f = 9, f = 27, f = 81

数据增强:水平翻转(pose flipping)

优化器:Adam优化器

训练周期:模型训练了130个epoch,即数据集被完整遍历了130次。

权重衰减:使用了权重衰减(weight decay)0.1,是一种正则化技术,用于防止模型过拟合。

学习率调度:采用了指数衰减的学习率调度策略,初始学习率为2e-4,每个epoch的学习率衰减因子为0.98。

批量大小:训练时使用的批量大小(batch size)为1024,即每次梯度下降更新前向传播1024个样本。

随机深度:在Transformer编码器层中使用了随机深度(stochastic depth),这是一种正则化技术,通过随机丢弃一些层的输出来减少过拟合,丢弃率为0.1。

2D姿态检测器:

① 对于Human3.6M数据集,使用级联金字塔网络(Cascaded Pyramid Network, CPN)作为2D姿态检测器,生成输入到PoseFormer模型的2D姿态序列。

② 对于MPI-INF-3DHP数据集,由于该数据集提供了精确的2D姿态标注,因此直接使用这些标注作为模型的输入。

与目前先进技术比较

Human3.6M

        表1中报告了测试集(S9和S11)的所有15个动作结果,最后一列提供了所有测试集的平均性能

        作者遵循了2D到3D姿态提升的方法,首先使用CPN(Cascaded Pyramid Network)级联金字塔网络作为2D姿态检测器来预测2D姿态,然后将这些2D姿态作为输入数据用于训练和测试3D姿态估计模型。

        与基线的比较:PoseFormer在协议1和协议2下的性能均超过了其基线模型(即第3.1节中的时序变压器基线),分别提高了6.1%和6.4%。这表明时空变换器在模拟每帧内关节之间的相关性方面具有明显优势。

        性能结果:在协议1下,PoseFormer实现了最低的平均MPJPE(44.3mm),如表1(上半部分)所示。与基于变换器的方法METRO相比,PoseFormer在忽略时间一致性的情况下,将MPJPE降低了约18%。

        协议2的结果:在协议2下,PoseFormer同样取得了最佳的整体结果,如表1(下半部分)所示。

        对困难动作的预测:PoseFormer在一些动作变化快且关节间长距离关联性强的困难动作(如拍照、坐下、遛狗和吸烟)上取得了更准确的预测结果。在这些困难动作中,全局依赖性起着重要作用,变换器的注意力机制特别有优势。

        为了进一步探究PoseFormer的性能下限,作者直接使用真实的2D姿态数据作为输入,以减少由嘈杂的2D姿态数据引起的误差。结果显示,当使用干净的2D姿态数据时,MPJPE从44.3mm降低到31.3mm,降低了约29.7%。结果如表2所示:

        与SRNet相比,PoseFormer的平均得分提高了约2%。在图3中,作者还比较了在Human3.6M测试集S11的Photo动作中,PoseFormer在一些误差较大的单个关节上的表现。PoseFormer在这些困难关节上的表现优于先前的方法。

MPI-INF-3DHP

        该数据集包含的训练样本较少,并且部分样本取自室外场景。由于该数据集的序列长度通常较短,因此使用9帧的2D姿势作为模型输入。并且poseformer再次在所有三个评估指标(PCK, AUC和MPJPE)上实现了最佳性能。表3报告了PoseFormer与其他方法对MPI-INF-3DHP的定量结果

Qualitative Results 定性评估

        作者提供了PoseFormer模型估计的3D姿态与真实姿态(ground truth)之间的视觉比较。评估是在Human3.6M数据集的测试集S11上进行的,并且特别关注了"Photo"动作。这个动作被认为是最具挑战性的之一,因为在拍照时人体的姿态变化可能非常快,且容易出现遮挡和复杂的空间关系,导致所有方法都很难准确估计,通常MPJPE(Mean Per Joint Position Error)值较高。

        PoseFormer 与 state-of-the-art method 方法进行了比较,PoseFormer实现了更准确的预测。

消融实验

        为了验证PoseFormer各个组件的贡献以及超参数对性能的影响,协议1下使用Human3.6M数据集进行了大量的消融实验。

PoseFormer设计

        在表4中研究了空间变压器的影响,评估空间变换器(spatial transformer)和位置嵌入(positional embeddings)在模型中的作用

        输入数据:使用9帧由CPN(Cascaded Pyramid Network)检测到的2D姿态作为输入,其中每个姿态包含17个关节(J = 17)。

        嵌入维度:空间变换器的嵌入维度设置为17个关节乘以32维,即544维;空间变换器编码器层数为4层。时间变换器同上。

        基线比较:首先,作者将空间-时间变换器的设计与其在第3.1节中提到的变换器基线进行比较。结果显示,空间-时间变换器显著降低了MPJPE(从52.5mm降低到49.9mm),这表明通过更强地建模关节间的相关性,可以显著提升模型性能。

        位置嵌入的组合:作者探索了四种可能的位置嵌入组合:不使用位置嵌入、仅使用空间位置嵌入、仅使用时间位置嵌入、同时使用空间和时间位置嵌入。

        实验结果:通过比较这些组合的结果,很明显位置嵌入可以提升模型的性能。当在空间和时间模块上都应用位置嵌入时,可以获得最佳的整体结果。

架构参数分析

        作者探索了不同的参数组合,以确定空间变换器中每个关节嵌入特征的维度(用 c 表示,决定了模型在捕捉局部关节关系时的特征表达能力)以及变换器编码器中使用的层数(用 L 表示,影响了模型能够捕捉的时间依赖性的深度和复杂性)

        空间变换器的输出会被展平(flatten),并与时间位置嵌入相加,形成时间变换器编码器的输入。因此,时间变换器编码器的嵌入特征维度是 c * J。最终结果如表5,确定了模型的最优参数配置为 c = 32, Ls = 4, Lt = 4,其中Ls代表空间变换器编码器的层数, Lt代表时间变换器编码器的层数

计算复杂性分析

        在表6中,作者报告了模型在不同输入序列长度(

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/950371
推荐阅读
相关标签