标题:<Enhancing Monocular 3D Scene Completion with Diffusion Model>
代码:https://github.com/CharlieSong1999/FlashDreamer
来源:澳大利亚国立大学
文章目录
摘要
三维场景重建对于虚拟现实、机器人技术和自动驾驶等应用至关重要,它使机器能够理解复杂环境并与之互动。传统的三维高斯泼溅技术依赖从多视角拍摄的图像以获得最佳性能,但这种依赖性限制了其在仅能获取单张图像场景中的应用。本研究提出了FlashDreamer这一创新方法,通过单张图像实现完整三维场景重建,大幅减少了对多视角输入的需求。该方法利用预训练的视觉-语言模型生成场景描述性提示,引导扩散模型生成多视角图像,继而融合形成连贯的三维重建。大量实验表明,我们的方法能高效稳健地将单张图像输入扩展为完整三维场景,无需额外训练即可扩展单目三维重建能力。
一、前言
三维场景重建通过多幅输入图像生成场景的三维表征。这项计算机视觉领域的基础任务为自动驾驶[31]、机器人技术[25]、游戏开发[27]以及虚拟/增强现实(VR/AR)[35]等应用提供空间表征基础。近年来,三维高斯泼溅(3DGS)技术凭借其能以极少输入实现高质量实时渲染的特性,已成为三维表征的热门方法[3,8,14–16,21]。但3DGS通常需要多视角图像才能达到最佳效果[3,30,32],这限制了其在单图像场景中的适应性[17]。Flash3D[28]通过单图像三维重建技术解决了这一问题,然而当从其他角度观察此类重建结果时,原始图像信息不足常导致伪影产生。例如旋转视角时,初始输入范围外的区域常会出现空白或边界伪影。
为突破这些限制,可采用扩散模型[23]等生成式模型合成新视角图像。然而扩散模型在生成同一场景的多幅图像时往往存在一致性问题[1]——例如生成图像间的重叠区域可能出现偏差,导致内容不一致。为此我们提出FlashDreamer:该方法通过预定义角度生成视图,在Flash3D初始化的基础上完成场景的三维高斯溅射建模。FlashDreamer利用中间3DGS表征对三维空间中的重叠区域进行对齐,从而解决一致性问题。此外,视觉语言模型(VLM)提供的辅助指导能增强扩散过程。本研究的主要贡献包括:
- FlashDreamer Pipeline:我们推出FlashDreamer流程,该流程利用预训练的Flash3D、扩散模型和视觉语言模型(VLMs),从输入图像及周边视角构建完整3D场景。
- Alternative Configurations(可选配置):FlashDreamer的多种变体方案,包括采用不同扩散模型、旋转角度以及为扩散模型选择不同提示词。
- 实验验证:定性与定量评估表明,FlashDreamer无需额外训练即可实现高效的3D场景补全。
二、相关工作
2.1 场景重建
场景重建指从一个或多个图像创建真实环境三维表征的过程。在多重视角(图像)重建领域已有诸多重要成果,从多视角立体视觉[24]、神经辐射场(NeRF)到三维高斯泼溅(3DGS)]。另一些方法专注于少样本图像重建[pixelsplat, latentsplat],展示了通过少量视角构建场景的能力。这些方法在多视角设置下能提供精确的实时渲染性能,但要么需要大量输入图像,要么要求输入图像间存在特定关联[Gaussianobject],限制了其在少视角或单视角重建中的表现。为突破这一局限,最新研究提出了双视角[Dust3R]和单视角重建器[Large spatial model:End-to-end unposed images to semantic 3d],利用Transformer在训练期间捕捉跨视角关系。Flash3D[28]通过采用轻量级卷积层实现单图像单目场景重建,以简洁高效的方法推动了该领域发展。
尽管如此,这些少视角重建方法仅能复原输入图像中的内容,使得场景缺失内容的补全成为难题。部分研究[15,16]采用全景图像进行重建,得益于360度全覆盖特性,这类方法能实现良好的场景闭环且不存在内容缺失。以PixelSynth[21]、Text2Room[11]和LucidDreamer[4]为代表的迭代式场景生成方法,则通过从局部视角或文本描述自回归生成场景提供了新思路。
2.2 扩散模型
计算机视觉中的扩散模型[5]旨在学习从受高斯噪声干扰的图像中去噪的过程,进而生成高质量且多样化的图像。作为深度生成方法之一,基于扩散的模型被广泛应用于图像合成[23]、视频生成[10]和密集视觉预测[13]等现实场景中。以潜在扩散模型(LDMs)形式呈现的Stable Diffusion[19,23]在高分辨率图像合成任务中取得了巨大成功。除图像生成外,扩散模型在图像修复领域同样成果斐然——这项图像编辑技术能根据用户以文本描述、遮罩或布局[12]等形式提出的需求,对给定图像进行编辑或补全。Ledits++[2]允许用户通过提供标注待编辑目标区域的遮罩,结合描述该区域预期生成内容的文本来实现编辑。这种编辑流程与我们补全特定图像区域的目标高度契合。
2.3 Vision language model (视觉语言模型)
视觉语言模型(VLM)能够捕捉图像与文本之间的关联性,无需微调即可应用于下游视觉语言任务[34]。开创性模型CLIP[20]采用文本嵌入与图像嵌入的对比学习方法,二者分别通过独立的编码器提取。其核心目标是最大化匹配文本-图像对的相似度,同时最小化非匹配对的相似度。尽管CLIP在图文匹配方面表现卓越,但并未解决图像到文本的生成问题。CoCa[33]通过提出解耦编码器与解码器的图像描述生成框架解决了这一局限,实现了从图像生成文本的功能。该模型中,图像和文本先经过独立编码,随后在多模态解码器中进行交叉注意力处理以生成描述文本。本项工作中,我们采用当前最先进的开源视觉语言模型LLama3[6],基于输入图像为我们的处理流程生成文本描述。
三、问题定义
给定单张图像 I 0 ∈ R H × W × 3 I_0∈R^{H×W×3} I0∈RH×W×3,生成完整的三维场景表征 R N R_N RN,流程如图1。定义一组三维场景集合{ R i ′ R'_i Ri′} i = 0 N ^N_{i=0} i=0N,在每一步中通过Flash3D[28]从单一视角生成,而{ R i R_i Ri} i = 0 N ^N_{i=0} i=0N表示每一步经过合并对齐后获取的多视角累积三维场景。此外,我们还定义了一组渲染变换{ T i T_i Ti} i = 0 N ^N_{i=0} i=0N和几何变换角度{ g i g_i gi} i = 0 N ^N_{i=0} i=0N,用于从多视角渲染场景。其中 I i ′ ∈ R H × W × 3 I'_i∈R^{H×W×3} Ii′∈RH×W×3代表扩散模型修复前的图像, I i ∈ R H × W × 3 I_i∈R^{H×W×3} Ii∈RH×W×3表示经过扩散模型修复后的图像。
四、FlashDreamer
如图2所示,包含两个主要步骤:(i) 修复(inpaint)新视角的图像;(ii) 三维高斯泼溅(3DGS)的合并与对齐过程。首先,输入图像 I 0 I_0 I0将被输入Flash3D 主干网络,通过以下方程生成场景的初始三维表示 R 0 ′ R'_0 R0′:
R 0 ′ R'_0 R0′因未被观测到的部分而包含遮挡或不完整区域。随后,我们通过预定义的几何变换 g 1 g_1 g1(即第一步旋转的特定角度)从原始重建的三维场景 R 0 R_0 R0渲染出新视角图像 I 1 ′ I'_1 I1′ (对于 i = 0 i=0 i=0, R 0 = R 0 ′ R_0 = R'_0 R0=R0′; i = 0 i=0 i=0 时,使用 R i R_i Ri 进行渲染)。
I 1 ′ I'_1 I1′中的黑色mask区域表示需要通过扩散模型进行修复的区域。随后,Stable Diffusion模型[23]对 I 1 ′ I'_1 I1′进行扩展,生成扩展后的新视角图像 I 1 I_1 I1。这一优化过程由原始图像 I 0 I_0 I0的文本描述 t 0 t_0 t0引导——该描述由视觉语言模型VLM生成(具体采用LLaMA-3-1-8B模型)。需注意的是,为确保每个生成视角的一致性,我们在每一步都始终使用描述 t 0 t_0 t0作为扩散提示。
当我们获得修复后的场景图像 I 1 I_1 I1时,会重新应用公式1来渲染 R 1 ′ R'_1 R1′,该渲染是基于几何变换角度 g 1 g_1 g1的视点重建的。 R 1 ′ R'_1 R1′将与 R 0 ′ R'_0 R0′进行合并和对齐,从而获得更完整的三维表示 R 1 R_1 R1(见图2中的红色方框)
该序列化流程通过应用预定义的几何变换 { g i g_i gi} i = 0 N ^N_{i=0} i=0N继续执行,并生成 { R i R_i Ri} i = 0 N ^N_{i=0} i=0N集合。最终, R N R_N RN 是流程的输出场景表征,既包含原始输入图像 I 0 I_0 I0,也包含扩散模型生成的新视角图像{ I i I_i Ii} i = 1 N ^N_{i=1} i=1N。
五、Flash3D
场景补全过程采用增量式处理,未观测场景会逐步填充由Flash3D[28]模型生成的3D高斯体素。这些高斯体的三维坐标首先根据数据集相机内参进行重缩放以确保尺度一致性。重缩放后,坐标将从相机坐标系转换至世界坐标系。图3展示了Flash3D示意图,对应方程式简化为公式(1)。
六、3DGS: Merge and align
新渲染的图像可能包含两个部分:已见区域和未见区域。只需补全未观测部分,因此基于现有3DGS创建一个mask,定义为:
M M M作为扩散模型的过滤器,基于现有RGB信息完成图像补全。新图像生成后再次输入Flash3D,使用相同msdk来保留与先前未观测区域像素相对应的输出3DGS:
其中 R i ′ R'_i Ri′ 表示由 Flash3D 从图像 I i I_i Ii 生成的 3D 高斯集合, R i ~ \tilde{R_i} Ri~ 表示我们需要保留的 3DGS。将先前和新增的3D高斯模型合并为完整的场景重建 ( R i = R i − 1 + R i ′ ~ ) (R_i = R_{i−1} + \tilde{R'_i}) (Ri=Ri−1+Ri′~),并通过优化3D高斯参数使渲染图像更接近Flash3D输入数据。渲染图像与Flash3D输入图像的对比采用RGB损失函数,定义为:
实验
定性分析 主要考量三个维度:(i)旋转角度、(ii)扩散模型选择、(iii)提示词多样性。 定量评估 方面,我们采用弗雷谢特初始距离(FID)[9]和CLIP分数[20]两项指标,对不同旋转角度下的生成质量进行系统测量,旨在明确驱动高质量场景生成的核心参数。
实验设置。Flash3D结合预训练的Stable Diffusion-v2模型,实现多视角场景图像扩展。为提升扩散模型的生成精度,向LLaMA-3.1-8B输入引导提示词"请简要描述该场景",通过视觉语言模型(VLM)生成的描述文本作为扩散模型的提示输入。最终采用标准3DGS流程完成三维场景重建。实验在Replica数据集的子集,包含18个高真的室内三维场景的图像帧,随机选取的20张图像,每张图像以10°为旋转单位、在-30°至30°范围内选取6个新视角,即子集共含20张输入图像和120张groundtruth图像。所有实验均在NVIDIA Tesla V100 GPU上完成。
Baseline。PixelSynth [2021CVF] 单目场景补全模型,通过训练生成对抗网络(GAN)[9]来生成像素内容,补全输入图像之外的内容,作为对比基准。该研究未利用场景的三维表征。
旋转角度。如图4首行,展示了从多视角渲染原始图像的过程,其中黑色mak区域表示扩散模型需要修复的区域。通过组合不同角度的修复图像,我们构建出最终的三维场景,这使得旋转角度增量的选择对模型性能至关重要。本研究探讨了5°和10°两种旋转增量对扩散模型生成质量的影响,角度范围设定在-30°至30°之间,如图4中间行与底行所示。结果表明:较小的增量虽然能提供更精细的调整,但会导致跨视角的边缘重叠,从而引入更多可能影响修复质量的伪影。
扩散模型比较。Stable Diffusion-v2能实现更具摄影质感的生成效果。这种品质优势对于需要多视角真实感的应用场景尤为重要。相反,Stable Diffusion-xl虽然在生成多样化艺术视觉风格方面更具灵活性,但可能会引入与源图像风格偏离的元素。Stable Diffusion-xl增强的艺术表现力对创意应用大有裨益,但在需要风格统一性的场景中,可能导致生成结果与原始图像存在风格不一致的问题。
提示词对比。视觉语言模型(VLMs)能够描述场景特征[34]:(i)扩散模型可输入的token长度有限;(ii)好的描述提示词未必能生成高质量场景。为此在Stable Diffusionv2[22]上开展实验,采用两种扩散提示词——绿色框标注的"短提示词"与"长提示词"。长提示词详细描述房间内的具体物品、相对位置及附加场景元素,为模型提供更丰富的上下文信息;而短提示词则简要概述场景中的物品。
定量结果:表1比较了PixelSynth与本方法FlashDreamer在不同旋转角度下的弗雷谢特起始距离(FID)和CLIP分数。 FID指标用于评估生成图像质量,数值越低代表图像保真度越高;CLIP分数则衡量文本提示对齐程度,数值越高越好。随着旋转角度绝对值减小,两种方法的FID分数均呈现逐步下降趋势,表明图像质量持续提升。同样在较小角度下,CLIP分数呈现上升态势,提示对齐效果更佳。总体而言,这些数据证明较小旋转角度有助于生成更高质量的图像。
图7呈现了Replica数据集的修复后房间图像,生成的图像展示了多样化的视角与场景配置,涵盖了办公室、客厅和会议室等不同环境。图8展示了我们的三维重建示例,这些成果通过展现结构完整性与空间纵深感,清晰地阐释了房间的几何特征。这些结果凸显了在捕捉精细细节与保持跨视角纹理一致性方面所面临的挑战。
#pic_center =80%x80%
d \sqrt{d} d 1 8 \frac {1}{8} 81 x ˉ \bar{x} xˉ D ^ \hat{D} D^ I ~ \tilde{I} I~ ϵ \epsilon ϵ
ϕ \phi ϕ ∏ \prod ∏ a b c \sqrt{abc} abc ∑ a b c \sum{abc} ∑abc
/ $$