< 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) Abstract Nu verschillende industrieën zich richten op het modelleren van enorme virtuele 3D-werelden, wordt de behoefte aan contentcreatietools die kunnen opschalen wat betreft de kwantiteit, kwaliteit en diversiteit van 3D-content steeds duidelijker. 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, en dus direct bruikbaar zijn in downstream-toepassingen. Eerdere werken aan 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 getrouwheid. We bouwen voort op recent succes in differentieerbare oppervlaktemodellering, differentieerbaar renderen en 2D Generative Adversarial Networks om ons model te trainen vanuit 2D-afbeeldingsverzamelingen. GET3D kan 3D-getextureerde meshes van hoge kwaliteit genereren, variërend van auto's, stoelen, dieren, motorfietsen 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 vaardigheden op het gebied van artistieke modellering. Een van de belangrijkste uitdagingen is dus de 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 film te vullen met een menigte personages die er allemaal anders uitzien, nog steeds aanzienlijke artistieke tijd. 4 3 Om het contentcreatieproces te vergemakkelijken en toegankelijk te maken voor een verscheidenheid aan (novice) gebruikers, zijn generatieve 3D-netwerken die hoogwaardige en diverse 3D-assets kunnen produceren onlangs een actief onderzoeksgebied geworden [ , , , , , , , , , , ]. Om echter praktisch bruikbaar te zijn voor huidige real-world toepassingen, moeten 3D-generatieve modellen ideaal voldoen aan de volgende vereisten: Ze moeten de capaciteit hebben om vormen te genereren met gedetailleerde geometrie en willekeurige topologie, De uitvoer 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 kunnen gebruiken voor supervisie, aangezien deze ruimer beschikbaar zijn dan expliciete 3D-vormen. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Vorig werk aan 3D-generatieve modellering heeft zich gericht op subsetten van de bovenstaande vereisten, maar geen enkele methode heeft tot op heden aan allemaal voldaan (Tabel ). Methoden die 3D-puntwolken genereren [ , 68, 75] produceren doorgaans geen texturen en moeten in de nabewerking naar een mesh worden geconverteerd. 1 5 Methoden die voxels genereren, missen vaak geometrische details en produceren geen textuur [ , , , ]. Generatieve modellen op basis van 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 uitvoeren [ , ] doorgaans vooraf gedefinieerde vormsjablonen en kunnen ze geen vormen genereren met complexe topologie en variërende genus. 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 beeld synthese [ , , , , , ]. Deze lijn van werk is echter gericht op het synthetiseren van beelden met consistente weergaven vanuit meerdere gezichtspunten met behulp van neurale rendering in het syntheseproces en garandeert niet dat zinvolle 3D-vormen kunnen worden gegenereerd. Hoewel een mesh potentieel kan worden verkregen uit de onderliggende neurale veld representatie 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 uitvoert met hoge geometrische en textuurdetails en willekeurige mesh-topologie. De kern van onze aanpak is een generatief proces dat gebruik maakt van een differentieerbare *expliciete* oppervlakte-extractiemethode [ ] 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 toestaat ons model te trainen met 2D-afbeeldingen, en zo krachtige en volwassen discriminatoren te benutten die zijn ontwikkeld voor 2D-beeld synthese. Aangezien ons model direct meshes genereert en een zeer efficiënte (differentieerbare) graphics-renderer gebruikt, kunnen we ons model eenvoudig opschalen om te trainen met beelddichtheid G E T 3D 60 47 37 resolutie tot wel 1024 × 1024, waardoor we hoogwaardige geometrische en textuurdetails kunnen leren. We demonstreren state-of-the-art prestaties voor onconditionele 3D-vormgeneratie in meerdere categorieën met complexe geometrie van ShapeNet [ ], Turbosquid [ ] en Renderpeople [ ], zoals stoelen, motorfietsen, auto's, menselijke karakters en gebouwen. Met expliciete mesh als uitvoerrepresentatie, is GET3D ook erg flexibel en kan het gemakkelijk worden aangepast aan andere taken, waaronder: leren om gedekomposeerde materiaal- en weergave-afhankelijke lichteffecten te genereren 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 ontwikkelingen in 3D-generatieve modellen voor geometrie en uiterlijk, evenals 3D-bewuste generatieve beeld synthese. In de afgelopen jaren hebben 2D-generatieve modellen fotorealistische kwaliteit bereikt in de synthese van beelden met hoge resolutie [ , , , , , , ]. Deze vooruitgang heeft ook onderzoek naar 3D-contentgeneratie geïnspireerd. 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 uitvoerrepresentaties moeten ook nabewerkt worden om ze compatibel te maken 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 vervorming van een sjabloon-mesh, wat voorkomt dat ze complexe topologie of vormen met variërende genus kunnen 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 beeld synthese [ , , , , , , , , , ]. Neurale volumetrische renderingnetwerken zijn echter doorgaans langzaam om op te vragen, wat leidt tot lange trainingstijden [ , ], en beelden met beperkte resolutie genereren. GIRAFFE [ ] en StyleNerf [ ] verbeteren de trainings- en renderingsefficiëntie door neurale rendering op een lagere resolutie uit te voeren en de resultaten vervolgens op te schalen met een 2D CNN. De prestatiewinst gaat echter ten koste van verminderde consistentie tussen meerdere weergaven. 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 voert GET3D direct getextureerde 3D-meshes uit die direct kunnen worden gebruikt in standaard grafische engines. 3D-bewuste Generatieve Beeld Synthese 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 uitvoert, 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 in 2D-beelden met hoge resolutie te renderen. Het gehele proces is differentieerbaar, waardoor adversariële training vanuit beelden (met maskers die een object van interesse aangeven) mogelijk is door de gradiënten van de 2D-discriminator naar beide generatortakken te propageren. Ons model wordt geïllustreerd in Fig. . Hieronder introduceren we eerst onze 3D-generator in Sect , voordat we verder 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 steekproef uit een Gaussische verdeling M, E G z ∈ N (0*,* ) af te beelden op een mesh met textuur . z I M E Omdat dezelfde geometrie verschillende texturen kan hebben, en dezelfde textuur kan worden toegepast op verschillende geometrieën, nemen we twee willekeurige invoervectoren 1 ∈ R512 en 2 ∈ R512. Naar aanleiding van StyleGAN [ , , ], gebruiken we vervolgens niet-lineaire mappingnetwerken geo en tex om 1 en 2 af te beelden op tussenliggende latente vectoren 1 = geo( 1) en 2 = tex( 2) die verder worden gebruikt om *stijlen* te produceren die respectievelijk de generatie van 3D-vormen en textuur 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 [ ] op te nemen, een recent voorgestelde differentieerbare oppervlakte-representatie. DMTet representeert geometrie als een signed distance field (SDF) gedefinieerd op een vervormbaar tetraëdergrid [ , ], waaruit het oppervlak differentieerbaar kan worden hersteld via marching tetrahedra [ ]. Het vervormen van het grid door de hoekpunten te verplaatsen resulteert in een beter gebruik van zijn resolutie. Door DMTet te gebruiken voor oppervlakte-extractie, kunnen we expliciete meshes met willekeurige topologie en genus produceren. Hieronder geven we een korte samenvatting van DMTet en verwijzen we de lezer naar het oorspronkelijke artikel voor verdere details. 60 22 24 17 Laat ( ) de volledige 3D-ruimte aanduiden waarin het object zich bevindt, waarbij de hoekpunten in het tetraëdergrid zijn. Elke tetraëder ∈ is gedefinieerd met vier hoekpunten { }, met ∈ {1*, . . . , K*}, waarbij het totale aantal tetraëders is, en ∈ ∈ R3. Naast zijn 3D-coördinaten bevat elk hoekpunt de SDF-waarde ∈ R en de deformatie ∆ ∈ R3 van het hoekpunt 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 een barycentrische interpolatie van hun waarde op de vervormde hoekpunten ′ = + ∆ . 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 elk hoekpunt via een reeks conditionele 3D-convolutie- en volledig verbonden lagen. Specifiek gebruiken we eerst 3D-convolutielagen om een feature-volume te genereren dat geconditioneerd is op 1. We bevragen vervolgens de feature op elk hoekpunt ∈ met behulp van trilineaire interpolatie en voeren deze in MLPs die de SDF-waarde en de deformatie ∆ uitvoeren. In gevallen waar modellering met hoge resolutie vereist is (bijv. motorfietsen met dunne structuren in de wielen), gebruiken we verder volumeverdeeling volgens [ ]. Netwerkarchitectuur w v i w v i VT si v i 60 Na het verkrijgen van en ∆ voor alle hoekpunten, gebruiken we het differentieerbare marching tetrahedra-algoritme om de expliciete mesh te extraheren. Marching tetrahedra bepaalt de oppervlakte-topologie 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 hoekpunten in de rand van de tetraëder aanduiden, en de hoekpunten 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 het is differentieerbaar, en de gradiënt van mi,j kan worden teruggepropagateerd 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 uitvoer-mesh is niet triviaal, aangezien de gegenereerde vorm een willekeurig genus en topologie kan hebben. We parameteriseren 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, afbeeldt op de RGB-kleur ∈ R3 op die locatie. Aangezien het textuurveld afhankelijk is van de geometrie, conditioneren we deze mapping bovendien op de geometrische latente code 1, zodat = ( *,* 1 ⊕ 2), waarbij ⊕ concatenatie betekent. ft p w c w c ft p w w We representeren ons textuurveld met 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 we een conditioneel 2D-convolutie-neurale netwerk om de latente code 1 ⊕ 2 af te beelden op drie orthogonaal georiënteerde, as-gealigneerde feature-vlakken van grootte × × ( × 3), waarbij = 256 de ruimtelijke resolutie aangeeft en = 32 het aantal kanalen. Netwerkarchitectuur 55 8 8 35 w w N N C N C Gegeven de feature-vlakken, kan de featurevector f t ∈ R 32 van een oppervlaktepunt p worden hersteld als f t = P e ρ(πe(p)), waarbij πe(p) de projectie van het punt p op het featurevlak e is en ρ(·) de bilineaire interpolatie van de features aanduidt. Een aanvullende volledig verbonden laag wordt vervolgens gebruikt om de geaggregeerde featurevector f t af te beelden op de RGB-kleur c. Merk op dat, in tegenstelling tot andere werken over 3D-bewuste beeld synthese die ook een neurale veld representatie gebruiken, we alleen de textuurveld hoeven te bemonsteren 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 bij constructie beelden met consistente weergaven vanuit meerdere gezichtspunten. 3.2 Differentieerbare Rendering en Training Om ons model tijdens de training te superviseren, putten we inspiratie uit Nvdiffrec [ ], dat 3D-objectreconstructie vanuit meerdere gezichtspunten uitvoert met behulp van een differentieerbare renderer. Specifiek renderen we de geëxtraheerde 3D-mesh en het textuurveld naar 2D-beelden met een differentieerbare renderer [ ], en superviseren we ons netwerk met een 2D-discriminator, die probeert het beeld te onderscheiden van een echt object of een gerenderd object 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, nemen we willekeurig een camera uit C en gebruiken we een sterk geoptimaliseerde differentieerbare rasterizer Nvdiffrast [ ] om de 3D-mesh te renderen naar een 2D-silhouet, evenals een beeld waarbij elke pixel de coördinaten van het bijbehorende 3D-punt op het mesh-oppervlak bevat. Deze coördinaten worden verder gebruikt om het textuurveld te bevragen om de RGB-waarden te verkrijgen. Omdat we direct werken op de geëxtraheerde mesh, kunnen we beelden met hoge resolutie efficiënt renderen, waardoor ons model kan worden getraind met beelddichtheid Differentieerbare Rendering c 37 resolutie tot wel 1024×1024. We trainen ons model met een adversariële doelstelling. We gebruiken de discriminatorarchitectuur van StyleGAN [ ] en gebruiken dezelfde niet-verzadigende GAN-doelstelling met R1-regularisatie [ ]. We stellen empirisch vast dat het gebruik van twee aparte discriminatoren, één voor RGB-beelden en één voor silhouetten, betere resultaten oplevert dan één enkele discriminator die op beide werkt. Laat de discriminator aanduiden, waarbij hetzij een RGB-beeld of een silhouet is. 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 van 2D-beelden naar onze 3D-generatoren worden teruggepropagateerd. g u g u u px R λ R Om interne zwevende vlakken te verwijderen die niet zichtbaar zijn in een van de weergaven, regulariseren we de geometrie-generator verder met een cross-entropy-verlies gedefinieerd tussen de SDF-waarden van naburige hoekpunten [ ]: Regularisatie 47 waarbij het binaire cross-entropy-verlies aanduidt en de sigmoid-functie. De som in Vergelijking wordt gedefinieerd over de verzameling van unieke randen S in het tetraëdergrid, waarvoor sign( ) /= sign( ). H σ 2 e si sj De algehele verliesfunctie wordt dan gedefinieerd als: waarbij een hyperparameter is die het niveau van regularisatie controleert. µ