简介
想象一下,你正试图布置一套虚拟公寓。你在角落里放了一张时尚的 L 型沙发,并在“L”型的夹角处放了一张茶几。对你来说,这是一个完美、舒适的布置。但对于使用传统 3D 理解技术的计算机来说,你可能刚刚制造了一场灾难。
为什么?因为许多计算机视觉模型并不将物体视为复杂的形状,而是视作简单的边界框 (Bounding Boxes) 。如果桌子的边界框接触到了沙发的边界框——即使实际物体并没有接触——计算机也会尖叫“碰撞!”反之,模型可能会生成在现实中物理重叠的场景,因为粗糙的框允许这样做。
这就是自动化室内设计的核心挑战: 边界框问题 。
在这篇文章中,我们将深入探讨 CASAGPT , 这是一篇提出解决这一几何难题的迷人论文。研究人员不再将家具视为简单的盒子,而是将物体分解为“立方体组件 (Cuboid Assemblies) ”——你可以把它们想象成乐高积木结构。通过教导大型语言模型 (具体来说是 Llama-3) 来排列这些立方体,他们实现了物理上合理、紧凑且没有令人沮丧的交叉重叠的场景合成。

盒子带来的问题
要理解为什么 CASAGPT 是必要的,我们首先需要看看计算机通常是如何“看”一个房间的。
在大多数数据驱动的室内设计方法中,3D 物体 (如椅子) 由边界框表示——这是完全包围该物体的最小矩形框。模型预测这些框的大小、位置和旋转。
虽然这种方法计算效率高,但它无法捕捉家具的真实几何形状。
- “空白空间”问题: L 型沙发的边界框内有大量空白空间。茶几应该能够放在这个空间里。但边界框模型禁止这样做,迫使茶几被尴尬地放在很远的地方。
- 交叉的模糊性: 如上图 1 所示,紧凑的排列通常会导致边界框重叠 (红色方块) 。如果我们训练模型避免方框重叠,我们会得到稀疏、不切实际的房间。如果我们允许重叠,模型经常会意外地将桌子放在沙发里面。
CASAGPT背后的研究人员提出了一个关键问题: 我们能否用一种像盒子一样简单,但像网格一样准确的方式来表示物体?
解决方案: 立方体排列与场景组装
CASAGPT 的核心创新是从单一的边界框转变为立方体组件 。 物体不再由一个大盒子表示,而是由一组近似其形状的较小立方体集合表示。
1. 从网格到立方体
在模型学习排列家具之前,必须对数据进行处理。研究人员获取高保真的 3D 网格 (Mesh) ,并通过三个步骤将其转换为简化的立方体表示:
- 体素化 (Voxelization) : 将 3D 网格转换为被占用空间和空白空间的网格 (体素) 。
- 粗粒化 (Coarse-Graining) : 合并相邻的被占用体素以形成粗糙的形状。
- 立方体合并 (Cuboid Merging) : 贪婪算法根据体积阈值迭代地将这些形状合并为更大的立方体。
这个过程将复杂的椅子网格转换为一组干净的矩形块,既保留了物体的结构,又没有完整网格的计算负担。

这种粒度是神奇的关键。现在,模型知道 L 型沙发中的“空白空间”实际上是空的,因为那里没有立方体。
2. CASAGPT 架构
随着物体被转换为立方体,这个问题就变成了序列生成任务。研究人员基本上将室内设计视为一个语言问题。
该模型建立在 Llama-3 架构之上。它作为一个自回归 Transformer 运行,这意味着它会根据房间里已经放置的物品来预测下一件家具。
场景作为一系列 Token (标记) 输入到模型中:
- 地板 Token: 定义房间的边界。
- 实体 Token: 代表物体的中心、旋转和类别 (例如,“这是一把位于 X,Y 位置的椅子”) 。
- 立方体 Token: 代表构成该物体的具体几何块。

如图 2(a) 所示,Transformer 解码器处理这些 Token 以生成完整的房间布局。因为它生成的是具体的立方体,所以它“知道”它正在放置的物体的物理形状。
3. 拒绝采样: 优化输出
生成模型是概率性的——有时它们会犯错。即使有了立方体表示,模型偶尔也可能把灯放进墙里,或者让两把椅子重叠。
为了应对这种情况,CASAGPT 在微调阶段实施了一种称为拒绝采样 (Rejection Sampling) 的技术 (图 2b) 。
- 生成: 模型提出一批房间布局。
- 检查: 系统计算立方体的交并比 (IoU) 。由于立方体准确地代表了形状,这种检查是精确的。
- 过滤: 拒绝存在物理碰撞的场景。保留排列干净的场景。
- 训练: 在“被接受”的场景上微调模型。
这创造了一个正反馈循环。模型生成内容,过滤掉自己的坏习惯,并从成功中学习,逐渐变得更擅长避免碰撞。
4. 对象检索
一旦模型生成了立方体场景,我们需要用真实的 3D 家具将其可视化。这也是立方体方法再次大放异彩的地方。
在传统方法中,系统会寻找适合预测边界框的 3D 模型。这很容易出错。如下面 图 4 (b) 所示,通过边界框匹配可能会检索到一个与其邻居发生物理碰撞的物体,因为“盒子”合适,但形状不合适。
CASAGPT 使用基于立方体的检索 。 它将生成的立方体组件与家具的体素化数据库进行比较。它会找到与生成的积木结构相匹配的具体椅子或桌子。这确保了最终渲染的场景 (图 4c) 与生成的规划一样无碰撞。

清理数据: 3DFRONT-NC 数据集
垃圾进,垃圾出。这条规则同样适用于 AI。研究人员发现,用于此任务的标准数据集 3D-FRONT 实际上充满了错误。人类设计师留下了许多以物理上不可能的方式相交的物体。
如果训练数据有碰撞,模型就会学会生成碰撞。
为了解决这个问题,作者推出了 3DFRONT-NC (Noise Clean,噪声清理) 。他们利用自己的立方体碰撞检测逻辑来识别原始数据集中重叠的物体,并自动将它们推开以解决交叉问题。

差异是显而易见的。在下面的 图 5 中,你可以看到“Nc” (噪声清理) 数据集如何微调位置以确保遵循物理规律,同时又不破坏布局的初衷。

实验与结果
增加所有这些几何复杂性真的值得吗?结果表明答案是肯定的。
定性比较
从视觉上看,CASAGPT 生成的场景比 LayoutGPT、ATISS 或 DiffuScene 等竞争对手更合乎逻辑。
在 图 6 中,观察卧室场景。以前的方法 (LayoutGPT, ATISS) 经常创造出稀疏的房间,或者将物体堆在一起导致无法行走。CASAGPT (第四列) 创造了连贯的布局,床头柜恰当地紧挨着床,衣柜也便于使用,非常接近人类设计的参考案例。

定量指标
研究人员使用了几个指标来评估性能,包括用于衡量真实感的 FID (Fréchet Inception Distance) 和用于衡量物理合理性的 NIRate (无交叉率) 。
虽然具体的表格在论文中有详细说明,但总结来说,CASAGPT 在 NIRate 方面始终优于最先进的方法,这意味着它生成的碰撞最少。
他们的消融实验 (下图 8) 得出了一个特别有趣的发现。他们比较了使用边界框与使用立方体来训练模型。
- 左侧 (BBox rep) : 当模型只知道盒子时,它很难将椅子放在桌子下面,或者在不留出巨大、不自然间隙的情况下将家具靠墙放置。
- 右侧 (Cuboid rep) : 有了立方体,模型明白它可以将椅子滑到桌子下面,因为桌子的“立方体” (腿) 不会阻挡椅子的“立方体” (座位) 。

此外, 拒绝采样过程被证明至关重要。如包含在图 8 中的表格 (表 3) 所示,随着拒绝采样的每一次迭代 (iter1, iter2, iter3) ,交叉率显著下降,证明模型成功地“从错误中吸取了教训”。
结论与未来展望
CASAGPT 代表了 3D 场景合成向前迈出的重要一步。通过摆脱边界框的粗略近似,转而采用更精细的立方体表示,该模型实现了自回归 Transformer 以前无法企及的空间感知水平。
主要收获:
- 几何形状很重要: 对于“堆叠/摆放”至关重要的复杂室内设计任务,简单的边界框是不够的。
- 数据质量: 3DFRONT-NC 的创建凸显了标准数据集的噪声有多大,以及修复它们如何提高模型性能。
- 迭代优化: 拒绝采样循环允许模型自我纠正,弥合了概率生成与物理约束之间的差距。
虽然该模型仍面临挑战——例如偶尔将物体放置得略微偏离地板,或在极其受限的平面图中表现挣扎——但它提供了一个充满希望的方向。未来的工作可能会将这种结构理解与扩散模型结合起来以获得更高的保真度,或者使用强化学习在训练期间更有效地惩罚碰撞。
目前,CASAGPT 已经成功地教会了计算机: 方枘圆凿 (试图把方钉敲进圆孔里) 不仅仅是一个比喻——这更是糟糕的室内设计。
](https://deep-paper.org/en/paper/2504.19478/images/cover.png)