Mga May-akda: Jun Gao, NVIDIA, Unibersidad ng Toronto, Vector Institute (jung@nvidia.com) Tianchang Shen, NVIDIA, Unibersidad ng Toronto, Vector Institute (frshen@nvidia.com) Zian Wang, NVIDIA, Unibersidad ng Toronto, Vector Institute (zianw@nvidia.com) Wenzheng Chen, NVIDIA, Unibersidad ng 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, Unibersidad ng Toronto, Vector Institute (sfidler@nvidia.com) Abstrakto Habang ang ilang mga industriya ay patungo sa pagmomodelo ng malalaking virtual world na 3D, ang pangangailangan para sa mga kasangkapan sa paglikha ng nilalaman na maaaring mag-scale sa dami, kalidad, at pagkakaiba-iba ng 3D na nilalaman ay nagiging maliwanag. Sa aming trabaho, layunin naming sanayin ang mga performant na 3D generative model na gumagawa ng mga textured mesh na maaaring direktang gamitin ng mga 3D rendering engine, kaya agad na magagamit sa mga down-stream na aplikasyon. Ang mga naunang gawa sa 3D generative modeling ay kulang sa mga detalye ng geometry, limitado sa topology ng mesh na maaari nilang gawin, karaniwang hindi sumusuporta sa mga texture, o gumagamit ng mga neural renderer sa proseso ng synthesis, na nagpapahirap sa kanilang paggamit sa karaniwang 3D software. Sa gawaing ito, ipinakikilala namin ang GET3D, isang enerative model na direktang gumagawa ng xplicit na extured na mesh na may kumplikadong topology, mayaman na mga detalye ng geometry, at mataas na kalidad na mga texture. Pinag-uugnay namin ang mga kamakailang tagumpay sa differentiable surface modeling, differentiable rendering, at 2D Generative Adversarial Networks upang sanayin ang aming modelo mula sa mga koleksyon ng 2D na larawan. Ang GET3D ay may kakayahang gumawa ng mataas na kalidad na 3D textured mesh, mula sa mga kotse, upuan, hayop, motor, at mga karakter ng tao hanggang sa mga gusali, na nagpapakita ng makabuluhang pagpapabuti sa mga nakaraang pamamaraan. Ang aming project page: G E T 3D https://nv-tlabs.github.io/GET3D 1 Panimula Ang iba't ibang, mataas na kalidad na 3D na nilalaman ay nagiging mas mahalaga para sa maraming industriya, kabilang ang gaming, robotics, arkitektura, at mga social platform. Gayunpaman, ang manu-manong paglikha ng mga 3D asset ay napakatagal at nangangailangan ng partikular na teknikal na kaalaman pati na rin ang mga kasanayan sa pagmomodelo ng artistiko. Isa sa mga pangunahing hamon ay ang sukat – habang maaaring makahanap ng mga 3D na modelo sa mga 3D na marketplace tulad ng Turbosquid [ ] o Sketchfab [ ], ang paggawa ng maraming 3D na modelo upang, sabihin nating, punan ang isang laro o isang pelikula ng mga tauhan na lahat ay magkakaiba pa rin ay nangangailangan ng malaking oras ng artist. 4 3 Upang mapadali ang proseso ng paglikha ng nilalaman at gawin itong accessible sa iba't ibang (baguhan) na gumagamit, ang mga 3D generative network na maaaring gumawa ng mataas na kalidad at iba't ibang 3D na asset ay naging aktibong larangan ng pananaliksik kamakailan [ , , , , , , , , , , ]. Gayunpaman, upang maging praktikal na kapaki-pakinabang para sa mga kasalukuyang aplikasyon sa totoong mundo, ang mga 3D generative model ay dapat na, sa ideyal, matugunan ang mga sumusunod na kinakailangan: Dapat ay may kakayahan silang gumawa ng mga hugis na may detalyadong geometry at arbitrary topology, Ang output ay dapat na isang textured mesh, na siyang pangunahing representasyon na ginagamit ng mga karaniwang software package ng graphics tulad ng Blender [ ] at Maya [ ], at Dapat nating magamit ang mga 2D na imahe para sa superbisyon, dahil mas malawak ang mga ito kaysa sa mga explicit na 3D na hugis. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Ang mga naunang gawa sa 3D generative modeling ay nakatuon sa mga subset ng mga nabanggit na kinakailangan, ngunit walang pamamaraan hanggang ngayon ang nakakatugon sa lahat ng ito (Talaan ). Halimbawa, ang mga pamamaraan na gumagawa ng 3D point cloud [ , 68, 75] ay karaniwang hindi gumagawa ng mga texture at kailangang i-convert sa isang mesh sa post-processing. 1 5 Ang mga pamamaraan na gumagawa ng voxels ay madalas na kulang sa mga detalye ng geometry at hindi gumagawa ng texture [ , , , ]. Ang mga generative model na batay sa neural field [ , ] ay nakatuon sa pagkuha ng geometry ngunit binabalewala ang texture. Karamihan sa mga ito ay nangangailangan din ng explicit na 3D supervision. Sa wakas, ang mga pamamaraan na direktang naglalabas ng textured 3D mesh [ , ] ay karaniwang nangangailangan ng mga paunang natukoy na template ng hugis at hindi makakagawa ng mga hugis na may kumplikadong topology at variable na genus. 66 20 27 40 43 14 54 53 Kamakailan lamang, ang mabilis na pag-unlad sa neural volume rendering [ ] at 2D Generative Adversarial Networks (GANs) [ , , , , ] ay humantong sa pagtaas ng 3D-aware image synthesis [ , , , , , ]. Gayunpaman, ang linya ng trabahong ito ay naglalayong gumawa ng mga multi-view consistent na imahe gamit ang neural rendering sa proseso ng synthesis at hindi ginagarantiyahan na ang mga makabuluhang 3D na hugis ay maaaring gawin. Habang ang isang mesh ay maaaring makuha mula sa ilalim na neural field representation gamit ang marching cube algorithm [ ], ang pagkuha ng kaukulang texture ay hindi simple. 45 34 35 33 29 52 7 57 8 49 51 25 39 Sa gawaing ito, ipinakikilala namin ang isang bagong pamamaraan na naglalayong tugunan ang lahat ng mga kinakailangan ng isang praktikal na kapaki-pakinabang na 3D generative model. Sa partikular, ipinakikilala namin ang GET3D, isang enerative model para sa 3D na hugis na direktang naglalabas ng xplicit na extured na mesh na may mataas na detalye ng geometry at texture at arbitrary mesh topology. Sa puso ng aming pamamaraan ay isang proseso ng paglikha na gumagamit ng isang differentiable na pamamaraan ng pagkuha ng ibabaw [ ] at isang differentiable rendering technique [ , ]. Ang nauna ay nagbibigay-daan sa amin na direktang i-optimize at ilabas ang mga textured 3D mesh na may arbitrary topology, habang ang huli ay nagpapahintulot sa amin na sanayin ang aming modelo gamit ang mga 2D na imahe, sa gayon ay ginagamit ang malalakas at matatag na discriminator na binuo para sa 2D image synthesis. Dahil direktang gumagawa ang aming modelo ng mga mesh at gumagamit ng isang mahusay (differentiable) na graphics renderer, madali naming mapapalaki ang aming modelo upang sanayin gamit ang image G E T 3D explicit 60 47 37 resolution na kasing taas ng 1024 × 1024, na nagpapahintulot sa amin na matutunan ang mataas na kalidad na geometry at mga detalye ng texture. Nagpapakita kami ng state-of-the-art na performance para sa unconditional na 3D shape generation sa maraming kategorya na may kumplikadong geometry mula sa ShapeNet [ ], Turbosquid [ ], at Renderpeople [ ], tulad ng mga upuan, motor, kotse, karakter ng tao, at mga gusali. Sa explicit mesh bilang output representation, ang GET3D ay napaka-flexible din at madaling mai-adapt sa iba pang mga gawain, kabilang ang: pag-aaral na gumawa ng decomposed material at view-dependent lighting effects gamit ang advanced na differentiable rendering [ ], nang walang superbisyon, text-guided 3D shape generation gamit ang CLIP [ ] embedding. 9 4 2 (a) 12 (b) 56 2 Kaugnay na Trabaho Susuriin namin ang mga kamakailang pag-unlad sa mga 3D generative model para sa geometry at appearance, pati na rin ang 3D-aware generative image synthesis. Sa mga nakaraang taon, ang mga 2D generative model ay nakamit ang photorealistic na kalidad sa high-resolution image synthesis [ , , , , , , ]. Ang pag-unlad na ito ay nagbigay inspirasyon din sa pananaliksik sa 3D content generation. Ang mga unang pamamaraan ay naglalayong direktang palawakin ang 2D CNN generators sa 3D voxel grids [ , , , , ], ngunit ang mataas na memory footprint at computational complexity ng 3D convolutions ay humahadlang sa proseso ng paglikha sa mataas na resolution. Bilang alternatibo, ang iba pang mga gawa ay nag-explore ng point cloud [ , , , ], implicit [ , ], o octree [ ] na representasyon. Gayunpaman, ang mga gawaing ito ay pangunahing nakatuon sa paglikha ng geometry at binabalewala ang appearance. Ang kanilang mga output representation ay nangangailangan din ng post-processing upang gawin silang compatible sa mga karaniwang graphics engine. Mga 3D Generative Model 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Mas katulad sa aming trabaho, ang Textured3DGAN [ , ] at DIBR [ ] ay gumagawa ng textured 3D mesh, ngunit binubuo nila ang paglikha bilang isang deformation ng isang template mesh, na pumipigil sa kanila na gumawa ng kumplikadong topology o mga hugis na may iba't ibang genus, na magagawa ng aming pamamaraan. Ang PolyGen [ ] at SurfGen [ ] ay maaaring gumawa ng mesh na may arbitrary topology, ngunit hindi gumagawa ng mga texture. 54 53 11 48 41 Dahil sa tagumpay ng neural volume rendering [ ] at implicit representations [ , ], nagsimula ang mga kamakailang gawa na tugunan ang problema ng 3D-aware image synthesis [ , , , , , , , , , ]. Gayunpaman, ang mga neural volume rendering network ay karaniwang mabagal sa pag-query, na humahantong sa mahabang oras ng pagsasanay [ , ], at gumagawa ng mga imahe na may limitadong resolution. Ang GIRAFFE [ ] at StyleNerf [ ] ay nagpapabuti sa kahusayan ng pagsasanay at pag-render sa pamamagitan ng paggawa ng neural rendering sa mas mababang resolution at pagkatapos ay pag-upscale ng mga resulta gamit ang isang 2D CNN. Gayunpaman, ang pakinabang sa performance ay may kapalit na nabawasang multi-view consistency. Sa pamamagitan ng paggamit ng dual discriminator, ang EG3D [ ] ay maaaring bahagyang mabawasan ang problemang ito. Gayunpaman, ang pagkuha ng isang textured surface mula sa mga pamamaraan na batay sa neural rendering ay isang hindi simpleng gawain. Sa kabaligtaran, ang GET3D ay direktang naglalabas ng mga textured 3D mesh na madaling magagamit sa mga karaniwang graphics engine. 3D-Aware Generative Image Synthesis 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Pamamaraan Ngayon ay ipapakita namin ang GET3D framework para sa synthesizing 3D na hugis na may texture. Ang aming proseso ng paglikha ay nahahati sa dalawang bahagi: isang geometry branch, na differentiable na naglalabas ng isang surface mesh ng arbitrary topology, at isang texture branch na gumagawa ng isang texture field na maaaring i-query sa mga surface point upang makagawa ng mga kulay. Ang huli ay maaaring palawakin sa iba pang mga surface property tulad ng, halimbawa, mga materyal (Sec. ). Sa panahon ng pagsasanay, isang mahusay na differentiable rasterizer ang ginagamit upang i-render ang nagresultang textured mesh sa mga 2D na high-resolution na imahe. Ang buong proseso ay differentiable, na nagpapahintulot sa adversarial training mula sa mga imahe (na may mga maskara na nagpapahiwatig ng isang bagay na interesado) sa pamamagitan ng pagpapalaganap ng mga gradient mula sa 2D discriminator sa parehong generator branch. Ang aming modelo ay inilalarawan sa Larawan . Sa mga sumusunod, una naming ipapakilala ang aming 3D generator sa Sec , bago magpatuloy sa differentiable rendering at mga loss function sa Sec . 4.3.1 2 3.1 3.2 3.1 Generative Model ng 3D Textured Meshes Layunin naming matutunan ang isang 3D generator = ( ) upang i-mapa ang isang sample mula sa isang Gaussian distribution M, E G z ∈ N (0*,* ) sa isang mesh na may texture . z I M E Dahil ang parehong geometry ay maaaring magkaroon ng iba't ibang mga texture, at ang parehong texture ay maaaring ilapat sa iba't ibang mga geometry, nag-sample kami ng dalawang random na input vector 1 ∈ R512 at 2 ∈ R512. Kasunod ng StyleGAN [ , , ], ginagamit namin ang mga non-linear mapping network geo at tex upang i-mapa ang 1 at 2 sa mga intermediate latent vector 1 = geo( 1) at 2 = tex( 2) na mas ginagamit upang makagawa ng mga na kumokontrol sa paglikha ng mga 3D na hugis at texture, ayon sa pagkakabanggit. Pormal naming ipinakikilala ang generator para sa geometry sa Sec. at ang texture generator sa Sec. . z z 34 35 33 f f z z w f z w f z style 3.1.1 3.1.2 3.1.1 Geometry Generator Dinisenyo namin ang aming geometry generator upang isama ang DMTet [ ], isang kamakailang ipinanukalang differentiable surface representation. Nirerepresenta ng DMTet ang geometry bilang isang signed distance field (SDF) na tinukoy sa isang deformable tetrahedral grid [ , ], kung saan ang ibabaw ay maaaring differentiable na mabawi sa pamamagitan ng marching tetrahedra [ ]. Ang pag-deform ng grid sa pamamagitan ng paggalaw ng mga vertex nito ay nagreresulta sa mas mahusay na paggamit ng resolusyon nito. Sa pamamagitan ng paggamit ng DMTet para sa pagkuha ng ibabaw, maaari kaming gumawa ng mga explicit na mesh na may arbitrary topology at genus. Susunod naming ibibigay ang isang maikling buod ng DMTet at ituturo ang mambabasa sa orihinal na papel para sa karagdagang mga detalye. 60 22 24 17 Hayaan ang ( ) na magpakita ng buong 3D space kung saan matatagpuan ang bagay, kung saan ang ay ang mga vertex sa tetrahedral grid . Ang bawat tetrahedron ∈ ay tinukoy gamit ang apat na vertex { }, na may ∈ {1*, . . . , K*}, kung saan ang ay ang kabuuang bilang ng mga tetrahedron, at ang ∈ ∈ R3. Bukod sa 3D coordinate nito, ang bawat vertex ay naglalaman ng SDF value ∈ R at ang deformation ∆ ∈ R3 ng vertex mula sa kanyang paunang canonical coordinate. Ang representasyon na ito ay nagpapahintulot na mabawi ang explicit mesh sa pamamagitan ng differentiable marching tetrahedra [ ], kung saan ang mga SDF value sa patuloy na espasyo ay kinakalkula sa pamamagitan ng barycentric interpolation ng kanilang value sa mga deformed vertex ′ = + ∆ . 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 I-mapa namin ang 1 ∈ R512 sa mga SDF value at deformation sa bawat vertex sa pamamagitan ng isang serye ng conditional 3D convolutional at fully connected layers. Sa partikular, una naming ginagamit ang 3D convolutional layers upang makagawa ng isang feature volume na nakakondisyon sa 1. Pagkatapos ay ini-query namin ang feature sa bawat vertex ∈ gamit ang trilinear interpolation at ipinapasok ito sa mga MLP na naglalabas ng SDF value at ang deformation ∆ . Sa mga kaso kung saan kinakailangan ang pagmomodelo sa mataas na resolution (hal., motor na may manipis na istruktura sa mga gulong), karagdagan naming ginagamit ang volume subdivision kasunod ng [ ]. Network Architecture w v i w v i VT si v i 60 Pagkatapos makuha ang at ∆ para sa lahat ng mga vertex, ginagamit namin ang differentiable marching tetrahedra algorithm upang makuha ang explicit mesh. Tinutukoy ng Marching tetrahedra ang topology ng ibabaw sa loob ng bawat tetrahedron batay sa mga sign ng . Sa partikular, ang isang mesh face ay nakukuha kapag sign( ) /= sign( ), kung saan ang ay nagpapahiwatig ng mga index ng mga vertex sa gilid ng tetrahedron, at ang mga vertex ng mukhang iyon ay tinutukoy ng isang linear interpolation bilang mi,j = v 0 i sj−v 0 j si sj−si . Tandaan na ang equation sa itaas ay sinusuri lamang kapag si 6= sj , kaya ito ay differentiable, at ang gradient mula sa mi,j ay maaaring ma-back-propagate sa mga SDF value si at mga deformation ∆vi . Gamit ang representasyon na ito, ang mga hugis na may arbitrary topology ay madaling magagawa sa pamamagitan ng paghula ng iba't ibang mga sign ng si . Differentiable Mesh Extraction si v i si si sj i, j m i,j 3.1.2 Texture Generator Ang direktang paggawa ng isang texture map na tugma sa output mesh ay hindi simple, dahil ang nagawang hugis ay maaaring magkaroon ng arbitrary genus at topology. Samakatuwid, i-parameterize namin ang texture bilang isang texture field [ ]. 50 Sa partikular, minomodelo namin ang texture field gamit ang isang function na nagmamapa sa 3D lokasyon ng isang surface point ∈ R3, na nakakondisyon sa 2, sa RGB color ∈ R3 sa lokasyong iyon. Dahil ang texture field ay nakadepende sa geometry, karagdagan naming kinokondisyon ang mapping na ito sa geometry latent code 1, upang ang = ( *,* 1 ⊕ 2), kung saan ang ⊕ ay nagpapahiwatig ng concatenation. ft p w c w c ft p w w Nirerepresenta namin ang aming texture field gamit ang isang tri-plane representation, na mahusay at malinaw sa pag-reconstruct ng mga 3D na bagay [ ] at paglikha ng mga 3D-aware na imahe [ ]. Sa partikular, sinusundan namin ang [ , ] at gumagamit ng isang conditional 2D convolutional neural network upang i-mapa ang latent code 1 ⊕ 2 sa tatlong axis-aligned orthogonal feature plane na may sukat na × × ( × 3), kung saan ang = 256 ay nagpapahiwatig ng spatial resolution at ang = 32 ang bilang ng mga channel. Network Architecture 55 8 8 35 w w N N C N C Dahil sa mga feature plane, ang feature vector f t ∈ R 32 ng isang surface point p ay maaaring makuha bilang f t = P e ρ(πe(p)), kung saan ang πe(p) ay ang projection ng point p sa feature plane e at ang ρ(·) ay kumakatawan sa bilinear interpolation ng mga feature. Ang karagdagang fully connected layer ay ginagamit upang i-mapa ang aggregated feature vector f t sa RGB color c. Tandaan na, hindi tulad ng iba pang mga gawa sa 3D-aware image synthesis na gumagamit din ng neural field representation, kailangan lamang naming i-sample ang texture field sa mga lokasyon ng surface point (kabaligtaran ng mga dense sample sa isang ray). Ito ay lubos na nagpapababa ng computational complexity para sa pag-render ng mga high-resolution na imahe at ginagarantiyahan na makagawa ng mga multi-view consistent na imahe sa pamamagitan ng konstruksyon. 3.2 Differentiable Rendering at Pagsasanay Upang mabigyan ng superbisyon ang aming modelo sa panahon ng pagsasanay, kumukuha kami ng inspirasyon mula sa Nvdiffrec [ ] na nagsasagawa ng multi-view 3D object reconstruction sa pamamagitan ng paggamit ng isang differentiable renderer. Sa partikular, ini-render namin ang nakuha na 3D mesh at ang texture field sa mga 2D na imahe gamit ang isang differentiable renderer [ ], at binibigyan namin ng superbisyon ang aming network gamit ang isang 2D discriminator, na sumusubok na paghiwalayin ang imahe mula sa isang totoong bagay o rendered mula sa nagawang bagay. 47 37 Ipinapalagay namin na ang camera distribution C na ginamit upang makuha ang mga imahe sa dataset ay kilala. Upang i-render ang mga nagawang hugis, random kaming nag-i-sample ng isang camera mula sa C, at ginagamit namin ang isang mahusay na optimized differentiable rasterizer Nvdiffrast [ ] upang i-render ang 3D mesh sa isang 2D silhouette pati na rin ang isang imahe kung saan ang bawat pixel ay naglalaman ng mga coordinate ng kaukulang 3D Differentiable Rendering c 37 point sa surface ng mesh. Ang mga coordinate na ito ay karagdagang ginagamit upang i-query ang texture field upang makuha ang mga RGB value. Dahil direkta kaming nag-o-operate sa nakuha na mesh, maaari kaming mag-render ng mga high-resolution na imahe na may mataas na kahusayan, na nagpapahintulot sa aming modelo na masanay gamit ang image resolution na kasing taas ng 1024×1024. Sinasanay namin ang aming modelo gamit ang isang adversarial objective. Ginagamit namin ang discriminator architecture mula sa StyleGAN [ ], at ginagamit ang parehong non-saturating GAN objective na may R1 regularization [ ]. Sa empirikal naming natagpuan na ang paggamit ng dalawang hiwalay na discriminator, isa para sa mga RGB na imahe at isa pa para sa mga silhouette, ay nagbibigay ng mas magandang resulta kaysa sa isang solong discriminator na nag-o-operate sa pareho. Hayaan ang na magpakita ng discriminator, kung saan ang ay maaaring RGB na imahe o silhouette. Ang adversarial objective ay pagkatapos ay tinutukoy tulad ng sumusunod: Discriminator & Objective 34 42 Dx x kung saan ang ( ) ay tinutukoy bilang ( ) = − log(1 +exp(− )), ang ay ang distribution ng mga totoong imahe, ang ay kumakatawan sa rendering, at ang ay isang hyperparameter. Dahil ang ay differentiable, ang mga gradient ay maaaring ma-back-propagate mula sa mga 2D na imahe patungo sa aming mga 3D generator. g u g u u px R λ R Upang alisin ang mga internal na floating face na hindi nakikita sa alinman sa mga view, karagdagan naming nireregulate ang geometry generator na may cross-entropy loss na tinukoy sa pagitan ng mga SDF value ng mga magkakatabing vertex [ ]: Regularization 47