- 项目主页:https://scene-dreamer.github.io/
- 代码:https://github.com/FrozenBurning/SceneDreamer
- 论文:https://arxiv.org/abs/2302.01330
- 在线 Demo:https://huggingface.co/spaces/FrozenBurning/SceneDreamer
为满足元宇宙中对 3D 创意工具不断增长的需求,三维场景生成最近受到了相当多的关注。3D 内容创作的核心是逆向图形学,旨在从 2D 观测中恢复 3D 表征。考虑到创建 3D 资产所需的成本和劳动力,3D 内容创作的最终目标将是从海量的互联网二维图像中学习三维生成模型。最近关于三维感知生成模型的工作在一定程度上解决了这个问题,多数工作利用 2D 图像数据生成以物体为中心的内容(例如人脸、人体或物体)。然而,这类生成任务的观测空间处于有限域中,生成的目标占据了三维空间的有限区域。这就产生了一个问题,我们是否能从海量互联网 2D 图像中学习到无界场景的 3D 生成模型?比如能够覆盖任意大区域,且无限拓展的生动自然景观(如下所示)。
本文,来自南洋理工大学 S-Lab 的研究者提出了一个新的框架 SceneDreamer,专注于从海量无标注自然图片中学习无界三维场景的生成模型。通过采样场景噪声和风格噪声,SceneDreamer 能够渲染多样风格的自然场景,同时保持极高的三维一致性,支持相机自由地在场景中漫游。
想要达成这样的目标,我们面临着如下三个挑战:
1)无界场景缺乏高效三维表征:无边界场景常常占据了一个任意大的欧氏空间,这凸显了高效且具备表现力的底层三维表征的重要性。
2)缺乏内容对齐:已有三维生成工作使用具备对齐性质的数据集(如人脸、人体、常用物体等),这些有界场景中的目标物体通常具备类似的语义、相近的尺度位置和方向。然而,在海量的无标注二维图像中,不同物体或场景常常具备迥异的语义,且拥有多变的尺度、位置和方向。这样缺乏对齐的性质会带来生成模型训练的不稳定性。
3)缺乏相机位姿先验:三维生成模型依赖于准确相机位姿或相机位姿分布的先验来实现图像到三维表征的逆向渲染过程。但互联网自然图像来源于不同的场景和像源,让我们无法获取其相机位姿准确信息或先验。
为此我们提出了一个原则性的对抗学习框架 SceneDreamer,从海量的无标注自然图像中学习生成无界三维场景。该框架包含三个主要模块:1)高效且高表现力的鸟瞰(BEV)三维场景表征;2)学习场景通用表征的生成式神经哈希网格;3)由风格驱动的体积渲染器,并经过对抗学习的方式直接从二维图像中进行训练。
上图展示了 SceneDreamer 的主要结构。在推理过程中,我们可以随机采样一个代表场景结构的单纯形噪声和代表场景风格的高斯噪声作为输入,我们的模型能够渲染大尺度三维场景,同时支持相机自由移动。首先我们从场景噪声中获得由高度图和语义图组成的 BEV 场景表征。然后,利用 BEV 表征显式地构建局部三维场景窗口来执行相机采样,同时将 BEV 表征编码为场景特征。我们使用采样点的坐标和场景特征来查询由生成式的神经哈希网格编码的高维空间,以获得空间差异和场景差异的隐变量。最后我们通过由风格噪声调制的体积渲染器将相机光线上的隐变量进行整合,最终得到渲染的二维图像。
为了学习无边界三维场景生成,我们希望场景应当被高效高质量进行表达。我们提出使用由语义图和高度图组成的 BEV 表征来表达一个大尺度三维场景。具体而言,我们通过无参建图的方法从场景噪声中获得俯瞰视角下高度图和语义图。高度图记录了场景表面点的高度信息,而语义图则记录了对应点的语义标签。而我们使用的由语义图和高度图组成的 BEV 表征能够:1)在 n^2 复杂度上表示三维场景;2)能够得到三维点对应的语义,从而解决内容对齐的问题。3)支持使用滑动窗口的方式来合成无限大场景,避免了训练时固定场景分辨率导致泛化性的问题。
为了编码能够泛化于场景之间的三维表征,我们需要将空间三维场景表征编码至隐空间中以便于对抗学习的训练。值得注意的是,对于一个大尺度的无界场景,通常只有其表面可见点对于渲染时是有意义的,这意味着其参数化形式应当是紧凑且稀疏的。已有方法如 tri-plane 或三维卷积等将空间建模为一个整体,模型能力会大量的浪费在建模不可见表面点上。受到神经哈希网格在三维重建任务上成功的启发,我们将其空间紧凑和高效的性质推广到生成任务上,提出使用生成式神经哈希网格来建模跨场景的三维空间特征。具体而言是使用哈希函数 F_theta 来将场景特征 f_s 和空间点坐标 x 映射到多尺度混合的可学习参数上:
为了保证渲染的三维一致性,我们使用基于体积渲染的渲染网络来完成三维空间特征到二维图像的映射。对于相机光线上的一点,我们经过查询生成式哈希网格得到其对应的特征 f_x,使用经风格噪声调制的多层 MLP 来得到其对应点的颜色和体密度,最终通过体渲染来将一条相机光线上的所有点积分为对应像素的颜色。
整个框架是通过对抗学习来直接端到端地在二维图像上进行训练的。生成器即上述体渲染器,而判别器我们使用基于语义感知的判别网络来根据由 BEV 表征中投影到相机上的语义图来分辨真实图像和渲染图像。更多细节欢迎参考我们的论文。
训练完成后,我们通过随机采样场景噪声和风格噪声,便可以生成多样的三维场景,同时拥有良好的深度信息和三维一致性,并支持自由相机轨迹的渲染:
通过滑动窗口的推理模式,我们可以生成远超越训练空间分辨率的超大无边界三维场景。下图展示了 10 倍于训练空间分辨率的场景,且同时在场景和风格维度上进行平滑插值
像类似的插值平滑过渡的结果,我们的框架支持解耦的模式,即分别固定场景或风格来进行插值,体现了隐空间的语义丰富性:
为了验证我们方法的三维一致性,我们还使用圆形的相机轨迹来渲染任一场景,重新利用 COLMAP 进行了三维重建,能够得到较好的场景点云和匹配的相机位姿,表明了该方法能够在保障三维一致性的前提下,来生成多样的三维场景:
本工作提出了 SceneDreamer,一个从海量二维图像中生成无界三维场景的模型。我们能够从噪声中合成多样的大范围三维场景,并保持三维一致性,支持自由的相机轨迹。我们希望本工作能够为游戏工业、虚拟现实和元宇宙生态提供了一种全新的探索方向和可能。更多细节请参考我们的项目主页。