宾大 HARMONY 单图重建室内场景:先 VLM 分层摆位,再点云对齐到照片

HARMONY: Hierarchical Agentic Reasoning for MONocular Image-to-Scene Synthesis

Shufan Sun, Chen Wang, Enxin Song, Jiatao Gu, Lingjie Liu

cs.CV

2026-09-23

宾大提出 HARMONY:从空房间出发,用 VLM 按墙面、家具、摆件分层放置物体,再用 VGGT 点云把位置钉到照片上。Front3D 上 N-CLIP 0.092、[email protected] 89.8,16 人用户研究里 67% 排第一。

这篇在解决什么

从一张室内照片还原「可拆可编」的 3D 场景,难在两件事同时成立:每个物体是独立 mesh,彼此的朝向、贴墙、叠放还要对得上照片。

现成路线各卡一边。视觉几何基础模型能从单图估密集点云,遮挡面和小摆件经常糊成一团,椅子该朝哪边也推不出来。另一边,VLM 能说出「沙发靠左墙、花瓶在桌上」,但给不出厘米级坐标,渲染一看就漂。文本驱动的摆场还常落到资产检索和模板房间上,复杂实拍撑不住。

HARMONY 把这两边串成一条分层推理链:VLM 负责关系和顺序,点云负责把每个物体钉回像素。

方法

管线从空房间起步,不训练任何新网络,全部是现成模型拼装。场景推理用 gpt-5.5,遮挡补全用 Gemini-Flash-2.5,单物体 mesh 用 Hunyuan3D-2,几何用 VGGT,检测分割用 LocateAnything 加 SAM2,最后在 Blender Cycles 里补材质和光源。

相机先定住。VLM 从照片里估房间尺寸、标出最深处的墙角,给空盒子一个语义坐标系。VGGT 再从点云拟 Manhattan 框(三组正交墙面),闭式解一个相似变换,把相机投进这个盒子。房间高度是唯一外源尺度。

物体按三层检测:墙上的画和窗,落地家具和吊灯,家具上的摆件。半遮挡的用图像编辑模型补全,再生成 mesh。补全图带着原照片透视,mesh 姿态是歪的,先用 PCA 扶正,VLM 看多视图标注朝向,后面才能说「椅子面对桌子」。

放置按深度优先:从最远墙角沿两面墙往相机走。新物体落下时,它身后已经摆好,前景还是空的,VLM 不容易被遮挡干扰。每个物体只优化位置和均匀缩放,偏航由关系句决定,比如「沙发靠背贴左墙」。

VLM 给的是语义位置。几何微调分两步:渲染剪影对齐分割掩膜,锁住左右偏移和「尺度/深度」比;再拿 VGGT 点云的前表面中位数修正深度,反解出真实尺度。撞上了就挪位移更小的那个;挪不开就让 VLM 改放置顺序。每一层摆完,把部分场景渲回去给 VLM 对照原图,查漏、改朝向、把成套椅子拉成同一尺寸,再进下一层。

最后 VLM 给每类物体派 PBR 材质,标灯和窗的开关与强度,Cycles 渲染对照原图再调一轮。

单场景在 L40 上要 20 到 90 分钟,每个物体平均 3.4 次 VLM 调用。

结果

评测两套数据:Front3D 的 100 张有几何真值的合成图,以及 30 张版权清晰的实拍(HARMONY30)。对照包括 Gen3DSR、3D-ReGen、CAST、SAM3D(喂的是 HARMONY 自己的掩膜,记为 SAM3D)、并发工作 VIGA,外加 GPT-6 Astra。CAST 没有官方代码,用的是非官方实现;CAST 和 SAM3D 不重建背景,感知指标里背景是 HARMONY 补上的。

Front3D 上 HARMONY 各项最好:

方法N-CLIP↓PL↓CD↓[email protected]↑
SAM3D0.1270.0690.05681.79
Gen3DSR0.1680.0430.05778.33
CAST0.1490.0770.05285.70
3D-ReGen0.1630.1420.06078.87
VIGA0.1790.0790.05583.90
GPT-6 Astra0.0950.0520.06177.44
HARMONY0.0920.0410.04989.82

跟 Astra 比,语义分数只差 0.003,几何差一截:[email protected] 是 89.82 对 77.44,Chamfer 是 0.049 对 0.061。论文写 Astra 看起来像样,床经常没贴墙。

实拍 HARMONY30 上 N-CLIP 0.112、光度误差 0.045,同样是表内最好;Astra 是 0.127 / 0.047,没有进用户研究。16 人给 20 个场景的六路重建打名次,HARMONY 平均名次 1.54,67.0% 排第一、86.0% 进前二。VIGA 平均名次 4.37,第一名占比 0.7%。

消融里伤得最重的是拿掉相机标定(N-CLIP 从 0.1034 掉到 0.1381),其次是关掉每层反思回路(0.1184)。去掉深度优先遍历或 VGGT 微调,掉点都更小。精度主要来自先把相机钉死再按图对齐,不是某一个模块的魔术。

为什么重要

这是一条不训练的组装管线,把「谁靠着谁」交给 VLM,「在哪、多大」交给点云。对要单图出可编辑室内资产的人,方向清楚:关系用语言,度量用几何,分层反馈拦住误差传递。

它不是新的场景生成模型。单场景接近一小时,离交互式重建还远。跟 Astra 的对比说明,端到端大模型已经能把语义摆得差不多,组合式重建真正要打的是贴墙、朝向和几何。

下游附录把重建房间丢进刚体地震模拟,并在 Isaac Sim 里让 Unitree H1、Franka 抓椅子,证明输出能当物理资产用。机器人动作是脚本轨迹,测的是几何可接触,不是控制策略。

局限与存疑

作者写了两类失败。稀有物体上 VLM 和检测器词表对不上,25.9% 的检测 grounding 置信度低于 0.35,真正放错的物体只有 0.3%。贴近镜头被裁掉的前景,语义关系还能对,mesh 从渲染视角约束不住。正文说「三种常见失败」,第三种没有写出来。

评测有几处需要打折。SAM3D 用了 HARMONY 的掩膜;CAST 是非官方实现;不建背景的方法被补了 HARMONY 的墙和地板。用户研究 16 个未付费志愿者,Astra 没进这场排名。场景默认 Manhattan 室内,室外和圆厅不在范围内。未来工作自己点了多视图和物体关节。

术语

原文与代码

社区讨论

相关论文

全部论文解读