五分鐘技術(shù)趣談 | GET3D生成模型淺析
Part 01●
前言
近年來,隨著以Midjourney和Stable Diffusion為代表的AI圖像生成工具的興起,2D AIGC技術(shù)已經(jīng)作為輔助工具被許多設計師運用到實際的項目工作中,在各類顯性的商業(yè)場景中落地,創(chuàng)造越來越多的現(xiàn)實價值。同時隨著元宇宙熱潮的到來,許多行業(yè)正朝著創(chuàng)建大規(guī)模3D虛擬世界的方向發(fā)展,多樣化、高質(zhì)量的3D內(nèi)容對一些行業(yè)正變得越來越重要,包括游戲、機器人、建筑和社交平臺等。但是,手動創(chuàng)建3D資源非常耗時且需要特定的藝術(shù)素養(yǎng)以及建模技能。主要的挑戰(zhàn)之一是規(guī)?!M管可以在3D市場上找到大量的3D模型,在游戲或電影中填充一群看起來都不一樣的角色或建筑仍然需要耗費藝術(shù)家大量的時間。因此,對能夠在3D內(nèi)容的數(shù)量、質(zhì)量和多樣性方面進行擴展的內(nèi)容制作工具的需求也變得越來越明顯。
圖片
圖1 元宇宙空間(來源:《無敵破壞王2》)
得益于2D生成模型在高分辨率圖像合成中已經(jīng)獲得了逼真的質(zhì)量,這一進展也啟發(fā)了3D內(nèi)容生成的研究。早期的方法旨在將2D CNN生成器直接擴展到3D體素網(wǎng)格,但3D卷積的高內(nèi)存占用和計算復雜性阻礙了高分辨率下的生成過程。作為一種替代方案,其他研究已經(jīng)探索了點云、隱式或八叉樹表示。然而,這些工作主要集中在生成幾何體上,而忽略外觀。它們的輸出表示也需要進行后處理,使其與標準圖形引擎相兼容。
為了能夠?qū)嶋H應用到內(nèi)容制作中,理想的3D生成模型應當滿足以下要求:
(a)有能力生成具有幾何細節(jié)和任意拓撲的形狀。
(b)輸出的應該是紋理網(wǎng)格,這是Blender和Maya等標準圖形軟件所使用的主要表達。
(c)可以利用2D圖像進行監(jiān)督,因為它們比明確的3D形狀更廣泛。
Part 02
3D生成模型簡介
為了便于內(nèi)容創(chuàng)建過程并能夠?qū)嶋H得到應用,能夠產(chǎn)生高質(zhì)量和多樣化3D資產(chǎn)的生成性3D網(wǎng)絡最近已經(jīng)成為活躍的研究領(lǐng)域。每年都會有許多3D生成模型發(fā)表于ICCV、NeurlPS、ICML等大會,其中前沿的模型有以下幾種:
Textured3DGAN:作為卷積生成紋理3D網(wǎng)格方法的延伸,是能夠在二維監(jiān)督下,學習使用GAN從實物圖像中生成紋理網(wǎng)格的一種生成模型。相較于以前的方法,放寬了姿態(tài)估計步驟中對關(guān)鍵點的要求,并將該方法推廣到未標記的圖像集合和新的類別/數(shù)據(jù)集,如ImageNet。
DIB-R:底層由PyTorch機器學習框架構(gòu)建的一種基于插值的可微分渲染器,已經(jīng)被添加到3D深度學習的PyTorch GitHub庫中(Kaolin)。該方法允許對圖像中的所有像素的梯度進行分析計算,核心是將前景光柵化視為局部屬性的加權(quán)插值,將背景光柵化視為由全局幾何體的基于距離的聚合,從而學會了從單個圖像預測形狀,紋理和光線。
PolyGen:使用基于Transformer的架構(gòu)依次預測網(wǎng)格頂點和面的一種直接對網(wǎng)格建模的自回歸生成模型。通過ShapeNet Core V2數(shù)據(jù)集進行訓練,得到的模型已經(jīng)十分接近于人類構(gòu)建的結(jié)果。
SurfGen:具有顯式表面鑒別器的對抗性3D形狀合成。通過端到端訓練的模型能夠生成具有不同拓撲的高保真3D形狀。
GET3D:從圖像學習的高質(zhì)量3D紋理形狀的生成模型。核心是通過可微分表面建模、可微分渲染以及2D生成對抗性網(wǎng)絡,可以從2D圖像集合中訓練模型,直接生成具有復雜拓撲、豐富幾何細節(jié)和高保真紋理的顯式紋理3D網(wǎng)格。
圖片
圖2 GET3D生成模型(來源:GET3D論文官網(wǎng)https://nv-tlabs.github.io/GET3D/)
作為最近提出來的3D生成模型,GET3D通過ShapeNet、Turbosquid和Renderpeople中多個具有復雜幾何圖形的類別,如椅子、摩托車、汽車、人物和建筑,展示了在無限制生成3D形狀方面的最先進性能。
Part 03
GET3D的架構(gòu)和特性
圖片
圖3 GET3D架構(gòu)(來源:GET3D論文官網(wǎng)https://nv-tlabs.github.io/GET3D/)
通過兩個潛在編碼生成了一個3D SDF(Signed Distance Field/有向距離場)和一個紋理場(Texture Field),再利用DMTet(Deep Marching Tetrahedra)從SDF中提取3D表面網(wǎng)格,并在表面點云查詢紋理場以獲取顏色。整個過程使用在2D圖像上定義的對抗性損失來進行訓練。特別是,RGB圖像和輪廓是使用基于光柵化的可微分渲染器來獲取的。最后使用兩個2D鑒別器,每個鑒別器分別針對RGB圖像和輪廓,來分辨輸入是真的還是假的。整個模型是端到端可訓練的。
除了以顯式網(wǎng)格作為輸出表達,GET3D在其他方面也非常靈活,可以很容易地適應其他任務,包括:
實現(xiàn)幾何體和紋理的分離:模型在幾何和紋理之間實現(xiàn)了很好的解耦,并且對幾何潛在代碼和紋理潛在代碼都可以進行有意義的插值。
不同類別形狀之間生成平滑過渡:通過在潛在空間中應用隨機行走,并生成相應的3D形狀。
生成新的形狀:通過添加一個小噪聲來擾動局部的潛在代碼,可以生成看起來相似但局部略有差異的形狀。
無監(jiān)督材質(zhì)生成:與DIBR++相結(jié)合,以完全無監(jiān)督的方式生成材質(zhì)并產(chǎn)生有意義的視圖相關(guān)照明效果。
以文本為導向的形狀生成:結(jié)合StyleGAN NADA,通過計算渲染的2D圖像和用戶提供的文本上的定向CLIP損失來微調(diào)3D生成器,用戶可以通過文本提示生成大量有意義的形狀。
圖片
圖4 基于文本生成形狀(來源:GET3D論文官網(wǎng)https://nv-tlabs.github.io/GET3D/)
Part 04
總結(jié)
雖然GET3D朝著實用的3D紋理形狀的3D生成模型邁出了重要一步,但它仍有一些局限性。特別是,在訓練過程中,仍然依賴2D剪影以及相機分布的知識。因此,GET3D目前僅根據(jù)合成數(shù)據(jù)進行評估。一個有前景的擴展是可以利用實例分割和相機姿態(tài)估計方面的進步來緩解這個問題,并將GET3D擴展到真實世界的數(shù)據(jù)。GET3D也按類別進行訓練,未來將擴展到多個類別,可以更好地表示類別間的多樣性。希望這項研究能讓人們離使用人工智能進行3D內(nèi)容的自由創(chuàng)作更近一步。