```html Autoriai: Jun Gao, NVIDIA, Toronto universitetas, Vector Institute (jung@nvidia.com) Tianchang Shen, NVIDIA, Toronto universitetas, Vector Institute (frshen@nvidia.com) Zian Wang, NVIDIA, Toronto universitetas, Vector Institute (zianw@nvidia.com) Wenzheng Chen, NVIDIA, Toronto universitetas, 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, Toronto universitetas, Vector Institute (sfidler@nvidia.com) Santrauka Kadangi kelios pramonės šakos pereina prie didžiulių 3D virtualių pasaulių modeliavimo, tampa akivaizdus poreikis sukurti turinio kūrimo įrankius, galinčius padidinti 3D turinio kiekį, kokybę ir įvairovę. Mūsų darbe siekiame apmokyti našius 3D generatyvius modelius, kurie sintetina tekstūruotus tinklelį, tiesiogiai naudojamus 3D atvaizdavimo varikliams, taip nedelsiant pritaikomus vėlesnėms programoms. Ankstesniuose 3D generatyvaus modeliavimo darbuose arba trūksta geometrinių detalių, arba jie yra riboti dėl tinklelio topologijos, kurią gali sukurti, paprastai nepalaiko tekstūrų, arba sintezės procese naudoja neuroninius atvaizdavimo įrenginius, todėl jų naudojimas įprastose 3D programinėse įrangose nėra trivialus. Šiame darbe pristatome GET3D – eneratyvinį modelį, tiesiogiai kuriantį kšliuzinius ekstūruotus tinklinius su sudėtinga topologija, turtingomis geometrinėmis detalėmis ir didelės raiškos tekstūromis. Mes, pasinaudodami naujausiais pasiekimais diferencialiniame paviršių modeliavime, diferencialiniame atvaizdavime, taip pat 2D generatyviniuose priešiškinguose tinkluose, apmokome mūsų modelį iš 2D vaizdų kolekcijų. GET3D gali generuoti aukštos kokybės 3D tekstūruotus tinklinius, nuo automobilių, kėdžių, gyvūnų, motociklų ir žmonių personažų iki pastatų, pasiekdamas ženklius pagerėjimus, palyginti su ankstesniais metodais. Mūsų projekto puslapis: G E T 3D https://nv-tlabs.github.io/GET3D 1 Įvadas Įvairus, aukštos kokybės 3D turinys tampa vis svarbesnis kelioms pramonės šakoms, įskaitant žaidimus, robotiką, architektūrą ir socialines platformas. Tačiau rankinis 3D turto kūrimas yra labai daug laiko reikalaujantis ir reikalauja specifinių techninių žinių bei meninių modeliavimo įgūdžių. Vienas iš pagrindinių iššūkių yra mastas – nors 3D modelių galima rasti 3D prekyvietėse, tokiose kaip „Turbosquid“ [ ] ar „Sketchfab“ [ ], daugelio 3D modelių sukūrimas, pavyzdžiui, žaidimo ar filmo užpildymui skirtingai atrodančių personažų minia, vis dar reikalauja ženklaus menininkų laiko. 4 3 Siekiant palengvinti turinio kūrimo procesą ir padaryti jį prieinamą įvairiems (pradedantiems) naudotojams, 3D generatyvūs tinklai, galintys kurti aukštos kokybės ir įvairius 3D išteklius, neseniai tapo aktyvia tyrimų sritimi [ , , , , , , , , , , ]. Tačiau, kad būtų praktiškai naudingi dabartinėms realaus pasaulio programoms, 3D generatyvūs modeliai turėtų idealiu atveju atitikti šiuos reikalavimus: Jie turėtų gebėti generuoti formas su detalia geometrine informacija ir bet kokia topologija, Išvestis turėtų būti tekstūruotas tinklelis, kuris yra pagrindinis standartinių grafikos programinės įrangos, tokių kaip „Blender“ [ ] ir „Maya“ [ ], naudojamas vaizdavimas, ir Mes turėtume galėti pasinaudoti 2D vaizdais priežiūrai, nes jie yra plačiau prieinami nei aiškūs 3D formos. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Ankstesni darbai, susiję su 3D generatyviu modeliavimu, buvo sutelkti į minėtų reikalavimų dalis, tačiau iki šiol joks metodas visų jų neįvykdo (1 lentelė). Pavyzdžiui, metodai, generuojantys 3D taškų debesis [ , 68, 75], paprastai nesukuria tekstūrų ir turi būti paversti tinkleliu po apdorojimo. 5 Vokselius generuojantys metodai dažnai neturi geometrinių detalių ir nesukuria tekstūros [ , , , ]. Neuroninių laukų [ , ] pagrįsti generatyviniai modeliai sutelkia dėmesį į geometrijos išskyrimą, bet nepaiso tekstūros. Dauguma jų taip pat reikalauja aiškios 3D priežiūros. Galiausiai, metodai, tiesiogiai išduodantys tekstūruotus 3D tinklinius [ , ], paprastai reikalauja iš anksto nustatytų formos šablonų ir negali generuoti formų su sudėtinga topologija ir kintamu genusu. 66 20 27 40 43 14 54 53 Neseniai greita pažanga neuroniniame tūrio atvaizdavime [ ] ir 2D generatyviniuose priešiškinguose tinkluose (GANs) [ , , , , ] paskatino 3D- sąmoningos vaizdų sintezės [ , , , , , ] atsiradimą. Tačiau šie darbai siekia sintetinti daugiakampius vaizdus, naudojant neuroninį atvaizdavimą sintezės procese, ir negarantuoja, kad gali būti sukurta prasmingų 3D formų. Nors tinklelis gali būti gautas iš pagrindinio neuroninio lauko vaizdavimo naudojant „marching cubes“ algoritmą [ ], atitinkamos tekstūros išskyrimas nėra trivialus. 45 34 35 33 29 52 7 57 8 49 51 25 39 Šiame darbe pristatome naują metodą, skirtą visiems praktiškai naudingam 3D generatyviniam modeliui keliamų reikalavimų įgyvendinimui. Konkrečiai, siūlome GET3D – eneratyvinį modelį 3D formoms, kuris tiesiogiai išduoda kšliuzinius ekstūruotus tinklinius su aukšta geometrine ir tekstūros detale bei bet kokia tinklelio topologija. Mūsų metodo širdis yra generavimo procesas, kuris naudoja diferencialinį paviršiaus išskyrimo metodą [ ] ir diferencialinę atvaizdavimo techniką [ , ]. Pirmoji leidžia mums tiesiogiai optimizuoti ir išduoti tekstūruotus 3D tinklinius su bet kokia topologija, o antroji leidžia mums apmokyti modelį su 2D vaizdais, taip pasinaudojant galingais ir brandžiais diskriminatoriais, sukurtais 2D vaizdų sintezei. Kadangi mūsų modelis tiesiogiai generuoja tinklinius ir naudoja labai efektyvų (diferencialinį) grafikos atvaizdavimo įrenginį, galime lengvai padidinti mūsų modelio mastą, kad apmokytume vaizdus G E T 3D ekšliuzinį 60 47 37 tokios aukštos raiškos kaip 1024 × 1024, leidžiančios mums išmokti aukštos kokybės geometrines ir tekstūros detales. Demonstruojame valstybinį meną nedalyvaujančiam 3D formų generavimui keliose kategorijose su sudėtinga geometrija iš ShapeNet [ ], Turbosquid [ ] ir Renderpeople [ ], tokiose kaip kėdės, motociklai, automobiliai, žmonių personažai ir pastatai. Su ekšliuzine tinkline kaip išvesties vaizdavimu, GET3D yra labai lankstus ir gali būti lengvai pritaikytas kitiems uždaviniams, įskaitant: mokymasis generuoti suskaidytą medžiagą ir vaizdo priklausomus apšvietimo efektus naudojant pažangų diferencialinį atvaizdavimą [ ], be priežiūros, teksto vadovaujamas 3D formų generavimas naudojant CLIP [ ] įterpimą. 9 4 2 (a) 12 (b) 56 2 Susiję darbai Peržiūrime naujausius pasiekimus 3D generatyviniuose modeliuose geometrijai ir išvaizdai, taip pat 3D sąmoningam generatyviam vaizdų sintezės modeliui. Pastaraisiais metais 2D generatyviniai modeliai pasiekė fotorealistinę kokybę kuriant didelės raiškos vaizdus [ , , , , , , ]. Ši pažanga taip pat įkvėpė 3D turinio generavimo tyrimus. Ankstesni metodai siekė tiesiogiai išplėsti 2D CNN generatorius į 3D vokselių tinklus [ , , , , ], tačiau didelis atminties poreikis ir 3D konvoliucinių tinklų skaičiavimo sudėtingumas trukdo generavimo procesui didelės raiškos režimu. Kaip alternatyva, kiti darbai tyrinėjo taškų debesis [ , , , ], implikacinius [ , ] ar oktree [ ] vaizdavimus. Tačiau šie darbai daugiausia dėmesio skiria geometrijos generavimui ir nepaiso išvaizdos. Jų išvesties vaizdavimai taip pat turi būti apdorojami po apdorojimo, kad jie taptų suderinami su standartiniais grafikos varikliais. 3D Generatyviniai Modeliai 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Labiau panašūs į mūsų darbą, Textured3DGAN [ , ] ir DIBR [ ] generuoja tekstūruotus 3D tinklinius, tačiau jie formuluoja generavimą kaip šablono tinklelio deformaciją, kuri neleidžia jiems generuoti sudėtingos topologijos ar formų su kintamu genusu, ką mūsų metodas gali padaryti. PolyGen [ ] ir SurfGen [ ] gali generuoti tinklinius su bet kokia topologija, tačiau nesintetina tekstūrų. 54 53 11 48 41 Įkvėpti neuroninio tūrio atvaizdavimo [ ] ir implikacinių vaizdavimų [ , ] sėkmės, neseni darbai pradėjo spręsti 3D sąmoningos vaizdų sintezės [ , , , , , , , , , ] problemą. Tačiau neuroniniai tūrio atvaizdavimo tinklai paprastai lėtai užklausiantys, todėl ilgai apmokomi [ , ], ir generuoja ribotos raiškos vaizdus. GIRAFFE [ ] ir StyleNerf [ ] pagerina apmokymo ir atvaizdavimo efektyvumą atvaizduojant neuroninius signalus žemesnėje rezoliucijoje, o vėliau padidinant rezultatus su 2D CNN. Tačiau našumo padidėjimas pasiekiamas sumažinant daugiakampę nuoseklumą. Naudodamas dvigubą diskriminatorių, EG3D [ ] gali iš dalies sušvelninti šią problemą. Nepaisant to, tekstūruoto paviršiaus išskyrimas iš metodų, pagrįstų neuroniniu atvaizdavimu, yra ne trivialus uždavinys. Priešingai, GET3D tiesiogiai išduoda tekstūruotus 3D tinklinius, kurie gali būti lengvai naudojami standartiniuose grafikos varikliuose. 3D Sąmoningas Generatyvinis Vaizdų Sintezė 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Metodas Dabar pristatome mūsų GET3D sistemą 3D formų sintezei. Mūsų generavimo procesas suskirstytas į dvi dalis: geometrijos šaką, kuri diferencialiniu būdu išduoda paviršiaus tinklelį su bet kokia topologija, ir tekstūros šaką, kuri sukuria tekstūros lauką, kuris gali būti užklaustas paviršiaus taškuose, kad gautų spalvas. Pastaroji gali būti išplėsta iki kitų paviršiaus savybių, pavyzdžiui, medžiagų (4.3.1 skyrius). Mokymo metu efektyvus diferencialinis rasterizatorius naudojamas, kad tekstūruotas tinklelį atvaizduotų į 2D didelės raiškos vaizdus. Visas procesas yra diferencialinis, leidžiantis adversarial mokymą iš vaizdų (su kaukėmis, nurodančiomis dominančio objekto vietą), perduodant gradientus iš 2D diskriminatoriaus į abi generatoriaus šakas. Mūsų modelis iliustruotas 2 pav. Toliau pirmiausia pristatome mūsų 3D generatorių 3.1 skyriuje, o vėliau diferencialinį atvaizdavimą ir nuostolių funkcijas 3.2 skyriuje. 3.1 3D Tekstūruotų Tinklinių Generatyvinis Modelis Siekiame išmokti 3D generatorių = ( ), kad galėtume susieti mėginį iš Gausiano pasiskirstymo M, E G z ∈ N (0*,* ) į tinklelio su tekstūra . z I M E Kadangi ta pati geometrija gali turėti skirtingas tekstūras, o ta pati tekstūra gali būti taikoma skirtingoms geometrijoms, mes imame du atsitiktinius įvesties vektorius 1 ∈ R512 ir 2 ∈ R512. Vykdydami StyleGAN [ , , ] principus, tada naudojame nelinijinius susiejimo tinklus geo ir tex, kad susietume 1 ir 2 į tarpinius paslėptus vektorius 1 = geo( 1) ir 2 = tex( 2), kurie toliau naudojami „stiliams“ generuoti, kontroliuojantiems 3D formų ir tekstūros generavimą atitinkamai. Formuluojame geometrijos generatorių 3.1.1 skyriuje, o tekstūros generatorių 3.1.2 skyriuje. z z 34 35 33 f f z z w f z w f z 3.1.1 Geometrijos Generatorius Sukuriame geometrijos generatorių, kad įtrauktume DMTet [ ], neseniai pasiūlytą diferencialinį paviršiaus vaizdavimą. DMTet vaizduoja geometriją kaip pasiskirstymo tūrio funkcija (SDF), apibrėžtą deformuojamame tetraedro tinklelyje [ , ], iš kurio paviršius gali būti diferencialiniu būdu atgautas per „marching tetrahedra“ [ ]. Deformuojant tinklelį perkeliant jo viršūnes, jo raiška išnaudojama geriau. Naudodami DMTet paviršiaus išskyrimui, galime sukurti ekšliuzinius tinklinius su bet kokia topologija ir genusu. Toliau pateikiame trumpą DMTet santrauką ir skaitytoją nukreipiame į originalų dokumentą, kad gautų daugiau detalių. 60 22 24 17 Leiskite ( ) reikšti visą 3D erdvę, kurioje objektas yra, kur yra viršūnių tetraedro tinklelyje . Kiekvienas tetraedras ∈ yra apibrėžtas naudojant keturias viršūnes { }, kur ∈ {1*, . . . , K*}, kur yra bendras tetraedrų skaičius, o ∈ ∈ R3. Be savo 3D koordinačių, kiekviena viršūnė turi SDF reikšmę ∈ R ir viršūnės deformaciją ∆ ∈ R3 nuo jos pradinės kanoninės koordinatės. Šis vaizdavimas leidžia atkurti ekšliuzinį tinklelį per diferencialinį „marching tetrahedra“ [ ], kur SDF reikšmės nuolatinėje erdvėje apskaičiuojamos pagal jų reikšmės baricentriniu interpoliavimu ant deformuotų viršūnių ′ = + ∆ . 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 Susiejame 1 ∈ R512 su SDF reikšmėmis ir deformacijomis kiekvienoje viršūnėje per seriją kondicionuotų 3D konvoliucinių ir pilnai sujungtų sluoksnių. Konkrečiai, pirmiausia naudojame 3D konvoliucinius sluoksnius, kad sukurtume funkcijų tūrį, kondicionuotą 1. Tada užklausiame funkcijų kiekvienoje viršūnėje ∈ naudodami trilinearinį interpoliavimą ir perduodame jį į MLP, kurie išduoda SDF reikšmę ir deformaciją ∆ . Atsižvelgiant į atvejus, kai reikalaujama modeliavimo didelės raiškos režimu (pvz., motociklai su plonomis ratų konstrukcijomis), toliau naudojame tūrio padalijimą pagal [ ]. Tinklo Architektūra w v i w v i VT si v i 60 Gavę ir ∆ visoms viršūnėms, naudojame diferencialinį „marching tetrahedra“ algoritmą, kad išskirtume ekšliuzinį tinklelį. „Marching tetrahedra“ nustato paviršiaus topologiją kiekviename tetraedre remdamasis ženklu. Konkrečiai, tinklo kraštas yra išskiriamas, kai sign( ) /= sign( ), kur žymi viršūnių indeksus tetraedro krašte, o to krašto viršūnės nustatomos linijiniu interpoliavimu kaip mi,j = v 0 i sj−v 0 j si sj−si . Atkreipkite dėmesį, kad aukščiau pateikta lygtis vertinama tik tada, kai si 6= sj , todėl ji yra diferencialinė, ir gradientas iš mi,j gali būti atgal perduodamas į SDF reikšmes si ir deformacijas ∆vi . Su šiuo vaizdavimu, formos su bet kokia topologija gali būti lengvai generuojamos prognozuojant skirtingus si ženklus. Diferencialinis Tinklo Išskyrimas si v i si si sj i, j m i,j 3.1.2 Tekstūros Generatorius Tiesiogiai generuoti su išvesties tinkleliu suderinamą tekstūros žemėlapį nėra trivialu, nes generuojama forma gali turėti bet kokį genusą ir topologiją. Todėl tekstūrą parametrizuojame kaip tekstūros lauką [ ]. 50 Konkrečiai, tekstūros lauką modeliuojame funkcija , kuri susieja 3D paviršiaus taško vietą ∈ R3, kondicionuotą 2, su RGB spalva ∈ R3 toje vietoje. Kadangi tekstūros laukas priklauso nuo geometrijos, papildomai kondicionuojame šį susiejimą su geometrijos paslėptu kodu 1, taip, kad = ( *,* 1 ⊕ 2), kur ⊕ reiškia sujungimą. ft p w c w c ft p w w Tekstūros lauką vaizduojame per tri-plokštės vaizdavimą, kuris yra efektyvus ir išraiškingas 3D objektų rekonstrukcijai [ ] ir 3D sąmoningų vaizdų generavimui [ ]. Konkrečiai, vykdome principus [ , ] ir naudojame kondicionuotą 2D konvoliucinį neuronų tinklą, kad susietume paslėptą kodą 1 ⊕ 2 į tris ašimių lygiagrečias ortogonalias funkcijų plokštes, kurių dydis yra × × ( × 3), kur = 256 reiškia erdvinę raišką, o = 32 – kanalų skaičių. Tinklo Architektūra 55 8 8 35 w w N N C N C Suteiktos funkcijų plokštės, funkcijų vektorius f t ∈ R 32 paviršiaus taško p gali būti atgautas kaip f t = P e ρ(πe(p)), kur πe(p) yra taško p projekcija į funkcijų plokštę e, o ρ(·) reiškia funkcijų konearinį interpoliavimą. Tada naudojamas papildomas pilnai sujungtas sluoksnis, kad agreguotas funkcijų vektorius f t būtų susietas su RGB spalva c. Atkreipkite dėmesį, kad, skirtingai nuo kitų darbų, susijusių su 3D sąmoningu vaizdų sintezės modeliu [ , , , ], kurie taip pat naudoja neuroninio lauko vaizdavimą, mes turime tik imti tekstūros lauką paviršiaus taškų vietose (priešingai nei tankūs mėginiai palei spindulį). Tai žymiai sumažina skaičiavimo sudėtingumą atvaizduojant didelės raiškos vaizdus ir garantuoja, kad vaizdai bus sukurti su daugiakampiu nuoseklumu pagal konstrukciją. 8 25 7 57 3.2 Diferencialinis Atvaizdavimas ir Mokymas Kad galėtume prižiūrėti savo modelį mokymo metu, semiamės įkvėpimo iš Nvdiffrec [ ], kuris atlieka daugiakampį 3D objektų atstatymą, naudojant diferencialinį atvaizdavimo įrenginį. Konkrečiai, atvaizduojame išskirtą 3D tinklelį ir tekstūros lauką į 2D vaizdus, naudodami diferencialinį atvaizdavimo įrenginį [ ], ir prižiūrime savo tinklą su 2D diskriminatoriumi, kuris bando atskirti vaizdą nuo realaus objekto arba sukurtą iš generuojamo objekto. 47 37 Darome prielaidą, kad kamerų pasiskirstymas C, kuris buvo naudojamas duomenų bazėje esantiems vaizdams įsigyti, yra žinomas. Norėdami atvaizduoti generuojamas formas, atsitiktinai imame kamerą iš C ir naudojame labai optimizuotą diferencialinį rasterizatorių Nvdiffrast [ ], kad tinklelį paverstume 2D siluetu, taip pat vaizdu, kuriame kiekvienas pikselis turi atitinkamo 3D taško koordinates tinklelyje. Šios koordinatės toliau naudojamos tekstūros laukui užklausti, kad gautume RGB reikšmes. Kadangi dirbame tiesiogiai su išskirtu tinklį, galime labai efektyviai atvaizduoti didelės raiškos vaizdus, leidžiančius mūsų modelį apmokyti su vaizdo raiška iki 1024×1024. Diferencialinis Atvaizdavimas c 37 Mokome savo modelį naudojant adversarial tikslą. Naudojame StyleGAN [ ] diskriminatoriaus architektūrą ir Diskriminatorius ir Tikslas 34