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) Kopsavilkums Tā kā vairākas nozares virzās uz masīvu 3D virtuālo pasauļu modelēšanu, kļūst acīmredzama vajadzība pēc satura izveides rīkiem, kas spēj palielināt 3D satura daudzumu, kvalitāti un daudzveidību. Savā darbā mēs cenšamies apmācīt augstas veiktspējas 3D ģeneratīvos modeļus, kas sintezē teksturētas acis, kuras var tieši patērēt 3D renderēšanas dzinēji, tādējādi tās ir tieši izmantojamas turpmākajos lietojumos. Iepriekšējie darbi par 3D ģeneratīvo modelēšanu vai nu trūkst ģeometrisku detaļu, ir ierobežoti attiecībā uz sieta topoloģiju, ko tie var radīt, parasti neatbalsta tekstūras, vai arī sintēzes procesā izmanto neironu renderētājus, kas padara to lietošanu kopējā 3D programmatūrā netriviālu. Šajā darbā mēs iepazīstinām ar GET3D, eneratīvu modeli, kas tieši ģenerē kspresīvas exturētas acis ar sarežģītu topoloģiju, bagātīgām ģeometriskām detaļām un augstas precizitātes tekstūrām. Mēs apvienojam nesenos panākumus diferencējamā virsmas modelēšanā, diferencējamā renderēšanā, kā arī 2D ģeneratīvajās adversariālajās tīklos (GAN), lai apmācītu mūsu modeli no 2D attēlu kolekcijām. GET3D spēj ģenerēt augstas kvalitātes 3D teksturētas acis, sākot no automašīnām, krēsliem, dzīvniekiem, motocikliem un cilvēku tēliem līdz ēkām, panākot ievērojamu uzlabojumu salīdzinājumā ar iepriekšējām metodēm. Mūsu projekta lapa: G E T 3D https://nv-tlabs.github.io/GET3D 1 Ievads Daudzveidīgs, augstas kvalitātes 3D saturs kļūst arvien svarīgāks vairākām nozarēm, tostarp spēlēm, robotikai, arhitektūrai un sociālajām platformām. Tomēr 3D līdzekļu manuāla izveide prasa daudz laika un prasa specifiskas tehniskās zināšanas, kā arī mākslinieciskās modelēšanas prasmes. Viens no galvenajiem izaicinājumiem ir apjoms – lai gan 3D tirgū, piemēram, Turbosquid [ ] vai Sketchfab [ ], var atrast 3D modeļus, daudzu 3D modeļu izveide, lai, piemēram, piepildītu spēli vai filmu ar dažādu tēlu pūli, joprojām prasa ievērojamu mākslinieka laiku. 4 3 Lai atvieglotu satura izveides procesu un padarītu to pieejamu dažādiem (iesācējiem) lietotājiem, 3D ģeneratīvie tīkli, kas var radīt augstas kvalitātes un daudzveidīgus 3D līdzekļus, nesen ir kļuvuši par aktīvu pētniecības virzienu [ , , , , , , , , , , ]. Tomēr, lai būtu praktiski noderīgi pašreizējiem reālās pasaules lietojumiem, 3D ģeneratīviem modeļiem ideālā gadījumā būtu jāatbilst šādām prasībām: tiem jāspēj ģenerēt formas ar detalizētu ģeometriju un patvaļīgu topoloģiju, rezultātam jābūt teksturētai acij, kas ir primārā attēlojuma forma, ko izmanto standarta grafikas programmatūras paketes, piemēram, Blender [ ] un Maya [ ], un mums jāspēj izmantot 2D attēlus uzraudzībai, jo tie ir plašāk pieejami nekā skaidras 3D formas. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Iepriekšējie darbi par 3D ģeneratīvo modelēšanu ir koncentrējušies uz iepriekš minēto prasību apakškopām, taču līdz šim neviena metode nav izpildījusi visas (Tab. ). Piemēram, metodes, kas ģenerē 3D punktu mākoņus [ , 68, 75], parasti nerada tekstūras, un tās ir jāpārveido par aci pēcapstrādē. 1 5 Metodes, kas ģenerē vokseļus, bieži vien trūkst ģeometrisku detaļu, un tās nerada tekstūru [ , , , ]. Ģeneratīvie modeļi, kas balstīti uz neironu laukiem [ , ], koncentrējas uz ģeometrijas izgūšanu, bet ignorē tekstūru. Lielākā daļa no tiem prasa arī skaidru 3D uzraudzību. Visbeidzot, metodes, kas tieši rada teksturētas 3D acis [ , ], parasti prasa iepriekš definētus formas paraugus un nevar ģenerēt formas ar sarežģītu topoloģiju un mainīgu dzimumu. 66 20 27 40 43 14 54 53 Nesenais straujais progress neironu tilpuma renderēšanā [ ] un 2D ģeneratīvajos adversariālajos tīklos (GAN) [ , , , , ] ir novedis pie 3D izpratnes attēlu sintēzes [ , , , , , ]. Tomēr šī darba virziens mērķē uz daudzskatu konsistentu attēlu sintēzi, izmantojot neironu renderēšanu sintēzes procesā, un negarantē, ka var tikt ģenerētas jēgpilnas 3D formas. Lai gan aci potenciāli var izgūt no pamatā esošās neironu lauka attēlojuma, izmantojot marshing cube algoritmu [ ], atbilstošās tekstūras izgūšana ir netriviāla. 45 34 35 33 29 52 7 57 8 49 51 25 39 Šajā darbā mēs iepazīstinām ar jaunu pieeju, kas paredzēta, lai risinātu visas praktiski noderīga 3D ģeneratīvā modeļa prasības. Konkrēti, mēs piedāvājam GET3D, eneratīvu modeli 3D formām, kas tieši rada kspresīvas exturētas acis ar augstu ģeometrisko un tekstūras detaļu līmeni un patvaļīgu sieta topoloģiju. Mūsu pieejas pamatā ir ģeneratīvs process, kas izmanto diferencējamu *ekspresīvu* virsmas izguves metodi [ ] un diferencējamu renderēšanas tehniku [ , ]. Pirmais ļauj mums tieši optimizēt un radīt teksturētas 3D acis ar patvaļīgu topoloģiju, savukārt otrais ļauj mums apmācīt mūsu modeli ar 2D attēliem, tādējādi izmantojot jaudīgus un nobriedušus diskriminatorus, kas izstrādāti 2D attēlu sintēzei. Tā kā mūsu modelis tieši ģenerē acis un izmanto ļoti efektīvu (diferencējamu) grafikas renderētāju, mēs varam viegli palielināt mūsu modeli, lai apmācītu ar attēlu G E T 3D 60 47 37 izšķirtspēju līdz 1024 × 1024, kas ļauj mums apgūt augstas kvalitātes ģeometriskās un tekstūras detaļas. Mēs demonstrējam augstākās klases veiktspēju nekonicionālai 3D formas ģenerēšanai vairākās kategorijās ar sarežģītu ģeometriju no ShapeNet [ ], Turbosquid [ ] un Renderpeople [ ], piemēram, krēsliem, motocikliem, automašīnām, cilvēku tēliem un ēkām. Ar skaidru sieta kā rezultāta attēlojumu GET3D ir arī ļoti elastīgs un to var viegli pielāgot citiem uzdevumiem, tostarp: mācīšanās ģenerēt sadalītu materiālu un skatījumu atkarīgus apgaismojuma efektus, izmantojot uzlabotu diferencējamu renderēšanu [ ], bez uzraudzības, tekstu vadīta 3D formas ģenerēšana, izmantojot CLIP [ ] iegultni. 9 4 2 (a) 12 (b) 56 2 Saistītie darbi Mēs apskatām jaunākos sasniegumus 3D ģeneratīvos modeļos ģeometrijai un izskatam, kā arī 3D izpratnes ģeneratīvu attēlu sintēzē. Pēdējos gados 2D ģeneratīvie modeļi ir sasnieguši fotoreālistisku kvalitāti augstas izšķirtspējas attēlu sintēzē [ , , , , , , ]. Šie panākumi ir iedvesmojuši arī pētījumus 3D satura ģenerēšanā. Agrīnas pieejas mērķēja uz 2D CNN ģeneratoru tiešu paplašināšanu uz 3D vokseļu režģiem [ , , , , ], taču 3D konvolūciju augstā atmiņas un aprēķinu sarežģītība kavē ģenerēšanas procesu augstā izšķirtspējā. Kā alternatīvu citas darbi ir izpētījuši punktu mākoņu [ , , , ], implicit [ , ] vai oktree [ ] attēlojumus. Tomēr šie darbi galvenokārt koncentrējas uz ģeometrijas ģenerēšanu un ignorē izskatu. Viņu rezultātu attēlojumi arī ir jāapstrādā, lai tie būtu saderīgi ar standarta grafikas dzinējiem. 3D ģeneratīvie modeļi 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Daudz līdzīgāki mūsu darbam, Textured3DGAN [ , ] un DIBR [ ] ģenerē teksturētas 3D acis, taču tie formulē ģenerēšanu kā parauga acs deformāciju, kas neļauj tiem ģenerēt sarežģītu topoloģiju vai formas ar mainīgu dzimumu, ko mūsu metode var darīt. PolyGen [ ] un SurfGen [ ] var radīt acis ar patvaļīgu topoloģiju, taču tie nesintēzē tekstūras. 54 53 11 48 41 Iedvesmojoties no neironu tilpuma renderēšanas [ ] un implicit attēlojumu [ , ] panākumiem, nesenie darbi ir sākuši risināt 3D izpratnes attēlu sintēzes problēmu [ , , , , , , , , , ]. Tomēr neironu tilpuma renderēšanas tīkli parasti ir lēni vaicājami, kas noved pie ilga apmācības laika [ , ] un rada ierobežota izšķirtspējas attēlus. GIRAFFE [ ] un StyleNerf [ ] uzlabo apmācības un renderēšanas efektivitāti, veicot neironu renderēšanu zemākā izšķirtspējā un pēc tam palielinot rezultātus ar 2D CNN. Tomēr veiktspējas pieaugums nāk ar samazinātu daudzskatu konsistenci. Izmantojot dubulto diskriminatoru, EG3D [ ] var daļēji mazināt šo problēmu. Tomēr teksturētas virsmas izgūšana no metodēm, kas balstītas uz neironu renderēšanu, ir netriviāls pasākums. Turpretim GET3D tieši rada teksturētas 3D acis, kuras var viegli izmantot standarta grafikas dzinējos. 3D-Aware ģeneratīva attēlu sintēze 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Metode Tagad mēs iepazīstinām ar mūsu GET3D sistēmu teksturētu 3D formu sintēzei. Mūsu ģenerēšanas process ir sadalīts divās daļās: ģeometrijas zars, kas diferencēti rada virsmas aci ar patvaļīgu topoloģiju, un tekstūras zars, kas rada tekstūras lauku, ko var vaicāt virsmas punktos, lai radītu krāsas. Pēdējo var paplašināt ar citām virsmas īpašībām, piemēram, materiāliem (Sec. ). Apmācības laikā tiek izmantots efektīvs diferencējamais rasterizators, lai radītu rezultātā iegūtās teksturētās acis 2D augstas izšķirtspējas attēlos. Visu procesu var diferencēt, ļaujot adversariālu apmācību no attēliem (ar maskām, kas norāda interesējošo objektu), izplatot gradientus no 2D diskriminatora uz abiem ģeneratora zariem. Mūsu modelis ir ilustrēts 2. attēlā. Turpmāk mēs vispirms iepazīstinām ar mūsu 3D ģeneratoru 3.1. punktā, pirms pārejam pie diferencējamās renderēšanas un zudumu funkcijām 3.2. punktā. 4.3.1 3.1 3D teksturētu acu ģeneratīvs modelis Mēs cenšamies iemācīties 3D ģeneratoru = ( ), lai kartētu paraugu no Gausa sadalījuma M, E G z ∈ N (0*,* ) uz aci ar tekstūru . z I M E Tā kā tā pati ģeometrija var būt dažādas tekstūras, un tā pati tekstūra var tikt uzklāta uz dažādām ģeometrijām, mēs ņemam divus nejaušus ieejas vektorus 1 ∈ R512 un 2 ∈ R512. Sekojot StyleGAN [ , , ], mēs pēc tam izmantojam nelineārus kartēšanas tīklus geo un tex, lai kartētu 1 un 2 uz starpposma latentiem vektoriem 1 = geo( 1) un 2 = tex( 2), kas tālāk tiek izmantoti, lai radītu *stilus*, kas kontrolē 3D formu un tekstūras ģenerēšanu. Mēs formāli iepazīstinām ar ģeometrijas ģeneratoru 3.1.1. punktā un tekstūras ģeneratoru 3.1.2. punktā. z z 34 35 33 f f z z w f z w f z 3.1.1 Ģeometrijas ģenerators Mēs izstrādājām mūsu ģeometrijas ģeneratoru, lai iekļautu DMTet [ ], nesen piedāvātu diferencējamu virsmas attēlojumu. DMTet attēlo ģeometriju kā zīmes attāluma lauku (SDF), kas definēts uz deformējama tetraedriskā režģa [ , ], no kura virsmu var diferencēti atjaunot, izmantojot marshing tetrahedra [ ]. Deformējot režģi, pārvietojot tā virsotnes, tiek labāk izmantota tā izšķirtspēja. Pieņemot DMTet virsmas izguvei, mēs varam radīt skaidras acis ar patvaļīgu topoloģiju un dzimumu. Tālāk mēs sniedzam īsu DMTet kopsavilkumu un atsaucamies uz oriģinālo rakstu sīkākai informācijai. 60 22 24 17 Ļaujiet ( ) apzīmēt pilnu 3D telpu, kurā objekts atrodas, kur ir tetraedriskā režģa virsotnes. Katrs tetraedrs ∈ ir definēts, izmantojot četras virsotnes { }, ar ∈ {1*, . . . , K*}, kur ir kopējais tetraedru skaits, un ∈ ∈ R3. Papildus savām 3D koordinātēm, katra virsotne satur SDF vērtību ∈ R un deformāciju ∆ ∈ R3 virsotnei no tās sākotnējās kanoniskās koordinātas. Šis attēlojums ļauj atjaunot skaidru aci, izmantojot diferencējamu marshing tetrahedra [ ], kur SDF vērtības nepārtrauktā telpā tiek aprēķinātas ar baricentrisku interpolāciju no to vērtības uz deformētajām virsotnēm ′ = + ∆ . 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 Mēs kartējam 1 ∈ R512 uz SDF vērtībām un deformācijām katrā virsotnē ar virkni nosacītu 3D konvolūciju un pilnībā savienotu slāņu palīdzību. Konkrēti, mēs vispirms izmantojam 3D konvolūciju slāņus, lai ģenerētu funkciju tilpumu, kas ir nosacīts ar 1. Pēc tam mēs vaicājam funkciju pie katras virsotnes ∈ , izmantojot trilineāro interpolāciju, un padodam to MLPl, kas rada SDF vērtību un deformāciju ∆ . Gadījumos, kad nepieciešama augstas izšķirtspējas modelēšana (piemēram, motocikli ar plānām detaļām riteņos), mēs tālāk izmantojam tilpuma sadalījumu atbilstoši [ ]. Tīkla arhitektūra w v i w v i VT si v i 60 Pēc un ∆ iegūšanas visām virsotnēm mēs izmantojam diferencējamu marshing tetrahedra algoritmu, lai izgūtu skaidru aci. Marching tetrahedra nosaka virsmas topoloģiju katrā tetraedrā, pamatojoties uz zīmēm. Konkrēti, sieta seja tiek izgūta, kad sign( ) /= sign( ), kur apzīmē virsotņu indeksus tetraedra malā, un tās sejas virsotnes tiek noteiktas ar lineāru interpolāciju kā mi,j = v 0 i sj−v 0 j si sj−si . Ņemiet vērā, ka iepriekš minētā vienādojumā tiek novērtēta tikai tad, kad si 6= sj , tādējādi tā ir diferencējama, un gradients no mi,j var tikt atpakaļ izplatīts uz SDF vērtībām si un deformācijām ∆vi . Ar šo attēlojumu formu ar patvaļīgu topoloģiju var viegli ģenerēt, paredzot dažādas si zīmes. Diferencējamā acu izguve si v i si si sj i, j m i,j 3.1.2 Tekstūras ģenerators Tieši radīt tekstūras karti, kas ir saderīga ar rezultātā iegūto aci, nav triviāli, jo ģenerētā forma var būt ar patvaļīgu dzimumu un topoloģiju. Tāpēc mēs parametrizējam tekstūru kā tekstūras lauku [ ]. 50 Konkrēti, mēs modelējam tekstūras lauku ar funkciju , kas kartē virsmas punkta 3D atrašanās vietu ∈ R3, nosacītu ar 2, uz RGB krāsu ∈ R3 šajā atrašanās vietā. Tā kā tekstūras lauks ir atkarīgs no ģeometrijas, mēs papildus nosacām šo kartēšanu ar ģeometrijas latento kodu 1, tā ka = ( *,* 1 ⊕ 2), kur ⊕ apzīmē savienošanu. ft p w c w c ft p w w Mēs attēlojam mūsu tekstūras lauku, izmantojot trīs plakņu attēlojumu, kas ir efektīvs un izteiksmīgs 3D objektu rekonstrukcijā [ ] un 3D izpratnes attēlu ģenerēšanā [ ]. Konkrēti, mēs sekojam [ , ] un izmantojam nosacītu 2D konvolūciju neironu tīklu, lai kartētu latent kodu 1 ⊕ 2 uz trim asijām paralēlām ortogonālām funkciju plaknēm × × ( × 3) izmērā, kur = 256 apzīmē telpisko izšķirtspēju un = 32 kanālu skaitu. Tīkla arhitektūra 55 8 8 35 w w N N C N C Dotajām funkciju plaknēm virsmas punkta f t ∈ R 32 funkciju vektors tiek iegūts kā f t = P e ρ(πe(p)), kur πe(p) ir punkta p projekcija uz funkciju plakni e un ρ(·) apzīmē bilineāru funkciju interpolāciju. Pēc tam tiek izmantots papildu pilnībā savienots slānis, lai agregēto funkciju vektoru f t kartētu uz RGB krāsu c. Ņemiet vērā, ka atšķirībā no citiem darbiem par 3D izpratnes attēlu sintēzi, kas arī izmanto neironu lauka attēlojumu, mums ir nepieciešams tikai paraugu ņemt tekstūras lauku virsmas punktu atrašanās vietās (atšķirībā no blīviem paraugiem pa staru). Tas ievērojami samazina aprēķinu sarežģītību augstas izšķirtspējas attēlu renderēšanai un garantē daudzskatu konsistentu attēlu ģenerēšanu pēc konstrukcijas. 3.2 Diferencējamā renderēšana un apmācība Lai uzraudzītu mūsu modeli apmācības laikā, mēs smēlāmies iedvesmu no Nvdiffrec [ ], kas veic daudzskatu 3D objektu rekonstrukciju, izmantojot diferencējamu renderētāju. Konkrēti, mēs renderējam izgūtās 3D acis un tekstūras lauku 2D attēlos, izmantojot diferencējamu renderētāju [ ], un 47 37