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 Branchen auf die Modellierung massiver 3D-virtueller Welten umsteigen, wird die Notwendigkeit von Content-Creation-Tools, die in Bezug auf Menge, Qualität und Vielfalt von 3D-Inhalten skalierbar sind, deutlich. In unserer Arbeit zielen wir darauf ab, performante 3D-generative Modelle zu trainieren, die texturierte Meshes synthetisieren, die direkt von 3D-Rendering-Engines verarbeitet werden können und somit sofort in nachgelagerten Anwendungen einsetzbar sind. Frühere Arbeiten zur 3D-generativen Modellierung weisen entweder Mängel an geometrischen Details auf, sind in der erzeugbaren Mesh-Topologie begrenzt, unterstützen typischerweise keine Texturen oder verwenden 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 hoch-qualitativen Texturen erzeugt. Wir knüpfen an die jüngsten Erfolge in der differentiierbaren Oberflächenmodellierung, beim differentiierbaren Rendern sowie bei 2D-Generative Adversarial Networks an, um unser Modell anhand von 2D-Bildsammlungen zu trainieren. GET3D ist in der Lage, qualitativ hochwertige 3D-texturierte Meshes zu erzeugen, 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 Diverse, qualitativ hochwertige 3D-Inhalte werden für verschiedene Branchen, darunter Gaming, 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 von Charakteren zu bevölkern, die alle unterschiedlich aussehen, immer noch eine erhebliche Menge an Künstlerzeit. 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 produzieren können, in letzter Zeit zu einem aktiven Forschungsgebiet geworden [ , , , , , , , , , , ]. Um jedoch für aktuelle reale Anwendungen praktisch nutzbar zu sein, sollten 3D-generative Modelle idealerweise die folgenden Anforderungen erfüllen: Sie sollten über die Kapazität verfügen, Formen mit detaillierter Geometrie und beliebiger Topologie zu erzeugen, Das Ergebnis sollte ein texturiertes Mesh sein, das eine primäre Darstellung ist, die von Standard-Grafiksoftwarepaketen wie Blender [ ] und Maya [ ] verwendet wird, und Wir sollten 2D-Bilder zur Überwachung nutzen können, da diese weiter verbreitet sind als explizite 3D-Formen. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Frühere Arbeiten zur 3D-generativen Modellierung konzentrierten sich auf Teilmengen der oben genannten Anforderungen, aber bisher hat keine Methode alle erfüllt (Tab. ). Zum Beispiel erzeugen Methoden, die 3D-Punktwolken [ , 68, 75] erzeugen, typischerweise keine Texturen und müssen in der Nachbearbeitung in ein Mesh umgewandelt werden. 1 5 Methoden, die Voxel erzeugen, 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 variierendem Genus erzeugen. 66 20 27 40 43 14 54 53 Jüngste Fortschritte im neuronalen Volumenrendering [ ] und bei 2D-Generative Adversarial Networks (GANs) [ , , , , ] haben zum Aufstieg der 3D-bewussten Bildsynthese geführt [ , , , , , ]. Allerdings zielt diese Arbeitsrichtung darauf ab, mehransichtige konsistente Bilder mithilfe von neuronalen Rendern im Syntheseprozess zu synthetisieren, garantiert aber nicht, dass aussagekräftige 3D-Formen erzeugt werden können. Obwohl ein Mesh potenziell aus der zugrunde liegenden neuronalen Feldrepräsentation mithilfe des Marching Cubes-Algorithmus [ ] erhalten 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 textueller Detailgenauigkeit und beliebiger Mesh-Topologie ausgibt. Das Herzstück unseres Ansatzes ist ein generativer Prozess, der eine differenzierbare *explizite* Oberflächenextraktionsmethode [ ] und eine differenzierbare Rendering-Technik [ , ] verwendet. Erstgenannte ermöglicht es uns, texturierte 3D-Meshes mit beliebiger Topologie direkt zu optimieren und auszugeben, während letztere es uns erlaubt, unser Modell mit 2D-Bildern zu trainieren und somit von leistungsstarken und ausgereiften Diskriminatoren zu profitieren, die für die 2D-Bildsynthese entwickelt wurden. Da unser Modell direkt Meshes erzeugt und einen hocheffizienten (differenzierbaren) Grafikrenderer verwendet, können wir unser Modell leicht skalieren, um mit Bildauflösungen bis zu 1024 × 1024 zu trainieren, was uns ermöglicht, hochwertige geometrische und textuelle Details zu lernen. G E T 3D 60 47 37 Wir demonstrieren State-of-the-Art-Leistung für die bedingungslose 3D-Formgenerierung in mehreren Kategorien mit komplexer Geometrie aus ShapeNet [ ], Turbosquid [ ] und Renderpeople [ ], wie z.B. Stühle, Motorräder, Autos, menschliche Charaktere und Gebäude, und erzielen signifikante Verbesserungen gegenüber früheren Methoden. Mit expliziten Meshes als Ausgabe-Repräsentation ist GET3D auch sehr flexibel und kann leicht an andere Aufgaben angepasst werden, darunter: Lernen, zerlegte Material- und blickrichtungsabhängige Lichteffekte mithilfe von fortschrittlichem differenzierbarem Rendern [ ] ohne Überwachung zu erzeugen, Textgesteuerte 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 Erscheinung sowie bei 3D-bewusster generativer Bildsynthese. In den letzten Jahren haben 2D generative Modelle fotorealistische Qualität bei der hochauflösenden Bildsynthese erzielt [ , , , , , , ]. Dieser Fortschritt hat auch die Forschung zur 3D-Content-Generierung inspiriert. Frühe Ansätze zielten darauf ab, 2D-CNN-Generatoren direkt auf 3D-Voxel-Gitter zu erweitern [ , , , , ], aber der hohe Speicherbedarf und die Rechenkomplexität von 3D-Konvolutionen behindern den Generierungsprozess bei hoher Auflösung. Alternativ haben andere Arbeiten Punktwolken [ , , , ], implizite [ , ] oder Octree [ ] Darstellungen untersucht. Diese Arbeiten konzentrieren sich jedoch hauptsächlich auf die Erzeugung von Geometrie und vernachlässigen das Aussehen. Ihre Ausgabe-Darstellungen 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 Texturierte3DGAN [ , ] und DIBR [ ] erzeugen texturierte 3D-Meshes, die unserer Arbeit ähnlicher sind, aber sie formulieren die Generierung als Verformung eines Vorlagen-Meshes, was sie daran hindert, komplexe Topologien oder Formen mit variierendem Genus 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 Volumenrenderings [ ] und impliziten Darstellungen [ , ] begann die jüngste Arbeit, das Problem der 3D-bewussten Bildsynthese zu lösen [ , , , , , , , , , ]. Neuronale Volumenrendering-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 dann die Ergebnisse mit einem 2D-CNN hochskalieren. Der Leistungsgewinn geht jedoch auf Kosten einer reduzierten Mehrfachansichtskonsistenz. 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, eine nicht triviale Aufgabe. 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 stellen nun unser GET3D-Framework zur Synthese von texturierten 3D-Formen vor. Unser Generierungsprozess ist in zwei Teile unterteilt: ein Geometrie-Zweig, der differentiell 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 (Abs. ). Während des Trainings wird ein effizienter differentieller Rasterizer verwendet, um das resultierende texturierte Mesh in 2D-Bilder mit hoher Auflösung zu rendern. Der gesamte Prozess ist differenzierbar, was ein adversarielles Training anhand von Bildern (mit Masken, die ein interessierendes Objekt anzeigen) ermöglicht, indem die Gradienten vom 2D-Diskriminator auf beide Generatoren-Zweige propagiert werden. Unser Modell ist in Abb. veranschaulicht. Im Folgenden stellen wir zunächst unseren 3D-Generator in Abs. vor, bevor wir uns dem differentiellen Rendering und den Verlustfunktionen in Abs. widmen. 4.3.1 2 3.1 3.2 3.1 Generatives Modell von 3D-Textur-Meshes Wir streben danach, einen 3D-Generator = ( ) zu 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 dieselbe Geometrie unterschiedliche Texturen haben kann und dieselbe 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 zu erzeugen, die die Generierung von 3D-Formen und Texturen steuern. Wir stellen formal den Generator für Geometrie in Abs. und den Textur-Generator in Abs. vor. z z 34 35 33 f f z z w f z w f z Styles 3.1.1 3.1.2 3.1.1 Geometrie-Generator Wir entwerfen unseren Geometrie-Generator, um DMTet [ ] zu integrieren, eine kürzlich vorgeschlagene differenzierbare Oberflächenrepräsentation. DMTet stellt Geometrie als ein vorzeichenbehaftetes Distanzfeld (SDF) dar, das auf einem deformierbaren Tetraeder-Gitter [ , ] definiert ist, aus dem die Oberfläche durch differenzierbare Marching Tetrahedra [ ] wiederhergestellt werden kann. Das Verformen des Gitters durch Verschieben seiner Eckpunkte führt zu einer besseren Ausnutzung seiner Auflösung. Durch die Übernahme von DMTet zur Oberflächenextraktion können wir explizite Meshes mit beliebiger Topologie und Genus erzeugen. Im Folgenden geben wir eine kurze Zusammenfassung von DMTet und verweisen den Leser auf die Originalarbeit für weitere Details. 60 22 24 17 Sei ( ) der vollständige 3D-Raum, in dem sich das Objekt befindet, wobei die Eckpunkte im Tetraeder-Gitter 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 Deformation ∆ ∈ R3 des Eckpunkts von seiner ursprünglichen kanonischen Koordinate. Diese Darstellung ermöglicht die Wiederherstellung des expliziten Meshes durch differenzierbares Marching Tetrahedra [ ], wobei SDF-Werte im kontinuierlichen Raum durch eine baryzentrische Interpolation ihrer Werte an 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 Deformationen an jedem Eckpunkt durch eine Reihe von bedingten 3D-konvolutionalen und vollständig verbundenen Schichten ab. Insbesondere verwenden wir zuerst 3D-konvolutionale Schichten, um ein Feature-Volumen zu generieren, das auf 1 konditioniert ist. Dann fragen wir das Feature an jedem Eckpunkt ∈ mittels trilinearer Interpolation ab und speisen es in MLPs ein, die den SDF-Wert und die Deformation ∆ 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 zusätzlich Volumenunterteilung gemäß [ ]. Netzwerkarchitektur w v i w v i VT si v i 60 Nach Erhalt von und ∆ für alle Eckpunkte verwenden wir den differenzierbaren Marching-Tetrahedra-Algorithmus, um das explizite Mesh zu extrahieren. Marching Tetrahedra bestimmt die Oberflächentopologie innerhalb jedes Tetraeders basierend auf den Vorzeichen von . Insbesondere wird eine Mesh-Fläche extrahiert, wenn sign( ) /= sign( ), wobei die Indizes der Eckpunkte in der Kante des Tetraeders bezeichnen, und die Eckpunkte dieser Fläche werden durch eine lineare Interpolation als mi,j = v 0 i sj−v 0 j si sj−si bestimmt. Beachten Sie, dass die obige Gleichung nur ausgewertet wird, wenn si 6= sj , somit ist sie differenzierbar, und der Gradient von mi,j kann in die SDF-Werte si und Deformationen ∆vi zurückpropagiert werden. Mit dieser Darstellung können Formen mit beliebiger Topologie leicht generiert 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 Erzeugung einer Texturkarte, die mit dem Ausgabe-Mesh konsistent ist, ist nicht trivial, da die erzeugte Form einen beliebigen Genus und eine beliebige Topologie haben kann. Wir parametrisieren die Textur daher als Texturfeld [ ]. 50 Insbesondere 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, sodass = ( *,* 1 ⊕ 2), wobei ⊕ Konkatenation bezeichnet. ft p w c w c ft p w w Wir repräsentieren unser Texturfeld mithilfe einer Tri-Plane-Repräsentation, die effizient und ausdrucksstark bei der Rekonstruktion von 3D-Objekten [ ] und der Erzeugung von 3D-bewussten Bildern [ ] ist. Insbesondere folgen wir [ , ] und verwenden ein bedingtes 2D-konvolutionales neuronales Netzwerk, um den latenten 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 bezeichnet. 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 die Texturfeld an den Orten der Oberflächenpunkte abfragen müssen (im Gegensatz zu dichten Abfragen entlang eines Strahls). Dies reduziert die Rechenkomplexität für das Rendern hochauflösender Bilder erheblich und garantiert durch Konstruktion die Erzeugung mehransichtiger konsistenter Bilder. 3.2 Differenzierbares Rendering und Training Um unser Modell während des Trainings zu überwachen, lassen wir uns von Nvdiffrec [ ] inspirieren, das die Mehrfachansicht-3D-Objekt-Rekonstruktion mithilfe eines differenzierbaren Renderers durchführt. Insbesondere rendern wir das extrahierte 3D-Mesh und das Texturfeld mithilfe eines differenzierbaren Renderers [ ] in 2D-Bilder und überwachen unser Netzwerk mit einem 2D-Diskriminator, der versucht, das Bild von einem echten Objekt oder dem vom generierten Objekt gerenderten Bild zu unterscheiden. 47 37 Wir gehen davon aus, dass die Kameraverteilung 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, bei dem jedes Pixel die Koordinaten des entsprechenden 3D-Punkts auf der Mesh-Oberfläche enthält. Diese Koordinaten werden weiter verwendet, um das Texturfeld abzufragen, um 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 Bildauflösungen bis zu 1024 × 1024 trainiert zu werden. Differenzierbares Rendering c 37 Wir trainieren unser Modell mit einem adversariellen Ziel. Wir übernehmen die Diskriminator-Architektur von StyleGAN [ ] und verwenden dasselbe nicht-saturierende GAN-Ziel mit R1-Regularisierung [ ]. Empirisch stellen wir fest, dass die Verwendung von zwei separaten Diskriminatoren, einer für RGB-Bilder und ein weiterer für Silhouetten, bessere Ergebnisse liefert als ein einzelner Diskriminator, der auf beiden operiert. Sei der Diskriminator, wobei entweder ein RGB-Bild oder eine Silhouette ist. Das adversarielle Ziel wird dann wie folgt definiert: Diskriminator & Ziel 34 42 Dx x wobei ( ) als ( ) = − log(1 +exp(− )) definiert ist, die Verteilung realer Bilder ist, das Rendern bezeichnet und ein Hyperparameter ist. Da differenzierbar ist, können die Gradienten von 2D-Bildern auf unsere 3D-Generatoren zurückpropagiert werden. g u g u u px R λ R Um interne fliegende Flächen zu entfernen, die in keiner der Ansichten sichtbar sind, regularisieren wir den Geometrie-Generator zusätzlich mit einem Kreuzentropie-Verlust, der zwischen den SDF-Werten der benachbarten Eckpunkte definiert ist [ ]: Regularisierung 47 wobei den binären Kreuzentropieverlust darstellt und die Sigmoid-Funktion bezeichnet. Die Summe in Gl. ist über die Menge der eindeutigen Kanten S im Tetraeder-Gitter definiert, für die sign( ) /= sign( ). H σ 2 e si sj Die Gesamtverlustfunktion ist dann definiert als: wobei ein Hyperparameter ist, der den Grad der Regularisierung steuert. µ 4 Experimente Wir führen umfangreiche Experimente durch, um unser Modell zu evaluieren. Zuerst vergleichen wir die Qualität der von GET3D generierten 3D-texturierten Meshes mit bestehenden Methoden unter Verwendung der ShapeNet [ ] und Turbosquid [ ] Datensätze. Als Nächstes analysieren wir unsere Designentscheidungen in Abs. . Schließlich demonstrieren wir die Flexibilität von GET3D, indem wir es in nachgelagerten Anwendungen in Abs 9 4 4.2