想象一下,你手里有一些不同人在派对上拍摄的照片。你想要在 3D 环境中重现那一刻: 房间的布局、每个人的站位,以及摄影师们所在的位置。
在计算机视觉中,这是一个经典的分野。我们有非常优秀的算法来重建静态场景 (墙壁、家具) ,即所谓的运动结构恢复 (SfM) 。我们也有很棒的模型来重建人物 (姿态、体型) 。但在历史上,这两个领域就像水火不容。SfM 算法将移动的人物视为需要过滤的“噪声”,而人物重建方法通常会生成“悬浮”的化身,完全没有地面的概念或房间的比例感。
这篇博文将探讨一篇名为 “Reconstructing People, Places, and Cameras” 的研究论文,该论文介绍了一种称为人物与运动结构恢复 (Humans and Structure from Motion, HSfM) 的方法。这种方法弥合了两者之间的鸿沟,证明了通过同时求解人物、场景和相机,我们可以获得这三者更好的结果。

如图 1 所示,目标是利用一组稀疏的未标定图像 (左) ,生成一个完全一致的 3D 世界 (右) ,其中人物被锚定在地面上,家具被绘制出来,相机在空间中的位置也准确无误。
问题: 孤立的两端
要理解 HSfM 的价值,我们需要了解当前领域的局限性。
- 运动结构恢复 (SfM) : 传统方法 (如 COLMAP) 或较新的深度学习方法 (如 DUSt3R) 非常擅长在静态场景中寻找匹配点以构建 3D 点云。然而,它们在尺度 (scale) 上存在困难。如果没有已知大小的参考物体,SfM 重建不知道一个房间是 5 米宽还是 50 米宽。它创建的是一个“比例未知 (up-to-scale) ”的世界。此外,这些方法通常会完全忽略人物。
- 人体网格恢复 (HMR) : 像 HMR2 这样的方法可以观察照片并预测人物身体的 3D 网格。虽然姿态 (手臂和腿相对于身体的位置) 通常很准确,但全局位置往往是猜测的。你经常会得到看起来悬浮在半空中或穿透地板的网格,因为算法缺乏关于环境的上下文信息。
解决方案?协同作用。 HSfM 的作者提出,这两个问题实际上互为解药。人类的身高和体型有一个统计范围。通过将人物包含在重建中,我们可以将他们作为“度量标尺”来解决场景的尺度模糊问题。反过来,可靠的场景重建和相机位置可以约束人物,迫使他们站在地面上,而不是漂浮在虚空中。
HSfM 流程
HSfM 框架是一个优化流程。它不是从头开始训练神经网络;而是巧妙地结合了现有最先进模型的输出,并通过联合优化过程对它们进行微调。
让我们看看高层的工作流程:

如图 2 所示,该过程通过三个主要阶段将原始图像转化为完善的 3D 世界: 预处理、初始化和联合优化 。
1. 预处理和定义
系统将 \(C\) 张未标定的图像作为输入。假设我们在不同照片中知道哪个人是哪个人 (已知人员重识别) 。
在优化之前,系统使用“基础模型”收集初始猜测:
- 对于人物: 使用 ViTPose 检测图像中的 2D 关键点 (关节) ,并使用 HMR2 回归初始 3D 网格 (SMPL-X 模型) 。
- 对于场景和相机: 使用 DUSt3R , 这是一个强大的新工具,可以输出“点图 (pointmaps) ” (稠密 3D 几何) 和初始相机参数。
让我们定义我们要求解的变量。
人物模型:
每个人物 \(h\) 由 SMPL-X 参数表示。
这里,\(\phi\) 是全局朝向,\(\theta\) 是身体姿态,\(\beta\) 是身体形状 (胖/瘦/高) ,\(\gamma\) 是世界中的平移 (位置) 。
相机模型:
标准的 SfM 结果尺度模糊。为了解决这个问题,作者引入了一个缩放参数 \(\alpha\)。
该方程将 3D 点 (\(x_{3D}\)) 投影到图像上。注意 \(\alpha t\) 项。这使得系统可以调整场景的尺度以匹配人物的度量尺寸。
场景 (点图) :
场景被表示为“点图” \(S\)。可以将点图想象为一张图像,其中每个像素包含该点在 3D 世界中的 \((x, y, z)\) 坐标。

2. 世界的初始化
这是一个关键步骤。如果你用随机值开始优化,很可能会失败。作者需要将“数据驱动的 SfM 世界” (来自 DUSt3R) 与“人物世界” (来自 HMR2) 对齐。
由于标准 SfM 不知道距离单位是毫米还是公里,初始场景可能极小或极大。如果初始化的场景相对于人物太小,相机可能会被放置在人体内部,导致数学计算崩溃。
为了解决这个问题,该方法在优化开始前解析地计算比例因子 \(\alpha\)。
步骤 A: 旋转相机。
他们首先根据人物对齐相机。由于人的“上方”方向应该是一致的,他们可以推导出相机相对于人物的旋转。

步骤 B: 定位相机。
他们以人物为支点来估计相机的位置。通过观察人物在图像中的位置与他们在 3D 中的位置,可以三角定位出相机的位置 \(\hat{T}^c\)。

步骤 C: 求解尺度。 最后,他们将从人物推导出的相机位置 (\(\hat{T}\)) 与 SfM 工具预测的相机位置 (\(\tilde{T}\)) 进行比较。这些距离之间的比率给出了初始尺度 \(\alpha\)。这有效地调整了房间的大小以匹配人物。
3. 联合优化
现在世界已经大致对齐,系统运行一个繁重的优化过程来改进所有内容。这是论文的核心贡献。
目标函数同时最小化所有组件的误差:

这个公式平衡了两个目标: 让人物看起来正确 (\(L_{Humans}\)) 和让场景看起来正确 (\(L_{Places}\)) 。让我们逐一分解。
人物损失 (\(L_{Humans}\))
这是基于 光束法平差 (Bundle Adjustment) , 一种 3D 视觉中的经典技术。

主要成分是重投影误差 (\(L_J\)) 。系统将 3D 人体关节投影回 2D 图像,并检查它们与检测到的 2D 关键点 (来自 ViTPose) 的距离。
通过最小化这个误差,系统调整相机位置和人物的 3D 位置,直到对齐完美。
他们还添加了一个小的正则化项 (\(L_\beta\)) ,以防止人体形状扭曲成不现实的怪物:

地点损失 (\(L_{Places}\))
该项确保静态场景在不同视图之间是一致的。它使用了改编自 DUSt3R 的“全局对齐损失”。
通俗地说: 如果相机 A 看到一把椅子,相机 B 也看到同一把椅子,那么从两个相机计算出的 3D 点应该落在世界中的同一个位置。这一项迫使每个视图的深度图合并成一个单一、清晰的 3D 环境。
实验与结果
研究人员在两个具有挑战性的数据集上测试了 HSfM: EgoHumans 和 EgoExo4D 。 这些数据集包含由多个相机捕捉的人们进行的复杂活动 (击剑、打篮球、烹饪) 。
定量成功
表 2 展示的结果显示,与现有基线相比有巨大提升。

数据的主要结论:
- 人物放置 (W-MPJPE) : 在 EgoHumans 上,将人物放置在世界中的误差从 3.51 米 (使用 UnCaliPose) 降至仅 1.04 米 (使用 HSfM) 。这是 3.5 倍的提升。
- 度量尺度: 该方法成功恢复了真实的度量尺度。以前的 SfM 方法是“无尺度”的,意味着它们无法告诉你现实世界的距离。HSfM 可以。
- 相机精度: 通过使用人物作为约束,相机位置估计实际上比仅使用场景的方法 (DUSt3R/MASt3R) 有所改进。协同作用是双向的!
定性结果的魔力
数字虽好,但视觉结果更能说明问题。
在下方的 图 3 中,你可以看到初始状态和优化结果之间的差异。
- *之前 (初始状态) : * 看看面板 (a)、(c) 和 (e)。人物通常看起来是漂浮的,或者场景几何形状混乱。
- *之后 (优化) : * 在面板 (b)、(d) 和 (f) 中,人物脚踏实地。他们的脚接触地板。场景点云更加清晰。

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

注意上图 (图 S.1) 中,(b) 中的“人物点云”只是一个稀疏、嘈杂的团块。但在 (c) 中,HSfM 用一个干净、姿态准确且完美坐落于环境中的网格替换了这些噪声。
另一个例子展示了对“滑步 (foot-skate) ”的修正——即 3D 模型看起来像是在冰上滑动而不是站立。

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

图 S.4 的中间一栏显示了“之前”的状态——一个破碎、看起来像爆炸过的场景。右栏 (“之后”) 显示了一个连贯的房间。这在视觉上证实了地点损失 (对齐场景) 和人物损失 (对齐人物) 将整个 3D 世界拉到了一起。
为什么这很重要
“Reconstructing People, Places, and Cameras” 这篇论文意义重大,因为它让我们更接近整体场景理解 。
- 免费获得的度量尺度: 通过利用人类的生物学先验 (我们大致知道人有多大) ,我们可以在不需要深度传感器或标定目标的情况下,以度量尺度重建房间。
- 更好的相机: 事实证明,人不仅仅是噪声;他们是有价值的几何线索。跟踪人物有助于稳定相机跟踪。
- 无需接触约束: 以前的许多方法显式地强制脚必须接触地面 (如果有人跳跃,这种方法就会失败) 。HSfM 通过几何一致性自然地实现落地,使其能够准确重建跳跃或动态动作。
结论
HSfM 成功地将人物、地点和相机的重建统一到一个单一的优化框架中。通过使用强大的基础模型进行初始化,并使用组合损失函数进行微调,它实现了一致性水平,这是单靠 SfM 或人体网格恢复都无法达到的。
对于计算机视觉的学生和研究人员来说,这突显了一个日益增长的趋势: 从孤立的任务 (仅仅检测姿态,仅仅构建地图) 转向联合系统 , 在这个系统中,不同的组件相互通知并改进彼此。
如果你对数学证明或代码感兴趣,作者已在其论文链接的项目页面上提供了相关资源。
](https://deep-paper.org/en/paper/2412.17806/images/cover.png)