<圖學玩家 第014篇 原創文>
GET3D是Generative model that directly generates Explicit Textured 3D meshes的簡稱,用來輸出可用於Blender或Maya等建模軟體的3D Meshes物件。
與先前的3D生成技術主要差異在於,GET3D不單只是針對幾何 (Geometry) 或拓樸 (Topology) 等形狀層面的生成,也不是單獨用於材質或光源等紋理(Texture)的生成,而是一次就完成以上兩種任務。並且,GET3D同步利用2D影像進行監督式學習,因此訓練資源也遠比使用3D模型要來的豐富。
由於GET3D可生成Geometry與Texture的資訊,且不同Texture可以Map到同一個Geometry上,因此Geometry與Texture Generator被分成兩個不同的Branch。整體GET3D架構如下圖所示:
而GET3D的目的如下:
We aim to learn a 3D generator M, E = G(z) to map a sample from a Gaussian distribution z ∈ N (0, I) to a mesh M with texture E
GET3D架構的最左邊,是隨機從兩個Gaussian Distribution去取樣並輸入Mapping Network。這部分是採用同StyleGAN的Mapping Network設計。
Mapping Network要做的事,就是對特徵值進行解藕,得出Latent Space。至於Mapping network 為什麼要把 z 變成 w 呢? 一般 z 是符合均匀分布或者高斯分布的随機向量,但在實際情况中並不是這樣,比如頭髮的長度和男子氣概就不會是均勻分布。
接著來討論Generator的部分。Geometry Generator是參考DMTet的做法,而Texture Generator則是提取了EG3D的Triplane以及Texture Fields等巧思。Texture Fields的概念即是將3D座標上的點P映射到其對應的RGB值,如下圖所示:
ft maps the 3D location of a surface point p ∈ R 3 , conditioned on the w2, to the RGB color c ∈ R 3 at that location.
Differentiable Rendering與Training的部分,GET3D則是提取了Nvdiffrec及Nvdiffrast (一種高效的Differentiable Renderer) 的巧思,將3D Geometry以及Texture資訊轉為2D Image。這裡可以注意到,實驗結果證實,Discriminator同時針對RGB以及Silhouette做訓練,會得到更好的效果。
GET3D有許多不錯的結果展示,例如在生成不同類別的3D形狀時,就有不錯的效果。另外,由於GET3D有StyleGan的特性,因此可以對3D形狀的生成做線性內插:
最後,論文的Appendix有附上改進版本的Generator及其相關實驗,有興趣讀者可以再去參考以下論文以及Appendix:
Jun Gao, Tianchang Shen, Zian Wang, Wenzheng Chen, Kangxue Yin, Daiqing Li, Or Litany, Zan Gojcic, Sanja Fidler, GET3D: A Generative Model of High Quality 3D Textured Shapes Learned from Images. NVIDIA, University of Toronto, Vector Institute