单目三维人体姿态估计技术有望极大地提高人体运动数据的可用性。表现最好的单幅图像2D3D提升模型使用图卷积网络(GCNs),通常需要一些手动输入来定义不同身体关节之间的关系。我们提出了一种新的基于变压器的方法,该方法使用更广泛的自我注意机制来学习表示关节的符号序列中的这些关系。我们发现使用中间监督,以及堆叠编码器之间的剩余连接有利于性能。我们还建议使用错误预测作为多任务学习框架的一部分,通过允许网络补偿其置信度来提高性能。我们进行了广泛的消融研究,以证明我们的每一项贡献都能提高性能。此外,我们表明,我们的方法在单帧3D人体姿势估计方面的表现优于最近的技术水平。我们的代码和训练过的模型在Github上公开提供。
运动分析对于混合现实、人机交互、运动生物力学和物理治疗等应用至关重要。然而,人体运动是高度复杂和主观的,高维度和受试者之间的差异意味着仍然有很多不了解的地方。虽然自20世纪80年代以来,运动捕捉系统就被用于量化运动,但设备昂贵,数据集在很大程度上受到实验室设置的限制,而且可供公开使用的数据相对较少。与此同时,互联网收集了大量野外(无标签和不受限制)的移动人类图像和视频。单目3D人体姿态估计(HPE)技术的成熟有可能使可用数据和可评估场景逐步增加,最终可用于提高我们对人体运动的理解
单眼三维人体姿态估计是指从单个视点预测三维关节位置。虽然视频技术可以利用时间信息来提高*表示等贡献精度,但单幅图像估计器仍有其自身的用处。例如,关于人体运动的有用信息可以从低帧率的在线图像数据集或视频数据集中学习。此外,一些视频方法选择使用单帧空间模型和多帧时间模型[2]的组合。因此,强单幅图像的3D姿态提升器也可以提高视频数据的性能。
直接估计技术旨在从图像[3]中直接估计三维人体姿态。然而,具有3D姿态标签的不同图像数据集是稀疏的,并且可以方便地利用现成的2D姿态估计器[4],[5]的高精度,这非常适合于像素处理任务。姿态提升方法从这些估计器提供的2D关节预测中预测3D姿态。用于学习这种映射的神经网络架构的类型已经逐步发展。最初用于姿态提升的简单基线[6]使用多层感知器来实现惊人的精度,即使没有来自图像特征的信息。最近的研究强调,将姿态视为向量忽略了关节之间的空间关系,而图形结构可能更适合[7]。然而,现有的关于图卷积的工作需要手工制作的邻接矩阵来定义节点之间的关系。此外,标准图卷积用共享权矩阵对相邻关节之间的关系进行建模,这对于铰接体的建模是次优的,因为不同身体关节之间的关系可能是不同的[8]。此外,叠加GCN层可能会导致[9]过平滑。相比之下,变压器模型的自注意算子将前馈层推广为对输入是动态的,并且关节之间的关系可以通过学习而不是手动编码。
transformer首先取代了循环神经网络作为自然语言处理(NLP)[10]中的主要模型,最近在图像分类[11]、物体检测[12]和动作识别[13]等视觉任务中成功取代了卷积神经网络。然而,迄今为止,很少有研究将transformer应用于三维人体姿态估计任务。现有的工作要么采用直接估计方法[14],要么集中研究基于视频的2D-3D提升[2],[15]。据我们所知,我们的方法是第一个采用变压器进行单幅图像2D-3D姿态提升的方法。序列的输入和输出标记表示关节,因此我们将我们的方法称为Jointformer。
因此,我们的贡献如下:
•我们提出了一种用于人体姿态估计的新型单帧2D-3D姿态提升的关节transformers。
•我们建议通过使网络能够补偿自身的不确定性,预测与每个关节相关的错误来提高准确性。
•我们提出了一种改进transformers结构,根据3D预测本身、输入2D关节和每个关节的预测误差,改进关节变压器的3D姿势预测。
•我们在transformers编码器堆栈中引入了对3D关节和误差预测的中间监督,由线性层促进。
•我们表明,这种架构在Human3.6M和MPI-INF-3DHP数据集上实现了最先进的结果,用于单帧3D人体姿势估计
人体姿态估计:由于其在动作识别、增强现实和混合现实等多个领域的适用性,HPE已经成为计算机视觉中一个非常活跃的问题。我们介绍了与直接估计和2D-3D提升方法相关的文献。直接估计是指直接从原始图像中估计三维姿态。Pavlakos等[16]利用人体关节的序数深度来提供一个较弱的监督信号。Sun等人[17]利用关节连接结构,并定义了一个组合损失函数,对姿态的远程相互作用进行编码。马丁内斯等人探索了将问题解耦为2D人体姿势估计和2D- 3D提升,并使用vanilla神经网络来学习映射。Zhao等[7]利用语义图卷积网络(SemGCN)中节点的空间关系(包括局部和全局)来提高性能。Ci等[18]引入了局部连接网络来克服GCNs在估计3D姿态时的有限表示能力。Xu等人[19]使用图堆叠沙漏网络来处理三种不同尺度的人类骨骼表征的图结构特征。Tekin等[20]设计了一个网络,结合了直接估计和提升的优缺点。Yang等[21]提出了一种使用几何感知鉴别器辅助对抗学习的野外HPE方法。Fang等[22]提出了一种基于双向循环网络的提升框架,该框架明确地对诸如运动学、对称性和运动协调等辅助信息建模。Sharma等[23]使用变分自动编码器来预测一组候选3D姿势,并使用序数得分或信息对它们进行排名。Liu等[8]-在对HPE的综合综述中,研究了基于图卷积的提升方法的不同权值分担策略。Zhou等人[24]提出了一种两阶段方法,其中2D点被映射到中间潜在空间,然后对3D空间进行体积回归。
在视觉领域的Transformers:30年来,卷积神经网络(cnn)[25]一直是计算机视觉领域的主导模型。由于卷积在小的局部邻域内运行,深度堆叠卷积对于形成大的接受域和捕获长距离依赖关系变得必要。非局部神经网络[26]受到NLP[10]中的自我注意机制的启发,在CNN的各个阶段之间使用少量的非局部块,以更好地捕获长距离关系,进行动作识别。Ramachandran等人[27]探索了在小窗口内使用独立的自我注意作为图像分类和目标检测的基本构建块(而不是在卷积之上的增强)。同样,Zhao等[28]使用了一种具有成对和patchwise自注意的自注意网络进行图像识别。
视觉转换器(ViT)[11]并没有将构建块的结构建立在resnet风格的体系结构上,而是直接应用了一个标准Transformers(尽可能少的修改)来对图像进行分类。图像输入为扁平的patches序列,patches处理类似于NLP应用程序中的tokens标记(单词)。类似的方法已经应用于视频分类[29]和动作识别[13]。
尽管在其他视觉任务中有很大的前景,但很少有研究将Transformers应用于三维人体姿态估计任务。Liu等人首次使用注意力机制自适应地识别人类运动视频的时间窗口中的重要帧。Lin等[14]使用变压器直接估计单个输入帧的3D人体姿势和形状。输入标记由CNN提取的特征向量组成,该特征向量与随机初始化的3D关节或网格顶点连接。在每个编码器之后,输入输入令牌的尺寸逐渐减小。Zheng等人[2]解决了基于视频的3D人体姿态估计任务,并将空间Transformers作为一个更大的时间变压器中的组件,其中输出标记是编码的特征,而不是3D关节位置。因此,它不能应用于单帧2D-3D提升,其性能没有在图像上进行评估。Li等人[15]使用了一个提升Transformers,用跨步时间卷积取代编码器中的前馈层。它对时间序列进行操作,其中每个输入标记都是一个完整的骨架。这意味着有用的信息不能在骨骼的关节之间传递。
误差预测、改进和中间监督:人体姿态估计模型的预测不可避免地存在误差。Ronchi等人[30]在COCO数据集[31]上对2D HPE估计器的预测误差进行了严格的分析。研究了不同类型的误差(抖动、反转、交换和未命中)的相对频率和对性能的影响,发现误差显示出与所使用的2D位姿估计器类型无关的相似分布。Moon等[32]使用这些误差统计数据来生成合成姿势,并将其输入到细化网络。类似地,Chang等人[33]使用特定的误差分布来合成用于2D- 3D姿态提升的2D姿态。Fieraru等人[34]引入了一种姿态优化网络,该网络将图像和给定的姿态估计同时作为输入。Zhang等[35]构造了一个姿态图来考虑细化过程中不同关键点之间的关系。Wang等[36]使用图形姿态细化(GPR)模块根据关键点之间的关系来细化视觉特征。
中间监督是在深度神经网络的各个阶段使用额外的损失项来提高性能的实践。在二维人体姿态估计中,Newell等[37]使用了重复的自底向上/自顶向下处理,中间监督他们的堆叠沙漏网络DETR[12]在堆叠的Transformers译码块之间使用中间监督来进行目标检测
在本节中,我们将描述我们提出的用于3D人体姿态估计的网络架构。遵循之前的2D-3D姿态提升方法[6],我们使用一个现成的模型从图像中生成2D姿态,并使用这些预测来估计相应的3D姿态。三维姿态估计在相机坐标和骨盆关节为中心。虽然以前的大多数技术都使用多层感知器(mlp)[6]或GCNs[7],但我们使用Transformer分两部分预测和细化3D姿态。首先,我们的Joint Transformer估计单个帧的2D姿态的3D姿态和预测误差。然后,利用中间预测和预测误差,进一步改进了该预测。这种新颖的网络组合使我们能够在单帧3D姿态估计中实现最先进的性能。
我们的Joint Transformer的设计,以提升输入的2D姿态到3D的单帧。给定一组J二维关节坐标x,我们将每个关节视为一个令牌,并首先将其嵌入到尺寸为c的更高维度:
传统上,在Transformer中,嵌入之后是位置编码。然而,在我们的例子中,关节的顺序在训练和测试过程中都没有改变,隐式地编码了输入本身的位置(即输入中的第一个关节总是髋关节)。这使得显式位置编码的添加是多余的,并且实际上会损害我们的预测性能,正如我们在第IV-C节中所展示的那样。
在嵌入之后,我们将关节点tokens馈送到Transformer编码器的堆栈中,其中应用自注意来跨每个关节共享信息。我们使用变压器编码器[10]的原始实现,并且没有进一步修改隐藏维数。给定L个变压器编码器,每个编码器的输出为。最后,我们回归最后一个编码器z的输出,使用由层归一化、dropout和单个线性层fpred(z)组成的MLP块来预测3D姿态:。
1)中间监督 : 通过设计,Transformer编码器层在tokens之间共享信息,并学习哪些tokens对于预测是重要的。这甚至给了我们堆栈中的第一个Transformer编码器学习联合标记如何相互作用和预测3D姿势的能力(尽管不一定是容量)。我们利用中间监督来训练我们的网络。与以前的方法相比,我们不单独计算网络末端的损耗,而是在堆栈中每个单独的Transformer编码器之后引入一个损耗项。这允许网络学习初始估计,并由堆栈中的每个Transformer编码器进一步细化。后续的变压器编码器从以前的编码器中传递高度鉴别的特征,并可以专注于越来越细粒度的特征,以细化以前的估计。为了进一步帮助解决这个问题,我们在每个编码器周围添加残差连接。在我们的实现中,每个编码器后面都有一个预测3D姿态的MLP,可以对其应用损失。我们在预测的3D姿态中添加一个额外的线性层,将预测嵌入到变压器的隐藏维度中,并将嵌入添加到原始变压器输出中,如图1的右上角所示。
2)姿态嵌入:二维输入姿态坐标需要扩展到我们网络的隐藏维度。以前的方法使用线性层或图卷积来完成这项任务。然而,在我们的方法中,我们在所有关节上使用核大小为1的1D卷积。这相当于一个线性层,将每个关节的二维坐标分别扩展到隐藏维度,并在每个关节之间共享权重。由于每个关节的嵌入权重是共享的,因此该层可以专注于寻找扩展二维坐标的最佳方法,而不考虑关节的位置。传统上,Transformer还需要嵌入标记的位置编码。由于关节的输入顺序从未改变,位置已经隐式编码,额外的编码是多余的。我们在表III中显示,我们的方法在没有任何显式位置编码的情况下工作得更好,我们的卷积嵌入优于线性层。
3)错误预测:对其预测的置信度进行估计,使网络具有补偿能力。由于分类头在softmax层之前每个类生成一个预测,因此可以直接推断其预测置信度。相比之下,回归头缺乏这种开箱即用的能力。我们在变压器编码器的输出中添加第二个反映3D姿势预测的MLP,并迫使网络隐式地学习自己的不确定性。因此,误差预测将预测自己每个关节和每个坐标。我们观察到,误差预测的加入使训练稳定,并导致更好的整体结果(第IV -C节)。它还可以作为可视化姿势或技术实际应用的重要附加信息。
4)损失函数:我们用来训练我们的网络的损失函数由两项组成:3D预测损失L3D和误差损失。对于3D预测损失,我们使用预测的3D位姿y和真实位姿y之间的均方误差。对于误差损失,我们首先将真实误差定义为预测位姿和真实位姿之间的绝对差。这允许我们使用预测误差e和真实误差之间的均方误差作为误差损失。由于我们的中间监督,我们在堆栈中的每个变压器编码器后应用这两个损失项。这导致了综合损失:
其中L是堆栈中Transformer编码器的数量
为了进一步利用误差预测,提高姿态预测的精度,我们设计了一个额外的Refinement Transformer。该网络类似于我们的joint Transformer,但有以下区别:输入是原始的2D位姿连接到预测的3D位姿和误差预测。我们只堆叠两个隐藏维度为256的Transformer编码器,并且我们不使用中间监督。与joint Transformer一样,Refinement Transformer对每个关节进行标记,并使用1D卷积将8通道输入嵌入到隐藏维度。在堆叠的Transformer编码器之后,我们使用一个线性层来预测最终的3D姿态。
我们在PyTorch[38]中实现我们的方法,并使用单个NVIDIA GeForce RTX 2080 TI进行训练。我们使用AdamW[39]优化器训练联合变压器30个周期,批大小为256,初始学习率为0.001,余弦退火学习率衰减为[40]。我们所有的预测层在训练期间也包括0.2的dropout。
然后,我们确定联合变压器的权重,并使用3D预测损失和相同的超参数训练细化变压器。在评估期间,我们通过水平翻转使用测试时数据增强,遵循[41]。
实验部分就不写了