```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) Abstract Aangezien verschillende industrieën zich richten op het modelleren van massale 3D virtuele werelden, wordt de behoefte aan tools voor het creëren van content die schaalbaar zijn in termen van 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 rendering engines, en dus onmiddellijk bruikbaar zijn in down-stream applicaties. Eerdere werken over 3D generatieve modellering missen vaak geometrische details, zijn beperkt in de topologie die ze kunnen produceren, ondersteunen doorgaans geen texturen, of maken gebruik van neurale renderers in het syntheseproces, wat het gebruik ervan 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 hoogwaardige texturen. We bouwen voort op recent succes in differentieerbare oppervlaktemodellering, differentieerbare rendering en 2D Generative Adversarial Networks om ons model te trainen op basis van 2D beelverzamelingen. 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 vaardigheden op het gebied van artistieke modellering. 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 film te vullen met een menigte personages die er allemaal anders uitzien, nog steeds aanzienlijke tijd van de artiest. 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 onlangs een actief onderzoeksgebied geworden [ , , , , , , , , , , ]. Om echter praktisch bruikbaar te zijn voor huidige real-world applicaties, zouden 3D generatieve modellen idealiter aan de volgende vereisten moeten voldoen: Ze moeten de capaciteit hebben om vormen met gedetailleerde geometrie en willekeurige topologie te genereren, 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-beelden kunnen gebruiken voor supervisie, 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) Eerdere werken aan 3D generatieve modellering hebben zich gericht op subsets van de bovenstaande vereisten, maar geen enkele methode heeft tot op heden aan alle voldaan (Tabel ). Methoden die 3D point clouds [ , 68, 75] genereren, produceren bijvoorbeeld doorgaans geen texturen en moeten in de post-processing 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 van deze vereisen ook expliciete 3D-supervisie. Ten slotte vereisen methoden die direct getextureerde 3D meshes [ , ] produceren 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 Recente snelle vooruitgang in neurale volumetrische rendering [ ] en 2D Generative Adversarial Networks (GANs) [ , , , , ] heeft geleid tot de opkomst van 3D-bewuste beeld synthese [ , , , , , ]. 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 potentieel kan worden verkregen uit de onderliggende neurale veldrepresentatie met behulp van het marching cube algoritme [ ], is het extraheren van de corresponderende 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 alle vereisten van een praktisch bruikbaar 3D generatief model wil aanpakken. Specifiek stellen we GET3D voor, een eneratief model voor 3D-vormen dat direct xpliciete extured meshes produceert met hoge geometrische en textuurdetails en willekeurige meshtopologie. In het hart van onze aanpak staat een generatief proces dat gebruikmaakt 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 te produceren, terwijl de laatste ons in staat stelt ons model te trainen met 2D-beelden, waardoor gebruik wordt gemaakt van krachtige en volwassen discriminatoren die zijn ontwikkeld voor 2D-beeldsynthese. Aangezien ons model direct meshes genereert en gebruikmaakt van een zeer efficiënte (differentieerbare) grafische renderer, kunnen we ons model eenvoudig opschalen om te trainen met beeldsresoluties 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 zeer flexibel en kan het eenvoudig worden aangepast aan andere taken, waaronder: leren om gedescomposeerde materiaal- en view-afhankelijke lichteffecten te genereren met behulp van geavanceerde differentieerbare rendering [ ], zonder supervisie, tekst-gestuurde 3D vormgeneratie met behulp van CLIP [ ] embedding. 9 4 2 (a) 12 (b) 56 2 Gerelateerd Werk We bespreken recente vooruitgangen 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 content creatie geïnspireerd. Vroege benaderingen waren gericht op het direct uitbreiden van 2D CNN generatoren naar 3D voxel grids [ , , , , ], maar de hoge geheugenvoetafdruk en computationele complexiteit van 3D-convoluties belemmeren het generatieproces op hoge resolutie. Als alternatief hebben andere werken point cloud [ , , , ], 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 sjabloonmesh, 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 te bevragen, wat leidt tot lange trainingstijden [ , ], en beelden van beperkte resolutie genereren. GIRAFFE [ ] en StyleNerf [ ] verbeteren de trainings- en renderingefficië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 een verminderde multi-view consistentie. Door een dubbele discriminator te gebruiken, kan EG3D [ ] dit probleem gedeeltelijk verzachten. Desalniettemin is het extraheren van een getextureerd oppervlak uit methoden die gebaseerd zijn op neurale rendering een niet-triviale onderneming. Daarentegen produceert GET3D direct getextureerde 3D meshes die direct bruikbaar zijn 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 van willekeurige topologie produceert, 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 naar 2D beelden met hoge resolutie. Het hele proces is differentieerbaar, waardoor adversariële training op basis van 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. . Hierna 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 om een 3D generator = ( ) te leren om een sample uit een Gaussische verdeling 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 invoervectoren 1 ∈ R512 en 2 ∈ R512. Volgens 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 *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 geometrie generator om DMTet [ ] op te nemen, een recent voorgestelde differentieerbare oppervlakte representatie. DMTet vertegenwoordigt geometrie als een signed distance field (SDF) gedefinieerd op een vervormbaar tetraëdisch grid [ , ], waaruit het oppervlak differentieerbaar kan worden hersteld door middel van marching tetrahedra [ ]. Het vervormen van het grid door de vertices te verplaatsen, resulteert in een beter gebruik van de resolutie. Door DMTet te gebruiken voor oppervlakte-extractie, kunnen we expliciete meshes met willekeurige topologie en genus produceren. Hierna geven we een korte samenvatting van DMTet en verwijzen we de lezer naar het oorspronkelijke artikel voor meer details. 60 22 24 17 Laat ( ) de volledige 3D ruimte aanduiden waarin het object zich bevindt, waarbij de vertices in het tetraëdische grid zijn. Elke tetrahedron ∈ is gedefinieerd met vier vertices { }, met ∈ {1*, . . . , K*}, waarbij het totale aantal tetrahedra is, en ∈ ∈ R3. Naast zijn 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 vervormde 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 convolutionele en volledig verbonden lagen. Specifiek gebruiken we eerst 3D convolutionele lagen om een feature volume te genereren dat geconditioneerd is op 1. We bevragen vervolgens de feature bij elke vertex ∈ met behulp van trilineaire interpolatie en voeren deze in MLPs die de SDF waarde en de deformatie ∆ produceren. In gevallen waar modellering op hoge resolutie vereist is (bijv. motorfiets met dunne structuren in de wielen), gebruiken we verder volume onderverdeling volgens [ ]. Netwerkarchitectuur w v i w v i VT si v i 60 Na het verkrijgen van en ∆ voor alle vertices, gebruiken we het differentieerbare marching tetrahedra algoritme om de expliciete mesh te extraheren. Marching tetrahedra bepaalt de oppervlakte topologie binnen elke tetrahedron op basis van de tekens van . In het bijzonder wordt een mesh face geëxtraheerd wanneer sign( ) /= sign( ), waarbij de indices van de vertices in de rand van de tetrahedron aanduiden, en de vertices van die face 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 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 output 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, 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, zodat = ( *,* 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 we een conditioneel 2D convolutioneel neuraal netwerk om de latente code 1 ⊕ 2 te mappen naar drie as-georiënteerde orthogonale feature planes 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 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 het punt p op de feature plane e is en ρ(·) bilaterale 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 aan 3D-bewuste beeld synthese [8, 25, 7, 57] die ook een neurale veldrepresentatie gebruiken, we alleen de textuurveld hoeven te samplen 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 het genereren van multi-view consistente beelden. 3.2 Differentieerbare Rendering en Training Om ons model tijdens de training te superviseren, laten we ons inspireren door 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 camerapositieverdeling C die werd gebruikt om de beelden in de dataset te verkrijgen, 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 naar een 2D silhouet, evenals een beeld waarbij elke pixel de coördinaten van het corresponderende 3D Differentieerbare Rendering c 37 punt op het meshoppervlak bevat. Deze coördinaten worden verder gebruikt om het textuurveld te bevragen om de RGB waarden te verkrijgen. Omdat we direct op de geëxtraheerde mesh werken, kunnen we efficiënt beelden met hoge resolutie renderen, waardoor ons model kan worden getraind met beeldsresoluties tot 1024×1024. We trainen ons model met een adversariële doelstelling. We nemen de discriminator architectuur over van StyleGAN [ ] en gebruiken dezelfde niet-saturerende GAN doelstelling met R1 regularisatie [ ]. We vinden empirisch dat het gebruik van twee aparte discriminatoren, één voor RGB beelden en één voor silhouetten, betere resultaten oplevert dan een enkele discriminator die op beide werkt. Laat de discriminator zijn, 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 betekent, en een hyperparameter is. Aangezien differentieerbaar is, kunnen de gradiënten worden teruggepropagateerd van 2D beelden naar onze 3D generatoren. 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-entropieverlies gedefinieerd tussen de SDF waarden van naburige vertices [ ]: Regularisatie 47 waarbij de binaire cross-entropie loss aanduidt en de sigmoid functie. De som in Eq. is gedefinieerd over de set van unieke randen S in het tetraëdische grid, waarvoor sign( ) /= sign( ). H σ 2 e si sj De algehele verliesfunctie wordt dan gedefinieerd als: waarbij een hyperparameter is die de mate van regularisatie regelt. µ 4 Experimenten We voeren uitgebreide experimenten uit om ons model te evalueren. Eerst vergelijken we de kwaliteit van de 3D getextureerde meshes die door GET3D worden gegenereerd met bestaande methoden, met behulp van de ShapeNet [ ] en Turbosquid [ ] datasets. Vervolgens analyseren we onze ontwerpkeuzes in Sect. . Ten slotte demonstreren we de flexibiliteit van GET3D door het aan 9 4 4.2