```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, didėja poreikis turinio kūrimo įrankiams, kurie galėtų būti pritaikyti 3D turinio kiekiui, kokybei ir įvairovei didinti. Savo darbe siekiame apmokyti našius 3D generatyvinius modelius, kurie sintetiną tekstūruotus tinklelį, tiesiogiai tinkamą naudoti 3D renderinimo varikliams, taigi iškart panaudojamą vėlesnėse programose. Ankstesni darbai apie 3D generatyvinį modeliavimą arba neturi geometrinių detalių, arba yra riboti dėl tinklelio topologijos, kurią gali pagaminti, paprastai nepalaiko tekstūrų, arba sintezės procese naudoja neuroninius renderius, todėl jų naudojimas bendrose 3D programose yra ne trivialus. Šiame darbe pristatome GET3D, eneratyvinį modelį, kuris tiesiogiai generuoja kspresyvius ekstūruotus tinklelį su sudėtinga topologija, turtingomis geometrinėmis detalėmis ir didelio tikslumo tekstūromis. Naujausius pasiekimus diferencijuojamojo paviršiaus modeliavimo, diferencijuojamojo renderinimo ir 2D generatyvinių priešiškumo tinklų srityse naudojame, kad apmokytume savo modelį iš 2D vaizdų kolekcijų. GET3D gali generuoti aukštos kokybės 3D tekstūruotus tinklelį, pradedant automobiliais, kėdėmis, gyvūnais, motociklais ir žmonių personažais, baigiant pastatais, pasiekdamas reikšmingą pagerėjimą, 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 3D turto rankinis kūrimas yra labai daug laiko reikalaujantis ir reikalauja specifinių techninių žinių bei meninio modeliavimo įgūdžių. Vienas iš pagrindinių iššūkių yra mastas – nors 3D modelių galima rasti 3D prekyvietėse, tokiose kaip „Turbosquid“ [ ] ar „Sketchfab“ [ ], sukūrimas daugybės 3D modelių, pavyzdžiui, žaidimo ar filmo užpildymui skirtingai atrodančių personažų minia, vis tiek reikalauja ženklaus menininkų laiko. 4 3 Siekiant palengvinti turinio kūrimo procesą ir padaryti jį prieinamą įvairiems (pradedantiesiems) naudotojams, 3D generatyviniai tinklai, galintys gaminti aukštos kokybės ir įvairius 3D turtus, pastaruoju metu tapo aktyvia tyrimų sritimi [ , , , , , , , , , , ]. Tačiau, kad būtų praktiškai naudingi dabartinėms realaus pasaulio programoms, 3D generatyviniai modeliai turėtų atitikti šiuos reikalavimus: gebėti generuoti formas su detalia geometrija ir savavališka topologija, rezultatas turėtų būti tekstūruotas tinklelis, kuris yra pagrindinis standartinių grafikos programinės įrangos paketų, tokių kaip Blender [ ] ir Maya [ ], vaizdavimas, ir turėtume galėti pasinaudoti 2D vaizdais kaip priežiūra, nes jie yra labiau prieinami nei aiškios 3D formos. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Ankstesni darbai apie 3D generatyvinį modeliavimą daugiausia dėmesio skyrė pirmiau minėtų reikalavimų daliai, tačiau iki šiol joks metodas neįvykdė visų (1 lentelė ). Pavyzdžiui, metodai, generuojantys 3D taškų debesis [ , 68, 75], paprastai negeneruoja tekstūrų ir turi būti konvertuojami į tinklelį po apdorojimo. 1 5 Vokselius generuojantys metodai dažnai neturi geometrinių detalių ir negeneruoja tekstūros [ , , , ]. Neuroniniais laukais pagrįsti generatyviniai modeliai [ , ] daugiausia dėmesio skiria geometrijos išskyrimui, bet ne tekstūrai. Dauguma jų taip pat reikalauja aiškios 3D priežiūros. Galiausiai, metodai, tiesiogiai pateikiantys tekstūruotus 3D tinklelį [ , ], 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 Pastaruoju metu spartūs pasiekimai neuroniniame tūrio atvaizdavime [ ] ir 2D generatyviniuose priešiškumo tinkluose (GAN) [ , , , , ] lėmė 3D suvokiančių vaizdų sintezės [ , , , , , ] atsiradimą. Tačiau šie darbai skirti sintezuoti kelių vaizdų nuoseklius vaizdus naudojant neuroninį atvaizdavimą sintezės procese ir negarantuoja, kad bus galima generuoti prasmingas 3D formas. Nors tinklelį galima gauti iš pagrindinio neuroninio lauko vaizdavimo naudojant „marching cube“ 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ą, kurio tikslas – patenkinti visus praktiškai naudingos 3D generatyvinio modelio reikalavimus. Konkrečiai, mes pristatome GET3D, eneratyvinį 3D formų modelį, kuris tiesiogiai pateikia kspresyvius ekstūruotus tinklelį su aukštomis geometrinėmis ir tekstūrinėmis detalėmis bei savavališka tinklelio topologija. Mūsų metodo pagrindas yra generavimo procesas, kuris naudoja diferencijuojamą paviršiaus išskyrimo metodą [ ] ir diferencijuojamą atvaizdavimo techniką [ , ]. Pirmoji leidžia mums tiesiogiai optimizuoti ir pateikti tekstūruotus 3D tinklelį su savavališka topologija, o antroji leidžia mums apmokyti modelį naudojant 2D vaizdus, taip pasinaudojant galingais ir brandžiais diskriminatoriais, sukurtais 2D vaizdų sintezei. Kadangi mūsų modelis tiesiogiai generuoja tinklelį ir naudoja didelio efektyvumo (diferencijuojamą) grafikos renderį, galime lengvai padidinti modelio mastą, kad jis būtų apmokytas vaizdo G E T 3D ekspresyvų 60 47 37 rezoliucija iki 1024 × 1024, leidžiančią mums išmokti aukštos kokybės geometrines ir tekstūrines detales. Mes demonstruojame naujausią ne sąlyginio 3D formų generavimo našumą keliose kategorijose su sudėtinga geometrijos iš „ShapeNet“ [ ], „TurboSquid“ [ ] ir „Renderpeople“ [ ] duomenų rinkinių, tokių kaip kėdės, motociklai, automobiliai, žmonių personažai ir pastatai. GET3D, turėdamas ekspresyvų tinklelį kaip išvesties vaizdavimą, yra labai lankstus ir gali būti lengvai pritaikytas kitoms užduotims, įskaitant: mokymasis generuoti suskaidytą medžiagos ir nuo vaizdo priklausančius apšvietimo efektus naudojant pažangų diferencijuojamą atvaizdavimą [ ], be priežiūros, tekstu vadovaujamas 3D formų generavimas naudojant CLIP [ ] įterpimą. 9 4 2 (a) 12 (b) 56 2 Susiję darbai Apžvelgiame naujausius 3D generatyvinių modelių geometrijai ir išvaizdai, taip pat 3D suvokiančios generatyvinės vaizdų sintezės pasiekimus. Pastaraisiais metais 2D generatyviniai modeliai pasiekė fotorealistinę kokybę kuriant didelės raiškos vaizdus [ , , , , , , ]. Šis pažanga taip pat įkvėpė tyrimus 3D turinio generavimo srityje. Ankstesni metodai siekė tiesiogiai išplėsti 2D CNN generatorius į 3D vokselių tinklelius [ , , , , ], tačiau didelės atminties sąnaudos ir 3D konvoliucinių operacijų skaičiavimo sudėtingumas trukdo generavimo procesui didelės raiškos. Kaip alternatyva, kiti darbai nagrinėjo taškų debesis [ , , , ], implikuotinius [ , ] arba oktree [ ] vaizdavimus. Tačiau šie darbai daugiausia dėmesio skiria geometrijos generavimui ir neatsižvelgia į išvaizdą. Jų išvesties vaizdavimai taip pat turi būti apdorojami po generavimo, kad būtų suderinami su standartinėmis grafikos sistemomis. 3D generatyviniai modeliai 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Daugiau panašūs į mūsų darbą, Textured3DGAN [ , ] ir DIBR [ ] generuoja tekstūruotus 3D tinklelį, tačiau jie formuluoja generavimą kaip šablono tinklelio deformaciją, kuri neleidžia jiems generuoti sudėtingos topologijos ar kintamo genuso formų, ką gali mūsų metodas. PolyGen [ ] ir SurfGen [ ] gali generuoti tinklelį su savavališka topologija, bet negeneruoja tekstūrų. 54 53 11 48 41 Įkvėpti sėkmės neuroniniame tūrio atvaizdavime [ ] ir implikuotiniuose vaizdavimuose [ , ], neseniai pradėti sprendimai 3D suvokiančios vaizdų sintezės [ , , , , , , , , , ] problema. Tačiau neuroniniai tūrio atvaizdavimo tinklai paprastai yra lėti užklausti, todėl užtrunka ilgas apmokymo laikas [ , ] ir generuoja ribotos raiškos vaizdus. GIRAFFE [ ] ir StyleNerf [ ] pagerina apmokymo ir atvaizdavimo efektyvumą atvaizduodami neuroninius vaizdus mažesne raiška, o vėliau padidindami rezultatus su 2D CNN. Tačiau našumo pagerėjimas pasiekiamas mažesniu kelių vaizdų nuoseklumo kaštu. 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 pateikia tekstūruotus 3D tinklelį, kuris gali būti lengvai naudojamas standartinėse grafikos sistemose. 3D suvokiančios generatyvinės vaizdų sintezės 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ą tekstūruotų 3D formų sintezei. Mūsų generavimo procesas suskirstytas į dvi dalis: geometrijos šaką, kuri diferencijuojamai pateikia paviršiaus tinklelį su savavališka topologija, ir tekstūros šaką, kuri gamina tekstūros lauką, kuris gali būti užklaustas paviršiaus taškams, kad gautų spalvas. Pastaroji gali būti išplėsta ir kitiems paviršiaus savybėms, pvz., medžiagoms (4.3.1 skyrius ). Apmokymo metu, efektyvus diferencijuojamas rasterizatorius naudojamas, kad tekstūruotas tinklelį būtų atvaizduotas į 2D didelės raiškos vaizdus. Visas procesas yra diferencijuojamas, leidžiantis priešiškumo apmokymą iš vaizdų (su kaukėmis, nurodančiomis dominančio objekto interesą), perduodant gradientus iš 2D diskriminatoriaus į abi generatoriaus šakas. Mūsų modelis yra iliustruotas 2 pav. . Toliau, pirmiausia pristatysime mūsų 3D generatorių 3.1 skyriuje , o tada pereisime prie diferencijuojamo atvaizdavimo ir praradimo funkcijų 3.2 skyriuje . 4.3.1 2 3.1 3.2 3.1 3D tekstūruotų tinklelių generatyvinis modelis Siekiame išmokti 3D generatorių = ( ), kad galėtume paversti Gauso pasiskirstymo mėginį M, E G z ∈ N (0*,* ) į tinklelį su tekstūra . z I M E Kadangi tas pats geometrinis modelis gali turėti skirtingas tekstūras, o ta pati tekstūra gali būti pritaikyta skirtingoms geometrijoms, mes mėgstame du atsitiktinius įvesties vektorius 1 ∈ R512 ir 2 ∈ R512. Sekdami StyleGAN [ , , ], mes naudojame netiesinius perdavimo tinklus geo ir tex, kad paverstume 1 ir 2 į tarpinius latentinius vektorius 1 = geo( 1) ir 2 = tex( 2), kurie toliau naudojami gaminti, kontroliuojantiems atitinkamai 3D formų ir tekstūros generavimą. Generatoriumi geometrijai formally pristatysime 3.1.1 skyriuje , o tekstūros generatoriumi – 3.1.2 skyriuje . z z 34 35 33 f f z z w f z w f z stiliams 3.1.1 3.1.2 3.1.1 Geometrijos generatorius Mūsų geometrijos generatorius yra sukurtas taip, kad apimtų DMTet [ ], neseniai pasiūlytą diferencijuojamą paviršiaus vaizdavimą. DMTet atvaizduoja geometriją kaip pasvirusį atstumų lauką (SDF), apibrėžtą deformuojamame tetraedrų tinklelyje [ , ], iš kurio paviršius gali būti diferencijuojamai atkuriamas per „marching tetrahedra“ [ ]. Deformuojant tinklelį judinant jo viršūnes, jo rezoliucija yra geriau panaudojama. Naudojant DMTet paviršiaus išskyrimui, galime pagaminti ekspresyvius tinklelį su savavališka topologija ir genusu. Toliau pateikiame trumpą DMTet santrauką ir nukreipiame skaitytoją į originalų straipsnį daugiau detalių. 60 22 24 17 Leiskite ( ) pažymėti visą 3D erdvę, kurioje objektas yra, kur yra tetraedrų tinklelio viršūnės. Kiekvienas tetraedras ∈ yra apibrėžiamas naudojant keturias viršūnes { }, su ∈ {1*, . . . , K*}, kur yra bendras tetraedrų skaičius, ir ∈ ∈ R3. Be savo 3D koordinačių, kiekvienas viršūnė turi SDF reikšmę ∈ R ir viršūnės deformaciją ∆ ∈ R3 iš jos pradinės kanoninės koordinatės. Šis vaizdavimas leidžia atkurti ekspresyvų tinklelį per diferencijuojamą „marching tetrahedra“ [ ], kur SDF reikšmės nepertraukiamoje erdvėje yra apskaičiuojamos per baricentrinę interpoliaciją jų reikšmių 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 i v i si v i 60 si v v i v i Mes paverčiame 1 ∈ R512 į SDF reikšmes ir deformacijas 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 mes užklausiame funkciją kiekvienoje viršūnėje ∈ naudojant trilinearinę interpoliaciją ir perduodame ją į MLP, kuri pateikia SDF reikšmę ir deformaciją ∆ . Kai reikia modeliuoti aukštos rezoliucijos (pvz., motociklo su plonomis ratų konstrukcijomis), mes 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 diferencijuojamą „marching tetrahedra“ algoritmą, kad išskirtume ekspresyvų tinklelį. „Marching tetrahedra“ nustato paviršiaus topologiją kiekviename tetraedre remiantis ženklų. Konkrečiai, tinklelio briauna yra išskiriama, kai sign( ) /= sign( ), kur žymi viršūnių indeksus tetraedro krašte, ir tos briaunos viršūnės yra nustatomos tiesiogine interpoliacija kaip mi,j = v 0 i sj−v 0 j si sj−si . Pastaba: aukščiau pateikta lygtis yra vertinama tik tada, kai si 6= sj , todėl ji yra diferencijuojama, ir gradientas iš mi,j gali būti grąžinamas atgal į SDF reikšmes si ir deformacijas ∆vi . Su šiuo vaizdavimu, formos su savavališka topologija gali būti lengvai generuojamos prognozuojant skirtingus si ženklus. Diferencijuojamas tinklelio išskyrimas si v i si si sj i, j m i,j 3.1.2 Tekstūros generatorius Tiesiogiai generuoti tekstūros žemėlapį, suderinamą su išvesties tinkleliu, nėra trivialu, nes generuojama forma gali turėti savavališką genusus ir topologiją. Todėl tekstūrą parametrizuojame kaip tekstūros lauką [ ]. 50 Specifiškai, tekstūros lauką modeliuojame funkcija , kuri paverčia 3D paviršiaus taško vietą ∈ R3, kondicionuotą 2, į RGB spalvą ∈ R3 toje vietoje. Kadangi tekstūros laukas priklauso nuo geometrijos, papildomai kondicionuojame šį perdavimą ant geometrijos latentinio kodo 1, taip kad = ( *,* 1 ⊕ 2), kur ⊕ žymi konkatenciją. ft p w c w c ft p w w Tekstūros lauką vaizduojame trijų plokštumų vaizdavimu, kuris yra efektyvus ir išraiškingas rekonstruojant 3D objektus [ ] ir generuojant 3D suvokiančius vaizdus [ ]. Konkrečiai, mes sekame [ , ] ir naudojame kondicionuotą 2D konvoliucinį neuroninį tinklą, kad paverstume latentinį kodą 1 ⊕ 2 į tris ašiai lygiagrečias ortogonalias funkcijų plokštumas, kurių dydis yra × × ( × 3), kur = 256 žymi erdvinę rezoliuciją, o = 32 žymi kanalų skaičių. Tinklo architektūra 55 8 8 35 w w N N C N C Gavę funkcijų plokštumas, funkcijų vektorius f t ∈ R 32 paviršiaus taškui p gali būti gautas kaip f t = P e ρ(πe(p)), kur πe(p) yra taško p projekcija į funkcijų plokštumą e, o ρ(·) žymi bilinearinę funkcijų interpoliaciją. Papildomas pilnai sujungtas sluoksnis tada naudojamas, kad sujungtas funkcijų vektorius f t būtų paverstas RGB spalva c. Pastaba: skirtingai nuo kitų darbų apie 3D suvokiančią vaizdų sintezę [8, 25, 7, 57], kurie taip pat naudoja neuroninio lauko vaizdavimą, mes turime tik mėginti 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ą generuojant didelės raiškos vaizdus ir garantuoja, kad bus generuojami nuoseklūs kelių vaizdų vaizdai pagal konstrukciją. 3.2 Diferencijuojamas atvaizdavimas ir apmokymas Norint prižiūrėti mūsų modelį apmokymo metu, semiamės įkvėpimo iš Nvdiffrec [ ], kuris atlieka kelių vaizdų 3D objektų rekonstrukciją naudojant diferencijuojamą renderį. Konkrečiai, mes atvaizduojame išskirtą 3D tinklelį ir tekstūros lauką į 2D vaizdus, naudodami diferencijuojamą renderį [ ], ir prižiūrime mūsų tinklą su 2D diskriminatoriumi, kuris bando atskirti vaizdą nuo realaus objekto arba generuojamo objekto. 47 37 Mes manome, kad kamerų pasiskirstymas C, kuris buvo naudojamas vaizdams duomenų rinkinyje įsigyti, yra žinomas. Norint atvaizduoti generuojamas formas, mes atsitiktinai pasirenkame kamerą iš C ir naudojame didelio efektyvumo diferencijuojamą rasterizatorių Nvdiffrast [ ], kad atvaizduotume 3D tinklelį į 2D siluetą, taip pat vaizdą, kuriame kiekvienas pikselis turi atitinkamo 3D Diferencijuojamas atvaizdavimas c 37 taško tinklelyje koordinates. Šios koordinatės toliau naudojamos tekstūros laukui užklausti, kad būtų gautos RGB reikšmės. Kadangi mes dirbame tiesiogiai su išskirtu tinkleliu, mes galime atvaizduoti didelės raiškos vaizdus su