想象一下,你手里有一些不同人在派对上拍摄的照片。你想要在 3D 环境中重现那一刻: 房间的布局、每个人的站位,以及摄影师们所在的位置。

在计算机视觉中,这是一个经典的分野。我们有非常优秀的算法来重建静态场景 (墙壁、家具) ,即所谓的运动结构恢复 (SfM) 。我们也有很棒的模型来重建人物 (姿态、体型) 。但在历史上,这两个领域就像水火不容。SfM 算法将移动的人物视为需要过滤的“噪声”,而人物重建方法通常会生成“悬浮”的化身,完全没有地面的概念或房间的比例感。

这篇博文将探讨一篇名为 “Reconstructing People, Places, and Cameras” 的研究论文,该论文介绍了一种称为人物与运动结构恢复 (Humans and Structure from Motion, HSfM) 的方法。这种方法弥合了两者之间的鸿沟,证明了通过同时求解人物、场景和相机,我们可以获得这三者更好的结果。

图 1. 人物与运动结构恢复 (HSfM) 。左侧显示的是房间里有人物的输入图像。右侧显示的是联合 3D 重建: 彩色的人体网格、房间的点云以及相机位置 (绿色屏幕) 。

如图 1 所示,目标是利用一组稀疏的未标定图像 (左) ,生成一个完全一致的 3D 世界 (右) ,其中人物被锚定在地面上,家具被绘制出来,相机在空间中的位置也准确无误。

问题: 孤立的两端

要理解 HSfM 的价值,我们需要了解当前领域的局限性。

  1. 运动结构恢复 (SfM) : 传统方法 (如 COLMAP) 或较新的深度学习方法 (如 DUSt3R) 非常擅长在静态场景中寻找匹配点以构建 3D 点云。然而,它们在尺度 (scale) 上存在困难。如果没有已知大小的参考物体,SfM 重建不知道一个房间是 5 米宽还是 50 米宽。它创建的是一个“比例未知 (up-to-scale) ”的世界。此外,这些方法通常会完全忽略人物。
  2. 人体网格恢复 (HMR) : 像 HMR2 这样的方法可以观察照片并预测人物身体的 3D 网格。虽然姿态 (手臂和腿相对于身体的位置) 通常很准确,但全局位置往往是猜测的。你经常会得到看起来悬浮在半空中或穿透地板的网格,因为算法缺乏关于环境的上下文信息。

解决方案?协同作用。 HSfM 的作者提出,这两个问题实际上互为解药。人类的身高和体型有一个统计范围。通过将人物包含在重建中,我们可以将他们作为“度量标尺”来解决场景的尺度模糊问题。反过来,可靠的场景重建和相机位置可以约束人物,迫使他们站在地面上,而不是漂浮在虚空中。

HSfM 流程

HSfM 框架是一个优化流程。它不是从头开始训练神经网络;而是巧妙地结合了现有最先进模型的输出,并通过联合优化过程对它们进行微调。

让我们看看高层的工作流程:

图 2. 人物与运动结构恢复流程。左侧: 预处理提取 2D 关键点、人体网格和场景点图。中间: 联合优化对所有内容进行改进。右侧: 最终的度量级 3D 输出。

如图 2 所示,该过程通过三个主要阶段将原始图像转化为完善的 3D 世界: 预处理初始化联合优化

1. 预处理和定义

系统将 \(C\) 张未标定的图像作为输入。假设我们在不同照片中知道哪个人是哪个人 (已知人员重识别) 。

在优化之前,系统使用“基础模型”收集初始猜测:

  • 对于人物: 使用 ViTPose 检测图像中的 2D 关键点 (关节) ,并使用 HMR2 回归初始 3D 网格 (SMPL-X 模型) 。
  • 对于场景和相机: 使用 DUSt3R , 这是一个强大的新工具,可以输出“点图 (pointmaps) ” (稠密 3D 几何) 和初始相机参数。

让我们定义我们要求解的变量。

人物模型: 每个人物 \(h\) 由 SMPL-X 参数表示。 方程 1: 包含朝向 phi、姿态 theta、形状 beta 和平移 gamma 的人物参数集 H。 这里,\(\phi\) 是全局朝向,\(\theta\) 是身体姿态,\(\beta\) 是身体形状 (胖/瘦/高) ,\(\gamma\) 是世界中的平移 (位置) 。

相机模型: 标准的 SfM 结果尺度模糊。为了解决这个问题,作者引入了一个缩放参数 \(\alpha\)。 方程 2: 使用内参 K、旋转 R、尺度 alpha 和平移 t 将 3D 点映射到 2D 像素坐标的 2D 投影方程。 该方程将 3D 点 (\(x_{3D}\)) 投影到图像上。注意 \(\alpha t\) 项。这使得系统可以调整场景的尺度以匹配人物的度量尺寸。

场景 (点图) : 场景被表示为“点图” \(S\)。可以将点图想象为一张图像,其中每个像素包含该点在 3D 世界中的 \((x, y, z)\) 坐标。 方程 3: 将深度像素反投影为世界坐标的公式。

2. 世界的初始化

这是一个关键步骤。如果你用随机值开始优化,很可能会失败。作者需要将“数据驱动的 SfM 世界” (来自 DUSt3R) 与“人物世界” (来自 HMR2) 对齐。

由于标准 SfM 不知道距离单位是毫米还是公里,初始场景可能极小或极大。如果初始化的场景相对于人物太小,相机可能会被放置在人体内部,导致数学计算崩溃。

为了解决这个问题,该方法在优化开始前解析地计算比例因子 \(\alpha\)。

步骤 A: 旋转相机。 他们首先根据人物对齐相机。由于人的“上方”方向应该是一致的,他们可以推导出相机相对于人物的旋转。 方程 4: 使用人物朝向估计推导相对于参考相机的相机旋转。

步骤 B: 定位相机。 他们以人物为支点来估计相机的位置。通过观察人物在图像中的位置与他们在 3D 中的位置,可以三角定位出相机的位置 \(\hat{T}^c\)。 方程 5: 基于人物位置 gamma 恢复世界坐标系中的相机位置 T。

步骤 C: 求解尺度。 最后,他们将从人物推导出的相机位置 (\(\hat{T}\)) 与 SfM 工具预测的相机位置 (\(\tilde{T}\)) 进行比较。这些距离之间的比率给出了初始尺度 \(\alpha\)。这有效地调整了房间的大小以匹配人物。

3. 联合优化

现在世界已经大致对齐,系统运行一个繁重的优化过程来改进所有内容。这是论文的核心贡献。

目标函数同时最小化所有组件的误差: 方程 6: 最小化人物损失和地点 (场景) 损失总和的主要目标函数。

这个公式平衡了两个目标: 让人物看起来正确 (\(L_{Humans}\)) 和让场景看起来正确 (\(L_{Places}\)) 。让我们逐一分解。

人物损失 (\(L_{Humans}\))

这是基于 光束法平差 (Bundle Adjustment) , 一种 3D 视觉中的经典技术。 方程 7: 人物损失分解为关节重投影损失和形状正则化损失。

主要成分是重投影误差 (\(L_J\)) 。系统将 3D 人体关节投影回 2D 图像,并检查它们与检测到的 2D 关键点 (来自 ViTPose) 的距离。 方程 8: 详细的重投影误差方程,计算检测到的 2D 关节与投影的 3D 关节之间的距离。 通过最小化这个误差,系统调整相机位置和人物的 3D 位置,直到对齐完美。

他们还添加了一个小的正则化项 (\(L_\beta\)) ,以防止人体形状扭曲成不现实的怪物: 方程 9: 形状正则化项,确保人体形状参数 beta 保持在均值附近。

地点损失 (\(L_{Places}\))

该项确保静态场景在不同视图之间是一致的。它使用了改编自 DUSt3R 的“全局对齐损失”。 方程 10: 全局对齐损失方程,将不同视图的点图对齐到一个统一的世界坐标系中。 通俗地说: 如果相机 A 看到一把椅子,相机 B 也看到同一把椅子,那么从两个相机计算出的 3D 点应该落在世界中的同一个位置。这一项迫使每个视图的深度图合并成一个单一、清晰的 3D 环境。

实验与结果

研究人员在两个具有挑战性的数据集上测试了 HSfM: EgoHumansEgoExo4D 。 这些数据集包含由多个相机捕捉的人们进行的复杂活动 (击剑、打篮球、烹饪) 。

定量成功

表 2 展示的结果显示,与现有基线相比有巨大提升。

表 2. EgoHumans 和 EgoExo4D 上的评估。与 UnCaliPose 和 MASt3R 等基线相比,HSfM 大幅降低了世界坐标系下的 MPJPE (人物位置误差) 和相机平移误差 (TE) 。

数据的主要结论:

  • 人物放置 (W-MPJPE) : 在 EgoHumans 上,将人物放置在世界中的误差从 3.51 米 (使用 UnCaliPose) 降至仅 1.04 米 (使用 HSfM) 。这是 3.5 倍的提升。
  • 度量尺度: 该方法成功恢复了真实的度量尺度。以前的 SfM 方法是“无尺度”的,意味着它们无法告诉你现实世界的距离。HSfM 可以。
  • 相机精度: 通过使用人物作为约束,相机位置估计实际上比仅使用场景的方法 (DUSt3R/MASt3R) 有所改进。协同作用是双向的!

定性结果的魔力

数字虽好,但视觉结果更能说明问题。

在下方的 图 3 中,你可以看到初始状态和优化结果之间的差异。

  • *之前 (初始状态) : * 看看面板 (a)、(c) 和 (e)。人物通常看起来是漂浮的,或者场景几何形状混乱。
  • *之后 (优化) : * 在面板 (b)、(d) 和 (f) 中,人物脚踏实地。他们的脚接触地板。场景点云更加清晰。

图 3. 定性结果对比初始状态与优化后的 HSfM 结果。优化使漂浮的人物落地并修正了场景尺度。

该方法甚至在仅使用两部智能手机拍摄图像的“野外”场景和极简设置下也能工作。

图 S.1. 仅使用两部智能手机的野外结果。(a) 输入图像。(b) 没有人体网格的场景重建 (人只是嘈杂的点) 。(c) 集成了人体网格的完整 HSfM 结果。

注意上图 (图 S.1) 中,(b) 中的“人物点云”只是一个稀疏、嘈杂的团块。但在 (c) 中,HSfM 用一个干净、姿态准确且完美坐落于环境中的网格替换了这些噪声。

另一个例子展示了对“滑步 (foot-skate) ”的修正——即 3D 模型看起来像是在冰上滑动而不是站立。

图 S.2. 野外重建的特写。HSfM 确保了准确的人物-场景接触,例如人物的右脚踩在箱子上。

最后,让我们看看来自 EgoExo4D 数据集的一个复杂的室内场景。

图 S.4. EgoExo4D 上的对比。左侧: 输入图像。中间: 优化前 (破碎的场景,漂浮的人物) 。右侧: 优化后 (连贯的房间结构,落地的人物) 。

图 S.4 的中间一栏显示了“之前”的状态——一个破碎、看起来像爆炸过的场景。右栏 (“之后”) 显示了一个连贯的房间。这在视觉上证实了地点损失 (对齐场景) 和人物损失 (对齐人物) 将整个 3D 世界拉到了一起。

为什么这很重要

“Reconstructing People, Places, and Cameras” 这篇论文意义重大,因为它让我们更接近整体场景理解

  1. 免费获得的度量尺度: 通过利用人类的生物学先验 (我们大致知道人有多大) ,我们可以在不需要深度传感器或标定目标的情况下,以度量尺度重建房间。
  2. 更好的相机: 事实证明,人不仅仅是噪声;他们是有价值的几何线索。跟踪人物有助于稳定相机跟踪。
  3. 无需接触约束: 以前的许多方法显式地强制脚必须接触地面 (如果有人跳跃,这种方法就会失败) 。HSfM 通过几何一致性自然地实现落地,使其能够准确重建跳跃或动态动作。

结论

HSfM 成功地将人物、地点和相机的重建统一到一个单一的优化框架中。通过使用强大的基础模型进行初始化,并使用组合损失函数进行微调,它实现了一致性水平,这是单靠 SfM 或人体网格恢复都无法达到的。

对于计算机视觉的学生和研究人员来说,这突显了一个日益增长的趋势: 从孤立的任务 (仅仅检测姿态,仅仅构建地图) 转向联合系统 , 在这个系统中,不同的组件相互通知并改进彼此。

如果你对数学证明或代码感兴趣,作者已在其论文链接的项目页面上提供了相关资源。