```html 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) Zusammenfassung Da immer mehr Branchen auf die Modellierung massiver 3D-virtueller Welten setzen, wird der Bedarf an Werkzeugen zur Erstellung von Inhalten, die hinsichtlich Quantität, Qualität und Vielfalt von 3D-Inhalten skalierbar sind, offensichtlich. In unserer Arbeit zielen wir darauf ab, leistungsfähige 3D-generative Modelle zu trainieren, die texturierte Meshes synthetisieren, welche direkt von 3D-Rendering-Engines konsumiert werden können und somit sofort in nachgelagerten Anwendungen nutzbar sind. Frühere Arbeiten zur 3D-generativen Modellierung weisen entweder geometrische Details auf, sind in der Topologie des erzeugten Meshes 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 xplizite exturierte -Meshes mit komplexer Topologie, reichhaltigen geometrischen Details und hochauflösenden Texturen erzeugt. Wir nutzen die jüngsten Erfolge in der differenzierbaren Oberflächenmodellierung, im differenzierbaren Rendering sowie in 2D Generative Adversarial Networks, um unser Modell aus 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 deutliche 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 zeitaufwändig und erfordert spezifisches technisches Wissen sowie Fähigkeiten im Bereich der Modellierung. 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 Erstellungsprozess von Inhalten 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 letzter 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 Fähigkeit haben, Formen mit detaillierter Geometrie und beliebiger Topologie zu erzeugen, Die Ausgabe sollte ein texturiertes Mesh sein, das eine primäre Darstellung ist, die von Standard-Grafiksoftwarepaketen wie Blender [ ] und Maya [ ] verwendet wird, und Wir sollten in der Lage sein, 2D-Bilder zur Überwachung zu nutzen, 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 haben sich auf Teilmengen der oben genannten Anforderungen konzentriert, aber keine Methode hat bisher alle erfüllt (Tab. ). Methoden, die 3D-Punktwolken erzeugen [ , 68, 75], erzeugen beispielsweise typischerweise keine Texturen und müssen in der Nachbearbeitung in ein Mesh konvertiert werden. 1 5 Methoden, die Voxel erzeugen, mangelt es oft an geometrischen Details und sie erzeugen keine Textur [ , , , ]. Generative Modelle, die auf neuronalen Feldern basieren [ , ], konzentrieren sich auf die Extraktion von Geometrie, ignorieren aber Textur. 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 variierender Gattung erzeugen. 66 20 27 40 43 14 54 53 Jüngste Fortschritte im neuronalen Volumen-Rendering [ ] und in 2D Generative Adversarial Networks (GANs) [ , , , , ] haben zum Aufstieg der 3D-fähigen Bildsynthese geführt [ , , , , , ]. Dieser Arbeitszweig zielt jedoch darauf ab, Multiview-konsistente Bilder mit neuronalem Rendering im Syntheseprozess zu synthetisieren und garantiert nicht, dass aussagekräftige 3D-Formen erzeugt werden können. Obwohl ein Mesh potenziell aus der zugrunde liegenden neuronalen Feldrepräsentation unter Verwendung 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 an ein praktisch nützliches 3D-generatives Modell zu erfüllen. Insbesondere schlagen wir GET3D vor, ein eneratives Modell für 3D-Formen, das direkt xplizite exturierte -Meshes mit hoher geometrischer und texturbezogener Detailtreue und beliebiger Meshtopologie ausgibt. Im Kern unseres Ansatzes steht ein generativer Prozess, der eine differenzierbare *explizite* Oberflächenextraktionsmethode [ ] und eine differenzierbare Rendering-Technik [ , ] nutzt. Erstgenanntes ermöglicht uns die direkte Optimierung und Ausgabe von texturierten 3D-Meshes mit beliebiger Topologie, während letzteres uns erlaubt, 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 erzeugt und einen hocheffizienten (differenzierbaren) Grafik-Renderer verwendet, können wir unser Modell problemlos skalieren, um mit Bildauflösungen bis zu 1024 × 1024 zu trainieren, was uns ermöglicht, qualitativ hochwertige geometrische und texturbezogene Details zu lernen. G E T 3D 60 47 37 Wir demonstrieren eine hochmoderne Leistung für die bedingungslose 3D-Formgenerierung für mehrere Kategorien mit komplexer Geometrie aus ShapeNet [ ], Turbosquid [ ] und Renderpeople [ ], wie Autos, Stühle, Tiere, Motorräder und menschliche Charaktere bis hin zu Gebäuden, und erzielen signifikante Verbesserungen gegenüber früheren Methoden. Mit explizitem Mesh als Ausgabeformat ist GET3D auch sehr flexibel und kann leicht an andere Aufgaben angepasst werden, darunter: das Erlernen der Generierung von zerlegten Material- und ansichtsabhängigen Lichteffekten unter Verwendung von fortgeschrittenem differenzierbarem Rendering [ ], ohne Überwachung, textgesteuerte 3D-Formgenerierung unter Verwendung von CLIP [ ]-Embeddings. 9 4 2 (a) 12 (b) 56 2 Verwandte Arbeiten Wir überprüfen die jüngsten Fortschritte bei 3D-generativen Modellen für Geometrie und Erscheinungsbild sowie bei 3D-fähiger generativer Bildsynthese. In den letzten Jahren haben 2D generative Modelle fotorealistische Qualität bei der Synthese von Bildern mit hoher Auflösung erzielt [ , , , , , , ]. Dieser Fortschritt hat auch die Forschung in der 3D-Inhaltserstellung inspiriert. Frühe Ansätze zielten darauf ab, 2D CNN-Generatoren direkt auf 3D-Voxel-Gittern zu erweitern [ , , , , ], aber der hohe Speicherbedarf und die rechnerische Komplexitä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 Erscheinungsbild. Ihre Ausgabeformate 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 Textured3DGAN [ , ] und DIBR [ ], die unseren Arbeiten ähnlicher sind, erzeugen texturierte 3D-Meshes, formulieren die Generierung jedoch als Deformation eines Vorlagen-Meshes, was sie daran hindert, komplexe Topologien oder Formen mit variierender Gattung zu erzeugen, was unsere Methode kann. PolyGen [ ] und SurfGen [ ] können Meshes mit beliebiger Topologie erzeugen, synthetisieren jedoch keine Texturen. 54 53 11 48 41 Inspiriert vom Erfolg des neuronalen Volumen-Renderings [ ] und impliziter Darstellungen [ , ] begann die jüngste Arbeit, das Problem der 3D-fähigen Bildsynthese zu lösen [ , , , , , , , , , ]. Neuronale Volumen-Rendering-Netzwerke sind jedoch typischerweise langsam abzufragen, was zu langen Trainingszeiten führt [ , ] und Bilder mit begrenzter Auflösung erzeugt. GIRAFFE [ ] und StyleNerf [ ] verbessern die Trainings- und Rendering-Effizienz, indem sie das neuronale Rendering mit geringerer Auflösung durchführen und die Ergebnisse dann mit einem 2D-CNN hochskalieren. Der Leistungsgewinn geht jedoch auf Kosten einer reduzierten Multiview-Konsistenz. Durch die Verwendung eines dualen 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-fähige 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 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. Letzterer kann auf andere Oberflächeneigenschaften erweitert werden, wie z. B. Materialien (Abschn. ). 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 ein adversarielles Training anhand von Bildern (mit Masken, die ein interessierendes Objekt anzeigen), indem die Gradienten vom 2D-Diskriminator auf beide Generatorzweige propagiert werden. Unser Modell ist in Abb. dargestellt. Im Folgenden stellen wir zunächst unseren 3D-Generator in Abschn. vor, bevor wir zum differenzierbaren Rendering und den Verlustfunktionen in Abschn. übergehen. 4.3.1 2 3.1 3.2 3.1 Generatives Modell von 3D-texturierten 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. In Anlehnung an StyleGAN [ , , ] verwenden wir dann nichtlineare Mapping-Netzwerke geo und tex, um 1 und 2 auf Zwischen-Latentvektoren 1 = geo( 1) und 2 = tex( 2) abzubilden, die weiter verwendet werden, um *Styles* zu erzeugen, welche die Generierung von 3D-Formen bzw. Textur steuern. Wir führen den Generator für Geometrie formell in Abschn. ein und den Texturgenerator in Abschn. . 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 entwerfen unseren Geometrie-Generator, um DMTet [ ] zu integrieren, eine kürzlich vorgeschlagene differenzierbare Oberflächenrepräsentation. DMTet repräsentiert Geometrie als ein Signed Distance Field (SDF), das auf einem deformierbaren tetraedrischen Gitter [ , ] definiert ist, aus dem die Oberfläche differentiell durch Marching Tetrahedra [ ] gewonnen werden kann. Die Deformation des Gitters durch Verschiebung seiner Vertices 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 Gattung 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 Sei ( ) der gesamte 3D-Raum, in dem sich das Objekt befindet, wobei die Vertices im tetraedrischen Gitter sind. Jedes Tetraeder ∈ ist mit vier Vertices { } definiert, wobei ∈ {1*, . . . , K*}, wobei die Gesamtzahl der Tetraeder ist und ∈ ∈ R3. Neben seinen 3D-Koordinaten enthält jeder Vertex den SDF-Wert ∈ R und die Deformation ∆ ∈ R3 des Vertex von seiner anfänglichen kanonischen Koordinate. Diese Darstellung ermöglicht die Gewinnung des expliziten Meshes durch differenzielle Marching Tetrahedra [ ], bei denen die SDF-Werte im kontinuierlichen Raum durch baryzentrische Interpolation ihrer Werte auf den deformierten Vertices ′ = + ∆ 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 Vertex durch eine Reihe von bedingten 3D-Konvolutions- und vollständig verbundenen Schichten ab. Speziell verwenden wir zunächst 3D-Konvolutionsschichten, um ein Feature-Volumen zu generieren, das durch 1 bedingt ist. Wir fragen dann das Feature an jedem Vertex ∈ mittels trilinearer Interpolation ab und speisen es in MLPs ein, die den SDF-Wert und die Deformation ∆ ausgeben. In Fällen, in denen die Modellierung bei hoher Auflösung erforderlich ist (z. B. Motorräder mit dünnen Strukturen an den Rädern), verwenden wir weiter die Volumenunterteilung nach [ ]. Netzwerkarchitektur w v i w v i VT si v i 60 Nach Erhalt von und ∆ für alle Vertices 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 Vertices entlang der Kante des Tetraeders bezeichnen und die Vertices 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 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 einfach 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 eine beliebige Gattung und Topologie haben kann. Wir parametrisieren die Textur daher als Texturfeld [ ]. 50 Konkret modellieren wir das Texturfeld mit einer Funktion , die den 3D-Ort eines Oberflächenpunkts ∈ R3, bedingt durch 2, auf die RGB-Farbe ∈ R3 an diesem Ort abbildet. Da das Texturfeld von der Geometrie abhängt, bedingen wir diese Abbildung zusätzlich durch den Geometrie-Latent-Code 1, sodass = ( *,* 1 ⊕ 2), wobei ⊕ für Konkatenation steht. 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 Generierung von 3D-fähigen Bildern [ ] ist. Speziell folgen wir [ , ] und verwenden ein bedingtes 2D-konvolutionelles neuronales Netz, 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)) gewonnen 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-fähigen Bildsynthese [8, 25, 7, 57], die ebenfalls eine neuronale Feldrepräsentation verwenden, nur die Texturfeld an den Orten der Oberflächenpunkte abfragen müssen (im Gegensatz zu dichten Abtastungen entlang eines Strahls). Dies reduziert die Rechenkomplexität für das Rendern von Bildern mit hoher Auflösung erheblich und garantiert, dass per Konstruktion Multiview-konsistente Bilder erzeugt werden. 3.2 Differenzierbares Rendering und Training Um unser Modell während des Trainings zu überwachen, lassen wir uns von Nvdiffrec [ ] inspirieren, das die Multiview-3D-Objektrekonstruktion unter Verwendung eines differenzierbaren Renderers durchführt. Speziell rendern wir das extrahierte 3D-Mesh und das Texturfeld in 2D-Bilder mit einem differenzierbaren Renderer [ ] und überwachen unser Netzwerk mit einem 2D-Diskriminator, der versucht, das Bild von einem echten Objekt zu unterscheiden oder vom generierten Objekt gerendert wurde. 47 37 Wir nehmen an, 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 und die RGB-Werte zu erhalten. Da wir direkt auf dem extrahierten Mesh operieren, können wir Bilder mit hoher Auflösung und 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 Diskriminatorarchitektur von StyleGAN [ ] und verwenden dasselbe nicht-saturierende GAN-Ziel mit R1-Regularisierung [ ]. Wir stellen empirisch fest, dass die Verwendung zweier separater Diskriminatoren, einer für RGB-Bilder und einer 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, für Rendering steht 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 keinen Ansichten sichtbar sind, regularisieren wir den Geometrie-Generator weiter mit einem Cross-Entropy-Verlust, der zwischen den SDF-Werten benachbarter Vertices definiert ist [ ]: Regularisierung 47 wobei der binäre Cross-Entropy-Verlust ist und die Sigmoid-Funktion bezeichnet. Die Summe in Gl. ist über die Menge der eindeutigen Kanten S im tetraedrischen Gitter definiert, für die sign( ) /= sign( ). H σ 2 e si sj Die gesamte Verlustfunktion 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 bewerten. Zunächst vergleichen wir die Qualität der von GET3D erzeugten 3D-texturierten Meshes mit bestehenden Methoden unter Verwendung der Datensätze ShapeNet [ ] und Turbosquid [ ]. Als Nächstes analysieren wir unsere Designentscheidungen in Abschn. . Schließlich demonstrieren wir die Flexibilität von GET3D, indem wir es in nachgelagerten Anwendungen anpassen (Abschn. ). Zusätzliche experimentelle Ergebnisse und Implementierungsdetails sind im Anhang aufgeführt. 9 4 4.2 4.3