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