引言

想象一下你戴着一副智能眼镜。你正走过客厅,伸手去拿咖啡杯,或者在键盘上打字。眼镜上装有摄像头,但它们是向外拍摄以通过地图构建世界的。它们能看到杯子、桌子,或许还能看到你的手进入画面。但它们看不见——或者至少看不见你的躯干、腿或脚。

这种“隐身”状态给增强现实 (AR) 和机器人技术带来了巨大的挑战。如果计算机系统想要理解你的动作,它需要知道你的全身姿态。用户是坐着还是站着?他们是否在向前倾?他们的脚踩在哪里?

传统上,解决这个问题需要外部动作捕捉系统 (就像电影制作中使用的那样) 或第三人称视角的摄像机。但对于消费级设备,我们只有用户头上的传感器。我们需要仅凭头部的运动和手部的动作来“脑补”出身体的其余部分。

这正是 EgoAllo 这篇研究论文的切入点。该论文提出了一种鲁棒的系统,仅使用以自我为中心 (egocentric) 的 SLAM 位姿和图像,就能估计人体姿态、身高和手部参数。

图 1. EgoAllo。我们提出了一种系统,可以根据以自我为中心的 SLAM 位姿和图像来估计人体姿态、身高和手部参数。输出结果在场景的他我中心 (allocentric) 参考系中捕捉佩戴者的动作,此处我们通过 3D 重建进行了可视化。

如图 1 所示,该系统接收来自可穿戴摄像头的输入流,并重建出一个数字替身 (Avatar) ,该替身能够镜像反映用户在现实世界中的动作,并包含准确的脚部落地和手部交互。

在这篇深度文章中,我们将探索 EgoAllo 的架构,拆解其关于“不变性条件化 (Invariant Conditioning) ”的巧妙数学洞察,正是这些洞察让这种重建成为可能。

背景: “Ego”与“Allo”

要理解这篇论文的贡献,我们需要先定义所涉及的坐标系。

  1. 自我中心 (Egocentric/Ego) : 这是相对于设备或用户头部的参考系。在自我中心视图中,摄像机就是宇宙的中心。
  2. 他我中心 (Allocentric/Allo) : 这是世界或场景的参考系。如果你从厨房走到客厅,你的他我中心位置会改变,即使耳机还在你的脸上。

这项研究的目标是获取自我中心的输入 (眼镜看到和感觉到的) ,并产生他我中心的输出 (人在房间里的位置) 。

输入: SLAM

该系统依赖于 SLAM (同步定位与建图) 。现代智能眼镜 (如本研究中使用的 Project Aria 设备) 运行 SLAM 算法来确定设备在空间中的位置。这提供了高频的 6-DoF (六自由度) 位姿流——本质上就是头部在每一毫秒的精确位置和旋转。

挑战: 歧义性

这为什么很难?因为从“头部运动”到“身体运动”的映射是一对多的。如果你的头下降了 10 厘米,你是蹲下了吗?还是弯腰了?或者是下了一级楼梯?

为了解决这个问题,研究人员采用了扩散模型 (Diffusion Model) 。 扩散模型是一种生成式 AI 模型 (与 DALL-E 或 Midjourney 背后的技术相同) ,它通过逆转噪声过程来学习生成数据。在这种情况下,模型学习自然人体运动的概率分布。它充当“运动先验 (motion prior) ”,帮助系统猜测最能解释头部运动的身体动作。

核心方法: EgoAllo 架构

EgoAllo 系统是一个将原始传感器数据转换为干净、符合物理规律的 3D 人体重建的流水线。

图 2. EgoAllo 组件概览。我们将扩散模型限制为局部身体参数 (第 3.1.1 节) 。SLAM 位姿的不变参数化 g(·) (第 3.1.2 节) 用于作为扩散模型的条件。这些可以通过全局对齐 (第 3.2.1 节) 放置到输入位姿的全局坐标系中。如果有可用的以自我为中心的视频,则通过 HaMeR [66] 进行手部检测,并通过引导 (guidance) 将其整合到采样中 (第 3.2.2 节) 。

如图 2 所示,该过程涉及三个主要阶段:

  1. 条件化 (Conditioning) : 将 SLAM 位姿处理成神经网络可以理解的格式。
  2. 扩散 (Diffusion) : 生成局部身体姿态和手部参数。
  3. 引导与对齐 (Guidance & Alignment) : 使用视频数据细化手部,并将身体放置到世界坐标系中。

让我们逐一拆解,重点关注论文最关键的贡献: 不变性条件化 (Invariant Conditioning)

1. 核心洞察: 不变性条件化

研究人员发现,你不能直接将原始头部坐标输入神经网络并期望得到好结果。如果你训练一个模型识别某人在 x=0, y=0 处转圈,它可能很难理解某人在 x=50, y=50 处转圈。

论文认为,一个鲁棒的表示必须满足两个标准:

  1. 空间不变性 (Spatial Invariance) : 无论你在房间的哪里,运动逻辑都应该是相同的。
  2. 时间不变性 (Temporal Invariance) : 无论动作发生在序列中的何时,运动逻辑都应该是相同的。

为什么以前的方法失败了

以前的方法通常违反了其中一条规则。

  • 绝对位姿: 违反了空间不变性。模型会过度拟合特定的世界坐标。
  • 序列规范化 (Sequence Canonicalization) : 一些方法基于视频片段的第一帧来定义坐标系。这解决了空间问题,但破坏了时间不变性。如果你将同一段视频切成不同的窗口,“规范”帧就会改变,从而混淆模型。

为了直观地看到绝对位姿的问题,请看下面的图 A.1。如果世界坐标系是任意定义的,同样的相对运动在计算机看来完全不同。

图 A.1. 单个人体运动轨迹的绝对头部位姿可视化,分为重新定义世界坐标系之前和之后。

解决方案: 局部规范化坐标系

EgoAllo 提出了一种新的参数化函数 \(g(\cdot)\),它同时实现了空间和时间不变性。

原始输入是“中心瞳孔坐标系” (CPF) 的位姿——这是用户双眼之间的一个虚拟点。

\[ \begin{array} { r l } & { \mathbf { T } _ { \mathrm { w o r l d , c p f } } ^ { t } = ( \mathbf { R } _ { \mathrm { w o r l d , c p f } } ^ { t } , \mathbf { p } _ { \mathrm { w o r l d , c p f } } ^ { t } ) \in \mathrm { S E } ( 3 ) , } \\ & { \{ \vec { c } ^ { 1 } , . . . , \vec { c } ^ { T } \} = g ( \{ \mathbf { T } _ { \mathrm { w o r l d , c p f } } ^ { 1 } , . . . , \mathbf { T } _ { \mathrm { w o r l d , c p f } } ^ { T } \} ) . } \end{array} \]

公式 1 和 2

为了使其具有不变性,他们首先观察时间步之间的相对运动 。 从时间 \(t-1\) 到 \(t\),头部相对于其自身的方向移动了多少?

\[ \Delta \mathbf { T } _ { \mathrm { c p f } } ^ { t - 1 , t } { = } ( \mathbf { T } _ { \mathrm { w o r l d , c p f } } ^ { t - 1 } ) ^ { - 1 } \mathbf { T } _ { \mathrm { w o r l d , c p f } } ^ { t } . \]

公式 3

然而,仅有相对运动是不够的。它无法告诉你头是倒立的,还是离地有多高。为了解决这个问题,作者引入了每时间步规范坐标系 (Per-Timestep Canonical Frames)

他们不是为整个视频片段定义一个参考系,而是为每一毫秒计算一个新的参考系。这个坐标系被投影到当前头部位置正下方的地板上。

图 3. 局部规范化坐标系。我们使用从三个坐标系计算出的变换来计算我们的不变性条件参数化 (公式 4) 。遵循 [85],CPF 的 z 轴向前。遵循 HuMoR [74],世界和规范坐标系的 z 轴向上。规范坐标系是通过将 CPF 坐标原点投影到地平面,然后将规范坐标系的 y 轴与 CPF 的前方方向对齐来计算的。

这种投影将坐标系与重力 (地板) 和用户当前的朝向对齐。完整的条件向量 \(\vec{c}^t\) 结合了相对运动以及头部相对于这个即时地板坐标系的位姿:

\[ \vec { c } ^ { t } = \biggl \{ \Delta \mathbf { T } _ { \mathrm { c p f } } ^ { t - 1 , t } , \quad ( \mathbf { T } _ { \mathrm { w o r l d , c a n o n i c a l } } ^ { t } ) ^ { - 1 } \mathbf { T } _ { \mathrm { w o r l d , c p f } } ^ { t } \biggr \} . \]

公式 4

通过这样做,模型学习的是“当头部离地 \(X\) 米并旋转 \(Y\) 度时,身体如何移动”,而不管人实际上在房间的哪个位置。

为了从视觉上验证这一点,请看下面的图 A.4。该图展示了如何将变换链接在一起以创建不变性条件。

图 A.4. 构成 EgoAllo 所使用的不变性条件的变换。

2. 扩散模型

在输入经过适当的条件化处理后,EgoAllo 使用基于 Transformer 的标准扩散模型。目标是从噪声输入 \(\vec{x}_n\) 预测干净的身体参数 \(\vec{x}_0\) (关节角度、体型、接触信息) 。

\[ \operatorname* { m i n } _ { \theta } \ \mathbb { E } _ { \vec { x } _ { 0 } } \mathbb { E } _ { n \sim \mathcal { U } } \big [ w _ { n } \big \| \mu _ { \theta } ( \vec { x } _ { n } , n , \vec { c } ) - \vec { x } _ { 0 } \big \| ^ { 2 } \big ] . \]

公式 9

模型预测的是局部参数——意味着手肘和膝盖的角度,而不是人在房间里的位置。这种解耦至关重要。模型学习身体如何关节化运动,而 SLAM 系统处理身体的位置。

3. 全局对齐与引导

一旦模型生成了一系列身体姿态,我们需要将它们放回房间中。因为我们知道头部位置来自 SLAM (\(T_{world,cpf}\)) ,并且模型预测了身体相对于头部的姿态,我们可以将变换链接起来:

\[ \begin{array} { r } { \mathbf { T } _ { \mathrm { w o r l d , r o o t } } ^ { t } \mathrm { = } \mathbf { T } _ { \mathrm { w o r l d , c p f } } ^ { t } \mathbf { T } _ { \mathrm { c p f , r o o t } } ^ { ( \Theta ^ { t } , \beta ^ { t } ) } , } \end{array} \]

公式 10

这个公式将虚拟角色的骨盆 (根节点) 放置在精确的位置,使其头部与智能眼镜的位置对齐。

视觉引导 (手部估计器)

扩散模型提供了一个强大的“先验” (基于训练数据的猜测) 。但我们也有视频!如果视频显示了手,我们应该利用这些信息。

EgoAllo 在推理过程中使用了优化步骤。它使用现成的检测器 HaMeR 检测手部,然后微调扩散生成的结果以与这些视觉线索对齐。

引导损失函数由三部分组成:

\[ \mathcal { E } _ { \mathrm { g u i d a n c e } } ^ { ( \Theta ) } { = } \mathcal { E } _ { \mathrm { h a n d s } } ^ { ( \Theta ) } { + } \mathcal { E } _ { \mathrm { s k a t e } } ^ { ( \Theta ) } { + } \mathcal { E } _ { \mathrm { p r i o r } } ^ { ( \Theta ) } . \]

公式 11

  1. 手部 (Hands) : 使生成的手部与视频检测匹配。
  2. 滑步 (Skate) : 最小化“脚部滑移” (即脚在地板上不自然地滑动) 。
  3. 先验 (Prior) : 不要偏离自然人体姿态太远。

具体针对手部,系统使用了重投影损失 。 它将 3D 手部关节投影回 2D 摄像机图像,并检查与检测到的 2D 关键点的误差。

\[ \begin{array} { r l } & { \mathcal { E } _ { \mathrm { r e p r o j } } ^ { ( \Theta ) } = \displaystyle \sum _ { t , j \in \mathcal { H } } \vert \vert \Pi _ { K } ( \mathbf { p } _ { \mathrm { c a m e r a } , j } ^ { ( \Theta ^ { t } ) } ) - \Pi _ { K } ( \hat { \mathbf { p } } _ { \mathrm { c a m e r a } , j } ^ { t } ) \vert \vert _ { 2 } ^ { 2 } , } \\ & { \mathbf { p } _ { \mathrm { c a m e r a } , j } ^ { ( \Theta ^ { t } ) } = \mathbf { T } _ { \mathrm { c a m e r a } , \mathrm { c p f } } ( \mathbf { T } _ { \mathrm { w o r l d } , \mathrm { c p f } } ^ { t } ) ^ { - 1 } \mathbf { p } _ { \mathrm { w o r l d } , j } ^ { ( \Theta ^ { t } ) } . } \end{array} \]

公式 14

此优化使用 Levenberg-Marquardt (LM) 算法执行,作者发现对于此特定任务,它比 Adam 等标准优化器收敛得快得多。

图 A.6. 比较引导优化器。(a) 随时间变化的成本。对于引导优化,LM 的收敛速度明显快于现成的 PyTorch 优化器。

实验与结果

这种复杂的条件化和引导真的有效吗?作者在多个数据集上测试了 EgoAllo,包括 AMASS (动作捕捉数据) 和来自 Project Aria 的真实世界镜头。

不变性条件化重要吗?

第一个测试是看看“空间和时间不变性”理论是否成立。他们使用不同的输入参数化方案训练了相同的模型。

表 1. 运动先验条件化比较。

表 1 显示了结果。 EgoAllo (Eq. 4) 显著优于其他方法。

  • MPJPE (平均每关节位置误差) : 越低越好。EgoAllo 在短序列上实现了 129.8mm 的误差。
  • 比较: 朴素的“绝对 (Absolute) ”参数化误差高达 159.9mm。“序列规范化 (Sequence Canonicalization) ”方法 (用于 EgoEgo 等先前工作) 误差为 153.1mm。
  • 结论: 与最接近的竞争对手相比,不变性条件化使准确率提高了近 18%。

定性比较

数字虽好,但视觉效果更直观。在下面的图 4 中,我们看到了跑步序列的比较。

图 4. 跑步序列的以自我为中心的人体运动估计。我们展示了真值、EgoAllo 的输出以及两个基线的输出。

  • 真值 (a): 实际动作。
  • EgoAllo (b): 非常接近真值。姿态自然,步伐捕捉良好。
  • EgoEgo (c): 注意扭曲。角色看起来有些驼背,四肢相对于头部运动的位置也不正确。

手部估计的改进

最有趣的发现之一是,估计全身实际上有助于更好地估计手部。

如果你只在视频帧上运行手部检测器 (如 HaMeR) ,它没有任何上下文。它可能认为手在 1 米外,但实际上只有 0.5 米远。它可能会在帧之间剧烈抖动。

通过将手连接到全身,EgoAllo 强制执行了运动学约束 。 手不可能在 3 米外,因为手臂没那么长。

图 5. 身体估计改善了手部估计。

图 5 说明了这一点。在最上面一行,我们看到与触摸屏的交互。紫色的 EgoAllo 估计在物理上是一致的——手指触摸了屏幕。在底部一行,我们看到了 EgoAllo 如何解决困扰单目估计器的深度歧义问题。

定量的改进是巨大的:

表 3. 以毫米为单位的手部估计误差。EgoAllo 的手-身估计可以约束和解决 HaMeR 噪声输出中的歧义,我们观察到这可以将手部的 MPJPE 降低超过 40%。

如表 3 所示,误差从 237.90mm (仅 HaMeR) 下降到 131.45mm (EgoAllo-Mono) 。如果可使用立体摄像机 (EgoAllo-Wrist3D) ,误差进一步降至 60.08mm

结论

EgoAllo 代表了自我中心视觉领域的重要一步。通过精心设计传感器数据输入模型的方式——特别是通过空间和时间不变性的条件化——研究人员将一个充满噪声和歧义的问题变成了一个可解决的问题。

该系统表明,你并不总是需要外部摄像机来追踪人体。仅凭一副智能眼镜,我们就能推断出脚的位置、脊柱的姿态以及手在世界中的精确位置。

主要收获:

  1. 表示为王 (Representation is King) : 你如何格式化输入数据 (规范化) 可能与模型架构本身一样重要。
  2. 全身上下文 (Whole-Body Context) : 求解全身 (躯干+腿) 提供了约束条件,可以提高较小部位 (手) 的准确性。
  3. 混合方法 (Hybrid Approach) : 结合生成式 AI (扩散模型) 与经典优化 (引导) ,使我们能够利用学习到的先验和实时传感器数据的优势。

随着 AR 眼镜变得越来越普遍,像 EgoAllo 这样的技术可能会成为其背后的引擎,确保我们的数字替身能够像我们一样无缝地在世界中移动。