```html Autori: 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) Astratto Poiché diverse industrie si stanno muovendo verso la modellazione di massicci mondi virtuali 3D, la necessità di strumenti di creazione di contenuti che possano scalare in termini di quantità, qualità e diversità di contenuti 3D sta diventando evidente. Nel nostro lavoro, miriamo ad addestrare modelli generativi 3D performanti che sintetizzano mesh texturizzate che possono essere direttamente consumate dai motori di rendering 3D, rendendole così immediatamente utilizzabili nelle applicazioni downstream. Lavori precedenti sulla modellazione generativa 3D mancano di dettagli geometrici, sono limitati nella topologia della mesh che possono produrre, tipicamente non supportano le texture, o utilizzano renderizzatori neurali nel processo di sintesi, il che rende il loro utilizzo nel software 3D comune non banale. In questo lavoro, introduciamo GET3D, un modello enerativo che genera direttamente mesh splorcite exturizzate con topologia complessa, ricchi dettagli geometrici e texture ad alta fedeltà. Colmiamo i recenti successi nella modellazione di superfici differenziabili, nel rendering differenziabile e nelle Reti Generative Avversarie 2D per addestrare il nostro modello da collezioni di immagini 2D. GET3D è in grado di generare mesh texturizzate 3D di alta qualità, che vanno da automobili, sedie, animali, motociclette e personaggi umani a edifici, ottenendo miglioramenti significativi rispetto ai metodi precedenti. La nostra pagina del progetto: G E T 3D https://nv-tlabs.github.io/GET3D 1 Introduzione Contenuti 3D diversi e di alta qualità stanno diventando sempre più importanti per diverse industrie, tra cui il gaming, la robotica, l'architettura e le piattaforme social. Tuttavia, la creazione manuale di asset 3D richiede molto tempo e conoscenze tecniche specifiche, oltre a competenze di modellazione artistica. Una delle principali sfide è quindi la scala: mentre si possono trovare modelli 3D su marketplace 3D come Turbosquid [ ] o Sketchfab [ ], creare molti modelli 3D per, diciamo, popolare un gioco o un film con una folla di personaggi che appaiono tutti diversi richiede ancora un tempo significativo per l'artista. 4 3 Per facilitare il processo di creazione di contenuti e renderlo accessibile a una varietà di utenti (novizi), le reti generative 3D in grado di produrre asset 3D di alta qualità e diversi sono recentemente diventate un'area di ricerca attiva [ , , , , , , , , , , ]. Tuttavia, per essere praticamente utili per le attuali applicazioni del mondo reale, i modelli generativi 3D dovrebbero idealmente soddisfare i seguenti requisiti: Dovrebbero avere la capacità di generare forme con geometria dettagliata e topologia arbitraria, L'output dovrebbe essere una mesh texturizzata, che è una rappresentazione primaria utilizzata dai pacchetti software grafici standard come Blender [ ] e Maya [ ], e Dovremmo essere in grado di sfruttare immagini 2D per la supervisione, poiché sono più ampiamente disponibili di forme 3D esplicite. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Il lavoro precedente sulla modellazione generativa 3D si è concentrato su sottoinsiemi dei requisiti di cui sopra, ma nessun metodo ad oggi li soddisfa tutti (Tab. ). Ad esempio, i metodi che generano nuvole di punti 3D [ , 68, 75] tipicamente non producono texture e devono essere convertiti in una mesh in post-elaborazione. 1 5 I metodi che generano voxel spesso mancano di dettagli geometrici e non producono texture [ , , , ]. I modelli generativi basati su campi neurali [ , ] si concentrano sull'estrazione della geometria ma trascurano la texture. La maggior parte di questi richiede anche una supervisione 3D esplicita. Infine, i metodi che producono direttamente mesh 3D texturizzate [ , ] richiedono tipicamente modelli di forme predefiniti e non possono generare forme con topologia complessa e genere variabile. 66 20 27 40 43 14 54 53 Recentemente, i rapidi progressi nel rendering volumetrico neurale [ ] e nelle Reti Generative Avversarie 2D (GAN) [ , , , , ] hanno portato all'ascesa della sintesi di immagini 3D-aware [ , , , , , ]. Tuttavia, questa linea di lavoro mira a sintetizzare immagini multi-vista coerenti utilizzando il rendering neurale nel processo di sintesi e non garantisce che possano essere generate forme 3D significative. Sebbene una mesh possa potenzialmente essere ottenuta dalla rappresentazione del campo neurale sottostante utilizzando l'algoritmo Marching Cube [ ], estrarre la texture corrispondente è un'impresa non banale. 45 34 35 33 29 52 7 57 8 49 51 25 39 In questo lavoro, introduciamo un approccio innovativo che mira ad affrontare tutti i requisiti di un modello generativo 3D praticamente utile. Nello specifico, proponiamo GET3D, un modello enerativo per forme 3D che produce direttamente mesh splorcite exturizzate con elevati dettagli geometrici e di texture e topologia di mesh arbitraria. Nel cuore del nostro approccio c'è un processo generativo che utilizza un metodo di estrazione di superficie differenziabile [ ] e una tecnica di rendering differenziabile [ , ]. Il primo ci permette di ottimizzare e produrre direttamente mesh 3D texturizzate con topologia arbitraria, mentre il secondo ci consente di addestrare il nostro modello con immagini 2D, sfruttando così discriminatori potenti e maturi sviluppati per la sintesi di immagini 2D. Poiché il nostro modello genera direttamente mesh e utilizza un renderer grafico (differenziabile) altamente efficiente, possiamo facilmente scalare il nostro modello per addestrarlo con immagini G E T 3D esplicita 60 47 37 a risoluzione fino a 1024 × 1024, permettendoci di apprendere dettagli geometrici e di texture di alta qualità. Dimostriamo prestazioni all'avanguardia per la generazione incondizionata di forme 3D su più categorie con geometria complessa da ShapeNet [ ], Turbosquid [ ] e Renderpeople [ ], come automobili, sedie, personaggi umani e edifici. Con la mesh esplicita come rappresentazione di output, GET3D è anche molto flessibile e può essere facilmente adattato ad altri compiti, tra cui: apprendere a generare effetti di illuminazione dipendenti dalla vista e materiali decomposti utilizzando il rendering differenziabile avanzato [ ], senza supervisione, generazione di forme 3D guidata da testo utilizzando l'embedding CLIP [ ]. 9 4 2 (a) 12 (b) 56 2 Lavori Correlati Rivediamo i recenti progressi nei modelli generativi 3D per geometria e aspetto, nonché nella sintesi di immagini generative 3D-aware. Negli ultimi anni, i modelli generativi 2D hanno raggiunto qualità fotorealistica nella sintesi di immagini ad alta risoluzione [ , , , , , , ]. Questo progresso ha anche ispirato la ricerca nella generazione di contenuti 3D. I primi approcci miravano a estendere direttamente i generatori CNN 2D a griglie di voxel 3D [ , , , , ], ma l'elevato impatto di memoria e la complessità computazionale delle convoluzioni 3D ostacolano il processo di generazione ad alta risoluzione. In alternativa, altri lavori hanno esplorato rappresentazioni di nuvole di punti [ , , , ], implicite [ , ] o octree [ ]. Tuttavia, questi lavori si concentrano principalmente sulla generazione della geometria e trascurano l'aspetto. Anche le loro rappresentazioni di output necessitano di post-elaborazione per renderle compatibili con i motori grafici standard. Modelli Generativi 3D 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Più simili al nostro lavoro, Textured3DGAN [ , ] e DIBR [ ] generano mesh 3D texturizzate, ma formulano la generazione come una deformazione di una mesh modello, che impedisce loro di generare topologie complesse o forme con genere variabile, cosa che il nostro metodo può fare. PolyGen [ ] e SurfGen [ ] possono produrre mesh con topologia arbitraria, ma non sintetizzano texture. 54 53 11 48 41 Ispirati dal successo del rendering volumetrico neurale [ ] e delle rappresentazioni implicite [ , ], lavori recenti hanno iniziato ad affrontare il problema della sintesi di immagini 3D-aware [ , , , , , , , , , ]. Tuttavia, le reti di rendering volumetrico neurale sono tipicamente lente da interrogare, portando a lunghi tempi di addestramento [ , ], e generano immagini di risoluzione limitata. GIRAFFE [ ] e StyleNerf [ ] migliorano l'efficienza di addestramento e rendering eseguendo il rendering neurale a risoluzione inferiore e quindi ingrandendo i risultati con una CNN 2D. Tuttavia, il guadagno di prestazioni avviene a scapito di una ridotta coerenza multi-vista. Utilizzando un discriminatore duale, EG3D [ ] può mitigare parzialmente questo problema. Ciononostante, estrarre una superficie texturizzata da metodi basati sul rendering neurale è un'impresa non banale. Al contrario, GET3D produce direttamente mesh 3D texturizzate che possono essere prontamente utilizzate nei motori grafici standard. Sintesi di Immagini Generative 3D-Aware 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Metodo Ora presentiamo il nostro framework GET3D per la sintesi di forme 3D texturizzate. Il nostro processo di generazione è diviso in due parti: un ramo di geometria, che produce differenziabilmente una mesh di superficie di topologia arbitraria, e un ramo di texture che produce un campo di texture che può essere interrogato nei punti della superficie per produrre colori. Quest'ultimo può essere esteso ad altre proprietà superficiali come, ad esempio, i materiali (Sec. ). Durante l'addestramento, un rasterizzatore differenziabile efficiente viene utilizzato per renderizzare la mesh texturizzata risultante in immagini 2D ad alta risoluzione. L'intero processo è differenziabile, consentendo l'addestramento avversario da immagini (con maschere che indicano un oggetto di interesse) propagando i gradienti dal discriminatore 2D a entrambi i rami del generatore. Il nostro modello è illustrato in Fig. . Di seguito, introduciamo prima il nostro generatore 3D nella Sec , prima di procedere al rendering differenziabile e alle funzioni di perdita nella Sec . 4.3.1 2 3.1 3.2 3.1 Modello Generativo di Mesh 3D Texturizzate Miriamo ad apprendere un generatore 3D = ( ) per mappare un campione da una distribuzione Gaussiana M, E G z ∈ N (0*,* ) a una mesh con texture . z I M E Poiché la stessa geometria può avere texture diverse, e la stessa texture può essere applicata a geometrie diverse, campioniamo due vettori di input casuali 1 ∈ R512 e 2 ∈ R512. Seguendo StyleGAN [ , , ], utilizziamo reti di mappatura non lineari geo e tex per mappare 1 e 2 a vettori latenti intermedi 1 = geo( 1) e 2 = tex( 2) che vengono ulteriormente utilizzati per produrre che controllano rispettivamente la generazione della forma 3D e della texture. Introduciamo formalmente il generatore per la geometria nella Sec. e il generatore di texture nella Sec. . z z 34 35 33 f f z z w f z w f z stili 3.1.1 3.1.2 3.1.1 Generatore di Geometria Progettiamo il nostro generatore di geometria per incorporare DMTet [ ], una rappresentazione di superficie differenziabile proposta di recente. DMTet rappresenta la geometria come un campo di distanza con segno (SDF) definito su una griglia tetraedrica deformabile [ , ], da cui la superficie può essere recuperata differenziabilmente attraverso tetraedri marchianti [ ]. Deformare la griglia spostando i suoi vertici si traduce in un migliore utilizzo della sua risoluzione. Adottando DMTet per l'estrazione della superficie, possiamo produrre mesh esplicite con topologia e genere arbitrari. Di seguito forniamo un breve riassunto di DMTet e rimandiamo il lettore all'articolo originale per ulteriori dettagli. 60 22 24 17 Sia ( ) la totalità dello spazio 3D in cui si trova l'oggetto, dove sono i vertici nella griglia tetraedrica . Ogni tetraedro ∈ è definito utilizzando quattro vertici { }, con ∈ {1*, . . . , K*}, dove è il numero totale di tetraedri, e ∈ ∈ R3. Oltre alle sue coordinate 3D, ogni vertice contiene il valore SDF ∈ R e la deformazione ∆ ∈ R3 del vertice dalla sua coordinata canonica iniziale. Questa rappresentazione consente di recuperare la mesh esplicita tramite l'algoritmo differenziabile dei tetraedri marchianti [ ], dove i valori SDF nello spazio continuo sono calcolati tramite interpolazione baricentrica dei loro valori sui vertici deformati ′ = + ∆ . 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 Mappiamo 1 ∈ R512 ai valori SDF e alle deformazioni di ciascun vertice attraverso una serie di convoluzioni 3D condizionali e strati completamente connessi. Nello specifico, utilizziamo prima strati convoluzionali 3D per generare un volume di feature condizionato da 1. Successivamente, interrogamo la feature in ciascun vertice ∈ utilizzando interpolazione trilinea e la inseriamo in MLPs che producono il valore SDF e la deformazione ∆ . Nei casi in cui sia richiesta la modellazione ad alta risoluzione (ad es. motociclette con strutture sottili nelle ruote), utilizziamo ulteriormente la suddivisione volumetrica seguendo [ ]. Architettura di Rete w v i w v i VT si v i 60 Dopo aver ottenuto e ∆ per tutti i vertici, utilizziamo l'algoritmo differenziabile dei tetraedri marchianti per estrarre la mesh esplicita. I tetraedri marchianti determinano la topologia della superficie all'interno di ciascun tetraedro in base ai segni di . Nello specifico, viene estratta una faccia della mesh quando sign( ) /= sign( ), dove denotano gli indici dei vertici nel bordo del tetraedro, e i vertici di quella faccia sono determinati da un'interpolazione lineare come mi,j = v 0 i sj−v 0 j si sj−si . Si noti che l'equazione di cui sopra viene valutata solo quando si 6= sj , quindi è differenziabile, e il gradiente da mi,j può essere retro-propagato nei valori SDF si e nelle deformazioni ∆vi . Con questa rappresentazione, le forme con topologia arbitraria possono essere facilmente generate prevedendo segni diversi di si . Estrazione Differenziabile della Mesh si v i si si sj i, j m i,j 3.1.2 Generatore di Texture Generare direttamente una mappa di texture coerente con la mesh di output non è banale, poiché la forma generata può avere un genere e una topologia arbitrari. Parametrizziamo quindi la texture come un campo di texture [ ]. 50 Nello specifico, modelliamo il campo di texture con una funzione che mappa la posizione 3D di un punto superficiale ∈ R3, condizionata da 2, al colore RGB ∈ R3 in quella posizione. Poiché il campo di texture dipende dalla geometria, condizioniamo ulteriormente questa mappatura sul codice latente della geometria 1, in modo che = ( *,* 1 ⊕ 2), dove ⊕ denota la concatenazione. ft p w c w c ft p w w Rappresentiamo il nostro campo di texture utilizzando una rappresentazione tri-planare, che è efficiente ed espressiva nel ricostruire oggetti 3D [ ] e generare immagini 3D-aware [ ]. Nello specifico, seguiamo [ , ] e utilizziamo una rete neurale convoluzionale 2D condizionale per mappare il codice latente 1 ⊕ 2 a tre piani di feature ortogonali allineati agli assi di dimensione × × ( × 3), dove = 256 denota la risoluzione spaziale e = 32 il numero di canali. Architettura di Rete 55 8 8 35 w w N N C N C Dati i piani di feature, il vettore di feature f t ∈ R 32 di un punto superficiale p può essere recuperato come f t = P e ρ(πe(p)), dove πe(p) è la proiezione del punto p sul piano di feature e ρ(·) denota l'interpolazione bilineare delle feature. Un ulteriore strato completamente connesso viene quindi utilizzato per mappare il vettore di feature aggregato f t al colore RGB c. Si noti che, diversamente da altri lavori sulla sintesi di immagini 3D-aware [8, 25, 7, 57] che utilizzano anche una rappresentazione di campo neurale, dobbiamo solo campionare il campo di texture nelle posizioni dei punti superficiali (al contrario di campioni densi lungo un raggio). Questo riduce notevolmente la complessità computazionale per il rendering di immagini ad alta risoluzione e garantisce la generazione di immagini multi-vista coerenti per costruzione. 3.2 Rendering Differenziabile e Addestramento Per supervisionare il nostro modello durante l'addestramento, ci ispiriamo a Nvdiffrec [ ] che esegue la ricostruzione di oggetti 3D multi-vista utilizzando un renderer differenziabile. Nello specifico, renderizziamo la mesh 3D estratta e il campo di texture in immagini 2D utilizzando un renderer differenziabile [ ], e supervisioniamo la nostra rete con un discriminatore 2D, che cerca di distinguere l'immagine da un oggetto reale o renderizzata dall'oggetto generato. 47 37 Assumiamo che la distribuzione della telecamera C utilizzata per acquisire le immagini nel dataset sia nota. Per renderizzare le forme generate, campioniamo casualmente una telecamera da C, e utilizziamo un rasterizzatore differenziabile altamente ottimizzato Nvdiffrast [ ] per renderizzare la mesh 3D in una silhouette 2D nonché in un'immagine in cui ogni pixel contiene le coordinate del corrispondente punto 3D Rendering Differenziabile c 37 sulla superficie della mesh. Queste coordinate vengono ulteriormente utilizzate per interrogare il campo di texture per ottenere i valori RGB. Poiché operiamo direttamente sulla mesh estratta, possiamo renderizzare immagini ad alta risoluzione con elevata efficienza, consentendo al nostro modello di essere addestrato con risoluzioni di immagine fino a 1024×1024. Addestriamo il nostro modello utilizzando un obiettivo avversario. Adottiamo l'architettura del discriminatore da StyleGAN [ ], e utilizziamo lo stesso obiettivo GAN non saturo con regolarizzazione R1 [ ]. Troviamo empiricamente che l'uso di due discriminatori separati, uno per le immagini RGB e un altro per le silhouette, produce risultati migliori rispetto a un singolo discriminatore che opera su entrambi. Sia il discriminatore, dove può essere un'immagine RGB o una silhouette. L'obiettivo avversario è quindi definito come segue: Discriminatore & Obiettivo 34 42 Dx x dove ( ) è definito come ( ) = − log(1 +exp(− )), è la distribuzione delle immagini reali, denota il rendering, e è un iperparametro. Poiché è differenziabile, i gradienti possono essere retro-propagati dalle immagini 2D ai nostri generatori 3D. g u g u u px R λ R Per rimuovere le facce interne flottanti che non sono visibili in nessuna delle viste, regolarizziamo ulteriormente il generatore di geometria con una perdita di entropia incrociata definita tra i valori SDF dei vertici vicini [ ]: Regolarizzazione 47 dove denota la perdita di entropia incrociata binaria e denota la funzione sigmoide. La somma in Eq. è definita sull'insieme degli spigoli unici S nella griglia tetraedrica, per i quali sign( ) /= sign( ). H σ 2 e si sj La funzione di perdita complessiva è quindi definita come: dove è un iperparametro che controlla il livello di regolarizzazione. µ 4 Esperimenti Conduciamo esperimenti approfonditi per valutare il nostro modello. Confrontiamo prima la qualità delle mesh 3D texturizzate generate da GET3D con i metodi esistenti utilizzando i dataset ShapeNet [ ] e Turbosquid [ ]. Successivamente, analizziamo le nostre scelte di progettazione nella Sec. . Infine, dimostriamo la flessibilità di GET3D adattandolo ad applicazioni downstream nella Sec. . Risultati sperimentali aggiuntivi e dettagli di implementazione sono forniti nell'Appendice. 9 4 4.2 4.3 4.1 Esperimenti su Dataset Sintetici Per la valutazione su ShapeNet [ ], utilizziamo tre categorie con geometria complessa – , e , che contengono rispettivamente 7497, 6778 e 337 forme. Suddividiamo casualmente ciascuna categoria in training (70%), validazione (10%) e test (20%), e inoltre rimuoviamo dal set di test le forme che hanno duplicati nel set di training. Per renderizzare i dati di training, campioniamo casualmente pose di telecamera dall'emisfero superiore di ogni forma. Per le categorie e , utilizziamo 24 viste casuali, mentre per utilizziamo 100 viste a causa del minor numero di forme. Poiché i modelli in ShapeNet hanno solo texture semplici, valutiamo anche GET3D su un dataset di (442 forme) raccolto da TurboSquid [ ], dove le texture sono più dettagliate e lo suddividiamo in training, validazione Dataset 9 Auto Sedia Motocicletta Auto Sedia Motocicletta Animali 4