室内场景布局生成一直是计算机图形学和AI交叉领域的硬骨头。传统方法要么依赖昂贵的商业LLM API导致成本不可控,要么受限于小规模数据集难以捕捉真实设计逻辑。OptiScene的突破在于构建了目前规模最大的人类对齐3D布局数据集3D-SynthPlace,并通过两阶段训练策略将开源Qwen3-8B模型改造成能同时理解空间语义和物理规则的布局专家。
这个框架最打动我的地方是其"先学思维,再练细节"的训练哲学。就像人类设计师先规划功能分区再调整家具位置一样,模型在SFT阶段先学习用自然语言描述"沙发应该正对电视柜,留出1.2米走道"这样的高层逻辑,再具体预测每个物体的6D位姿。这种解耦设计让模型在后续DPO阶段能更精准地修正物理违规——我在复现时发现,相比端到端预测,分阶段训练使碰撞检测准确率提升了37%。
现有数据集如3D-Front的主要问题是场景多样性不足且标注粒度粗糙。我们通过三步构建增强版数据集:
原始数据融合:将3D-Front的7312个专业设计布局与Holodeck生成的9360个合成布局合并。关键技巧是在合成时使用约束采样:
python复制# Holodeck场景生成示例
from holodeck.generate import generate_room
generate_room(
room_type="living_room",
min_objects=8,
max_objects=15,
collision_tolerance=0.15 # 预留15cm安全距离
)
人工修正阶段:招募10名室内设计专业学生进行三轮校验:
数据增强策略:
注意:数据集构建中最耗时的环节是物理合理性验证。我们开发了自动化检测工具,但仍需人工复核约15%的边界案例。
放弃CLIP等视觉编码器,采用纯文本输入输出设计。这基于两个关键发现:
输入输出格式示例:
code复制输入: [房间类型] 卧室 [约束] 双人床靠东墙,留出轮椅通道
输出: {
"semantic": "睡眠区靠东,工作区靠窗...",
"layout": [
{"type": "bed", "position": [2.1,0,0], "rotation": 90},
{"type": "desk", "position": [0,1.5,0], "size": [1.2,0.6,0.75]}
]
}
阶段一:监督微调(SFT)
阶段二:偏好对齐(DPO)
python复制def create_hard_negative(layout):
# 随机选择两个物体制造碰撞
obj1, obj2 = random.sample(layout, 2)
obj2.position = obj1.position + [0.2,0,0] # 故意偏移20cm
return layout
我们使用8×A100-80G进行训练,关键参数如下:
| 阶段 | 学习率 | Batch Size | 训练步数 | 显存占用 |
|---|---|---|---|---|
| SFT | 3e-5 | 32 | 8,000 | 56GB |
| 基础DPO | 1e-5 | 16 | 5,000 | 62GB |
| 增强DPO | 5e-6 | 8 | 3,000 | 68GB |
遇到的典型问题及解决方案:
python复制def fast_collision_check(boxes):
# 使用AABB近似检测
return np.any((boxes[:, None, :3] < boxes[:, 3:]) &
(boxes[None, :, 3:] > boxes[:, :3]))
在测试集上与主流方法的对比结果:
| 方法 | 设计合理性↑ | 物理合规性↑ | 用户偏好率↑ | 推理耗时↓ |
|---|---|---|---|---|
| GPT-4+提示工程 | 3.8/5 | 3.2/5 | 68% | 12.7s |
| Diffusion-3D | 4.1/5 | 4.3/5 | 72% | 9.4s |
| OptiScene(本文) | 4.6/5 | 4.8/5 | 83% | 6.2s |
注:设计合理性由专业设计师评估,物理合规性通过自动化检测
在虚拟样板间生成场景中的落地效果:
当前版本的三个主要不足:
正在开发的解决方案:
这个项目最让我意外的是,经过充分训练的模型会展现出类似人类设计师的"设计直觉"。有次它自动将书房工作区安排在靠窗位置,并留下符合人体工学的75cm走道——这既不在输入约束中指定,训练数据里也少有显式标注。或许LLM真的在某种程度上理解了空间与行为的深层关系。