无限自然:从静态照片生成 3D 飞行场景

1726076826540.jpg

我们生活在一个自然风光无限的世界——雄伟的山脉、壮丽的海景和宁静的森林。想象一下,像鸟儿一样飞过细节丰富的三维景观,欣赏这种美景。计算机能学会合成这种视觉体验吗?这种能力将为游戏和虚拟现实体验提供新的内容:例如,在无限自然场景的沉浸式飞行中放松身心。但现有的从图像合成新视图的方法往往只允许有限的相机运动。

在我们称之为“无限自然” 的研究中,我们表明,计算机只需观看自然视频和照片,就可以学会生成如此丰富的 3D 体验。我们在这个主题上的最新作品InfiniteNature-Zero(在ECCV 2022上展示)可以使用仅在静态照片上训练的系统从单个种子图像开始生成高分辨率、高质量的飞越,这是一项前所未有的突破性能力。我们将底层研究问题称为永久视图生成:给定一个场景的单一输入视图,我们如何合成一组与该场景中任意长的、用户控制的 3D 路径相对应的照片级逼真的输出视图?永久视图生成非常具有挑战性,因为系统必须在大型地标(例如山脉)的另一侧生成新内容,并以高真实感和高分辨率渲染该新内容。

使用 InfiniteNature-Zero 生成的示例飞行路线。它采用自然场景的单张输入图像,并合成一条飞入该场景的长相机路径,并在飞行过程中生成新的场景内容。

背景:通过视频学习 3D 飞行

为了确定此类系统工作原理的基础知识,我们将描述我们的第一个版本“无限自然:从单个图像永久生成自然场景视图”(在ICCV 2021上展示)。在这项工作中,我们探索了一种“从视频中学习”的方法,我们收集了一组从沿海岸线飞行的无人机拍摄的在线视频,目的是让我们能够学习合成类似于这些真实视频的新飞越。这组在线视频称为空中海岸线图像数据集(ACID)。但是,为了学习如何合成对任何所需的 3D 摄像机路径进行动态响应的场景,我们不能简单地将这些视频视为原始像素集合;我们还必须计算它们的底层 3D 几何形状,包括每帧的摄像机位置。

基本思路是,我们逐步学习如何生成飞越图像。给定一个起始视图,如下图第一幅图像,我们首先使用单幅图像深度预测方法计算深度图。然后,我们使用该深度图将图像渲染到新的相机视点(如中间所示),从而从该新视点生成新的图像和深度图。

然而,这张中间图像存在一些问题——它有空洞,我们可以看到物体后面的区域,而这些区域在起始图像中是看不见的。它也很模糊,因为我们现在离物体更近了,但正在拉伸前一帧的像素来渲染这些现在更大的物体。

为了解决这些问题,我们学习了一个神经图像细化网络,该网络采用低质量的中间图像并输出完整的高质量图像和相应的深度图。然后可以重复这些步骤,以合成图像为新的起点。由于我们同时细化了图像和深度图,因此可以根据需要多次迭代此过程 - 随着摄像机进一步移入场景,系统会自动学习生成新的风景,如山脉、岛屿和海洋。

我们的 Infinite Nature 方法采用输入视图及其对应的深度图(左)。使用此深度图,系统将输入图像渲染到新的所需视点(中)。此中间图像存在问题,例如前景内容后面显示的像素缺失(以洋红色显示)。我们学习了一个深度网络,可以细化此图像以生成新的高质量图像(右)。可以重复此过程以生成长视图轨迹。因此,我们将这种方法称为“渲染-细化-重复”。

我们使用 ACID 数据集训练这种渲染-优化-重复合成方法。具体来说,我们从数据集中抽取一段视频,然后从该视频中抽取一帧。然后,我们使用此方法渲染几个沿着与地面实况视频相同的摄像机轨迹移动到场景中的新视图(如下图所示),并将这些渲染的帧与相应的地面实况视频帧进行比较以得出训练信号。我们还包括一个对抗设置,试图将合成帧与真实图像区分开来,从而使生成的图像看起来更逼真。

Infinite Nature 可以合成与任何相机轨迹相对应的视图。在训练期间,我们运行系统T步,沿着从训练视频序列计算出的相机轨迹生成T个视图,然后将合成的视图与真实视图进行比较。在图中,每个相机视点都是通过执行扭曲操作R从前一个视点生成的,然后执行神经细化操作g θ。

最终的系统可以生成引人注目的飞行场景,如项目网页 所示,以及“飞行模拟器” Colab 演示。与之前的视频合成方法不同,该方法允许用户以交互方式控制摄像头,并且可以生成更长的摄像头路径。

InfiniteNature-Zero:从静态照片中学习飞行

第一种方法的一个问题是,视频很难用作训练数据。具有正确相机运动类型的高质量视频很难找到,并且单个视频帧的美学质量通常无法与有意拍摄的自然照片相比。因此,在“ InfiniteNature-Zero:从单幅图像学习自然场景的永久视图生成”中,我们以上述渲染-优化-重复策略为基础,但设计了一种从静态照片集合中学习永久视图合成的方法——不需要视频。我们将这种方法称为InfiniteNature-Zero,因为它从“零”视频中学习。乍一看,这似乎是一项不可能完成的任务——当模型所见过的都是孤立的照片时,我们如何训练模型来生成场景的视频飞越?

为了解决这个问题,我们有一个关键的见解:如果我们拍摄一张图片并渲染一条形成循环的相机路径(即路径循环回来,使得最后一幅图像与第一幅图像来自相同的视点),那么我们就知道沿着这条路径合成的最后一幅图像应该与输入图像相同。这种循环一致性提供了训练约束,可帮助模型学习在视图生成的每个步骤中填充缺失区域并提高图像分辨率。

然而,使用这些相机循环进行训练不足以生成长而稳定的视图序列,因此,就像我们最初的工作一样,我们包含了一种对抗策略,该策略考虑了长的非循环相机路径,如上图所示。具体来说,如果我们从起始帧渲染T帧,我们会优化我们的渲染-优化-重复模型,使鉴别器网络无法分辨哪个是起始帧,哪个是最终合成帧。最后,我们添加了一个经过训练的组件来生成高质量的天空区域,以提高结果的感知真实感。

凭借这些见解,我们利用大量在线提供的风景照片集训练了 InfiniteNature-Zero。下面显示了几个生成的视频 - 这些视频展示了美丽、多样的自然风光,可以沿着任意长的相机路径进行探索。与我们之前的工作以及之前的视频合成方法相比,这些结果在内容质量和多样性方面表现出了显著的改进(详细信息请参阅论文)。

InfiniteNature-Zero 根据单张起始照片生成几张自然飞越照片。

结论

这项工作有许多令人兴奋的未来方向。例如,我们的方法目前仅基于前一帧及其深度图来合成场景内容;没有持久的底层 3D 表示。我们的工作指向可以生成完整、逼真且一致的 3D 世界的未来算法。

致谢

Infinite Nature 和 InfiniteNature-Zero 是 Google Research、加州大学伯克利分校和康奈尔大学的研究人员合作的成果。本文所介绍的工作的主要贡献者包括 Angjoo Kanazawa、Andrew Liu、Richard Tucker、Zhengqi Li、Noah Snavely、Qianqian Wang、Varun Jampani 和 Ameesh Makadia。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论