← 返回 2026-03-03

SeeThrough3D:文本到图像生成中遮挡感知的三维场景控制 SeeThrough3D: Occlusion Aware 3D Control in Text-to-Image Generation

Vaibhav Agrawal, Rishubh Parihar, Pradhaan Bhat, Ravi Kiran Sarvadevabhatla, R. Venkatesh Babu 📅 2026-02-26 👍 10 2026-07-13 08:35
3D场景控制 布局条件生成 扩散Transformer 文本到图像生成 遮挡推理

通过半透明3D包围盒表示实现遮挡感知的多物体三维布局控制生成

前置知识

扩散Transformer (DiT)

DiT是一种用Transformer架构替代传统U-Net的扩散模型变体。它将图像切成patch序列,通过多模态DiT块(mmDiT)同时处理文本token和图像token,利用self-attention机制实现文本与图像的深层对齐。FLUX模型就是基于DiT架构构建的流匹配(flow matching)文本到图像模型,其架构天然支持通过添加额外的条件token来引入新的控制模态。

本文方法基于FLUX的DiT架构进行条件化,理解mmDiT中text和image token的交互机制是理解OSCR条件注入和注意力遮罩绑定策略的基础。

OSCR(遮挡感知三维场景表示)

OSCR是本文提出的核心表示方法。它将场景中的每个物体建模为半透明的3D包围盒(bounding box),放置在虚拟3D环境中,并从指定相机视角渲染。半透明性使被遮挡物体的区域依然可见,从而为生成模型提供遮挡线索;每个盒面按照预定义的颜色映射进行着色以编码物体的3D朝向信息。最终渲染图像同时编码了物体的空间排列、遮挡关系和相机视角。

OSCR是本文的技术核心,理解它如何同时编码遮挡、朝向和视角信息,是理解整个方法的关键。

LoRA(低秩适配)

LoRA是一种参数高效微调方法,通过在预训练模型的权重矩阵旁添加低秩分解的旁路矩阵($\Delta W = BA$,其中 $B \in \mathbb{R}^{d \times r}$,$A \in \mathbb{R}^{r \times k}$,$r \ll \min(d,k)$)来实现适配。它只训练少量新参数(由rank $r$ 控制),同时保持原始模型权重不变,从而在引入新能力的同时保留模型原有的强大先验。

本文仅对OSCR相关token的注意力投影矩阵训练LoRA(rank=128),并特意将LoRA对text和image token的scale设为0以保留FLUX的文本到图像先验,这一设计对保持生成质量至关重要。

注意力遮罩(Attention Masking)用于物体绑定

在标准self-attention中,所有token之间都可以相互注意。本文通过修改注意力矩阵,使得每个物体包围盒内的OSCR token只能注意到文本prompt中对应物体名称的token。这样就把空间几何信息(哪个位置是哪个包围盒)与语义信息(这个包围盒里应该生成什么物体)显式绑定,避免多物体场景中的属性混淆(attribute mixing)。

多物体场景中的属性混淆是3D布局控制的核心难题,注意力遮罩是本文解决这一问题的关键技术手段,直接影响生成结果中物体身份是否准确。

流匹配(Flow Matching)

流匹配是FLUX等现代文本到图像模型采用的生成范式。与传统扩散模型的逐步去噪不同,流匹配学习一个从噪声分布到数据分布的连续速度场(velocity field),通过常微分方程(ODE)积分实现生成。它通常比传统DDPM扩散训练更稳定且采样更高效。FLUX.1-dev就是一个基于流匹配的DiT文本到图像模型。

本文选择在FLUX(基于流匹配)上构建,理解这一生成范式有助于理解模型的条件注入方式和训练策略。

研究动机

现有的3D布局条件化图像生成方法在处理物体间的遮挡关系时存在根本性缺陷。具体来说,当前主流方法分两类:第一类方法如LooseControl和Build-A-Scene,使用从3D包围盒布局导出的深度图作为条件信号,但深度图无法表示被遮挡物体的信息(例如一辆自行车被汽车挡住时,深度图中自行车完全消失),导致模型无法生成被遮挡物体。在面对复杂多物体场景时,这些方法经常丢失部分物体或生成错误的位置。第二类方法如LaRender和VODiff,将场景分解为2D物体图层堆叠来近似遮挡,但这种表示将固有的3D结构坍缩为平面,无法捕捉真正的相机视角和透视关系,导致生成的遮挡违反3D几何一致性(例如物体生成在另一个物体的上方而非后方)。此外,现有方法在朝向控制方面精度有限,因为深度图最多只能编码180度翻转的朝向信息,无法区分物体的正面和背面。

本文的目标是本文的目标是构建一个能够在文本到图像生成中实现真正3D遮挡感知的场景控制模型。具体而言,该模型需要同时满足三个核心能力:(1)精确遵循用户指定的3D包围盒布局,包括物体的位置、大小和朝向;(2)正确处理物体间的深度遮挡关系,生成被部分遮挡的物体时保持深度一致的几何和尺度;(3)支持灵活的相机视角控制,使用户可以从不同视角生成同一场景。作者还希望模型在仅使用合成数据训练的情况下,能够泛化到未见过的物体类别和真实场景。

与已有工作不同的是,本文抓住了现有工作中一个被系统性忽视的关键问题:遮挡推理(occlusion reasoning)对3D感知图像生成的重要性。现有工作要么完全忽略遮挡(深度图方法丢失被遮挡物体),要么用2D近似遮挡(图层堆叠方法牺牲3D一致性)。本文的独特视角是:如果能让生成模型'看穿'遮挡,即在条件表示中保留被遮挡物体的信息,同时提供真正的3D透视线索,模型就能利用自身已有的3D先验进行正确的遮挡推理。作者发现大模型(如FLUX)在潜空间中已经编码了物体遮挡关系的先验知识(通过注意力图可视化可以清晰看到自行车框架内部对后方货车的注意力),关键在于设计一种能够'激活'这些先验的条件表示。

核心方法

可以用一个建筑设计师的类比来理解SeeThrough3D的工作方式。想象你是一个建筑师,要向AI描述一个场景:你不是拍张照片给AI看(那是深度图方法,看不到被遮挡的东西),也不是画一堆透明塑料片叠加起来(那是2D图层方法,没有透视感),而是在一个3D虚拟工作室里,用半透明的玻璃盒子来代表每个物体。你把它们摆好位置,设好朝向,然后从你想要的视角拍一张照片。这张照片里,前面的玻璃盒子会遮挡后面的,但由于是半透明的,后面的盒子仍然隐约可见——AI模型就能看到'这里有个东西被挡住了'。技术路线是:(1)构建OSCR表示——将物体建模为半透明3D包围盒,面朝向用颜色编码,在Blender中从指定视角渲染;(2)条件注入——将渲染的OSCR图像通过VAE编码为token,与文本token和噪声图像token拼接后送入FLUX的mmDiT块;(3)物体绑定——通过注意力遮罩让每个包围盒区域只注意对应的文本物体描述,避免属性混淆;(4)合成数据训练——在Blender中程序化生成重遮挡场景并用深度到图像管线增强。

SeeThrough3D最本质的创新在于OSCR表示中'半透明'这一设计选择,以及它如何与Transformer的注意力机制协同工作。与已有方法的根本区别在于:深度图方法把3D信息压缩为逐像素的深度值,丢失了物体的体积和身份信息;2D图层方法本质上是2.5D的,没有真正的透视关系。而OSCR通过半透明3D包围盒,在一张2D渲染图中同时编码了三种关键信息:(1)物体的空间排列和遮挡关系——半透明性让被遮挡物体的区域保持可见,为模型提供'这里有个东西'的线索;(2)物体朝向——盒面颜色编码提供了正面对、侧面等朝向信息;(3)相机视角——渲染视角本身就编码了观察角度。更精妙的是,作者利用注意力机制将几何信息(包围盒区域)与语义信息(文本中的物体名称)绑定,通过空间区域的分割掩码确定每个包围盒的2D范围,然后用注意力遮罩限制该区域内的OSCR token只能关注对应的物体文本token。这一设计使得模型在面对重叠区域时,那些OSCR token能够同时关注多个物体,而作者的可视化实验表明,模型的潜空间中物体特征是分离的,注意力图清晰地揭示了遮挡边界。

方法步骤详情

SeeThrough3D的完整流程分为数据准备、模型构建和推理三个阶段。在数据准备阶段:首先从Objaverse和SketchFab收集39个3D资产,在Blender中手动对齐使其正面方向与+Y轴一致,并按真实世界比例缩放(如吉普车小于大象);然后在半球形区域内随机放置最多4个物体,设置虚拟相机,通过程序化生成过滤掉遮挡不足(所有物体可见比>0.7)或过度遮挡(某物体可见比<0.3)的场景,以及物体过大或过小的情况;渲染OSCR表示和真实图像;最后用FLUX.1-Depth-dev深度到图像管线对渲染图进行真实感增强(约25K张渲染图+25K张增强图),并通过CLIP相似度阈值0.25过滤掉物体对齐不准确的增强样本。在模型构建阶段:将OSCR渲染图通过VAE编码为OSCR token $z$,与文本prompt token $p$ 和噪声图像token $x_t$ 拼接,OSCR token使用与噪声图像token相同的位置编码以建立空间对应关系;在FLUX的mmDiT块中联合处理所有token;仅对OSCR token对应的注意力投影矩阵(query、key、value)训练rank=128的LoRA,且将text和image token的LoRA scale设为0以保留FLUX的先验。物体绑定方面:使用Blender渲染的分割掩码确定每个包围盒 $b_i$ 的空间范围,创建注意力遮罩 $M$,使得该区域内的OSCR token只能注意到对应物体名词token $p_i$;当多个包围盒重叠时,交集区域的OSCR token会同时关注多个物体token。训练方面:先在512分辨率训练25K步,再在1024分辨率训练5K步,学习率 $10^{-4}$,使用AdamW优化器,在2块NVIDIA H100上约9小时完成。个性化扩展通过额外训练一个subject LoRA实现。

技术新颖性

SeeThrough3D的技术新颖性体现在三个层面。首先是OSCR表示本身的新颖性:与之前所有3D布局条件化工作不同,OSCR是第一个通过半透明渲染来保留被遮挡物体信息的3D场景表示。这一设计看似简单(把包围盒设为半透明然后渲染),但它创造性地解决了遮挡场景下'模型看不到被遮挡物体'这一根本问题,同时保留了真正的3D透视关系。颜色编码朝向也是一个巧妙设计:用橙色表示前面、蓝色表示左侧、其他面为绿色,这种映射直接在图像空间中编码了朝向信息,避免了额外的参数化表示。其次是条件注入方式的创新:将OSCR渲染图作为'条件图像'通过VAE编码后送入DiT,结合仅对OSCR token训练LoRA的策略,既引入了3D控制能力又完美保留了FLUX的生成先验。第三是基于空间掩码的注意力绑定策略:不同于Compass Control等方法使用learnable adapter将朝向映射为embedding,本文利用Blender渲染的分割掩码直接在注意力矩阵中建立空间区域与语义token的对应关系,这种做法更加直接、通用且不需要额外参数。

SeeThrough3D方法概览
Figure 1: SeeThrough3D方法概览
OSCR表示方法
Figure 2: OSCR表示方法
SeeThrough3D模型架构
Figure 4: SeeThrough3D模型架构
基于注意力遮罩的物体绑定机制
Figure 5: 基于注意力遮罩的物体绑定机制
潜空间中物体解纠缠的可视化
Figure 6: 潜空间中物体解纠缠的可视化

实验结果

本文在多个维度上验证了SeeThrough3D的有效性。在定量评估方面,作者构建了包含500个样本的3DOcBench基准测试集,评估指标包括深度排序(depth ordering)、CLIP物体分数(objectness score)、角度误差(angular error)、文本对齐度(text alignment)和KID图像质量。SeeThrough3D在所有指标上都显著超越基线方法:深度排序从最优基线LaRender的1.02提升到1.46(+43%),CLIP物体分数从21.83提升到22.86,角度误差从89.63度大幅降低到47.92度(降低47%),文本对齐度从30.20提升到31.87,KID从13.46降低到5.43(降低60%)。特别值得注意的是角度误差的大幅改善,这直接证明了OSCR中颜色编码朝向策略的有效性。在用户研究中,60名参与者在图像真实感、布局遵循度和prompt对齐度三个维度上进行了A/B测试,SeeThrough3D在所有维度和所有基线对比中获得了超过86%的偏好率,最高达98.4%。消融实验系统验证了各设计选择的贡献:去掉半透明性后深度排序从1.46降至1.20,物体分数从22.86降至21.67;去掉颜色编码后角度误差从47.92度飙升至88.77度(接近随机);去掉注意力绑定后物体分数从22.86降至20.45,深度排序从1.46降至0.98;去掉遮挡过滤数据后深度排序降至1.24。这些消融结果清楚地表明每个组件都不可或缺。

定量评估结果对比
Table 1: 定量评估结果对比
消融实验结果
Table 2: 消融实验结果
定性结果展示
Figure 8: 定性结果展示
与基线方法的定性对比
Figure 9: 与基线方法的定性对比
用户研究结果
Figure 10: 用户研究结果
消融实验可视化
Figure 12: 消融实验可视化
查看结构化数据
任务指标本文基线提升
3D布局遵循与遮挡控制 深度排序 (depth ordering) 上升 1.46 LaRender: 1.02, Build-A-Scene: 0.89, LooseControl: 0.82, VODiff: 0.68 相比最优基线LaRender提升43%
3D布局遵循与遮挡控制 CLIP物体分数 (objectness score) 上升 22.86 LaRender: 21.83, Build-A-Scene: 21.0, LooseControl: 20.02, VODiff: 19.70 相比最优基线LaRender提升4.7%
3D布局遵循与遮挡控制 角度误差 (angular error) 下降 47.92度 LaRender: 89.63度, LooseControl: 89.88度, Build-A-Scene: 91.62度, VODiff: 92.73度 相比最优基线LaRender降低46.5%
文本对齐 CLIP图像文本相似度 上升 31.87 LaRender: 30.20, VODiff: 29.51, LooseControl: 28.43, Build-A-Scene: 28.05 相比最优基线LaRender提升5.5%
图像质量 KID (乘以10的-3次方) 下降 5.43 LaRender: 13.46, LooseControl: 14.32, VODiff: 15.40, Build-A-Scene: 20.12 相比最优基线LaRender降低59.7%

局限与改进

作者在论文中明确指出了几个局限性。首先,SeeThrough3D依赖FLUX作为基础模型,因此受限于FLUX自身的能力。如论文中Fig. 25所示的案例,当需要生成'鸟笼外的鹦鹉'这种FLUX本身无法处理的分布外场景时,SeeThrough3D也会失败。其次,个性化扩展需要所有参考图像token同时存在于Transformer的context中,这导致多主体个性化场景下的显存需求显著增加。此外,从作者的实验中可以观察到一些未被充分讨论的局限:模型在仅训练最多4个物体的场景下,虽然展示了对更多物体场景的泛化能力(Fig. 8中的G-J展示了7-8个物体),但论文未提供这些复杂场景的定量评估数据,泛化能力的边界尚不明确。另一个值得关注的点是,模型不支持布局改变时的图像一致性(如通过微调布局生成一系列连贯图像),这限制了它在视频或动画场景中的应用。最后,当前的3DOcBench基准测试集仅有500个样本,且物体来自39个固定的3D资产,其评估的全面性和代表性有待提升。

独立分析的弱点

本文有以下几个值得深入讨论的弱点。第一,半透明渲染表示的信息密度问题:当场景中物体数量增多且遮挡严重时,半透明渲染图像中的信息会变得非常密集和模糊,OSCR token可能难以编码如此复杂的空间关系。改进方向可以是探索自适应透明度策略(根据遮挡深度调整透明度)或多视图OSCR渲染以提供更多信息。第二,训练数据的合成域差距:尽管作者使用了深度到图像增强管线来提高真实感,但训练数据中的物体仅有39个类别,且物体是固定姿态的刚性3D资产。虽然定性结果展示了对新物体的泛化,但定量评估仅在包含相同类别物体的3DOcBench上进行,对真实世界照片场景的泛化缺乏系统评估。改进方向可以是引入更多样化的3D资产库(如Objaverse的完整版),或使用真实3D场景数据集进行额外微调。第三,注意力绑定机制的可扩展性:当物体包围盒大量重叠时,交集区域的OSCR token需要同时关注多个物体token,论文中虽然展示了2个物体重叠时的效果良好,但对更大规模重叠(如拥挤街景中5-6个物体相互遮挡)的表现未做分析。第四,评估指标的设计:深度排序指标依赖外部单目深度估计模型(Depth Anything),其本身的估计误差会传导到评估结果中;物体分数依赖Segment Anything的分割质量。一个更robust的评估方案可能需要使用真实的3D标注数据。

未来方向

基于本文的成果,未来研究可以在多个方向延伸。首先,将OSCR表示与场景编辑结合:作者提到当前方法不支持布局改变时的图像一致性,一个自然的方向是将OSCR与图像编辑管线结合,实现在已有图像中基于3D布局精确修改物体位置或遮挡关系。其次,扩展到视频生成:OSCR的3D遮挡编码和视角控制能力可以自然地扩展到视频生成场景,通过在连续帧中使用一致的OSCR布局来实现遮挡一致的3D感知视频生成。第三,提升真实场景泛化能力:可以通过在大规模真实场景数据集(如ScanNet、ARKitScenes)上进行域适应微调,或使用更先进的数据增强管线(如利用NeRF从真实场景提取3D布局)来缩小合成域与真实域的差距。第四,引入更多3D属性控制:当前OSCR编码了位置、大小、朝向和遮挡,但物体的形状仍由文本描述决定;未来可以引入更精细的形状控制(如变形的包围盒)或材质控制。第五,与3D重建管线结合:可以将SeeThrough3D生成的图像作为3D重建的初始化或约束,实现从文本描述到3D场景的端到端生成。

复现评估

在复现性方面,本文有几个值得关注的点。开源情况方面,作者在论文中声明将发布3DOcBench基准测试数据集,且项目页面(seethrough3d.github.io)已公开,但训练代码和模型权重的开源状态在论文中未明确说明。数据方面,训练数据依赖39个手动对齐的3D资产和Blender程序化渲染管线,这一流程虽然有详细描述但需要相当的3D建模专业知识来复现;数据增强使用了FLUX.1-Depth-dev,这是一个开源模型。算力需求方面,完整训练需要2块NVIDIA H100 GPU运行约9小时(30K步),这在研究机构中属于可接受的范围,但对个人研究者来说可能有一定门槛。LoRA的使用使得推理时的额外参数开销较小(rank=128的LoRA相对于FLUX的全模型参数量非常小)。总体复现难度评估为中等偏高:主要障碍在于3D资产的准备和Blender渲染管线的搭建,而非模型训练本身。如果作者能开源预处理好的训练数据和渲染脚本,复现难度将大幅降低。