CityDreamer:一键生成无边界的3D城市

愤怒的蜗牛

近些年,3D 自然场景的生成出现了大量的研究工作,但是 3D 城市生成的研究工作还寥寥无几。这主要是因为 3D 城市生成更难,人类对于其中的结构失真更敏感。近日,来自南洋理工大学 S-Lab 的研究者提出了一个新的框架 CityDreamer,专注于生成无边界的 3D 城市,让我们先看一下效果。

看起来还不错?这都来自于以下的这篇研究。

CityDreamer:一键生成无边界的3D城市

  • 论文地址:https://arxiv.org/abs/2009.00610

  • 项目地址:https://haozhexie.com/project/city-dreamer

  • 代码地址:https://github.com/hzxie/city-dreamer

为满足元宇宙中对 3D 创意工具不断增长的需求,三维场景生成最近受到了相当多的关注。其中,生成 3D 城市比 3D 自然场景更复杂。在自然场景中,相同类别的物体通常有相似的外观,例如树通常是绿色的。但是在城市中,建筑的外观非常多样,但它们被赋予了相同的类别,这将导致建筑外观的质量下降。

为了解决这个问题,研究人员提出了 CityDreamer 以生成无边界的 3D 城市,它将建筑和城市背景(包括道路、绿化、水域)生成分别用 2 个不同的模块生成。这两个模块都采用鸟瞰(Bird's Eye View, BEV)作为场景表示,并采用体积渲染器(Volumetric Renderer )通过对抗训练生成逼真的图像。

值得注意的是,场景参数化的方式经过精心定制,以适应背景物体和建筑物的独特特征。每个类别中的背景对象通常具有相似的外观,同时呈现出不规则的纹理。因此,CityDreamer 引入生成哈希网格来保持自然性,同时维护 3D 一致性。相比之下,建筑实例表现出各种各样的外观,但其立面的纹理通常显示出规则的周期性图案。研究人员因此,设计了周期性位置编码,这对于处理多样性的建筑立面来说是简单而有效的。

为了使生成的城市在布局上和外观上都更逼真,研究人员们构建了 2 个数据集:OSM 和 GoogleEarth。前者从 OpenStreetMap [1] 提取了超过 80 个知名城市、超过 6000km2 的俯视视角的高度图和语义分割图;后者从 Google Earth Studio [2] 上提取了美国纽约市的 400 环形轨迹,包含 24,000 张图像及对应的语义分割和建筑实例分割标注。这些标注是通过将从 OSM 数据集生成的 3D 城市布局投影至图像上生成的。这种方式可以很容易地将标注数据扩展至世界上的其他城市。

方法

CityDreamer:一键生成无边界的3D城市

CityDreamer 将 3D 城市生成分解为 4 步:无边界城市布局生成、城市背景生成、建筑实例生成和图像融合。

无边界城市布局生成

CityDreamer 将无限的城市布局生成转化为可扩展的语义地图和高度场的生成问题。为此,CityDreamer 采用了基于 MaskGIT [3] 的无边界布局生成器(Unbounded Layout Generator, ULG),它天然地支持 inpainting 和 outpainting 功能。具体来说,ULG 使用了 VQVAE 来编码语义图和高度场的图像切片,将它们转换为离散潜在空间并创建 Codeboook。在推理过程中,ULG 以自回归的方式生成 Codebook 索引,随后,ULG 使用 VQVAE 的解码器生成一对语义图和高度场。由于 VQVAE 生成固定大小的语义图和高度场,因此 ULG 使用图像 outpainting 来创建任意大小的语义图和高度场。在此过程中,ULG 采用滑动窗口来预测每一步的局部 Codebook 索引,滑动期间有 25% 的重叠。

城市背景生成

City Background Generator (CBG) 主要用于生成城市的背景,具体包括道路、绿化和水域。该模块使用了鸟瞰视图(BEV)作为场景的表示。具体而言,该表示使用由语义图和高度图组成的 BEV 表征来表达一个大尺度三维场景。

针对城市背景相同类别通常具有相似外观的特性,CBG 引入生成哈希网格(Generative Hash Grid)作为场景的参数化:保持自然性,同时维护 3D 一致性。具体而言,CBG 使用哈希函数CityDreamer:一键生成无边界的3D城市来将场景特征CityDreamer:一键生成无边界的3D城市 和空间点坐标CityDreamer:一键生成无边界的3D城市映射到多尺度混合的可学习参数上:

CityDreamer:一键生成无边界的3D城市

为了保证渲染的三维一致性,我们使用基于体积渲染的渲染网络来完成三维空间特征到二维图像的映射。对于相机光线上的一点,我们经过查询生成式哈希网格得到其对应的特征,使用经风格噪声调制的多层 MLP 来得到其对应点的颜色和体密度,最终通过体渲染来将一条相机光线上的所有点积分为对应像素的颜色。

建筑实例生成

Building Instance Generator (BIG) 用于生成城市的建筑。和城市背景生成一样,我们使用了鸟瞰视图作为场景的表示,使用基于体积渲染的渲染网络来完成三维空间特征到二维图像的映射。观察到建筑立面和屋顶分布的显著差异,建筑立面和屋顶在 BIG 中被分配了 2 个不同的类别标签。

针对建筑立面所呈现出的周期性规律,我们设计了更轻量化的场景参数化方式:基于周期性函数的场景参数化。具体而言,BIG 将建筑特征CityDreamer:一键生成无边界的3D城市和空间坐标CityDreamer:一键生成无边界的3D城市通过周期性函数映射到一个高维空间中:

CityDreamer:一键生成无边界的3D城市

其中,$\rm Concat$ 表示连接(Concatenation)操作,CityDreamer:一键生成无边界的3D城市 被定义为

CityDreamer:一键生成无边界的3D城市

图像融合

给定城市背景的图像和掩膜(分别用 CityDreamer:一键生成无边界的3D城市CityDreamer:一键生成无边界的3D城市表示) 以及 建筑实例的图像和掩膜的集合( 分别用 CityDreamer:一键生成无边界的3D城市和 CityDreamer:一键生成无边界的3D城市表示),CityDreamer 使用如下方式得到融合后的图像CityDreamer:一键生成无边界的3D城市

CityDreamer:一键生成无边界的3D城市

其中 n 表示建筑实例的数量。

实验

下图展示了 CityDreamer 和其他 SOTA 方法的对比,这些方法包括 PersistentNature [4]、SceneDreamer [5] 和 InfiniCity [6]。实验结果表明,CityDreamer 的效果明显优于其他方法。

CityDreamer:一键生成无边界的3D城市

CityDreamer:一键生成无边界的3D城市

下图展示了更多视角的生成结果,该结果证明了 CityDreamer 的鲁棒性。

CityDreamer:一键生成无边界的3D城市


您需要 登录账户 后才能发表评论

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
评论列表 (暂无评论,142人围观)

还没有评论,来说两句吧...

目录[+]

取消
微信二维码
微信二维码
支付宝二维码