MotionBERT:人体运动表征

MotionBERT:A Unified Perspective on Learning Human Motion Representations解析

  • 摘要
  • 1. 简介
  • 2. Related Work
    • 2.1 学习人体运动表征
    • 2.2 3D人体姿态估计
    • 2.3 基于骨骼的动作识别
    • 2.3 人体网格恢复
  • 3. Method
    • 3.1 Overview
    • 3.2 网络架构
      • Spatial Block
      • Temporal Block
      • Dual-stream Spatio-temporal Transformer
    • 3.3 统一预训练(Unified Pretraining)
    • 3.4 特定于任务的整合(Task-specific Finetuning)
      • 3D姿态估计
      • 基于骨骼的动作识别
      • 人体网格恢复
  • 4. 实验
    • 4.1 预训练
    • 4.2 3D姿态估计
    • 4.3 基于骨骼的动作识别
    • 4.4 人体网格恢复

论文地址:MotionBERT:A Unified Perspective on Learning Human Motion Representations
论文代码:https://github.com/Walter0807/MotionBERT
项目主页:https://motionbert.github.io/
论文出处:ICCV 2023
论文单位:北京大学+上海人工智能实验室

摘要

  • 我们提出了一个统一的观点,通过从大规模和异构数据资源中学习人类运动表示来解决各种以人为中心的视频任务
  • 具体来说,我们提出了一个预训练阶段,其中训练运动编码器以从嘈杂的部分2D观测中恢复潜在的3D运动
  • 通过这种方式获得的运动表示包含了关于人体运动的几何、运动学和物理知识,可以很容易地转移到多个下游任务。
  • 我们使用双流时空变换(Dual-stream Spatio-temporal Transformer,DSTformer)神经网络实现运动编码器。
  • 它能够全面、自适应地捕捉骨骼关节间的长期时空关系,从训练开始到目前为止三维姿态估计误差最低。
  • 此外,我们提出的框架通过简单的回归头(1-2层)微调预训练的运动编码器,在所有三个下游任务上实现了最先进的性能,这证明了学习到的运动表征的多功能性。

1. 简介

  • 感知和理解人类活动一直是机器智能的核心追求。
  • 为此,研究人员定义了各种任务来估计视频中以人为中心的语义标签,例如骨架关键点(skeleton keypoints)动作类(action classes)表面网格(surface meshes)
  • 虽然在这些任务中取得了重大进展,但它们往往被孤立地建模,而不是作为相互关联的问题建模。
  • 例如,时空图卷积网络(ST-GCN)在三维姿态估计和动作识别中已经被应用于人体关节的时空关系建模,但它们之间的联系尚未得到充分的探索。
  • 从直觉上讲,这些模型都应该学会识别典型的人类运动模式,尽管它们是为不同的问题设计的。
  • 尽管如此,当前的方法无法挖掘和利用跨任务的这些共性。
  • 理想情况下,我们可以开发一个统一的以人为中心的视频表示,可以在所有相关任务之间共享
  • 开发这种表示的一个重要挑战是可用数据资源的异构性。
  • 动作捕捉(Mocap)系统提供高保真度,通过标记和传感器获得3D运动数据,但捕获视频的外观通常限于简单的室内场景。
  • 动作识别数据集提供了动作语义的注释,但它们要么不包含人体姿势标签,要么以日常活动的有限运动为特征。
  • 相比之下,野外的人类视频提供了广泛而多样的外观和动作。
  • 然而,获得精确的2D姿态注释需要相当大的努力,并且需要获取ground-truth (GT)三维关节定位几乎是不可能的。
  • 因此,现有的研究大多集中在使用单一类型的人体运动数据的特定任务上,无法享受到其他数据资源的优势。
  • 在这项工作中,我们为学习人类运动表征提供了一个新的视角。
  • 关键思想是我们可以统一地从异构数据资源中学习通用的人体运动表示,并利用该表示统一地处理不同的下游任务
  • 我们提出了一个两阶段的框架,包括预训练和微调,如图1所示。
    MotionBERT:人体运动表征_第1张图片
  • 在预训练阶段,我们从不同的运动数据源中提取2D 骨架序列,并使用随机mask和噪声对其进行破坏。随后,我们训练运动编码器从损坏的2D骨架中恢复3D运动
  • 这个具有挑战性的任务本质上需要运动编码到:
    i)从它的时间运动中推断出潜在的3D人体结构。
    ii)恢复错误和缺失的观测。
  • 通过这种方式,运动编码器隐式地捕捉人类运动常识,如关节连接、解剖约束和时间动力学。
  • 在实践中,我们提出了**双流时空Transformer(DSTformer)**作为运动编码器捕捉骨架关键点之间的远程关系。
  • 我们假设从大规模和多样化的数据资源中学习到的运动表征可以在不同的下游任务中共享,并有利于它们的性能。
  • 因此,对于每个下游任务,我们使用任务特定的训练数据和具有简单回归头的监督信号来调整预训练的运动表示
  • 总之,这项工作的贡献有三个方面:
    (1) 我们通过学习人类运动表征的共享框架,为解决各种以人为中心的视频任务提供了新的视角。
    (2)我们提出了一种预训练方法来利用大规模而异构的人体运动资源,学习可泛化的人体运动表征。我们的方法可以同时利用3D动作捕捉数据的精确性和野外RGB视频的多样性。
    (3)我们设计了一个具有级联时空自注意块的双流transformer网络,可以作为人体运动建模的一般主干。
  • 实验表明,上述设计能够实现多功能的人体运动表示,可以转移到多个下游任务,优于任务特定的最先进的方法。

2. Related Work

2.1 学习人体运动表征

  • 早期的作品用隐马尔可夫模型(Hidden Markov Models)和图模型(graphical models )来描述人体运动。
  • 从动作识别的角度来看,设计了各种任务以自监督的方式学习运动表征,包括:未来预测、拼图、骨架对比、速度变化、跨视图一致性和对比度重建。
  • 在运动评估(motion assessment )和运动重定向(motion retargeting)等任务中也探索了类似的技术。
  • 这些方法利用同质运动数据,设计相应的名义任务,并将其应用于特定的下游任务。
  • 在这项工作中,我们提出了一个统一的预训练微调框架,以整合异构数据资源,并展示其在各种下游任务中的通用性。

2.2 3D人体姿态估计

  • 从单目RGB视频中恢复3D人体姿态是一个经典问题,其方法可分为两类。
  • 第一种是直接用CNN从图像中估计3D姿态。然而,这些方法的一个局限性是,由于当前的数据收集技术,在3D姿态精度和外观多样性之间存在权衡。
  • 第二类是首先提取2D姿态,然后用一个单独的神经网络将估计的2D姿态提升到3D。提升可以通过全连接网络,时间卷积网络 (TCN),GCN,Transformer等。
  • 我们的框架是建立在第二类,因为我们使用拟议的Transformer来完成2D到3D提升。

2.3 基于骨骼的动作识别

  • 对于人体关节间的时空关系建模,以往的研究主要采用LSTM和GCN
  • 最近,PoseConv3D提出将3D-CNN应用于堆叠的2D关节热图,取得了更好的效果。
  • 除了完全监督的动作识别任务外,NTU-RGB+D-120关注了具有挑战性的一次性(one-shot)动作识别问题。
  • 我们证明了预训练的运动表征可以很好地泛化到动作识别任务中,预训练-微调框架是一种适合于一次性(one-shot)挑战的解决方案。

2.3 人体网格恢复

  • 基于参数化人体模型如SMPL,许多研究工作专注于从单个图像回归人体网格。
  • 尽管这些方法的每帧结果很有希望,但当应用于视频时,这些方法会产生抖动和不稳定的结果
  • 一些工作以视频片段为输入来利用时间线索。
  • 另一个常见的问题是,配对图像和GT网格大多是在约束场景下捕获的,这限制了上述方法的泛化能力。
  • 为此,Pose2Mesh建议首先使用现成的姿态估计器提取2D骨架,然后将其提升到3D网格顶点。
  • 我们的方法是对最先进的人体网格恢复方法的补充,可以进一步提高它们与预训练的运动表征的时间一致性。

3. Method

3.1 Overview

  • 正如第1节所讨论的,我们的方法包括两个阶段,即统一的预训练和特定任务的微调
  • 在第一阶段,我们训练一个运动编码器来完成2D到3D的提升任务,其中我们使用所提出的Transformer作为骨干。
  • 在第二阶段,我们对预训练的运动编码器和下游任务的一些新层进行微调
  • 我们使用2D骨架序列作为预训练和微调的输入,因为它们可以可靠地从各种运动源中提取,并且对变化具有更强的鲁棒性。
  • 已有研究表明,在不同的下游任务中使用2D骨架序列是有效的。
  • 我们将首先介绍DSTformer的架构,然后详细描述训练方案。

3.2 网络架构

  • 图2显示了2D到3D提升的网络架构。
    MotionBERT:人体运动表征_第2张图片
    我们提出了双流时空Transformer(DSTformer)作为人体运动建模的一般骨干。
    DSTformer 由 N 个双流融合模块组成。
    每个模块包含空间或时间MHSA和MLP的两个分支。
    空间MHSA模拟一个时间步长内不同关节之间的连接,而时间MHSA模拟一个关节的运动。
  • 给定一个输入的2D骨架序列 x∈RT×J×Cin,我们首先将其投影到一个高维特征 F0∈RT×J×Cf, 然后对它添加可学习的空间位置编码 PSpos∈R1×J×Cf时间位置编码PTpos∈RT×1×Cf
  • 然后我们使用序列到序列模型DSTformer,用于计算 Fi∈RT×J×Cf(i = 1,…,N),其中N为网络深度。
  • 我们对 FN 应用 tanh激活 的线性层,来计算运动表示 E∈RT×J×Ce
  • 最后,我们对 E 进行线性变换来估计3D运动 X^ ∈ RT×J×Cout。其中,T为序列长度,J为人体关节数。Cin、Cf、Ce、Cout分别表示输入、特征、嵌入、输出的通道号。
  • 下面,首先介绍了DSTformer的基本组成模块,即多头空间和时间模块自关注(Spatial and Temporal Blocks with Multi-Head Self-Attention,MHSA),然后解释DSTformer的架构设计。

Spatial Block

  • 空间MHSA (S-MHSA)旨在对同一时间步长内关节之间的关系进行建模。
  • 它定义为:
    MotionBERT:人体运动表征_第3张图片
  • 我们将S-MHSA并行应用于不同时间步长的特征。
  • 残差连接(Residual connection)和层规范化(LayerNorm)用于S-MHSA结果,将其进一步输入多层感知器(MLP),然后再跟随一个残差连接和LayerNorm。
  • 我们用MHSA、LayerNorm、MLP和残差连接S表示整个空间块。
    MotionBERT:人体运动表征_第4张图片 在这里插入图片描述

Temporal Block

  • 时间MHSA (T-MHSA)旨在模拟身体关节在时间步长的关系
  • 它的计算过程与S-MHSA相似,只是MHSA应用于每个关节的时间特征 FT∈RT×Ce,并在空间维度上并行化。
    MotionBERT:人体运动表征_第5张图片

Dual-stream Spatio-temporal Transformer

  • 给定分别捕获帧内和帧间身体关节相互作用的空间和时间MHSA,我们组装基本构建块来融合流中的空间和时间信息。

  • 我们基于以下假设设计了一个双流架构:
    (1)这两个流都应该能够对全面的时空上下文进行建模。
    (2)每个流应该专门研究不同的时空方面。
    (3)将两个流融合在一起,并根据输入的时空特征动态平衡融合权值。

  • 因此,我们将空间和时间的MHSA块按不同顺序堆叠,形成两个并行计算分支

  • 利用注意力回归器预测的自适应权重融合两个分支的输出特征。

  • 双流融合模块重复N次:
    在这里插入图片描述
    其中Fi表示深度 i 处的特征嵌入,◦表示逐元素生成。
    S和T块的顺序如图2所示,不同的块不共享权重。

  • 自适应融合权重α_ST, α_TS∈RN×T×J由下式给出:
    MotionBERT:人体运动表征_第6张图片

3.3 统一预训练(Unified Pretraining)

  • 在设计统一的预训练框架时,我们解决了两个关键挑战:
    (1)如何在通用pretext task(前置任务)中学习强大的动作表征。
    (2)如何利用各种格式的大规模且异构的人体运动数据。

  • 对于第一个挑战,我们遵循语言和视觉建模的成功实践来构建监督信号,即掩码部分输入并使用编码表示来重构整个输入。

  • 需要注意的是,这种 “cloze” 任务在人体运动分析中自然存在,即从2D视觉观察中恢复丢失的深度信息,即3D人体姿态估计。受此启发,我们利用大规模3D动作捕捉数据并设计了一个2D到3D的升降前置任务

  • 我们首先通过投影3D运动来提取2D骨架序列 x。

  • 然后,我们通过随机屏蔽和添加噪声来破坏x,以产生损坏的2D骨架序列,这也类似于2D检测结果,因为它包含闭塞,检测失败和错误。关节级和帧级 mask都以一定的概率应用。

  • 我们使用上述运动编码器来获得运动表示 E 并重建三维运动 Xˆ。

  • 然后,我们计算了Xˆ 和GT3D运动X 之间的关节损失L_3D。我们还加入了速度损失L_O。

  • 因此,三维重建损失函数为:
    MotionBERT:人体运动表征_第7张图片

  • 对于第二个挑战,我们注意到2D骨架可以作为一种通用媒介,因为它们可以从各种运动数据源中提取。

  • 我们进一步将野外RGB视频合并到2D到3D提升框架中,以进行统一的预训练。

  • 对于RGB视频,2D骨架 x 可以通过手动标注或 2D姿态估计器给出,提取的2D骨架的深度通道(第三维信息)本质上是“masked”的。

  • 类似地,我们添加额外的 masks 和 noises来降低 x (如果x已经包含检测噪声,则只应用掩码)。

  • 由于3D运动GT X 无法用于这些数据,我们应用加权的2D重投影损失,其计算公式为:
    MotionBERT:人体运动表征_第8张图片
    其中,x^ 为估计的3D运动X^ 的二维正交投影,δ∈RT×J由可见性标注或二维检测置信度给出。

  • 总预训练损失由:
    在这里插入图片描述
    其中λO是平衡训练损失的常数系数。

3.4 特定于任务的整合(Task-specific Finetuning)

  • 学习到的特征嵌入 E 作为3D感知和时间感知的人体运动表示。
  • 对于下游任务,我们采用极简设计原则,即:实施浅层下游网络和无花里胡哨的训练
  • 在实践中,我们使用一个额外的线性层或带有一个隐藏层的MLP。然后我们对整个网络进行端到端的微调。

3D姿态估计

  • 当我们使用2D到3D的提升作为前端任务时,我们只需重用整个预训练的网络
  • 在微调过程中,输入的2D骨架没有额外mask或noise的视频中估计出来。

基于骨骼的动作识别

  • 我们直接在不同的人和时间步骤上应用全局平均池化。然后将结果输入到具有一个隐藏层的MLP中。
  • 该网络使用交叉熵分类损失进行训练。对于one-shot学习,我们在混合特征后应用线性层来提取clip-level动作表示。

人体网格恢复

  • 我们使用SMPL模型来表示人体网格,并对其参数进行回归。
  • SMPL模型由位姿参数 θ∈R72形状参数 β∈R10组成,计算三维网格为 M(θ,β)∈R6890×3
  • 为了回归每一帧的姿态参数,我们将运动嵌入 E提供给具有一个隐藏层的 MLP,得到 θ^ ∈RT×72
  • 为了估计形状参数,考虑到视频序列上的人体形状应该是一致的,我们首先在时间维度上对 E 进行平均池化,然后将其输入到另一个 MLP 中以回归单个β^ ,然后将其扩展到整个序列作为 β^ ∈RT×10
  • 形状MLP与姿态回归的结构相同,分别用平均形状和姿态初始化。
  • 总损失计算为:
    MotionBERT:人体运动表征_第9张图片

4. 实验

4.1 预训练

  • 我们从Human3.6MAMASS两个数据集中收集了多种逼真的3D人体运动。
  • Human3.6M是一个常用的室内3D人体姿势估计数据集,包含360万视频帧的专业演员表演日常动作。
  • 我们进一步整合了两个野外RGB视频数据集PoseTrack(已注释)InstVariety(未注释) 用于更高的动作多样性。
  • 我们将人体关键点定义与Human3.6M对齐,并将相机坐标校准为像素坐标。
  • 我们随机将15%的关节归零,并从高斯分布和均匀分布的混合中采样噪声。

4.2 3D姿态估计

  • 我们在Human3.6M上评估了3D姿态估计性能,并报告了以毫米为单位的平均每关节位置误差(MPJPE),该误差测量了根关节对齐后预测关节位置与GT之间的平均距离。
  • 我们还计算了平均每关节速度误差(MPJVE)来评估时间平滑性。
  • 我们使用 Stacked Hourglass (SH) network 来从视频中提取2D骨架,并在Human3.6M训练集上对整个网络进行微调。

4.3 基于骨骼的动作识别

  • 我们使用人类动作数据集 NTU-RGB+D,其中包含60个动作类的57K视频,我们遵循交叉主题(X-Sub)和交叉视图(X-View)的数据分割。
  • 该数据集有一个扩展版本,NTU-RGB+D-120,包含120个动作类的114K视频。
  • 对于这两个数据集,我们使用HRNet提取2D骨架

4.4 人体网格恢复

  • 我们对Human3.6M3DPW数据集进行了实验,并在后续的训练中额外添加COCO数据集。

你可能感兴趣的:(3D,HPE,人体运动统一表征)