你拍了一张客厅照片,想把它变成一个可以在电脑里自由旋转、随便放大缩小的3D场景。沙发、茶几、地毯、还有窗外的光,全都要立体地重建出来。
这事现在的AI已经能做了,但做得不太对。
市面上几个主流方法,要么是把照片里的物体一个个抠出来,分别重建,再手动拼回原来的位置,这种做法容易在中间环节出错:抠图抠错了、位置摆歪了、深度估计不准了,一步错步步错。要么是用一个模型直接生成多个3D物体,一次性把沙发、茶几、椅子全吐出来,但这类方法有个共同的毛病:它们眼里只有物体,没有房间。
这就是DistScene这篇论文想解决的问题。它的研究者来自香港科技大学和中国电信TeleAI,他们观察到一个被忽略的事实:现有的生成式方法在训练时,模型学的是"沙发长什么样""椅子长什么样",却从来没学过"沙发应该摆在房间的什么位置"。结果就是,生成出来的多个物体东一个西一个,尺寸比例对不上,有的悬在半空,有的互相穿模。
这件事到底难在哪
你可能觉得,不就是把图片里的东西变成3D模型吗,现在的AI生成技术不是已经很强了?
确实很强,但强的是单个物体的生成。像TRELLIS这样的模型,你给它一张椅子的照片,它能生成一把非常逼真的3D椅子,细节、材质都不错。问题是,一旦照片里出现的不是一把椅子,而是一整个客厅,包含沙发、茶几、地毯、墙面、窗户,这些模型就露怯了。
它们要么把整个场景糊成一坨(物体之间的边界消失了,变成一个粘连的整体),要么各个物体虽然分开生成了,但完全不知道彼此的空间关系,摆放位置全靠蒙。
论文里提到,现有的"级联式"方法(先分割、再估计深度、再逐个生成3D模型)确实能利用各种专门的AI工具,分割用Carion等人的SAM3模型,深度估计用Wang等人的方法,物体生成用Xiang等人的TRELLIS,但这种流水线作业最大的问题是误差会一级一级往下传。
分割模型*:一种能把图片中不同物体的轮廓精确框出来的AI技术,类似于用一把智能剪刀沿着物体边缘把它从背景里剪下来。
如果分割这一步把沙发的轮廓框错了一点点,后面生成出来的沙发模型可能就缺了一块扶手。如果深度估计这一步判断错了茶几离摄像机的距离,后面摆放的时候茶几就会悬空或者嵌进地板里。这就像传话游戏,第一个人说错一个字,传到最后一个人耳朵里可能已经面目全非了。
而"一体化"方法,比如MIDI和SceneGen,试图跳过这种分阶段的传话游戏,直接用一个模型同时生成多个物体。这确实减少了误差传递,但论文指出了它们的另一个硬伤:这些模型把场景当成"一堆物体的集合",却没有显式建模房间本身的几何结构。
打个比方,这就像你让一群人同时在一张白纸上画各自的家具,但没人告诉他们这张纸代表的房间有多大、墙在哪里、地板的边界在哪里。每个人画得都不错,但凑在一起大概率乱七八糟,因为缺少一个共同的参照系。
DistScene的核心思路:把房间也当成一个"物体"
DistScene这篇论文提出的解法,说白了就一句话:既然物体需要房间作为参照系,那就把房间本身也作为一个独立的生成对象,和沙发、茶几、椅子平等地放在一起生成。
论文把这个设计叫做Scene-Frame Generation(场景帧生成)。
Scene-Frame Generation:把环境(房间、街道等背景)和场景里的每个独立物体,都当作平等的生成单元,放在同一个坐标系里联合生成,让它们的空间关系从一开始就被学习到。
具体是怎么做的?模型会同时初始化N+1个"噪声潜变量",N个对应N个物体,剩下1个专门留给环境。这些潜变量会被拼接成一个长序列,一起送进一个叫sparse DiT(稀疏扩散Transformer)的网络里做自注意力计算,让物体和环境之间可以互相"交流信息"。
稀疏体素*:一种只记录空间中"有内容"的格子(voxel,立体像素点)、忽略空旷区域的表示方法,能大幅节省计算资源,因为真实场景里大部分空间其实是空的。
Flow-matching(流匹配)生成模型:一种和扩散模型类似的生成技术,通过学习如何把随机噪声逐步"引导"成目标数据来生成内容,这里用来逐步生成3D物体的几何形状。
这个设计的好处显而易见:环境这个"锚点"会把所有物体的位置关系串联起来。沙发应该贴着墙摆、茶几应该在沙发前面留出一定距离,这些常识性的空间关系,不再需要事后硬塞进去,而是模型在生成的过程中就自然地学会了。
这就好比盖房子的时候,如果先把地基和承重墙的轮廓画好,再往里面摆家具,家具自然会摆得合理。如果反过来,先凭空想象每件家具摆在哪,再倒推房子该多大,那几乎必然出问题,因为没有一个共同的空间约束。如果不这样做会怎样?论文的消融实验给出了明确答案:去掉环境组件之后,物体的F-score(一种衡量几何重建准确度的指标,越高越好)从40.98直接掉到29.98,足足少了11个百分点,物体之间的边界框重合度(IoU)也从0.2544降到0.1798。这说明环境这个锚点不是锦上添花,而是实打实地在帮模型理解空间关系。
物体细节丢失怎么办:Object-Centric Refinement
把房间和物体一起生成,解决了空间关系的问题,但又带来一个新麻烦:沙发在整个房间的空间里,往往只占很小一块地方。
这意味着,分配给沙发的"像素预算"(或者说体素预算)非常有限,沙发表面的细节,比如扶手的弧度、靠垫的褶皱,很容易在生成过程中被模糊掉。
这就像你用一台拍摄整个体育场的广角相机,去捕捉场地中央一个人的面部表情。镜头范围覆盖得越广,单个物体分到的像素就越少,细节自然就模糊了。如果不单独处理,生成出来的家具可能只有个大概轮廓,缺乏质感。
DistScene的解法是引入一个叫Object-Centric Refinement(物体中心精修)的阶段。
Object-Centric Refinement:把场景中生成的每个物体单独"抠"出来,重新放大、居中到一个标准化的局部空间里,再用更高的有效分辨率重新精修一遍细节,精修完再按原来的位置和比例放回场景。
这个过程的关键在于,精修不是闭着眼睛瞎补细节,而是始终"看着"原来的场景上下文。论文里专门设计了一个可学习的标记嵌入(marker embedding),用来告诉精修模型"你现在要精修的是场景里的哪一个物体",这样精修出来的结果才能和原场景保持语义、位置上的一致性,不会出现精修完的沙发突然变成了别的款式。
这就像给一幅已经画好的油画局部打光放大修复,修复师不会凭空发挥,而是要时刻对照画面整体的风格和构图,确保修出来的细节和整幅画是统一的。如果精修时完全不看场景上下文,会发生什么?论文里专门做了对照实验(去掉scene context),结果显示效果明显变差,说明精修阶段离不开场景信息的"锚定"。
训练数据从哪来:Object-to-Scene Distillation
讲到这里,还有一个问题没解决:训练这样一个同时生成环境和物体的模型,需要大量带有"环境+物体分离标注"的3D场景数据。但现实是,像3D-FUTURE这样的现有数据集规模有限,物体种类也不够丰富,根本不够喂饱一个这么复杂的生成模型。
论文给出的解法挺巧妙,叫Object-to-Scene Distillation(物体到场景的蒸馏)。
知识蒸馏(这里特指Object-to-Scene Distillation):原本"蒸馏"在AI领域常指用一个大模型教一个小模型,这里的用法有点不同,是指把一个只会生成单个物体的预训练模型(TRELLIS.2)的能力,转化成能够训练场景生成模型的大规模合成数据。
具体流程是这样的:先用大语言模型(LLM)随机生成场景描述,比如"卧室里有一张床、一把椅子",然后把这些描述转成文字提示词,喂给图像生成模型做出对应的参考图片。接着,用TRELLIS.2这个预训练好的3D物体生成器,把每一件家具和整个空房间分别生成出完整的3D网格模型。
注意这里有个细节:连"空房间"这个背景本身,也是用同一个物体生成器生成出来的,不是另外找了一个专门的房间生成模型。这样就不需要额外训练一个背景生成器,省了不少事。
生成好物体和房间之后,再把物体随机摆进房间里,并且做物理合理性检查,确保物体没有悬空、没有和墙壁穿模、物体和物体之间没有互相嵌入。检查通过后,再从多个视角把这个合成场景渲染成图片,作为训练时的条件输入。
整个流程下来,论文团队一共构造了大约12.5万个合成训练场景,来自7万个生成物体和4.6万个空场景,其中包含10.6万个室内场景和1.8万个室外场景。
这个做法本质上是把"预训练物体生成器已经学到的知识"转化成了可以规模化复制的场景级训练数据,相当于用已有的单体生成能力,反过来"喂养"场景级的生成能力,不用依赖任何真实世界的场景数据集或人工标注。
这就像一个只会做单道菜的厨师,通过不断尝试把自己拿手的几道菜组合摆盘,逐渐摸索出一整桌宴席该怎么搭配,不需要另外请一个专门研究宴席摆盘的大厨来教。如果没有这套数据合成流程,模型就只能依赖稀缺的真实标注数据,规模和多样性都会被死死卡住。
效果到底怎么样
室内场景的测试上,DistScene在MIDI-test基准上,把场景级别的倒角距离(Chamfer Distance,一种衡量生成模型和真实模型几何形状差异的指标,数值越小越好)从对比方法3D-Fixer的0.1295降到了0.0877,相对提升了32.2%。场景级别的F-score也从65.08提升到71.59,提高了6.51个百分点。
在物体和环境之间的空间关系准确度(用边界框IoU衡量)上,DistScene也取得了所有对比方法中最高的0.3688。
室外场景方面,论文在UrbanScene3D基准上做了测试,DistScene的CD-L1指标是0.0772,F-score是0.722,都是对比方法里表现最好的,相比之前的Extend3D方法(CD-L1为0.0832,F-score为0.680)都有明显提升。
论文还专门做了一场用户研究,找了43名参与者,对比了DistScene和TRELLIS.2、3D-Fixer、SAM3D、Extend3D在图像一致性、几何质量、外观质量三个维度上的表现。结果DistScene在三个维度上都拿到了最高的偏好率,平均胜出率达到65.41%,远超排第二的Extend3D(22.52%)。
分辨率和效率的权衡
论文还做了一组挺实在的消融实验,比较了512分辨率和1024分辨率下,加不加精修阶段的效果差异。
结果显示,分辨率越高,重建质量确实越好,但代价是时间和显存都要翻倍。512分辨率下生成一个场景只需要5.7秒,精修每个物体额外需要3.3秒,显存峰值18GB。而1024分辨率下,场景生成要36.4秒,精修每个物体要38.5秒,显存峰值21.8GB。
这组数据挺有意思的,它说明DistScene并不是一个"越贵越好"的黑箱,用户可以根据实际的硬件条件和对质量的要求,在速度和精度之间灵活选择,这对实际落地应用来说是个挺重要的加分项。
承认存在的局限
论文也很坦诚地指出了两个还没解决的问题。
第一个是室内场景的"天花板消失"问题。因为训练数据里的空房间图片很难找到完全封闭的、带天花板的参考图,所以生成出来的室内环境经常会缺少天花板,即便输入的原始照片明明是一个封闭的房间。
第二个是室外场景容易出现几何空洞或细节丢失,因为室外场景的空间跨度太大,而分配给场景的体素数量是有限的,摊到广阔的空间里,细节自然就稀疏了。加上目前室外训练数据的规模本来就比室内小不少,这个问题会更明显一些。
论文作者也坦率承认,扩大室外训练语料库、改进大尺度场景的表示方法,是接下来需要继续推进的方向。
Q&A
Q1:DistScene是什么?
A:DistScene是香港科技大学和TeleAI团队提出的单图3D场景生成框架,它的特点是把环境(房间、街道等)当作一个独立组件,和场景里的多个物体一起联合生成,解决了以往方法只关注物体、忽略环境空间关系的问题。
Q2:DistScene和MIDI、SAM3D这些方法相比有什么优势?
A:DistScene在室内测试集MIDI-test上,场景级倒角距离比3D-Fixer降低32.2%,F-score提升6.51个百分点,物体和环境之间的空间关系准确度(边界框IoU)也是所有对比方法里最高的,在用户体验测试中偏好率达到65.41%,远超其他对比方法。
Q3:DistScene的训练数据是怎么来的?
A:论文团队用大语言模型生成场景描述,再用预训练的TRELLIS.2物体生成器分别生成房间和物体的3D模型,经过物理合理性检查后拼装成完整场景,一共构造了约12.5万个合成训练场景,不依赖任何真实场景数据集或人工标注。







