Journal

CAST: Component-Aligned 3D Scene Reconstruction from an RGB Image

Kaixin Yao, Longwen Zhang, Xinhao Yan, Yan Zeng, Qixuan Zhang, Wei Yang, Lan Xu, Jiayuan Gu, Jingyi Yu

ShanghaiTech University

一句话总结

CAST 把单张 RGB 图像拆成一个个物体,用「遮挡感知的原生 3D 生成 + 生成式位姿对齐 + 物理感知修正」三段式流水线,逐个生成高保真网格并对齐到场景,最终得到可编辑、物理上自洽的组件化 3D 场景。

研究背景

从单张图像恢复高质量 3D 场景是计算机图形学的经典难题。把成熟的单物体生成方法简单地”逐个生成再拼装”到整个场景,会遇到两类根本性障碍:

  • 位姿估计不准。现有方法常假设物体是”视角对齐”的正面朝向,但真实场景中物体受设计、物理和遮挡约束,朝向千差万别。多数方法重视几何保真度,却忽视了位姿对齐这一关键环节。
  • 缺乏物体间空间关系。即使位姿准确,生成的场景也常出现物理上不合理的瑕疵:物体互相穿插、悬空漂浮、该接触的地方没接触。这些错误源于没有显式建模把物体绑定在一起的空间与物理约束。

已有工作要么用编码器-解码器隐式编码空间关系但局限于室内等特定域(如 InstPIFu),要么在全局坐标系里摆放物体却忽略相对位姿与依赖关系(如 Gen3DSR),要么依赖固定数据集做检索(如 ACDC)导致域外场景失效。CAST 的目标是在开放词表设定下,只用单张图像,重建出几何精细、纹理生动、且物体之间空间与物理关系正确的可编辑场景。

方法

CAST 的核心思路是”分而治之再对齐”:不直接生成整场景网格,而是逐个物体在规范空间内生成,再通过精确的关系对齐组合起来。整体流程分为三大阶段。

flowchart TD
    A[输入单张 RGB 图像] --> B[场景解析预处理]
    B --> B1[Florence-2 检测/描述/定位]
    B --> B2[GPT-4v 过滤无效检测]
    B --> B3[GroundedSAM-v2 分割掩码 + 遮挡掩码]
    B --> B4[MoGe 单目深度 → 逐物体部分点云]
    B1 & B2 & B3 & B4 --> C[感知式 3D 实例生成]
    C --> C1[ObjectGen: 遮挡感知物体生成<br/>DINOv2-MAE 图像条件 + 规范空间点云条件]
    C --> C2[AlignGen: 生成式位姿对齐<br/>点云扩散 + Umeyama 求相似变换]
    C1 <--> C2
    C1 & C2 --> D[迭代生成: 生成→对齐→精化 循环]
    D --> E[纹理生成模块]
    E --> F[物理感知修正]
    F --> F1[GPT-4v + Set-of-Mark 提取场景关系图]
    F1 --> F2[映射为 Contact/Support 约束图]
    F2 --> F3[基于 SDF 的位姿优化]
    F3 --> G[可编辑、物理自洽的 3D 场景]

预处理:场景解析

用 Florence-2 识别物体、生成描述并给出包围框;GPT-4v 过滤掉虚假检测、保留有意义的组成物体,实现不受预定义类别限制的开放词表识别;GroundedSAM-v2 为每个物体 \(\boldsymbol{o}_i\) 产生精细分割掩码 \(\boldsymbol{M}_i\) 与遮挡掩码;同时用 MoGe 生成像素对齐的逐物体部分点云 \(\boldsymbol{q}_i\) 与全局相机参数,为后续几何对齐提供结构参考。

阶段一:感知式 3D 实例生成

基础生成模型沿用 3DShape2VecSet / CLAY 的原生 3D 生成范式。几何 VAE 把表面采样点云编码为无序潜码,再解码为 SDF:

\[\boldsymbol{Z} = E(\boldsymbol{X}), \quad D(\boldsymbol{Z}, \boldsymbol{p}) = \mathrm{SDF}(\boldsymbol{p})\]

图像条件用 DINOv2 编码,几何潜扩散模型(LDM)形式为:

\[\epsilon_{\text{obj}}(\boldsymbol{Z}_t; t, \boldsymbol{c}) \rightarrow \boldsymbol{Z}\]

遮挡感知物体生成(ObjectGen):真实场景常有遮挡,直接用 3D 生成模型会退化。CAST 借助 DINOv2 的 MAE 能力——推理时给编码器同时输入图像 \(\boldsymbol{I}\) 和遮挡掩码 \(\boldsymbol{M}\),让它推断被遮挡区域的隐特征:

\[\boldsymbol{c}_m = E_{\text{DINOv2}}(\boldsymbol{I} \odot \boldsymbol{M})\]

规范空间点云条件:高层图像特征难以保证像素对齐几何,于是额外用规范坐标下的部分点云做条件。训练时用多视角渲染 + MoGe/Metric3D 深度估计模拟真实部分扫描,并在真值点云 \(\boldsymbol{p}_{\text{gt}}\) 与估计点云 \(\boldsymbol{p}_{\text{est}}\) 之间做插值增广:

\[\boldsymbol{p}_{\text{disturb}} = \alpha \cdot \boldsymbol{p}_{\text{gt}} + (1-\alpha) \cdot \boldsymbol{p}_{\text{est}}\]

加上点云条件后的生成器为:

\[\epsilon(\boldsymbol{Z}_t; t, \boldsymbol{c}, \boldsymbol{p}_{\text{disturb}}) \rightarrow \boldsymbol{Z}\]

关键设计是保持增广点云与几何的对齐(不做随机缩放/平移/旋转),从而让模型紧贴物体真实尺度与局部细节。

生成式位姿对齐(AlignGen):生成的物体处于规范姿态,需要对齐回场景。传统 ICP 缺乏语义、易陷局部极小。CAST 用点云扩散 Transformer,把场景空间部分点云 \(\boldsymbol{q}\) 映射到规范空间的 \(\boldsymbol{p}\):

\[\epsilon_{\text{align}}(\boldsymbol{p}_t; t, \boldsymbol{q}, \boldsymbol{Z}) \rightarrow \boldsymbol{p}\]

因为 \(\boldsymbol{q}\) 与 \(\boldsymbol{p}\) 点点对应,再用 Umeyama 算法恢复相似变换(缩放、旋转、平移),比直接回归变换参数在数值上更稳定。对于对称或重复几何导致的多解,通过多次采样噪声并聚合,选取最一致的结果。

迭代生成流程:生成与对齐交替进行。第 \(k\) 步先用图像特征与规范点云生成几何潜码(点云条件缩放因子 \(\beta^{(k)}\) 从 0 逐步增到 1):

\[\boldsymbol{z}^{(k)} = \text{ObjectGen}(\boldsymbol{c}, \boldsymbol{p}^{(k)} \otimes \beta^{(k)})\]

再用对齐模块预测更新的规范空间部分点云:

\[\boldsymbol{p}^{(k+1)} = \text{AlignGen}(\boldsymbol{q}, \boldsymbol{z}^{(k)})\]

如此循环直到变换参数变化低于阈值或达到最大迭代次数。最后用纹理生成模块绘制 UV 纹理。

阶段二:物理感知修正

单独生成的物体拼在一起可能穿插或悬空。CAST 不做完整刚体动力学模拟(部分场景、几何瑕疵、初始穿透都会让标准模拟器失稳),而是把修正表述为优化问题,最小化物体间成对约束代价:

\[\min_{\mathcal{T}=\{T_1,\dots,T_N\}} \sum_{i,j} C(T_i, T_j; \boldsymbol{o}_i, \boldsymbol{o}_j)\]

关系分两类,均用 SDF \(D_i(p)\) 定义。Contact(接触) 是双向约束,要求无穿透(\(D_j(p)<0\) 表示穿插要惩罚)且至少一个接触点;Support(支撑) 是单向约束,被支撑物 \(\boldsymbol{o}_j\) 的位姿优化、支撑物 \(\boldsymbol{o}_i\) 视为静止:

\[C(T_i, T_j) = \vert \min_{p \in \partial \boldsymbol{o}_j} D_i(p(T_j))\vert , \quad \text{若 } \boldsymbol{o}_i \text{ 支撑 } \boldsymbol{o}_j\]

对地面、墙面等平坦支撑面,还对接触区域附近的 SDF 值做正则,以处理只重建了部分几何(如只有两个轮子的货车)的情形。

场景关系图:用 GPT-4v 配合 Set-of-Mark(随机着色 + 编号)视觉提示来识别关系,并采用集成策略——多次采样,出现超过半数才认定关系可靠。不直接问 Support/Contact,而是先让 GPT-4v 输出更细粒度的六类接触关系(Stack、Lean、Hang、Clamped、Contained、Edge/Point),再映射到 Support 与 Contact 上,减少二分类的歧义。SDF 用 Open3D 计算,PyTorch 自动微分损失。

实验结果

开放词表场景对比(Tab. 1):与检索式 ACDC、生成式 Gen3DSR 相比,CAST 在四项指标上全面领先。

方法 CLIP↑ GPT-4↓ 视觉质量 VQ↑ 物理合理性 PP↑
ACDC 69.77 2.7 5.58% 22.86%
Gen3DSR 79.84 2.175 6.35% 5.72%
CAST(本文) 85.77 1.125 88.07% 71.42%

用户研究中,CAST 在视觉质量和物理合理性上分别获得 88.07% 和 71.42% 的偏好率,遥遥领先。

3D-Front 室内数据集定量对比(Tab. 2):为公平起见,其他方法的分割模块统一替换为真值掩码。CAST 在物体级和场景级几何质量上都最优。

方法 CD-S↓ FS-S↑ CD-O↓ FS-O↑ IoU-B↑
ACDC 0.104 39.46 0.072 41.99 0.541
InstPIFu 0.092 39.12 0.103 38.29 0.436
Gen3DSR 0.083 38.95 0.071 39.13 0.459
CAST(本文) 0.052 56.18 0.057 56.50 0.603

模块消融(Tab. 3):从 Vanilla 逐步叠加各组件,指标持续改善,验证每个模块都有贡献。

方法 CD-S↓ FS-S↑ CD-O↓ FS-O↑ IoU-B↑
Vanilla 0.079 53.38 0.069 52.83 0.515
+ MAE 0.064 53.79 0.066 54.32 0.548
+ PCD(点云条件) 0.056 53.91 0.060 54.60 0.582
+ iter.(迭代精化) 0.052 56.18 0.057 56.50 0.603

定性消融进一步说明:去掉 MAE,被遮挡物体(如飞船、杯子)会破碎缺失;去掉点云条件,物体数量和尺度(如六本堆叠书)会出错;对齐模块优于 ICP 和可微渲染;去掉关系图约束会出现物体掉落或错位。

实现规模:ObjectGen 用 24 层 Transformer、约 15 亿参数,在约 50 万筛后的 Objaverse 资产上预训练,条件模块用 20 万精选数据训练 3000 epoch、64 张 A800 约一周。AlignGen 约 1.5 亿参数,训练约两天。推理时单物体生成约 7 秒、纹理约 10 秒、位姿对齐约 1 秒(A6000)。

亮点与局限

亮点:

  • 组件化、分而治之的思路把成熟的单物体原生 3D 生成能力迁移到场景级,天然支持开放词表、可编辑网格、UV 与可分解材质,契合传统生产管线。
  • 用”生成”的方式做位姿对齐(AlignGen + Umeyama),比直接回归位姿更稳定,也能通过多采样处理对称/重复几何的多解。
  • 遮挡感知(DINOv2-MAE)+ 规范空间点云条件的双重设计,同时保证视觉一致性与几何尺度精度。
  • 物理修正没有硬套完整刚体模拟,而是借助 VLM 常识关系图构造 SDF 约束优化,规避了部分场景、几何瑕疵、初始穿透带来的模拟失稳。

局限(作者自述):

  • 场景质量强依赖底层物体生成模型,细节与精度仍不足,会影响对齐与空间关系。
  • 网格表示难以刻画织物、玻璃、透明材质,常显得不自然。
  • 缺少光照估计与背景建模,目前靠现成全景 HDR 工具 + Blender 手动预设光照来补足视觉真实感。
  • 复杂场景(密集物体、复杂布局)下性能会有所下降。

延伸思考

CAST 展示了一条把”物体级基础生成模型”组合成”场景级重建”的清晰路径,核心贡献其实是两块黏合剂:生成式位姿对齐把规范空间物体贴回真实场景,VLM 关系图 + SDF 优化把物体间的物理关系补齐。这种解耦让系统既能吃到大规模单物体生成的红利,又能保留可编辑、物理自洽的下游价值(机器人 real-to-sim、游戏关卡、影视布景)。

值得进一步探索的方向包括:把光照与背景纳入统一生成框架,让重建结果不再依赖手工打光;用可微或物理更完备的关系推理替代 VLM 采样投票,减少对 GPT-4v 常识的依赖;以及利用 CAST 批量产出的场景反哺训练全学习式的场景/视频生成模型,形成数据飞轮。透明与织物材质的表达则需要在网格之外引入更合适的表示(如 volumetric 或 BSDF 感知的生成)。