Autoren: Jun Gao, NVIDIA, University of Toronto, Vector Institute (jung@nvidia.com) Tianchang Shen, NVIDIA, University of Toronto, Vector Institute (frshen@nvidia.com) Zian Wang, NVIDIA, University of Toronto, Vector Institute (zianw@nvidia.com) Wenzheng Chen, NVIDIA, University of Toronto, Vector Institute (wenzchen@nvidia.com) Kangxue Yin, NVIDIA (kangxuey@nvidia.com) Daiqing Li, NVIDIA (daiqingl@nvidia.com) Or Litany, NVIDIA (olitany@nvidia.com) Zan Gojcic, NVIDIA (zgojcic@nvidia.com) Sanja Fidler, NVIDIA, University of Toronto, Vector Institute (sfidler@nvidia.com) Abstrakt Da mehrere Industrien sich der Modellierung massiver 3D-virtueller Welten zuwenden, wird der Bedarf an Content-Creation-Tools, die in Bezug auf Menge, Qualität und Vielfalt von 3D-Inhalten skalierbar sind, immer deutlicher. In unserer Arbeit zielen wir darauf ab, performante 3D-generative Modelle zu trainieren, die texturierte Meshes synthetisieren, welche direkt von 3D-Rendering-Engines konsumiert werden können, also sofort in nachgelagerten Anwendungen nutzbar sind. Bisherige Arbeiten zur 3D-generativen Modellierung weisen entweder geometrische Details auf, sind in der Topologie des erzeugbaren Meshes begrenzt, unterstützen typischerweise keine Texturen oder nutzen neuronale Renderer im Syntheseprozess, was ihre Verwendung in gängiger 3D-Software nicht trivial macht. In dieser Arbeit stellen wir GET3D vor, ein eneratives Modell, das direkt xplicit extured Meshes mit komplexer Topologie, reichen geometrischen Details und hochauflösenden Texturen generiert. Wir nutzen die jüngsten Erfolge in der differenzierbaren Oberflächenmodellierung, dem differenzierbaren Rendering sowie bei 2D Generative Adversarial Networks, um unser Modell aus 2D-Bildsammlungen zu trainieren. GET3D ist in der Lage, qualitativ hochwertige 3D-texturierte Meshes zu generieren, die von Autos, Stühlen, Tieren, Motorrädern und menschlichen Charakteren bis hin zu Gebäuden reichen und signifikante Verbesserungen gegenüber früheren Methoden erzielen. Unsere Projektseite: G E T 3D https://nv-tlabs.github.io/GET3D 1 Einleitung Vielfältige, qualitativ hochwertige 3D-Inhalte werden für verschiedene Branchen, darunter Spiele, Robotik, Architektur und soziale Plattformen, immer wichtiger. Die manuelle Erstellung von 3D-Assets ist jedoch sehr zeitaufwendig und erfordert spezifisches technisches Wissen sowie künstlerische Modellierungsfähigkeiten. Eine der größten Herausforderungen ist daher die Skalierung – während man 3D-Modelle auf 3D-Marktplätzen wie Turbosquid [ ] oder Sketchfab [ ] finden kann, dauert die Erstellung vieler 3D-Modelle, um beispielsweise ein Spiel oder einen Film mit einer Menge unterschiedlich aussehender Charaktere zu bevölkern, immer noch erheblich viel Zeit für Künstler. 4 3 Um den Content-Creation-Prozess zu erleichtern und ihn einer Vielzahl von (unerfahrenen) Benutzern zugänglich zu machen, sind generative 3D-Netzwerke, die qualitativ hochwertige und vielfältige 3D-Assets erzeugen können, in jüngster Zeit zu einem aktiven Forschungsgebiet geworden [ , , , , , , , , , , ]. Um jedoch für aktuelle reale Anwendungen praktisch nützlich zu sein, sollten 3D-generative Modelle idealerweise die folgenden Anforderungen erfüllen: Sie sollten die Kapazität haben, Formen mit detaillierter Geometrie und beliebiger Topologie zu erzeugen, Die Ausgabe sollte ein texturiertes Mesh sein, welches eine primäre Repräsentation darstellt, die von Standard-Grafiksoftwarepaketen wie Blender [ ] und Maya [ ] verwendet wird, und Wir sollten 2D-Bilder zur Überwachung nutzen können, da diese breiter verfügbar sind als explizite 3D-Formen. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Bisherige Arbeiten zur 3D-generativen Modellierung haben sich auf Teilmengen der oben genannten Anforderungen konzentriert, aber keine Methode hat bisher alle erfüllt (Tab. ). Zum Beispiel generieren Methoden, die 3D-Punktwolken [ , 68, 75] erzeugen, typischerweise keine Texturen und müssen in der Nachbearbeitung in ein Mesh konvertiert werden. 1 5 Methoden, die Voxel generieren, mangelt es oft an geometrischen Details und sie erzeugen keine Texturen [ , , , ]. Generative Modelle, die auf neuronalen Feldern basieren [ , ], konzentrieren sich auf die Extraktion von Geometrie, ignorieren aber Texturen. Die meisten davon erfordern auch eine explizite 3D-Überwachung. Schließlich erfordern Methoden, die direkt texturierte 3D-Meshes [ , ] ausgeben, typischerweise vordefinierte Formvorlagen und können keine Formen mit komplexer Topologie und variablem Geschlecht erzeugen. 66 20 27 40 43 14 54 53 Kürzlich haben rasche Fortschritte im neuronalen Volumen-Rendering [ ] und bei 2D Generative Adversarial Networks (GANs) [ , , , , ] zum Aufkommen von 3D-bewusster Bildsynthese [ , , , , , ] geführt. Diese Arbeiten zielen jedoch darauf ab, konsistente Multi-View-Bilder mittels neuronalem Rendering im Syntheseprozess zu erzeugen und garantieren nicht, dass sinnvolle 3D-Formen generiert werden können. Obwohl ein Mesh potenziell aus der zugrundeliegenden neuronalen Feldrepräsentation mittels des Marching-Cube-Algorithmus [ ] gewonnen werden kann, ist die Extraktion der entsprechenden Textur nicht trivial. 45 34 35 33 29 52 7 57 8 49 51 25 39 In dieser Arbeit stellen wir einen neuartigen Ansatz vor, der darauf abzielt, alle Anforderungen eines praktisch nützlichen 3D-generativen Modells zu erfüllen. Insbesondere schlagen wir GET3D vor, ein eneratives Modell für 3D-Formen, das direkt xplicit extured Meshes mit hoher geometrischer und texturbezogener Detailtreue sowie beliebiger Mesh-Topologie ausgibt. Im Herzen unseres Ansatzes steht ein generativer Prozess, der eine differenzierbare *explizite* Oberflächenextraktionsmethode [ ] und eine differenzierbare Rendering-Technik [ , ] nutzt. Ersteres ermöglicht uns, texturierte 3D-Meshes mit beliebiger Topologie direkt zu optimieren und auszugeben, während letzteres es uns ermöglicht, unser Modell mit 2D-Bildern zu trainieren und somit leistungsstarke und ausgereifte Diskriminatoren zu nutzen, die für die 2D-Bildsynthese entwickelt wurden. Da unser Modell direkt Meshes generiert und einen hocheffizienten (differenzierbaren) Grafikrenderer verwendet, können wir unser Modell leicht skalieren, um mit Bildern mit einer Auflösung von bis zu 1024 × 1024 zu trainieren, was uns ermöglicht, hochwertige geometrische und texturbezogene Details zu lernen. G E T 3D 60 47 37 Wir demonstrieren State-of-the-Art-Leistung für bedingungslose 3D-Formgenerierung in mehreren Kategorien mit komplexer Geometrie aus ShapeNet [ ], Turbosquid [ ] und Renderpeople [ ], wie Stühle, Motorräder, Autos, menschliche Charaktere und Gebäude. Mit explizitem Mesh als Ausgabe-Repräsentation ist GET3D auch sehr flexibel und kann leicht an andere Aufgaben angepasst werden, darunter: Lernen, zerlegte Material- und blickabhängige Lichteffekte mithilfe fortschrittlichen differenzierbaren Renderings zu generieren [ ], ohne Überwachung, Text-gesteuerte 3D-Formgenerierung mithilfe von CLIP [ ] Embeddings. 9 4 2 (a) 12 (b) 56 2 Verwandte Arbeiten Wir überprüfen aktuelle Fortschritte bei 3D-generativen Modellen für Geometrie und Erscheinungsbild sowie bei 3D-bewusster generativer Bildsynthese. In den letzten Jahren haben 2D generative Modelle fotorealistische Qualität bei der Synthese von hochauflösenden Bildern erzielt [ , , , , , , ]. Dieser Fortschritt hat auch die Forschung zur 3D-Inhaltserzeugung inspiriert. Frühe Ansätze zielten darauf ab, 2D CNN-Generatoren direkt auf 3D-Voxel-Raster zu erweitern [ , , , , ], aber der hohe Speicherbedarf und die rechnerische Komplexität von 3D-Konvolutionen behindern den Generierungsprozess bei hoher Auflösung. Als Alternative haben andere Arbeiten Punktwolken [ , , , ], implizite [ , ] oder Octree [ ] Repräsentationen untersucht. Diese Arbeiten konzentrieren sich jedoch hauptsächlich auf die Erzeugung von Geometrie und vernachlässigen das Erscheinungsbild. Ihre Ausgabe-Repräsentationen müssen auch nachbearbeitet werden, um sie mit Standard-Grafik-Engines kompatibel zu machen. 3D Generative Modelle 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Ähnlicher unserer Arbeit erzeugen Textured3DGAN [ , ] und DIBR [ ] texturierte 3D-Meshes, formulieren die Generierung jedoch als Deformation eines Vorlagen-Meshes, was sie daran hindert, komplexe Topologien oder Formen mit variierendem Geschlecht zu erzeugen, was unsere Methode kann. PolyGen [ ] und SurfGen [ ] können Meshes mit beliebiger Topologie erzeugen, synthetisieren aber keine Texturen. 54 53 11 48 41 Inspiriert vom Erfolg des neuronalen Volumen-Renderings [ ] und impliziter Repräsentationen [ , ] hat die jüngste Arbeit begonnen, das Problem der 3D-bewussten Bildsynthese zu lösen [ , , , , , , , , , ]. Neuronale Volumen-Rendering-Netzwerke sind jedoch typischerweise langsam abzufragen, was zu langen Trainingszeiten führt [ , ] und Bilder begrenzter Auflösung erzeugt. GIRAFFE [ ] und StyleNerf [ ] verbessern die Trainings- und Rendering-Effizienz, indem sie neuronales Rendering bei niedrigerer Auflösung durchführen und die Ergebnisse dann mit einem 2D CNN hochskalieren. Der Leistungsgewinn geht jedoch auf Kosten einer reduzierten Multi-View-Konsistenz. Durch die Verwendung eines doppelten Diskriminators kann EG3D [ ] dieses Problem teilweise mildern. Dennoch ist die Extraktion einer texturierten Oberfläche aus Methoden, die auf neuronalem Rendering basieren, ein nicht triviales Unterfangen. Im Gegensatz dazu gibt GET3D direkt texturierte 3D-Meshes aus, die sofort in Standard-Grafik-Engines verwendet werden können. 3D-bewusste generative Bildsynthese 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Methode Wir präsentieren nun unser GET3D-Framework zur Synthese von texturierten 3D-Formen. Unser Generierungsprozess ist in zwei Teile unterteilt: ein Geometrie-Zweig, der differenzierbar ein Oberflächen-Mesh beliebiger Topologie ausgibt, und ein Textur-Zweig, der ein Texturfeld erzeugt, das an den Oberflächenpunkten abgefragt werden kann, um Farben zu erzeugen. Letzteres kann auf andere Oberflächeneigenschaften erweitert werden, wie z.B. Materialien (Abschnitt ). Während des Trainings wird ein effizienter differenzierbarer Rasterizer verwendet, um das resultierende texturierte Mesh in 2D-Bilder mit hoher Auflösung zu rendern. Der gesamte Prozess ist differenzierbar und ermöglicht das gegnerische Training anhand von Bildern (mit Masken, die ein interessierendes Objekt anzeigen) durch Rückpropagieren der Gradienten vom 2D-Diskriminator zu beiden Generatoren-Zweigen. Unser Modell ist in Abb. illustriert. Im Folgenden stellen wir zunächst unseren 3D-Generator in Abschnitt vor, bevor wir uns dem differenzierbaren Rendering und den Verlustfunktionen in Abschnitt widmen. 4.3.1 2 3.1 3.2 3.1 Generatives Modell von 3D-texturierten Meshes Wir wollen einen 3D-Generator = ( ) lernen, um eine Stichprobe aus einer Gauß-Verteilung M, E G z ∈ N (0*,* ) auf ein Mesh mit Textur abzubilden. z I M E Da die gleiche Geometrie unterschiedliche Texturen haben kann und die gleiche Textur auf verschiedene Geometrien angewendet werden kann, ziehen wir zwei zufällige Eingabevektoren 1 ∈ R512 und 2 ∈ R512. Nach StyleGAN [ , , ] verwenden wir dann nicht-lineare Mapping-Netzwerke geo und tex, um 1 und 2 auf Zwischen-Latent-Vektoren 1 = geo( 1) und 2 = tex( 2) abzubilden, die weiter verwendet werden, um *Styles* zu erzeugen, die die Generierung von 3D-Formen und Texturen steuern. Wir stellen den Generator für Geometrie formell in Abschnitt und den Textur-Generator in Abschnitt vor. z z 34 35 33 f f z z w f z w f z 3.1.1 3.1.2 3.1.1 Geometrie-Generator Wir konzipieren unseren Geometrie-Generator so, dass er DMTet [ ] integriert, eine kürzlich vorgeschlagene differenzierbare Oberflächenrepräsentation. DMTet repräsentiert Geometrie als ein Signed Distance Field (SDF), das auf einem deformierbaren Tetraeder-Raster [ , ] definiert ist, aus dem die Oberfläche differenzierbar durch Marching Tetrahedra [ ] wiederhergestellt werden kann. Das Verformen des Rasters durch Verschieben seiner Eckpunkte führt zu einer besseren Ausnutzung seiner Auflösung. Durch die Annahme von DMTet zur Oberflächenextraktion können wir explizite Meshes mit beliebiger Topologie und Geschlecht erzeugen. Im Folgenden geben wir eine kurze Zusammenfassung von DMTet und verweisen den Leser für weitere Details auf die Originalarbeit. 60 22 24 17 Seien ( ) der gesamte 3D-Raum, in dem sich das Objekt befindet, wobei die Eckpunkte des Tetraeder-Rasters sind. Jedes Tetraeder ∈ wird mit vier Eckpunkten { } definiert, mit ∈ {1*, . . . , K*}, wobei die Gesamtzahl der Tetraeder ist, und ∈ ∈ R3. Zusätzlich zu seinen 3D-Koordinaten enthält jeder Eckpunkt den SDF-Wert ∈ R und die Verformung ∆ ∈ R3 des Eckpunkts von seiner ursprünglichen kanonischen Koordinate. Diese Repräsentation ermöglicht die Wiederherstellung des expliziten Meshes durch differenzierbares Marching Tetrahedra [ ], wobei SDF-Werte im kontinuierlichen Raum durch baryzentrische Interpolation ihrer Werte auf den deformierten Eckpunkten ′ = + ∆ berechnet werden. VT , T VT T Tk T v ak , v bk , v ck , v dk k K v ik VT , v ik v i si v i 60 si v v i v i Wir bilden 1 ∈ R512 auf SDF-Werte und Verformungen an jedem Eckpunkt durch eine Reihe von bedingten 3D-konvolutionalen und vollständig verbundenen Schichten ab. Speziell verwenden wir zunächst 3D-konvolutionale Schichten, um ein Feature-Volumen zu generieren, das auf 1 konditioniert ist. Anschließend fragen wir das Feature an jedem Eckpunkt ∈ mittels trilinearer Interpolation ab und speisen es in MLPs ein, die den SDF-Wert und die Verformung ∆ ausgeben. In Fällen, in denen eine Modellierung bei hoher Auflösung erforderlich ist (z. B. ein Motorrad mit dünnen Strukturen in den Rädern), verwenden wir außerdem eine Volumenunterteilung nach [ ]. Netzwerkarchitektur w v i w v i VT si v i 60 Nachdem und ∆ für alle Eckpunkte ermittelt wurden, verwenden wir den differenzierbaren Marching-Tetrahedra-Algorithmus, um das explizite Mesh zu extrahieren. Marching Tetrahedra bestimmt die Oberflächen-Topologie innerhalb jedes Tetraeders basierend auf den Vorzeichen von . Insbesondere wird eine Mesh-Fläche extrahiert, wenn sign( ) /= sign( ), wobei die Indizes der Eckpunkte am Rand des Tetraeders bezeichnen und die Eckpunkte dieser Fläche durch lineare Interpolation als mi,j = v 0 i sj−v 0 j si sj−si bestimmt werden. Beachten Sie, dass die obige Gleichung nur ausgewertet wird, wenn si 6= sj, somit differenzierbar ist und der Gradient von mi,j in die SDF-Werte si und Verformungen ∆vi zurückpropagiert werden kann. Mit dieser Repräsentation können Formen mit beliebiger Topologie leicht erzeugt werden, indem unterschiedliche Vorzeichen von si vorhergesagt werden. Differenzierbare Mesh-Extraktion si v i si si sj i, j m i,j 3.1.2 Textur-Generator Die direkte Generierung einer Texturkarte, die mit dem Ausgabemesh konsistent ist, ist nicht trivial, da die generierte Form ein beliebiges Geschlecht und eine beliebige Topologie haben kann. Wir parametrisieren die Textur daher als Texturfeld [ ]. 50 Speziell modellieren wir das Texturfeld mit einer Funktion , die den 3D-Ort eines Oberflächenpunkts ∈ R3, konditioniert auf 2, auf die RGB-Farbe ∈ R3 an diesem Ort abbildet. Da das Texturfeld von der Geometrie abhängt, konditionieren wir diese Abbildung zusätzlich auf den Geometrie-Latent-Code 1, so dass = ( *,* 1 ⊕ 2), wobei ⊕ Konkatenation bedeutet. ft p w c w c ft p w w Wir repräsentieren unser Texturfeld mit einer Tri-Plane-Repräsentation, die effizient und ausdrucksstark bei der Rekonstruktion von 3D-Objekten [ ] und der Generierung von 3D-bewussten Bildern [ ] ist. Speziell folgen wir [ , ] und verwenden ein bedingtes 2D-konvolutionales neuronales Netzwerk, um den Latent-Code 1 ⊕ 2 auf drei achsenparallele orthogonale Feature-Ebenen der Größe × × ( × 3) abzubilden, wobei = 256 die räumliche Auflösung und = 32 die Anzahl der Kanäle darstellt. Netzwerkarchitektur 55 8 8 35 w w N N C N C Gegeben die Feature-Ebenen, kann der Feature-Vektor f t ∈ R 32 eines Oberflächenpunkts p als f t = P e ρ(πe(p)) wiederhergestellt werden, wobei πe(p) die Projektion des Punkts p auf die Feature-Ebene e und ρ(·) die bilineare Interpolation der Features bezeichnet. Eine zusätzliche vollständig verbundene Schicht wird dann verwendet, um den aggregierten Feature-Vektor f t auf die RGB-Farbe c abzubilden. Beachten Sie, dass wir im Gegensatz zu anderen Arbeiten zur 3D-bewussten Bildsynthese, die ebenfalls eine neuronale Feldrepräsentation verwenden, nur das Texturfeld an den Orten der Oberflächenpunkte abfragen müssen (im Gegensatz zu dichten Abtastungen entlang eines Strahls). Dies reduziert die rechnerische Komplexität für das Rendern von hochauflösenden Bildern erheblich und garantiert die Erzeugung von Multi-View-konsistenten Bildern durch Konstruktion. 3.2 Differenzierbares Rendering und Training Um unser Modell während des Trainings zu überwachen, lassen wir uns von Nvdiffrec [ ] inspirieren, das die 3D-Objektrekonstruktion aus mehreren Ansichten mittels eines differenzierbaren Renderers durchführt. Speziell rendern wir das extrahierte 3D-Mesh und das Texturfeld in 2D-Bilder mithilfe eines differenzierbaren Renderers [ ] und überwachen unser Netzwerk mit einem 2D-Diskriminator, der versucht, das Bild von einem echten Objekt oder von dem generierten Objekt zu unterscheiden. 47 37 Wir nehmen an, dass die Kameradistribution C, die zur Erfassung der Bilder im Datensatz verwendet wurde, bekannt ist. Um die generierten Formen zu rendern, ziehen wir zufällig eine Kamera aus C und verwenden einen hochoptimierten differenzierbaren Rasterizer Nvdiffrast [ ], um das 3D-Mesh in eine 2D-Silhouette sowie ein Bild zu rendern, wobei jedes Pixel die Koordinaten des entsprechenden 3D-Punkts auf der Mesh-Oberfläche enthält. Diese Koordinaten werden weiter verwendet, um das Texturfeld abzufragen und die RGB-Werte zu erhalten. Da wir direkt auf dem extrahierten Mesh arbeiten, können wir hochauflösende Bilder mit hoher Effizienz rendern, was es unserem Modell ermöglicht, mit einer Bildauflösung von bis zu 1024×1024 trainiert zu werden. Differenzierbares Rendering c 37 Wir trainieren unser Modell mit einem gegnerischen Ziel. Wir übernehmen die Diskriminatorarchitektur von StyleGAN [ ] und verwenden das gleiche nicht-saturierende GAN-Ziel mit R1-Regularisierung [ ]. Wir stellen empirisch fest, dass die Verwendung von zwei separaten Diskriminatoren, einem für RGB-Bilder und einem für Silhouetten, bessere Ergebnisse liefert als ein einzelner Diskriminator, der auf beiden arbeitet. Sei der Diskriminator, wobei entweder ein RGB-Bild oder eine Silhouette ist. Das gegnerische Ziel ist dann wie folgt definiert: Diskriminator & Ziel 34 42 Dx x wobei ( ) als ( ) = − log(1 +exp(− )) definiert ist, die Verteilung reeller Bilder ist, das Rendering bezeichnet und ein Hyperparameter ist. Da differenzierbar ist, können die Gradienten von 2D-Bildern zu unseren 3D-Generatoren zurückpropagiert werden. g u g u u px R λ R Um interne schwebende Flächen zu entfernen, die in keiner der Ansichten sichtbar sind, regularisieren wir den Geometrie-Generator zusätzlich mit einem Cross-Entropy-Verlust, der zwischen den SDF-Werten benachbarter Eckpunkte definiert ist [ ]: Regularisierung 47 wobei der binäre Cross-Entropy-Verlust und die Sigmoid-Funktion bezeichnet. Die Summe in Gl. ist über die Menge der eindeutigen Kanten S im Tetraeder-Raster definiert, für die sign( ) /= sign( ). H σ 2 e si sj Die Gesamtverlustfunktion ist dann wie folgt definiert: wobei ein Hyperparameter ist, der den Grad der Regularisierung steuert. µ 4 Experimente Wir führen umfangreiche Experimente zur Auswertung unseres Modells durch. Zuerst vergleichen wir die Qualität der von GET3D generierten 3D-texturierten Meshes mit den bestehenden Methoden unter Verwendung der ShapeNet [ ] und Turbosquid [ ] Datensätze. Anschließend analysieren wir unsere Designentscheidungen in Abschnitt . Schließlich demonstrieren wir die Flexibilität von GET3D, indem wir es in nachgelagerten Anwendungen in Abschnitt anpassen. Zusätzliche experimentelle Ergebnisse und Implementierungsdetails sind im Anhang aufgeführt. 9 4 4.2 4.3