源码 https://github.com/QitaoZhao/PoseFormerV2
摘要
最近,基于变换的方法在连续的2D到3D提升人体姿态估计中取得了显着的成功。作为一项开创性的工作,PoseFormer捕获了每个视频帧中人体关节的空间关系以及级联Transformer层跨帧的人体动态,并取得了令人印象深刻的性能。然而,在真实的场景中,PoseFormer及其后续产品的性能受到两个因素的限制:(a)输入关节序列的长度;(B)二维联合检测的质量。现有方法通常对输入序列的所有帧施加自关注,当为了获得更高的估计精度而增加帧数目时会造成巨大的计算负担,并且它们对2D联合检测器有限的能力所带来的噪声不具有鲁棒性。在本文中,我们提出了PoseFormerV 2,它利用了一个紧凑的表示oflengthy骨架序列在频域中有效地扩大了感受野和提高鲁棒性噪声2D联合检测。通过对PoseFormer的最小修改,所提出的方法有效地融合了时域和频域中的特征,比其前体具有更好的速度-精度权衡。在两个基准数据集(即,Human3.6M和MPI-INF-3DHP)证明所提出的方法显著优于原始PoseFormer和其他基于变换器的变体。
引言
Transformers [36]首先在自然语言处理(NLP)领域获得巨大成功[3,8],然后将其能力扩展到计算机视觉社区,成为几个视觉任务的事实上的方法,例如,图像分类[9,19,35],对象检测[4,47]和视频识别[1,2,42]。人体关节表示的离散性和骨架序列中的长距离时间依赖性建模的要求使得变压器非常适合基于提升的人体姿势估计。先前的工作[15,16,32,44,46]已经采用变压器作为3D人体姿势估计的骨干,并显示出有希望的结果。
作为基于变换器的方法中的开创性工作,PoseFormer [46]将联合序列特征提取分解为两个阶段(参见图1B)。2)并且优于传统的基于卷积的方法。首先,每个帧内的所有关节被线性地投影到高维向量(即,联合令牌)作为空间Transformer编码器的输入。空间编码器利用自注意机制在单个帧中建立关节间依赖性。在第二阶段中,每个帧的联合令牌被组合为一个帧令牌,用作时间编码器的输入,用于顺序地跨所有帧的人体运动建模。更多细节见Sec.3.1.
尽管它的能力,PoseFormer(和其他基于变换器的方法)的性能受到两个关键因素的限制。
(a)输入2D骨架序列的长度(帧数)。
现有技术的基于变换器的方法通常使用极长的序列来获得高级性能,例如,81帧用于PoseFormer [46],243帧用于P-STMO [15],351帧用于MHFormer [16]。然而,密集地将自注意力应用于这样的长序列在计算上是高度昂贵的,例如,在RTX 3090 GPU上,3帧PoseFormer的单历元壁时间训练成本为5分钟,而对于81帧PoseFormer,成本飙升至1.5小时。
(b)2D关节检测的质量。
2D联合检测器不可避免地引入噪声,这是由于其训练数据集中的偏差以及由单帧估计范例带来的时间不一致性。例如,PoseFormer在Human3.6M数据集上使用地面实况2D检测实现了31.3mm MPJPE(平均每关节位置误差)[13]。当干净输入被CPN [6] 2D姿态检测替换时,该结果显著下降至44.3mm。在实践中,长序列推断对于诸如AR/VR头戴式设备之类的资源有限的设备上的硬件部署可能是负担不起的,并且难以获得高质量的2D检测。关于现有基于变换器的方法处理长序列的效率和对噪声2D联合检测的鲁棒性的更多定量结果可在表1中获得。
在这些实际问题的驱动下,我们提出了两个重要的研究问题:
· Q1:如何有效地利用长联合序列以获得更好的估计精度?
· Q2:如何提高模型对不可靠的2D姿态检测的鲁棒性?
很少有作品试图回答这两个问题中的任何一个,例如,下采样和上采样模块[10],其仅处理一部分视频帧以提高效率;多假设模块[16],其对身体部位的深度模糊性和2D检测器的不确定性进行建模。然而,他们中没有一个人能够同时找到这两个问题的单一解决方案,更糟糕的是,上述问题的解决方案之间似乎存在悖论,例如,多个假设[16]提高了鲁棒性,但带来了额外的计算成本(也参见表1)。
在本文中,我们提出了我们的初步尝试,一石二鸟。通过对现有技术PoseFormer的限制修改,我们表明输入序列的适当形式的表示可能是同时回答这些问题的关键。具体而言,我们揭示了几乎没有探索的频域在3D HPE文献,并建议将输入骨架序列编码成低频系数。这种表示背后的洞察力非常简单:一方面,低频分量足以表示整个视觉标识[38,41](例如,图像压缩中的2D图像和这种情况下的联合轨迹),从而消除了对昂贵的全帧自关注的需要;另一方面,骨架序列本身的低频表示过滤掉检测到的关节轨迹中包含的高频噪声(抖动和异常值)[21,22]。
我们继承了PoseFormer的时空架构,但迫使空间Transformer编码器仅“看到”长序列中的几个中心帧。然后,我们补充“短视”帧级功能(输出的空间编码器)与全球功能从低频分量的完整序列。不诉诸昂贵的帧到帧的自注意力的所有时间步长,时间Transformer编码器被重新制定为一个时间-频率特征融合模块。在两个3D人体姿态估计基准(即,Human3.6M [13]和MPIINF-3DHP [23])证明了所提出的方法(称为PoseFormerV 2)显著优于其前体(参见图1B)和其他基于变换器的变体在2D联合检测中的速度-精度权衡和对噪声的鲁棒性方面的优点。
我们的贡献有三个方面:
·据我们所知,我们是第一个将输入联合序列的频域表示用于2D到3D提升HPE的人。我们发现这种表示是同时解决该领域中两个重要问题的理想配合(即,处理长序列的效率和对不可靠联合检测的鲁棒性),并且实验证据表明该方法可以容易地推广到其他模型。
·我们设计了一个有效的时频特征融合模块,以缩小时域和频域特征之间的差距,使我们能够在速度和准确性之间取得灵活的平衡。
·我们的PoseFormerV 2在Human3.6M上的速度-精度权衡和鲁棒性方面优于其他基于变换器的方法,并在MPI-INF-3DHP上达到最先进水平。
方法
PoseFormer [46]通过将序列特征提取分解为两个阶段来促进3D人体姿势估计,即,空间编码器和时间编码器,这已被证明是有效的。然而,当输入序列长度增加时,它遭受巨大的计算负担,并且对噪声联合检测敏感。在本节中,我们将介绍PoseFormerV2的细节,它利用输入序列的频率表示来克服上述两个问题。
1 poseformer
PoseFormerV1的限制:
使用Transformer层对每个帧内的关节依赖性和跨帧的人体运动进行建模是简单的。虽然这样的密集建模带来了先进的估计精度,但是由于自注意力相对于令牌数的二次计算增长(即,空间编码器中的联合数和时间编码器中的序列长度),尤其是当输入序列长度增加时。虽然空间Transformer层的令牌号(即,联合编号)独立于帧编号,但值得注意的是,由于GPU的有限并行化能力,序列长度隐含地影响真实的场景中的空间编码器的计算预算。除了效率问题之外,PoseFormerVl对输入2D联合检测的质量敏感(实验证据可在表1和Sec.4.3)。
2. PoseFormerV2
2.1骨架序列的频率表示
我们建议将输入的骨架序列变换到频域的离散余弦变换(DCT),并利用只有一部分的低频系数。DCT系数对输入时间序列的多个等级的时间信息进行编码。具体地,低频系数编码其粗略轮廓,而高频系数编码其细节,例如,抖动或急剧变化。为了更好地说明我们选择这种表示的动机,我们提供了Human3.6M [13]数据集中CPN检测的[6]关节动作轨迹“方向”的81帧示例及其分别具有前3,9和27个DCT系数的重建。随着保持的DCT系数的数量增加,重构的轨迹变得更接近原始输入,但不太平滑。请注意,仅使用3个DCT系数(由橙子曲线表示),原始轨迹的总体趋势被捕获,并且使用9个和27个系数(粉红色和绿色曲线),原始序列的特征被更好地保留,同时高频噪声(锯齿形)被去除。这些观察促使我们利用一些信息量很大的低频DCT分量的输入联合序列的紧凑和去噪的序列表示在我们的工作。有了这样的表示,我们显着减少输入序列的有效长度,并促进我们的模型对2D联合检测中包含的噪声的鲁棒性。补充部分会更详细介绍DCT系数
这个实验证明了DCT是有效的。
2.2空间Transformer编码器
给定2D骨架序列x ∈ RF×J×2(优选地是长序列,例如,F是81),我们首先在序列中心(图1中索引为0的帧)周围采样F’(通常为F’远小于F)个帧。表示为x′ ∈ RF′×J×2,作为空间编码器的输入。空间编码器的输出表示为zTime ∈ RF′×(J·c)(时域中的帧级特征)。空间编码器的设计直接遵循PoseFormerV1。
2.3低频DCT系数
zTime被称为“近视”,因为它的感受域(F′)与整个序列长度(F)相比是受限的。为了有效地利用原始序列的长距离人类动力学,我们求助于其频域表示。我们首先将完整序列x ∈ RF×J×2转换为DCT系数,记为C ∈ RF×J×2。然后对每个联合轨迹采用低通滤波器,只保留前N(F)个系数C′ ∈ RN×J×2,在很大程度上保留了原始序列的时间信息,去除了高频噪声。
低频系数C′被平坦化并线性投影到zFreq ∈ RN×(J·c)(频率系数的嵌入)。zFreq与可学习的频率位置嵌入EFPos(如PoseFormerV1中的ETPos)相加。来自时域和频率两者的特征被级联在一起,公式化为
被馈送到时频特征融合模块。
2.4时频特征融合模块
我们采用Transformer层的跨帧时间依赖性建模,如PoseFormerV 1。与PoseFormerV 1完全在时域提取特征相比,该方法融合了时域和频域特征。为了缩小这两个领域之间的差距,我们对vanilla Transformer层进行了简单的修改。(1)时域和频域特征共享自关注,但使用单独的前馈网络;(2)我们将FreqMLP(频率多层感知器)应用于前馈网络的时域特征zTime(见图1)。4(B)(c))。在我们的FreqMLP中,我们在香草MLP之前和之后使用DCT和IDCT。这种方法背后的直觉是:利用低通滤波器从频域特征中滤除高频噪声,但是详细的人体运动特征(例如,快速局部运动)也可能作为噪声丢失。为了解决这个问题,FreqMLP充当可训练频域滤波器,允许我们自适应地调整2D关节坐标嵌入中的每个频率分量的权重(即,时域特征),作为频率特征的补充。这些模块的公式如下:
其中MSA表示多头自我注意,F’是采样的中心帧的数量。上述修改的有效性在第二节中得到验证。4.4.重要的是要认识到,串联操作会导致Transformer的令牌数量增加。然而,通过限制空间编码器仅观察有限数量的中心帧,并结合一小部分的低频DCT系数以扩大其感受域,我们可以以灵活的方式减少整体计算。与PoseFormerV1相比,这种方法不仅降低了计算成本,而且增强了模型对噪声的抵抗力。
2.5回归头和损失函数
我们使用1D卷积层来收集时间信息和线性投影来获得序列的中心帧的最终3D姿态y ∈ R1×(J·3)。我们使用标准的MPJPE(平均每关节位置误差)损失来训练我们的模型。
补充
DCT系数
现在我们正式介绍DCT。给定由x ∈ RF×J×2表示的2D关节序列,其中F是序列长度,J是每个帧中的关节数,第j个关节的x(或y)坐标的轨迹表示为xj,0 ∈ RF(或xj,1 ∈ RF,为了方便起见,两者都表示为xj是1D时间序列,我们分别对每个轨迹(总共J * 2个轨迹)应用DCT。对于轨迹Xj,第i个DCT系数计算为
其中当i = 1时δi1 = 1,否则δi1 = 0。轨迹中的每个时间步长产生一个DCT系数,即,i ∈ {1,2,…,F}.DCT系数对输入时间序列中的多个等级的时间信息进行编码。具体地,低频系数(即,当i小时)编码输入序列的粗略轮廓而高频系数(即,对于较大的i)编码细节,例如,输入序列中的抖动或急剧变化。时域中的原始输入序列可以使用逆离散余弦变换(IDCT)来恢复,其由下式给出:
且f ∈ {1,2,· · ·,F}。DCT是无损的,如果我们保持所有的系数完好无损。在实践中,我们可以稍微损失地恢复输入序列,只使用几个低频系数,并将其他系数设置为零。值得注意的是,由于我们丢弃了一些高频系数,恢复的曲线与原始曲线相比将更加平滑。DCT的这种特性是可取的-即使以更清晰的方式,仅一小部分DCT系数就足以表示整个输入序列。这促使我们使用这样的表示来有效地操作长序列,同时提高模型对低质量2D检测的鲁棒性,其中高频噪声经常发生。