基于NeRF的方法生成3D城市显示出了有希望的生成结果,但在计算上效率不高。最近,3D高斯Splatting(3D-GS)已成为目标级3D生成的高效替代方案。然而,将3D-GS从有限尺度的3D物体和人类扩展到无限尺度的3D城市并非易事。无边界的3D城市生成会产生显著的存储开销(内存溢出问题),因为需要将点扩展到数十亿个,这通常需要数百GB的VRAM来呈现一个跨越10km²的城市场景。
GaussianCity,一个生成性Gaussain Saplatting框架,专门用于通过单次前馈传递高效地合成无边界的3D城市。主要贡献有两点:
1)紧凑的3D场景表示:引入了BEV-Point作为高度紧凑的中间表示,确保无边界场景中的VRAM使用量增长保持不变,从而实现无边界城市的生成。
2)空间感知的高斯属性解码器:提出了空间感知的BEV-Point解码器来生成3D高斯属性,该解码器利用点序列化器整合BEV点的结构和上下文特征。
大量实验表明,GaussianCity在无人机视角和街道视角的3D城市生成中都取得了最先进的结果。特别值得注意的是,与CityDreamer相比,GaussianCity表现出更优越的性能,速度提高了60倍(10.72 FPS vs 0.18 FPS)。
GaussianCity方法介绍


BEV-Point Initialization
在3D-GS中,所有的3D高斯函数在优化过程中都会使用一组预定义的参数进行初始化。然而,随着场景规模的扩大,VRAM的使用量会急剧增加,使得生成大规模场景变得不实际。为了解决这个问题,这里提出了一种高度紧凑的表示方法,即BEV-Point。在BEV-Point表示法中,仅保留可见的BEV点,因为只有它们会影响当前帧的apperance。它确保VRAM的使用量保持不变,因为给定固定的相机参数,可见BEV点的数量不会随着场景规模的增加而增加。




BEV-Point Feature Generation
BEV-Point表示中的特征可以分为三类:实例属性、BEV-Point属性和样式查找表。实例属性包含每个实例的基本细节,如实例标签、大小和中心坐标。BEV-Point属性决定了实例内的apperance,而样式查找表则控制不同实例之间的样式变化。
实例属性。语义地图S为BEV点提供了语义标签,参照CityDreamer,这里引入了实例地图Q来处理城市环境中建筑和车辆的多样性。

其中,Inst(·) 表示通过在语义地图上检测连通分量来进行实例化。因此,BEV点的实例标签I可以计算为:






样式查找表。在3D-GS中,3D高斯函数的外观由每个高斯函数的属性定义。随着3D高斯函数数量的增加,对VRAM和文件存储的需求也显著增加,使得无限制的场景生成变得不可行。为了进一步降低计算成本,实例的外观被编码为一组潜在向量ZT 即:

BEV-Point Decoding
BEV-Point解码器被设计用来利用BEV-Point特征生成高斯属性A。它包含五个关键模块:positional encoder, point serializer, point transformer, modulated MLP, and Gaussian rasterizer。


点序列化器。与NeRF不同,NeRF维持了沿射线采样的点之间的空间相关性,但由于点云的不规则性,BEV点和3D高斯函数是无结构和无序的。因此,直接将多层感知机(MLPs)应用于从FP生成高斯属性可能不会产生最优结果,因为MLPs并没有完全考虑点云的结构和上下文特性。
为了将无结构的BEV点转换为结构化格式,这里提出了点序列化器L: (x, y, z) → o,其中o ∈ Z,用于将点坐标转换为整数,以反映该点在给定BEV点中的顺序。

point transformer。在序列化之后,BEV点的特征可以通过一个Transformer F进行处理:





在栅格化过程中,如果A中未生成所需的属性,则会使用默认值。这些默认值包括缩放因子s = 1,旋转四元数q = [1, 0, 0, 0],以及不透明度α = 1。
损失函数

实验对比





参考
[1] GaussianCity: Generative Gaussian Splatting for Unbounded 3D City Generation

发表回复