```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) Abstrakt Keďže sa viaceré priemyselné odvetvia posúvajú smerom k modelovaniu rozsiahlych 3D virtuálnych svetov, potreba nástrojov na tvorbu obsahu, ktoré dokážu škálovať z hľadiska množstva, kvality a rozmanitosti 3D obsahu, sa stáva zrejmou. V našej práci sa zameriavame na trénovanie výkonných 3D generatívnych modelov, ktoré syntetizujú textúrované siete, ktoré môžu byť priamo konzumované 3D renderovacími enginmi, a teda sú okamžite použiteľné v nadväzujúcich aplikáciách. Predchádzajúce práce na 3D generatívnom modelovaní buď postrádajú geometrické detaily, sú obmedzené v topológii sietí, ktoré dokážu vyprodukovať, typicky nepodporujú textúry, alebo využívajú neurálne renderery v procese syntézy, čo ich používanie v bežných 3D softvéroch komplikuje. V tejto práci predstavujeme GET3D, eneratívny model, ktorý priamo generuje xplicitné extúrované siete so zložitou topológiou, bohatými geometrickými detailmi a vysoko vernými textúrami. Prepojujeme nedávne úspechy v oblasti diferencovateľného modelovania povrchov, diferencovateľného renderovania, ako aj 2D generatívnych adversariálnych sietí na trénovanie nášho modelu z kolekcií 2D obrázkov. GET3D dokáže generovať vysoko kvalitné 3D textúrované siete, od áut, stoličiek, zvierat, motocyklov a ľudských postáv až po budovy, čím dosahuje významné zlepšenia oproti predchádzajúcim metódam. Naša projektová stránka: G E T 3D https://nv-tlabs.github.io/GET3D 1 Úvod Rozmanitý, vysoko kvalitný 3D obsah sa stáva čoraz dôležitejším pre viaceré priemyselné odvetvia vrátane hier, robotiky, architektúry a sociálnych platforiem. Manuálna tvorba 3D aktív je však veľmi časovo náročná a vyžaduje špecifické technické znalosti aj zručnosti v modelovaní. Jednou z hlavných výziev je teda škálovanie – zatiaľ čo 3D modely možno nájsť na 3D trhoviskách ako Turbosquid [ ] alebo Sketchfab [ ], vytvorenie mnohých 3D modelov na, povedzme, zaplnenie hry alebo filmu davom postáv, ktoré všetky vyzerajú odlišne, stále zaberie značné množstvo času umelca. 4 3 Na uľahčenie procesu tvorby obsahu a jeho sprístupnenie širokej škále (nováčikov) používateľov, generatívne 3D siete, ktoré dokážu produkovať vysoko kvalitné a rozmanité 3D aktíva, sa v poslednej dobe stali aktívnou oblasťou výskumu [ , , , , , , , , , , ]. Aby však boli 3D generatívne modely prakticky využiteľné pre súčasné aplikácie v reálnom svete, mali by ideálne spĺňať nasledujúce požiadavky: mali by mať kapacitu generovať tvary s detailnou geometriou a ľubovoľnou topológiou, výstup by mal byť textúrovanou sieťou, čo je primárna reprezentácia používaná štandardnými grafickými softvérovými balíkmi ako Blender [ ] a Maya [ ], a mali by sme byť schopní využiť 2D obrázky na supervíziu, pretože sú širšie dostupné ako explicitné 3D tvary. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Predchádzajúce práce na 3D generatívnom modelovaní sa zamerali na podmnožiny vyššie uvedených požiadaviek, ale žiadna metóda doteraz nesplnila všetky (Tab. ). Napríklad metódy, ktoré generujú 3D oblaky bodov [ , 68, 75], typicky negenerujú textúry a musia byť po spracovaní konvertované na sieť. 1 5 Metódy generujúce voxely často postrádajú geometrické detaily a negenerujú textúru [ , , , ]. Generatívne modely založené na neurónových poliach [ , ] sa zameriavajú na extrakciu geometrie, ale ignorujú textúru. Väčšina z nich tiež vyžaduje explicitnú 3D supervíziu. Nakoniec, metódy, ktoré priamo produkujú textúrované 3D siete [ , ], typicky vyžadujú preddefinované šablóny tvarov a nedokážu generovať tvary so zložitou topológiou a variabilným rodom. 66 20 27 40 43 14 54 53 Nedávny rýchly pokrok v neurónovom objemovom renderovaní [ ] a 2D generatívnych adversariálnych sieťach (GAN) [ , , , , ] viedol k vzostupu 3D-vnímavého generovania obrazu [ , , , , , ]. Avšak táto línia prác sa zameriava na syntézu viacpohľadovo konzistentných obrázkov pomocou neurónového renderovania v procese syntézy a negarantuje, že je možné generovať zmysluplné 3D tvary. Aj keď je možné z podkladovej reprezentácie neurónového poľa extrahovať sieť pomocou algoritmu marching cubes [ ], extrakcia zodpovedajúcej textúry nie je triviálna. 45 34 35 33 29 52 7 57 8 49 51 25 39 V tejto práci predstavujeme nový prístup, ktorý sa snaží riešiť všetky požiadavky na prakticky použiteľný 3D generatívny model. Konkrétne navrhujeme GET3D, eneratívny model pre 3D tvary, ktorý priamo produkuje xplicitné extúrované siete s vysokými geometrickými a textúrovými detailmi a ľubovoľnou topológiou siete. V srdci nášho prístupu je generatívny proces, ktorý využíva diferencovateľnú metódu *explicitnej* extrakcie povrchu [ ] a diferencovateľnú techniku renderovania [ , ]. Prvá nám umožňuje priamo optimalizovať a produkovať textúrované 3D siete s ľubovoľnou topológiou, zatiaľ čo druhá nám umožňuje trénovať náš model pomocou 2D obrázkov, čím využívame silné a vyspelé diskriminátory vyvinuté pre 2D generovanie obrazu. Keďže náš model priamo generuje siete a používa vysoko efektívny (diferencovateľný) grafický renderér, môžeme náš model ľahko škálovať na trénovanie s rozlíšením obrazu až do 1024 × 1024, čo nám umožňuje učiť vysoko kvalitné geometrické a textúrové detaily. G E T 3D 60 47 37 Demonštrujeme špičkový výkon pre bezpodmienečné generovanie 3D tvarov vo viacerých kategóriách so zložitou geometriou zo ShapeNet [ ], Turbosquid [ ] a Renderpeople [ ], ako sú stoličky, motocykle, autá, ľudské postavy a budovy. S explicitnou sieťou ako výstupnou reprezentáciou je GET3D tiež veľmi flexibilný a môže byť ľahko prispôsobený iným úlohám, vrátane: učenie sa generovať dekomponované materiálové a pohľadovo závislé svetelné efekty pomocou pokročilého diferencovateľného renderovania [ ], bez supervízie, generovanie 3D tvarov riadené textom pomocou CLIP [ ] embeddingu. 9 4 2 (a) 12 (b) 56 2 Súvisiaca práca Prehľadávame nedávne pokroky v 3D generatívnych modeloch pre geometriu a vzhľad, ako aj v generatívnom syntetizovaní obrazu s 3D vedomím. V posledných rokoch dosiahli 2D generatívne modely fotorealistickú kvalitu vo vysoko rozlíšenom generovaní obrazu [ , , , , , , ]. Tento pokrok inšpiroval aj výskum v generovaní 3D obsahu. Skoršie prístupy sa snažili priamo rozšíriť 2D CNN generátory na 3D voxelové mriežky [ , , , , ], ale vysoká pamäťová náročnosť a výpočtová zložitosť 3D konvolúcií bránia generovaciemu procesu vo vysokom rozlíšení. Ako alternatívu, iné práce preskúmali reprezentácie oblaku bodov [ , , , ], implicitné [ , ], alebo oktree [ ]. Tieto práce sa však zameriavajú hlavne na generovanie geometrie a ignorujú vzhľad. Ich výstupné reprezentácie tiež potrebujú post-processing, aby boli kompatibilné so štandardnými grafickými enginmi. 3D Generatívne Modely 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Podobnejšie našej práci, Textured3DGAN [ , ] a DIBR [ ] generujú textúrované 3D siete, ale formulujú generovanie ako deformáciu šablónovej siete, čo im bráni generovať zložitú topológiu alebo tvary s meniacim sa rodom, čo naša metóda dokáže. PolyGen [ ] a SurfGen [ ] dokážu produkovať siete s ľubovoľnou topológiou, ale negenerujú textúry. 54 53 11 48 41 Inšpirovaní úspechom neurónového objemového renderovania [ ] a implicitných reprezentácií [ , ], nedávne práce začali riešiť problém 3D-aware generovania obrazu [ , , , , , , , , , ]. Avšak neurónové objemové renderovacie siete sú typicky pomalé na dopytovanie, čo vedie k dlhým časom trénovania [ , ] a generujú obrázky s obmedzeným rozlíšením. GIRAFFE [ ] a StyleNerf [ ] zlepšujú efektivitu trénovania a renderovania vykonávaním neurónového renderovania pri nižšom rozlíšení a následným zväčšením výsledkov pomocou 2D CNN. Zisk z výkonu však prichádza za cenu zníženej viacpohľadovej konzistencie. Použitím duálneho diskriminátora môže EG3D [ ] tento problém čiastočne zmierniť. Napriek tomu je extrakcia textúrovaného povrchu z metód založených na neurónovom renderovaní netriviálna úloha. Naopak, GET3D priamo produkuje textúrované 3D siete, ktoré sú ľahko použiteľné v štandardných grafických enginoch. 3D-Aware Generative Image Synthesis 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Metóda Teraz predstavujeme náš rámec GET3D na syntézu 3D textúrovaných tvarov. Náš generatívny proces je rozdelený do dvoch častí: geometrická vetva, ktorá diferencovateľne produkuje sieť povrchu ľubovoľnej topológie, a textúrová vetva, ktorá produkuje textúrové pole, ktoré môže byť dopytované v bodoch povrchu na produkciu farieb. Druhá menovaná sa dá rozšíriť o iné povrchové vlastnosti, ako sú napríklad materiály (Sek. ). Počas trénovania sa používa efektívny diferencovateľný rasterizér na renderovanie výslednej textúrovanej siete do 2D obrázkov s vysokým rozlíšením. Celý proces je diferencovateľný, čo umožňuje adversariálne trénovanie z obrázkov (s maskami indikujúcimi objekt záujmu) propagáciou gradientov z 2D diskriminátora do oboch generatívnych vetiev. Náš model je ilustrovaný na Obr. . V nasledujúcom texte najprv predstavíme náš 3D generátor v Sek. , pred pokračovaním k diferencovateľnému renderovaniu a stratovým funkciám v Sek. . 4.3.1 2 3.1 3.2 3.1 Generatívny model 3D textúrovaných sietí Cieľom je naučiť 3D generátor = ( ), ktorý mapuje vzorku z Gaussovského rozdelenia M, E G z ∈ N (0*,* ) na sieť s textúrou . z I M E Keďže rovnaká geometria môže mať rôzne textúry a rovnaká textúra môže byť aplikovaná na rôzne geometrie, vzorkujeme dva náhodné vstupové vektory 1 ∈ R512 a 2 ∈ R512. V súlade so StyleGAN [ , , ] potom používame nelineárne mapovacie siete geo a tex na mapovanie 1 a 2 na intermediárne latentné vektory 1 = geo( 1) a 2 = tex( 2), ktoré sa ďalej používajú na produkciu *štýlov*, ktoré kontrolujú generovanie 3D tvarov a textúr, resp. Formálne predstavujeme generátor pre geometriu v Sek. a generátor textúr v Sek. . z z 34 35 33 f f z z w f z w f z 3.1.1 3.1.2 3.1.1 Geometrický generátor Navrhujeme náš geometrický generátor tak, aby zahŕňal DMTet [ ], nedávno navrhnutú diferencovateľnú reprezentáciu povrchu. DMTet reprezentuje geometriu ako poľom podpísaných vzdialeností (SDF) definované na deformovateľnej tetrahedrickej mriežke [ , ], z ktorej je možné diferencovateľne získať povrch pomocou algoritmu marching tetrahedra [ ]. Deformácia mriežky pohybom jej vrcholov umožňuje lepšie využitie jej rozlíšenia. Prijatím DMTet na extrakciu povrchu môžeme produkovať explicitné siete s ľubovoľnou topológiou a rodom. V nasledujúcom texte poskytneme stručné zhrnutie DMTet a odkážeme čitateľa na pôvodný článok pre ďalšie podrobnosti. 60 22 24 17 Nech ( ) označuje celý 3D priestor, v ktorom sa objekt nachádza, kde sú vrcholy v tetrahedrickej mriežke . Každý tetrahedron ∈ je definovaný pomocou štyroch vrcholov { }, s ∈ {1*, . . . , K*}, kde je celkový počet tetraédrov a ∈ ∈ R3. Okrem svojich 3D súradníc obsahuje každý vrchol hodnotu SDF ∈ R a deformáciu ∆ ∈ R3 vrcholu z jeho počiatočnej kanonickej súradnice. Táto reprezentácia umožňuje diferencovateľne získať explicitnú sieť pomocou diferencovateľného algoritmu marching tetrahedra [ ], kde sa hodnoty SDF v spojitom priestore počítajú barycentrickou interpoláciou ich hodnôt na deformovaných vrcholoch ′ = + ∆ . VT , T VT T Tk T v ak , v bk , v ck , v dk k K v ik VT , v ik i v i si v i 60 si v v i v i Mapujeme 1 ∈ R512 na hodnoty SDF a deformácie na každom vrchole pomocou série podmienených 3D konvolučných a plne prepojených vrstiev. Konkrétne, najprv použijeme 3D konvolučné vrstvy na generovanie objemových vlastností podmienených 1. Potom pomocou trilineárnej interpolácie získame vlastnosť v každom vrchole ∈ a odovzdáme ju do MLPs, ktoré produkujú hodnotu SDF a deformáciu ∆ . V prípadoch, kde je potrebné modelovanie vo vysokom rozlíšení (napr. motocykel s tenkými štruktúrami na kolesách), ďalej používame delenie objemu podľa [ ]. Architektúra siete w v i w v i VT si v i 60 Po získaní a ∆ pre všetky vrcholy použijeme diferencovateľný algoritmus marching tetrahedra na extrakciu explicitnej siete. Algoritmus marching tetrahedra určuje topológiu povrchu v každom tetraedri na základe znamienok . Konkrétne, stena siete sa extrahuje, keď sign( ) /= sign( ), kde označujú indexy vrcholov na hrane tetraedru, a vrcholy tejto steny sú určené lineárnou interpoláciou ako mi,j = v 0 i sj−v 0 j si sj−si . Je potrebné poznamenať, že vyššie uvedený vzorec sa vyhodnocuje iba vtedy, keď si 6= sj , teda je diferencovateľný a gradient z mi,j môže byť spätne propagovaný do hodnôt SDF si a deformácií ∆vi . S touto reprezentáciou je možné ľahko generovať tvary s ľubovoľnou topológiou predikciou rôznych znamienok si . Diferencovateľná extrakcia siete si v i si si sj i, j m i,j 3.1.2 Generátor textúr Priame generovanie textúrovej mapy konzistentnej s výstupnou sieťou nie je triviálne, pretože generovaný tvar môže mať ľubovoľný rod a topológiu. Preto parametrizujeme textúru ako textúrové pole [ ]. 50 Konkrétne, modelujeme textúrové pole pomocou funkcie , ktorá mapuje 3D polohu povrchového bodu ∈ R3, podmienenú 2, na RGB farbu ∈ R3 v tejto polohe. Keďže textúrové pole závisí od geometrie, dodatočne podmieňujeme toto mapovanie na latentný kód geometrie 1, takže = ( *,* 1 ⊕ 2), kde ⊕ označuje konkatenáciu. ft p w c w c ft p w w Našu textúrovú oblasť reprezentujeme pomocou trojrozmernej reprezentácie, ktorá je efektívna a expresívna pri rekonštrukcii 3D objektov [ ] a generovaní 3D-vedomých obrázkov [ ]. Konkrétne, nasledujeme [ , ] a používame podmienenú 2D konvolučnú neurónovú sieť na mapovanie latentného kódu 1 ⊕ 2 na tri os-priame ortogonálne plochy vlastností s rozmermi × × ( × 3), kde = 256 označuje priestorové rozlíšenie a = 32 počet kanálov. Architektúra siete 55 8 8 35 w w N N C N C Vzhľadom na plochy vlastností je vektor vlastností f t ∈ R 32 povrchového bodu p možné získať ako f t = P e ρ(πe(p)), kde πe(p) je projekcia bodu p na plochu vlastností e a ρ(·) označuje bilineárnu interpoláciu vlastností. Dodatočná plne prepojená vrstva sa potom používa na mapovanie agregovaného vektora vlastností f t na RGB farbu c. Je potrebné poznamenať, že na rozdiel od iných prác na 3D-vedomé generovanie obrazu [8, 25, 7, 57], ktoré tiež používajú reprezentáciu neurónového poľa, potrebujeme iba vzorkovať textúrové pole v polohe povrchových bodov (na rozdiel od hustých vzoriek pozdĺž lúča). To výrazne znižuje výpočtovú zložitosť pre renderovanie obrázkov vo vysokom rozlíšení a zaručuje generovanie viacpohľadovo konzistentných obrázkov konštrukciou. 3.2 Diferencovateľné renderovanie a trénovanie Na účely supervízie nášho modelu počas trénovania sme čerpali inšpiráciu z Nvdiffrec [ ], ktorý vykonáva viacpohľadovú 3D rekonštrukciu objektov pomocou diferencovateľného renderéra. Konkrétne, extrahovanú 3D sieť a textúrové pole renderujeme do 2D obrázkov pomocou diferencovateľného renderéra [ ] a supervidujeme našu sieť pomocou 2D diskriminátora, ktorý sa snaží rozlíšiť obrázok od reálneho objektu alebo obrázok vyrenderovaný z generovaného objektu. 47 37 Predpokladáme, že distribúcia kamier C, ktorá bola použitá na získanie obrázkov v datasete, je známa. Na renderovanie generovaných tvarov náhodne vzorkujeme kameru z C a používame vysoko optimalizovaný diferencovateľný rasterizér Nvdiffrast [ ] na renderovanie 3D siete do 2D siluety, ako aj do obrazu, kde každý pixel obsahuje súradnice zodpovedajúceho 3D Diferencovateľné renderovanie c 37 bodu na povrchu siete. Tieto súradnice sa ďalej používajú na dopytovanie textúrového poľa na získanie RGB hodnôt. Keďže pracujeme priamo na extrahovanej sieti, dokážeme renderovať obrázky vo vysokom rozlíšení s vysokou efektivitou, čo umožňuje trénovanie nášho modelu s rozlíšením obrazu až do 1024 × 1024. Náš model trénujeme pomocou adversariálnej stratégie. Používame architektúru diskriminátora zo StyleGAN [ ] a rovnaký nesaturovaný GAN cieľ s R1 regularizáciou [ ]. Empiricky sme zistili, že použitie dvoch samostatných diskriminátorov, jedného pre RGB obrázky a druhého pre siluety, prináša lepšie výsledky ako jeden diskriminátor pracujúci na oboch. Nech označuje diskriminátor, kde môže byť buď RGB obrázok alebo silueta. Adversariálny cieľ je potom definovaný ako: Diskriminátor & Cieľ 34 42 Dx x kde ( ) je definované ako ( ) = − log(1 +exp(− )), je distribúcia reálnych obrázkov, označuje renderovanie a je hyperparameter. Keďže je diferencovateľné, gradienty môžu byť spätne propagované z 2D obrázkov do našich 3D generátorov. g u g u u px R λ R Na odstránenie vnútorných plávajúcich plôch, ktoré nie sú viditeľné v žiadnom z pohľadov, ďalej regularizujeme geometrický generátor pomocou straty krížovej entropie definovanej medzi hodnotami SDF susedných vrcholov [ ]: Regularizácia 47 kde označuje stratu binárnej krížovej entropie a označuje sigmoidalnú funkciu. Súčet v Eq. je definovaný nad H σ 2