```html Auteurs: 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) Samenvatting Nu verschillende industrieën zich richten op het modelleren van massieve 3D virtuele werelden, wordt de behoefte aan tools voor het creëren van content die schaalbaar zijn in termen van de hoeveelheid, kwaliteit en diversiteit van 3D-content duidelijk. In ons werk streven we ernaar om performante 3D-generatieve modellen te trainen die getextureerde meshes synthetiseren die direct kunnen worden gebruikt door 3D-renderingsystemen, waardoor ze onmiddellijk bruikbaar zijn in downstream-toepassingen. Eerdere werken over 3D-generatieve modellering missen geometrische details, zijn beperkt in de topologie die ze kunnen produceren, ondersteunen doorgaans geen texturen, of gebruiken neurale renderers in het syntheseproces, wat hun gebruik in gangbare 3D-software niet triviaal maakt. In dit werk introduceren we GET3D, een eneratief model dat direct xpliciete extured meshes genereert met complexe topologie, rijke geometrische details en texturen met hoge fideliteit. We maken gebruik van recent succes in differentieerbare oppervlaktemodellering, differentieerbaar rendering en 2D Generative Adversarial Networks om ons model te trainen op basis van 2D-afbeeldingscollecties. GET3D kan hoogwaardige 3D-getextureerde meshes genereren, variërend van auto's, stoelen, dieren, motoren en menselijke karakters tot gebouwen, en behaalt aanzienlijke verbeteringen ten opzichte van eerdere methoden. Onze projectpagina: G E T 3D https://nv-tlabs.github.io/GET3D 1 Introductie Diverse, hoogwaardige 3D-content wordt steeds belangrijker voor verschillende industrieën, waaronder gaming, robotica, architectuur en sociale platforms. De handmatige creatie van 3D-assets is echter zeer tijdrovend en vereist specifieke technische kennis en artistieke modelleringvaardigheden. Een van de belangrijkste uitdagingen is dus schaal – hoewel men 3D-modellen kan vinden op 3D-marktplaatsen zoals Turbosquid [ ] of Sketchfab [ ], kost het creëren van veel 3D-modellen om bijvoorbeeld een game of een film te vullen met een menigte personages die er allemaal anders uitzien, nog steeds aanzienlijke artistieke tijd. 4 3 Om het creatieproces te vergemakkelijken en toegankelijk te maken voor een verscheidenheid aan (beginnende) gebruikers, zijn generatieve 3D-netwerken die hoogwaardige en diverse 3D-assets kunnen produceren recentelijk een actief onderzoeksgebied geworden [ , , , , , , , , , , ]. Om echter praktisch nuttig te zijn voor huidige real-world toepassingen, moeten 3D-generatieve modellen idealiter aan de volgende vereisten voldoen: Ze moeten de capaciteit hebben om vormen te genereren met gedetailleerde geometrie en willekeurige topologie, De output moet een getextureerde mesh zijn, wat een primaire representatie is die wordt gebruikt door standaard grafische softwarepakketten zoals Blender [ ] en Maya [ ], en We moeten 2D-afbeeldingen voor supervisie kunnen gebruiken, aangezien deze breder beschikbaar zijn dan expliciete 3D-vormen. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Eerder werk over 3D-generatieve modellering heeft zich gericht op subsetten van de bovenstaande vereisten, maar geen enkele methode tot op heden voldoet aan allemaal (Tabel ). Methoden die 3D-puntwolken genereren [ , 68, 75] produceren bijvoorbeeld doorgaans geen texturen en moeten na de verwerking worden geconverteerd naar een mesh. 1 5 Methoden die voxels genereren, missen vaak geometrische details en produceren geen textuur [ , , , ]. Generatieve modellen gebaseerd op neurale velden [ , ] richten zich op het extraheren van geometrie, maar negeren textuur. De meeste hiervan vereisen ook expliciete 3D-supervisie. Ten slotte vereisen methoden die direct getextureerde 3D-meshes outputten [ , ] doorgaans vooraf gedefinieerde sjabloonvormen en kunnen ze geen vormen met complexe topologie en variërende genus genereren. 66 20 27 40 43 14 54 53 Recentelijk hebben snelle vooruitgang in neurale volumetrische rendering [ ] en 2D Generative Adversarial Networks (GANs) [ , , , , ] geleid tot de opkomst van 3D-bewuste beeldsynthese [ , , , , , ]. Deze lijn van werk is echter gericht op het synthetiseren van multi-view consistente beelden met neurale rendering in het syntheseproces en garandeert niet dat betekenisvolle 3D-vormen kunnen worden gegenereerd. Hoewel een mesh mogelijk kan worden verkregen uit de onderliggende neurale veldrepresentatie met behulp van het marching cube-algoritme [ ], is het extraheren van de bijbehorende textuur niet triviaal. 45 34 35 33 29 52 7 57 8 49 51 25 39 In dit werk introduceren we een nieuwe aanpak die gericht is op het aanpakken van alle vereisten van een praktisch nuttig 3D-generatief model. Specifiek stellen we GET3D voor, een eneratief model voor 3D-vormen dat direct xpliciete extured meshes genereert met hoge geometrische en textuurdetails en willekeurige meshtopologie. De kern van onze aanpak is een generatief proces dat gebruikmaakt van een differentieerbare *expliciete* methode voor het extraheren van oppervlakken [ ] en een differentieerbare renderingtechniek [ , ]. De eerste stelt ons in staat om direct getextureerde 3D-meshes met willekeurige topologie te optimaliseren en uit te voeren, terwijl de laatste ons in staat stelt ons model te trainen met 2D-afbeeldingen, en zo gebruik te maken van krachtige en volwassen discriminatoren die zijn ontwikkeld voor 2D-beeldsynthese. Aangezien ons model direct meshes genereert en een zeer efficiënte (differentieerbare) grafische renderer gebruikt, kunnen we ons model eenvoudig opschalen om te trainen met een afbeeldingsresolutie tot 1024 × 1024, waardoor we hoogwaardige geometrische en textuurdetails kunnen leren. G E T 3D 60 47 37 We demonstreren state-of-the-art prestaties voor onconditionele 3D-vormgeneratie op meerdere categorieën met complexe geometrie uit ShapeNet [ ], Turbosquid [ ] en Renderpeople [ ], zoals stoelen, motoren, auto's, menselijke karakters en gebouwen. Met expliciete mesh als outputrepresentatie, is GET3D ook erg flexibel en kan het eenvoudig worden aangepast aan andere taken, waaronder: het leren genereren van gedcomponereerde materiaal- en view-afhankelijke belichtingseffecten met behulp van geavanceerde differentieerbare rendering [ ], zonder supervisie, tekst-geleide 3D-vormgeneratie met behulp van CLIP [ ] embedding. 9 4 2 (a) 12 (b) 56 2 Gerelateerd Werk We bespreken recente vooruitgang in 3D-generatieve modellen voor geometrie en uiterlijk, evenals 3D-bewuste generatieve beeldsynthese. In de afgelopen jaren hebben 2D-generatieve modellen fotorealistische kwaliteit bereikt in de synthese van beelden met hoge resolutie [ , , , , , , ]. Deze vooruitgang heeft ook onderzoek geïnspireerd in 3D-contentgeneratie. Vroege benaderingen waren gericht op het direct uitbreiden van de 2D CNN-generatoren naar 3D-voxelgrids [ , , , , ], maar de hoge geheugenvoetafdruk en computationele complexiteit van 3D-convoluties belemmeren het generatieproces op hoge resolutie. Als alternatief hebben andere werken puntwolken [ , , , ], impliciete [ , ], of octree [ ] representaties onderzocht. Deze werken richten zich echter voornamelijk op het genereren van geometrie en negeren het uiterlijk. Hun outputrepresentaties moeten ook na de verwerking worden aangepast om compatibel te zijn met standaard grafische engines. 3D Generatieve Modellen 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Meer vergelijkbaar met ons werk, genereren Textured3DGAN [ , ] en DIBR [ ] getextureerde 3D-meshes, maar ze formuleren de generatie als een deformatie van een sjabloon-mesh, wat hen verhindert complexe topologie of vormen met variërend genus te genereren, wat onze methode wel kan. PolyGen [ ] en SurfGen [ ] kunnen meshes met willekeurige topologie produceren, maar synthetiseren geen texturen. 54 53 11 48 41 Geïnspireerd door het succes van neurale volumetrische rendering [ ] en impliciete representaties [ , ], is recent werk begonnen met het aanpakken van het probleem van 3D-bewuste beeldsynthese [ , , , , , , , , , ]. Echter, neurale volumetrische renderingnetwerken zijn doorgaans langzaam om te bevragen, wat leidt tot lange trainingstijden [ , ], en beelden met beperkte resolutie genereren. GIRAFFE [ ] en StyleNerf [ ] verbeteren de trainings- en renderingefficiëntie door neurale rendering op een lagere resolutie uit te voeren en vervolgens de resultaten op te schalen met een 2D CNN. De prestatiewinst gaat echter ten koste van verminderde multi-view consistentie. Door een dubbele discriminator te gebruiken, kan EG3D [ ] dit probleem gedeeltelijk verhelpen. Desalniettemin is het extraheren van een getextureerd oppervlak uit methoden die gebaseerd zijn op neurale rendering een niet-triviale onderneming. Daarentegen genereert GET3D direct getextureerde 3D-meshes die direct kunnen worden gebruikt in standaard grafische engines. 3D-Bewuste Generatieve Beeldsynthese 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Methode We presenteren nu ons GET3D-framework voor het synthetiseren van getextureerde 3D-vormen. Ons generatieproces is opgesplitst in twee delen: een geometrietak, die differentieerbaar een oppervlaktemesh met willekeurige topologie genereert, en een textuurtak die een textuurveld produceert dat kan worden bevraagd op de oppervlaktepunten om kleuren te produceren. De laatste kan worden uitgebreid naar andere oppervlakte-eigenschappen, zoals bijvoorbeeld materialen (Sect. ). Tijdens de training wordt een efficiënte differentieerbare rasterizer gebruikt om de resulterende getextureerde mesh te renderen in 2D-beelden met hoge resolutie. Het gehele proces is differentieerbaar, wat adversariële training op basis van beelden (met maskers die een object van interesse aangeven) mogelijk maakt door de gradiënten van de 2D-discriminator naar beide generatortakken te propageren. Ons model wordt geïllustreerd in Fig. . Hierna introduceren we eerst onze 3D-generator in Sect. , alvorens verder te gaan met de differentieerbare rendering en verliesfuncties in Sect. . 4.3.1 2 3.1 3.2 3.1 Generatief Model van 3D Getextureerde Meshes We streven ernaar een 3D-generator = ( ) te leren om een sample uit een Gaussische distributie M, E G z ∈ N (0*,* ) te mappen naar een mesh met textuur . z I M E Aangezien dezelfde geometrie verschillende texturen kan hebben, en dezelfde textuur kan worden toegepast op verschillende geometrieën, samplen we twee willekeurige inputvectoren 1 ∈ R512 en 2 ∈ R512. In navolging van StyleGAN [ , , ], gebruiken we vervolgens niet-lineaire mappingnetwerken geo en tex om 1 en 2 te mappen naar tussenliggende latente vectoren 1 = geo( 1) en 2 = tex( 2) die verder worden gebruikt om *styles* te produceren die de generatie van 3D-vormen en textuur respectievelijk aansturen. We introduceren formeel de generator voor geometrie in Sect. en de textuurgenerator in Sect. . 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 We ontwerpen onze geometriegenerator om DMTet [ ] te integreren, een recent voorgestelde differentieerbare oppervlaktereconstructie. DMTet representeert geometrie als een signed distance field (SDF) gedefinieerd op een deformeerbaar tetraëdrisch grid [ , ], waaruit het oppervlak differentieerbaar kan worden hersteld via marching tetrahedra [ ]. Het deformaëren van het grid door de vertices te verplaatsen resulteert in een beter gebruik van de resolutie. Door DMTet te adopteren voor oppervlakte-extractie, kunnen we expliciete meshes produceren met willekeurige topologie en genus. We geven hierna een korte samenvatting van DMTet en verwijzen de lezer naar het originele artikel voor verdere details. 60 22 24 17 Laat ( ) de volledige 3D-ruimte aanduiden waarin het object zich bevindt, waarbij de vertices in het tetraëdrische grid zijn. Elke tetraëder ∈ wordt gedefinieerd met vier vertices { }, met ∈ {1*, . . . , K*}, waarbij het totale aantal tetraëders is, en ∈ ∈ R3. Naast de 3D-coördinaten bevat elke vertex de SDF-waarde ∈ R en de deformatie ∆ ∈ R3 van de vertex ten opzichte van zijn initiële canonieke coördinaat. Deze representatie maakt het mogelijk om de expliciete mesh te herstellen via differentieerbare marching tetrahedra [ ], waarbij SDF-waarden in continue ruimte worden berekend door barycentrische interpolatie van hun waarde op de gedeformeerde vertices ′ = + ∆ . 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 We mappen 1 ∈ R512 naar SDF-waarden en deformaties bij elke vertex via een reeks conditionele 3D-convolutie- en volledig verbonden lagen. Specifiek gebruiken we eerst 3D-convolutielagen om een feature volume te genereren, geconditioneerd op 1. Vervolgens bevragen we de feature bij elke vertex ∈ met behulp van trilineaire interpolatie en voeren deze in MLPs die de SDF-waarde en de deformatie ∆ outputten. In gevallen waar modellering op hoge resolutie vereist is (bijv. motorfietsen met dunne structuren in de wielen), gebruiken we verder volumeonderverdeling volgens [ ]. Netwerkarchitectuur w v i w v i VT si v i 60 Nadat en ∆ voor alle vertices zijn verkregen, gebruiken we het differentieerbare marching tetrahedra-algoritme om de expliciete mesh te extraheren. Marching tetrahedra bepaalt de oppervlaktopologie binnen elke tetraëder op basis van de tekens van . In het bijzonder wordt een mesh-vlak geëxtraheerd wanneer sign( ) /= sign( ), waarbij de indices van de vertices in de rand van de tetraëder aanduiden, en de vertices van dat vlak worden bepaald door een lineaire interpolatie als mi,j = v 0 i sj−v 0 j si sj−si . Merk op dat de bovenstaande vergelijking alleen wordt geëvalueerd wanneer si 6= sj , dus deze is differentieerbaar, en de gradiënt van mi,j kan worden teruggepropgeerd naar de SDF-waarden si en deformaties ∆vi . Met deze representatie kunnen vormen met willekeurige topologie eenvoudig worden gegenereerd door verschillende tekens van si te voorspellen. Differentieerbare Mesh Extractie si v i si si sj i, j m i,j 3.1.2 Textuur Generator Het direct genereren van een textuurkaart die consistent is met de output mesh is niet triviaal, aangezien de gegenereerde vorm een willekeurig genus en topologie kan hebben. We parametriseren de textuur daarom als een textuurveld [ ]. 50 Specifiek modelleren we het textuurveld met een functie die de 3D-locatie van een oppervlaktepunt ∈ R3, geconditioneerd op 2, naar de RGB-kleur ∈ R3 op die locatie mapt. Aangezien het textuurveld afhankelijk is van de geometrie, conditioneren we deze mapping bovendien op de geometrie latente code 1, zodanig dat = ( *,* 1 ⊕ 2), waarbij ⊕ concatenatie aanduidt. ft p w c w c ft p w w We representeren ons textuurveld met behulp van een tri-plane representatie, die efficiënt en expressief is in het reconstrueren van 3D-objecten [ ] en het genereren van 3D-bewuste beelden [ ]. Specifiek volgen we [ , ] en gebruiken een conditioneel 2D convolutioneel neuraal netwerk om de latente code 1 ⊕ 2 te mappen naar drie ass-aligned orthogonale feature planes van grootte × × ( × 3), waarbij = 256 de ruimtelijke resolutie aanduidt en = 32 het aantal kanalen. Netwerkarchitectuur 55 8 8 35 w w N N C N C Gegeven de feature planes, kan de feature vector f t ∈ R 32 van een oppervlaktepunt p worden verkregen als f t = P e ρ(πe(p)), waarbij πe(p) de projectie van punt p op de feature plane e is en ρ(·) de bilineaire interpolatie van de features aanduidt. Een extra volledig verbonden laag wordt vervolgens gebruikt om de geaggregeerde feature vector f t naar de RGB-kleur c te mappen. Merk op dat, in tegenstelling tot andere werken over 3D-bewuste beeldsynthese [8, 25, 7, 57] die ook een neurale veldrepresentatie gebruiken, we alleen de textuurveld hoeven te bevragen op de locaties van de oppervlaktepunten (in tegenstelling tot dichte samples langs een straal). Dit vermindert de computationele complexiteit voor het renderen van beelden met hoge resolutie aanzienlijk en garandeert het genereren van multi-view consistente beelden door constructie. 3.2 Differentieerbare Rendering en Training Om ons model tijdens de training te superviseren, putten we inspiratie uit Nvdiffrec [ ] dat multi-view 3D-objectreconstructie uitvoert met behulp van een differentieerbare renderer. Specifiek renderen we de geëxtraheerde 3D-mesh en het textuurveld naar 2D-beelden met behulp van een differentieerbare renderer [ ], en superviseren we ons netwerk met een 2D-discriminator, die probeert het beeld te onderscheiden van een echt object of gerenderd van het gegenereerde object. 47 37 We nemen aan dat de cameradistributie C die werd gebruikt om de beelden in de dataset te verwerven, bekend is. Om de gegenereerde vormen te renderen, samplen we willekeurig een camera uit C, en gebruiken we een zeer geoptimaliseerde differentieerbare rasterizer Nvdiffrast [ ] om de 3D-mesh te renderen in een 2D-silhouet en een beeld waarin elke pixel de coördinaten van het corresponderende 3D-punt op het mesh-oppervlak bevat. Deze coördinaten worden verder gebruikt om het textuurveld te bevragen om de RGB-waarden te verkrijgen. Aangezien we direct op de geëxtraheerde mesh werken, kunnen we beelden met hoge resolutie met hoge efficiëntie renderen, waardoor ons model kan worden getraind met een afbeeldingsresolutie tot 1024×1024. Differentieerbare Rendering c 37 We trainen ons model met een adversariële doelstelling. We adopteren de discriminatorarchitectuur van StyleGAN [ ], en gebruiken dezelfde non-saturating GAN-doelstelling met R1-regularisatie [ ]. We stellen empirisch vast dat het gebruik van twee aparte discriminatoren, één voor RGB-beelden en een andere voor silhouetten, betere resultaten oplevert dan een enkele discriminator die op beide werkt. Laat de discriminator aanduiden, waarbij een RGB-beeld of een silhouet kan zijn. De adversariële doelstelling wordt dan als volgt gedefinieerd: Discriminator & Doelstelling 34 42 Dx x waarbij ( ) wordt gedefinieerd als ( ) = − log(1 +exp(− )), de distributie van echte beelden is, rendering aanduidt, en een hyperparameter is. Aangezien differentieerbaar is, kunnen de gradiënten worden teruggepropgeerd van 2D-beelden naar onze 3D-generatoren. g u g u u px R λ R Om interne zwevende vlakken die niet zichtbaar zijn in een van de weergaven te verwijderen, regulariseren we verder de geometriegenerator met een cross-entropy loss gedefinieerd tussen de SDF-waarden van de naburige vertices [ ]: Regularisatie 47 waarbij de binaire cross-entropy loss aanduidt en de sigmoid-functie. De som in Eq. is gedefinieerd over de set van unieke randen S in het tetraëdrische grid, waarvoor sign( ) /= sign( ). H σ 2 e si sj De algehele loss-functie wordt dan als volgt gedefinieerd: waarbij een hyperparameter is die het niveau van regularisatie regelt. µ 4 Experimenten We voeren uitgebreide experimenten uit om ons model te evalueren. We vergelijken eerst de kwaliteit van de 3D-getextureerde meshes gegenereerd door GET3D met bestaande methoden met behulp van de ShapeNet