CityDreamer:一鍵生成無邊界的3D城市
近些年,3D 自然場景的生成出現(xiàn)了大量的研究工作,但是 3D 城市生成的研究工作還寥寥無幾。這主要是因為 3D 城市生成更難,人類對于其中的結(jié)構(gòu)失真更敏感。近日,來自南洋理工大學 S-Lab 的研究者提出了一個新的框架 CityDreamer,專注于生成無邊界的 3D 城市,讓我們先看一下效果。
看起來還不錯?這都來自于以下的這篇研究。
- 論文地址:https://arxiv.org/abs/2009.00610
- 項目地址:https://haozhexie.com/project/city-dreamer
- 代碼地址:https://github.com/hzxie/city-dreamer
為滿足元宇宙中對 3D 創(chuàng)意工具不斷增長的需求,三維場景生成最近受到了相當多的關(guān)注。其中,生成 3D 城市比 3D 自然場景更復雜。在自然場景中,相同類別的物體通常有相似的外觀,例如樹通常是綠色的。但是在城市中,建筑的外觀非常多樣,但它們被賦予了相同的類別,這將導致建筑外觀的質(zhì)量下降。
為了解決這個問題,研究人員提出了 CityDreamer 以生成無邊界的 3D 城市,它將建筑和城市背景(包括道路、綠化、水域)生成分別用 2 個不同的模塊生成。這兩個模塊都采用鳥瞰(Bird's Eye View, BEV)作為場景表示,并采用體積渲染器(Volumetric Renderer )通過對抗訓練生成逼真的圖像。
值得注意的是,場景參數(shù)化的方式經(jīng)過精心定制,以適應(yīng)背景物體和建筑物的獨特特征。每個類別中的背景對象通常具有相似的外觀,同時呈現(xiàn)出不規(guī)則的紋理。因此,CityDreamer 引入生成哈希網(wǎng)格來保持自然性,同時維護 3D 一致性。相比之下,建筑實例表現(xiàn)出各種各樣的外觀,但其立面的紋理通常顯示出規(guī)則的周期性圖案。研究人員因此,設(shè)計了周期性位置編碼,這對于處理多樣性的建筑立面來說是簡單而有效的。
為了使生成的城市在布局上和外觀上都更逼真,研究人員們構(gòu)建了 2 個數(shù)據(jù)集:OSM 和 GoogleEarth。前者從 OpenStreetMap [1] 提取了超過 80 個知名城市、超過 6000km2 的俯視視角的高度圖和語義分割圖;后者從 Google Earth Studio [2] 上提取了美國紐約市的 400 環(huán)形軌跡,包含 24,000 張圖像及對應(yīng)的語義分割和建筑實例分割標注。這些標注是通過將從 OSM 數(shù)據(jù)集生成的 3D 城市布局投影至圖像上生成的。這種方式可以很容易地將標注數(shù)據(jù)擴展至世界上的其他城市。
方法
CityDreamer 將 3D 城市生成分解為 4 步:無邊界城市布局生成、城市背景生成、建筑實例生成和圖像融合。
無邊界城市布局生成
CityDreamer 將無限的城市布局生成轉(zhuǎn)化為可擴展的語義地圖和高度場的生成問題。為此,CityDreamer 采用了基于 MaskGIT [3] 的無邊界布局生成器(Unbounded Layout Generator, ULG),它天然地支持 inpainting 和 outpainting 功能。具體來說,ULG 使用了 VQVAE 來編碼語義圖和高度場的圖像切片,將它們轉(zhuǎn)換為離散潛在空間并創(chuàng)建 Codeboook。在推理過程中,ULG 以自回歸的方式生成 Codebook 索引,隨后,ULG 使用 VQVAE 的解碼器生成一對語義圖和高度場。由于 VQVAE 生成固定大小的語義圖和高度場,因此 ULG 使用圖像 outpainting 來創(chuàng)建任意大小的語義圖和高度場。在此過程中,ULG 采用滑動窗口來預(yù)測每一步的局部 Codebook 索引,滑動期間有 25% 的重疊。
城市背景生成
City Background Generator (CBG) 主要用于生成城市的背景,具體包括道路、綠化和水域。該模塊使用了鳥瞰視圖(BEV)作為場景的表示。具體而言,該表示使用由語義圖和高度圖組成的 BEV 表征來表達一個大尺度三維場景。
針對城市背景相同類別通常具有相似外觀的特性,CBG 引入生成哈希網(wǎng)格(Generative Hash Grid)作為場景的參數(shù)化:保持自然性,同時維護 3D 一致性。具體而言,CBG 使用哈希函數(shù)來將場景特征
和空間點坐標
映射到多尺度混合的可學習參數(shù)上:
為了保證渲染的三維一致性,我們使用基于體積渲染的渲染網(wǎng)絡(luò)來完成三維空間特征到二維圖像的映射。對于相機光線上的一點,我們經(jīng)過查詢生成式哈希網(wǎng)格得到其對應(yīng)的特征,使用經(jīng)風格噪聲調(diào)制的多層 MLP 來得到其對應(yīng)點的顏色和體密度,最終通過體渲染來將一條相機光線上的所有點積分為對應(yīng)像素的顏色。
建筑實例生成
Building Instance Generator (BIG) 用于生成城市的建筑。和城市背景生成一樣,我們使用了鳥瞰視圖作為場景的表示,使用基于體積渲染的渲染網(wǎng)絡(luò)來完成三維空間特征到二維圖像的映射。觀察到建筑立面和屋頂分布的顯著差異,建筑立面和屋頂在 BIG 中被分配了 2 個不同的類別標簽。
針對建筑立面所呈現(xiàn)出的周期性規(guī)律,我們設(shè)計了更輕量化的場景參數(shù)化方式:基于周期性函數(shù)的場景參數(shù)化。具體而言,BIG 將建筑特征和空間坐標
通過周期性函數(shù)映射到一個高維空間中:
其中,$\rm Concat$ 表示連接(Concatenation)操作, 被定義為
圖像融合
給定城市背景的圖像和掩膜(分別用 和
表示) 以及 建筑實例的圖像和掩膜的集合( 分別用
和
表示),CityDreamer 使用如下方式得到融合后的圖像
其中 n 表示建筑實例的數(shù)量。
實驗
下圖展示了 CityDreamer 和其他 SOTA 方法的對比,這些方法包括 PersistentNature [4]、SceneDreamer [5] 和 InfiniCity [6]。實驗結(jié)果表明,CityDreamer 的效果明顯優(yōu)于其他方法。
下圖展示了更多視角的生成結(jié)果,該結(jié)果證明了 CityDreamer 的魯棒性。