# SPREAD: 当AI学会"常识物理"——从悬浮的水杯到可信的3D世界
## 想象一下这个场景
你走进一间AI生成的虚拟客厅。第一眼看上去一切正常:沙发、茶几、落地灯,布局和谐,光影逼真。但当你伸手去拿茶几上的水杯时——手指穿过了杯壁。更奇怪的是,那个水杯根本就是悬浮在空中的,没有任何支撑。
这不是科幻电影,这是当下大多数AI生成3D场景的真实写照。
上海科技大学的团队最近发表了一篇论文,叫SPREAD(Spatial-Physical REasoning via geometry Aware Diffusion),中文大意是"基于几何感知与空间物理推理的扩散模型"。这个名字听起来很学术,但核心思想其实很简单:**教AI理解重力、碰撞和支撑关系,就像教一个孩子认识世界那样。**
## 现有方法的"货物崇拜"
费曼曾在毕业典礼上批评过"货物崇拜科学"——南太平洋岛民模仿美军建机场的样子用竹子搭控制塔,以为飞机就会来。今天的3D场景生成领域,也存在类似的货物崇拜。
现有的AI模型(比如ATISS、DiffuScene)学的是数据的统计分布。它们看过成千上万的房间照片,学会了"沙发通常在茶几对面"、"床靠着墙放"。但如果你让它生成一个"书放在桌上"的场景,它可能把书悬浮在桌面上方几厘米处——因为从像素统计上看,书和桌子的相对位置"差不多对了"。
这就像一个人背下了鸟的所有拉丁文学名,却以为那就是对鸟的理解。
## SPREAD的三个"物理老师"
SPREAD的核心创新,是在扩散模型的去噪过程中引入了三个"物理老师",分别负责教AI理解不同的物理规则。
### 第一:碰撞检测老师
这个老师教AI理解"两个实体不能同时占据同一空间"——也就是基本的碰撞原理。
技术上,SPREAD在每次去噪步骤中,都会对场景中所有物体的网格进行碰撞检测。它使用了一种叫BVH(Bounding Volume Hierarchy)的加速结构,快速找出哪些三角面片发生了相交。然后,它计算一个叫CoDF(Conical Distance Field)的惩罚函数,把这个惩罚加到扩散模型的分数函数中。
简单说:每当AI试图把两个物体重叠放置时,碰撞老师会给出负面反馈,就像你试图把两只手穿在一起时感觉到的那种"不对"。
### 第二:重力老师
这个老师教AI理解"东西应该往下掉,直到被支撑住"。
SPREAD计算每个物体到其支撑面的垂直距离。如果距离太大(物体悬浮),或者为负值(物体穿透到支撑面下方),就会产生惩罚。这个老师还会设定一个合理的容差范围——毕竟现实中杯子放在桌上也不是完美贴合,有个毫米级的空隙是正常的。
结果很有意思:在对比实验中,没有重力引导的模型生成的场景,物体经常会莫名其妙地飘在空中。加入重力引导后,这些悬浮现象几乎消失了。
### 第三:关系老师
这个老师教AI理解"支撑关系应该是合理的"。
比如,一本书放在桌面上,书底面的投影应该大部分落在桌面范围内,而不是悬空挂着。SPREAD通过计算物体在XZ平面(水平面)上的投影凸包,检查被支撑物体有多少顶点落在了支撑物的凸包之外。超出越多,惩罚越大。
这就像是教AI理解"底大顶小才稳当"这个常识。
## 几何感知:让AI"看见"碰撞
但这里有一个更深层的问题:扩散模型在生成过程中,是如何"感知"到几何状态的?
传统的场景生成方法通常只使用物体的隐式形状编码(shape embedding),这就像只给AI看物体的"身份证照片"。SPREAD做了一个关键改进:它在每个去噪步骤中,都会对当前 noisy 状态下的物体网格进行采样,计算点云之间的Chamfer距离,并用一个有符号的距离函数来近似判断碰撞。
具体来说,对于场景中的每个物体,SPREAD会采样2000个点,计算这些点到其他物体点云的最短距离。然后它使用一个Perceiver模块——这是一种可以处理变长输入的Transformer变体——把这些几何信息蒸馏成固定长度的特征向量,注入到扩散模型中。
这就像让AI在每个决策点都能"睁开眼睛"看看:我现在摆放的这些东西,是不是已经撞在一起了?
## 实验结果:从0.28到0.097的飞跃
在3D-FRONT数据集上,SPREAD将网格级碰撞率从之前最好的0.28降低到了0.097——差不多是三分之一的水平。
但更有说服力的指标是Isaac Sim稳定性测试。NVIDIA的Isaac Sim是一个物理仿真引擎,它可以模拟重力、摩擦力和刚体动力学。SPREAD生成的场景在这个引擎中运行后,95%的物体间关系保持不变。相比之下,基线方法在仿真后经常出现物体倒塌、位移甚至飞散的情况。
用户研究的结果更有意思:在盲测中,88.6%的参与者认为SPREAD生成的场景"更符合物理规律、更合理"。这是一个相当悬殊的比例——其他三个基线方法加起来才11.4%。
## 消融实验:每个老师都重要
论文还做了细致的消融实验,验证了每个组件的贡献:
- 去掉几何感知模块:碰撞率上升,悬浮现象增加
- 去掉碰撞引导:物体穿模严重
- 去掉重力引导:大量悬浮物体
- 去掉关系引导:支撑关系不合理,比如书本一半悬空在桌外
每个"老师"都在教AI不同的物理常识,缺一不可。
## 局限与展望
SPREAD并非完美。它的推理速度比传统方法慢——生成一个场景需要约14.7秒,而ATISS只需要0.02秒。这是为了物理合理性付出的代价。
另外,它目前只适用于室内场景,因为训练数据(3D-FRONT和ProcTHOR)都是室内的。团队提到未来会扩展到户外场景,并探索更高效的生成方法(比如流匹配Flow Matching)。
还有一个有趣的技术方向:直接在SE(3)流形上进行扩散。SE(3)是描述三维空间中刚体运动的数学结构(3维旋转+3维平移)。目前的SPREAD还是在欧式空间中操作,如果能直接在SE(3)流形上定义扩散过程,可能会更好地利用几何先验。
## 更大的图景:通往"世界模型"
SPREAD的意义不仅在于生成更好看的3D房间。它代表了AI研究的一个重要方向:**从"像素组合"到"物理理解"。**
当下的多模态大模型(比如GPT-4V、Claude)在理解图像时,本质上还是在做模式匹配。它们能描述"图上有一个杯子在桌子上",但它们并不真正理解"杯子为什么不会掉下去"。
SPREAD展示了一种可能性:通过显式地建模物理约束,AI可以学会一种更接近人类的"直觉物理"——那种让婴儿知道固体不会穿墙、物体会往下掉、支撑面必须足够大的常识。
这对于具身智能(Embodied AI)尤其重要。如果你要训练一个机器人在真实世界中行动,你需要的不是"看起来对"的仿真环境,而是"物理上对"的仿真环境。SPREAD生成的场景可以直接导入NVIDIA Isaac Sim或PhysX中运行,不需要额外的后处理来"修复"物理错误。
## 结语
SPREAD不是终点,而是一个起点。
它证明了:在生成模型中加入显式的物理约束,不只是工程上的优化,而是概念上的转变——从"让AI模仿数据"到"让AI理解世界"。
就像费曼说的:"知道一个东西叫什么,和理解它是什么,是完全不同的两件事。"
现在的AI可能还不会像孩子一样真正"理解"物理世界。但至少,SPREAD让它学会了不再把水杯悬浮在空中。
---
**论文链接**:http://arxiv.org/abs/2603.27573
**代码开源**:https://github.com/L-avenir/SPREAD
**作者团队**:上海科技大学 (Minzhang Li, Kuixiang Shao, Xuebing Li, 等)
#3D生成 #物理推理 #SPREAD #计算机视觉 #小凯
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!