Autores: 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) Resumo Como várias indústrias estão se movendo em direção à modelagem de mundos virtuais 3D massivos, a necessidade de ferramentas de criação de conteúdo que possam escalar em termos de quantidade, qualidade e diversidade de conteúdo 3D está se tornando evidente. Em nosso trabalho, pretendemos treinar modelos generativos 3D de alto desempenho que sintetizam malhas texturizadas que podem ser consumidas diretamente por mecanismos de renderização 3D, tornando-as imediatamente utilizáveis em aplicações downstream. Trabalhos anteriores em modelagem generativa 3D ou carecem de detalhes geométricos, são limitados na topologia de malha que podem produzir, geralmente não suportam texturas, ou utilizam renderizadores neurais no processo de síntese, o que torna seu uso em software 3D comum não trivial. Neste trabalho, introduzimos o GET3D, um modelo enerativo que gera diretamente malhas exturizadas xplícitas com topologia complexa, detalhes geométricos ricos e texturas de alta fidelidade. Combinamos o sucesso recente na modelagem de superfícies diferenciáveis, renderização diferenciável, bem como Redes Adversárias Generativas (GANs) 2D para treinar nosso modelo a partir de coleções de imagens 2D. O GET3D é capaz de gerar malhas texturizadas 3D de alta qualidade, variando de carros, cadeiras, animais, motocicletas e personagens humanos a edifícios, alcançando melhorias significativas em relação aos métodos anteriores. Nossa página do projeto: G 3D T E https://nv-tlabs.github.io/GET3D 1 Introdução Conteúdo 3D diverso e de alta qualidade está se tornando cada vez mais importante para várias indústrias, incluindo jogos, robótica, arquitetura e plataformas sociais. No entanto, a criação manual de ativos 3D é muito demorada e requer conhecimento técnico específico, bem como habilidades de modelagem artística. Um dos principais desafios é, portanto, a escala – enquanto se podem encontrar modelos 3D em marketplaces 3D como Turbosquid [ ] ou Sketchfab [ ], criar muitos modelos 3D para, digamos, popular um jogo ou um filme com uma multidão de personagens que parecem todos diferentes ainda leva um tempo significativo de artistas. 4 3 Para facilitar o processo de criação de conteúdo e torná-lo acessível a uma variedade de usuários (novatos), redes generativas 3D que podem produzir ativos 3D de alta qualidade e diversos se tornaram recentemente uma área ativa de pesquisa [ , , , , , , , , , , ]. No entanto, para serem praticamente úteis para aplicações do mundo real, os modelos generativos 3D devem idealmente satisfazer os seguintes requisitos: Eles devem ter a capacidade de gerar formas com geometria detalhada e topologia arbitrária, A saída deve ser uma malha texturizada, que é uma representação primária usada por pacotes de software gráficos padrão como Blender [ ] e Maya [ ], e Devemos ser capazes de alavancar imagens 2D para supervisão, pois elas são mais amplamente disponíveis do que formas 3D explícitas. 5 14 43 46 53 68 75 60 59 69 23 (a) (b) 15 1 (c) Trabalhos anteriores em modelagem generativa 3D se concentraram em subconjuntos dos requisitos acima, mas nenhum método até o momento os satisfaz todos (Tabela ). Por exemplo, métodos que geram nuvens de pontos 3D [ , 68, 75] geralmente não produzem texturas e precisam ser convertidos em uma malha no pós-processamento. 1 5 Métodos que geram voxels muitas vezes carecem de detalhes geométricos e não produzem texturas [ , , , ]. Modelos generativos baseados em campos neurais [ , ] se concentram na extração de geometria, mas desconsideram a textura. A maioria deles também requer supervisão 3D explícita. Finalmente, métodos que geram diretamente malhas 3D texturizadas [ , ] geralmente requerem modelos de forma predefinidos e não podem gerar formas com topologia complexa e gênero variável. 66 20 27 40 43 14 54 53 Recentemente, o rápido progresso em renderização de volume neural [ ] e Redes Adversárias Generativas (GANs) 2D [ , , , , ] levou ao surgimento da síntese de imagens 3D-aware [ , , , , , ]. No entanto, essa linha de trabalho visa sintetizar imagens consistentes em várias visualizações usando renderização neural no processo de síntese e não garante que formas 3D significativas possam ser geradas. Embora uma malha possa potencialmente ser obtida da representação de campo neural subjacente usando o algoritmo de cubo de march [ ], extrair a textura correspondente não é trivial. 45 34 35 33 29 52 7 57 8 49 51 25 39 Neste trabalho, apresentamos uma nova abordagem que visa atender a todos os requisitos de um modelo generativo 3D praticamente útil. Especificamente, propomos o GET3D, um modelo enerativo para formas 3D que gera diretamente malhas exturizadas xplícitas com alta qualidade geométrica e de textura e topologia de malha arbitrária. No centro de nossa abordagem está um processo generativo que utiliza um método diferenciável de extração de superfície [ ] e uma técnica de renderização diferenciável [ , ]. O primeiro nos permite otimizar e gerar diretamente malhas 3D texturizadas com topologia arbitrária, enquanto o segundo nos permite treinar nosso modelo com imagens 2D, aproveitando assim discriminadores poderosos e maduros desenvolvidos para síntese de imagens 2D. Como nosso modelo gera diretamente malhas e usa um renderizador gráfico (diferenciável) altamente eficiente, podemos escalar nosso modelo para treinar com resoluções de imagem de até 1024 × 1024, permitindo-nos aprender detalhes geométricos e de textura de alta qualidade. G 3D T E explícita 60 47 37 Demonstramos desempenho de ponta para geração incondicional de formas 3D em múltiplas categorias com geometria complexa do ShapeNet [ ], Turbosquid [ ] e Renderpeople [ ], como cadeiras, motocicletas, carros, personagens humanos e edifícios. Com a malha explícita como representação de saída, o GET3D também é muito flexível e pode ser facilmente adaptado para outras tarefas, incluindo: aprender a gerar efeitos de iluminação dependentes da visualização e materiais decompostos usando renderização diferenciável avançada [ ], sem supervisão, geração de formas 3D guiada por texto usando o embedding CLIP [ ]. 9 4 2 (a) 12 (b) 56 2 Trabalho Relacionado Revisamos avanços recentes em modelos generativos 3D para geometria e aparência, bem como síntese de imagens generativas 3D-aware. Nos últimos anos, modelos generativos 2D alcançaram qualidade fotorrealista em síntese de imagens de alta resolução [ , , , , , , ]. Esse progresso também inspirou pesquisas em geração de conteúdo 3D. Abordagens iniciais visavam estender diretamente os geradores CNN 2D para grades de voxels 3D [ , , , , ], mas a alta pegada de memória e a complexidade computacional das convoluções 3D dificultam o processo de geração em alta resolução. Como alternativa, outros trabalhos exploraram nuvens de pontos [ , , , ], implícitos [ , ], ou representações octree [ ]. No entanto, esses trabalhos se concentram principalmente na geração de geometria e desconsideram a aparência. Suas representações de saída também precisam ser pós-processadas para torná-las compatíveis com motores gráficos padrão. Modelos Generativos 3D 34 35 33 52 29 19 16 66 20 27 40 62 5 68 75 46 43 14 30 Mais semelhantes ao nosso trabalho, Textured3DGAN [ , ] e DIBR [ ] geram malhas 3D texturizadas, mas formulam a geração como uma deformação de uma malha modelo, o que as impede de gerar topologia complexa ou formas com gênero variável, o que nosso método pode fazer. PolyGen [ ] e SurfGen [ ] podem produzir malhas com topologia arbitrária, mas não sintetizam texturas. 54 53 11 48 41 Inspirado pelo sucesso da renderização de volume neural [ ] e representações implícitas [ , ], trabalhos recentes começaram a abordar o problema da síntese de imagem 3D-aware [ , , , , , , , , , ]. No entanto, redes de renderização de volume neural são tipicamente lentas para consultar, levando a longos tempos de treinamento [ , ], e geram imagens de resolução limitada. GIRAFFE [ ] e StyleNerf [ ] melhoram a eficiência de treinamento e renderização realizando renderização neural em uma resolução mais baixa e, em seguida, aumentando os resultados com uma CNN 2D. No entanto, o ganho de desempenho vem ao custo de uma consistência multi-visualização reduzida. Ao utilizar um discriminador duplo, EG3D [ ] pode mitigar parcialmente esse problema. Não obstante, extrair uma superfície texturizada de métodos que são baseados em renderização neural é um empreendimento não trivial. Em contraste, o GET3D gera diretamente malhas 3D texturizadas que podem ser prontamente usadas em motores gráficos padrão. Síntese de Imagem Generativa 3D-Aware 45 43 14 7 57 49 26 25 76 8 51 58 67 7 57 49 25 8 3 Método Apresentamos agora nosso framework GET3D para síntese de formas 3D texturizadas. Nosso processo de geração é dividido em duas partes: um ramo de geometria, que gera de forma diferenciável uma malha de superfície de topologia arbitrária, e um ramo de textura que produz um campo de textura que pode ser consultado nos pontos da superfície para produzir cores. Este último pode ser estendido para outras propriedades de superfície, como, por exemplo, materiais (Seção ). Durante o treinamento, um rasterizador diferenciável eficiente é utilizado para renderizar a malha texturizada extraída em imagens 2D de alta resolução. Todo o processo é diferenciável, permitindo treinamento adversarial a partir de imagens (com máscaras indicando um objeto de interesse) pela propagação dos gradientes do discriminador 2D para ambos os ramos geradores. Nosso modelo é ilustrado na Figura . Nas seções a seguir, primeiro apresentamos nosso gerador 3D na Seção , antes de prosseguir para a renderização diferenciável e as funções de perda na Seção . 4.3.1 2 3.1 3.2 3.1 Modelo Gerador de Malhas 3D Texturizadas Nosso objetivo é aprender um gerador 3D = ( ) para mapear uma amostra de uma distribuição Gaussiana M, E G z ∈ N (0*,* ) para uma malha com textura . z I M E Como a mesma geometria pode ter texturas diferentes, e a mesma textura pode ser aplicada a geometrias diferentes, amostramos dois vetores de entrada aleatórios 1 ∈ R512 e 2 ∈ R512. Seguindo StyleGAN [ , , ], usamos redes de mapeamento não lineares geo e tex para mapear 1 e 2 para vetores latentes intermediários 1 = geo( 1) e 2 = tex( 2) que são posteriormente usados para produzir que controlam a geração de formas 3D e textura, respectivamente. Introduzimos formalmente o gerador para geometria na Seção e o gerador de textura na Seção . z z 34 35 33 f f z z w f z w f z estilos 3.1.1 3.1.2 3.1.1 Gerador de Geometria Projetamos nosso gerador de geometria para incorporar o DMTet [ ], uma representação de superfície diferenciável proposta recentemente. O DMTet representa a geometria como um campo de distância sinalizado (SDF) definido em uma grade tetraédrica deformável [ , ], a partir da qual a superfície pode ser recuperada de forma diferenciável através de tetraedros de march [ ]. Deformar a grade movendo seus vértices resulta em uma melhor utilização de sua resolução. Ao adotar o DMTet para extração de superfície, podemos produzir malhas explícitas com topologia e gênero arbitrários. A seguir, fornecemos um breve resumo do DMTet e nos referimos ao artigo original para mais detalhes. 60 22 24 17 Seja ( ) denotando todo o espaço 3D em que o objeto se encontra, onde são os vértices na grade tetraédrica . Cada tetraedro ∈ é definido usando quatro vértices { }, com ∈ {1*, . . . , K*}, onde é o número total de tetraedros, e ∈ ∈ R3. Além de suas coordenadas 3D, cada vértice contém o valor SDF ∈ R e a deformação ∆ ∈ R3 do vértice a partir de sua coordenada canônica inicial. Essa representação permite recuperar a malha explícita através de tetraedros de march diferenciáveis [ ], onde os valores SDF em espaço contínuo são calculados por interpolação baricêntrica de seu valor nos vértices deformados ′ = + ∆ . 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 Mapeamos 1 ∈ R512 para valores SDF e deformações em cada vértice através de uma série de camadas convolucionais 3D condicionais e totalmente conectadas. Especificamente, primeiro usamos camadas convolucionais 3D para gerar um volume de características condicionado a 1. Em seguida, consultamos a característica em cada vértice ∈ usando interpolação trilinear e a alimentamos em MLPs que produzem o valor SDF e a deformação ∆ . Em casos onde a modelagem em alta resolução é necessária (por exemplo, motocicleta com estruturas finas nas rodas), usamos ainda subdivisão de volume seguindo [ ]. Arquitetura da Rede w v i w v i VT si v i 60 Após obter e ∆ para todos os vértices, usamos o algoritmo diferenciável de tetraedros de march para extrair a malha explícita. Os tetraedros de march determinam a topologia da malha dentro de cada tetraedro com base nos sinais de . Em particular, uma face de malha é extraída quando sign( ) /= sign( ), onde denota os índices dos vértices na aresta do tetraedro, e os vértices dessa face são determinados por uma interpolação linear como mi,j = v 0 i sj−v 0 j si sj−si . Observe que a equação acima é avaliada apenas quando si 6= sj , portanto, é diferenciável, e o gradiente de mi,j pode ser retropropagado para os valores SDF si e deformações ∆vi . Com essa representação, formas com topologia arbitrária podem ser facilmente geradas prevendo sinais diferentes de si. Extração de Malha Diferenciável si v i si si sj i, j m i,j 3.1.2 Gerador de Textura Gerar diretamente um mapa de textura consistente com a malha de saída não é trivial, pois a forma gerada pode ter um gênero e topologia arbitrários. Assim, parametrizamos a textura como um campo de textura [ ]. 50 Especificamente, modelamos o campo de textura com uma função que mapeia a localização 3D de um ponto de superfície ∈ R3, condicionado ao 2, para a cor RGB ∈ R3 nesse local. Como o campo de textura depende da geometria, condicionamos adicionalmente esse mapeamento ao código latente de geometria 1, de modo que = ( *,* 1 ⊕ 2), onde ⊕ denota concatenação. ft p w c w c ft p w w Representamos nosso campo de textura usando uma representação tri-plano, que é eficiente e expressiva na reconstrução de objetos 3D [ ] e na geração de imagens 3D-aware [ ]. Especificamente, seguimos [ , ] e usamos uma rede neural convolucional 2D condicional para mapear o código latente 1 ⊕ 2 para três planos de características ortogonais alinhados aos eixos de tamanho × × ( × 3), onde = 256 denota a resolução espacial e = 32 o número de canais. Arquitetura da Rede 55 8 8 35 w w N N C N C Dadas as características dos planos, o vetor de características f t ∈ R 32 de um ponto de superfície p é recuperado como f t = P e ρ(πe(p)), onde πe(p) é a projeção do ponto p no plano de características e e ρ(·) denota interpolação bilinear das características. Uma camada totalmente conectada adicional é então usada para mapear o vetor de características agregado f t para a cor RGB c. Observe que, diferente de outros trabalhos em síntese de imagem 3D-aware que também usam uma representação de campo neural, precisamos apenas amostrar o campo de textura nas localizações dos pontos de superfície (em oposição a amostras densas ao longo de um raio). Isso reduz drasticamente a complexidade computacional para renderizar imagens de alta resolução e garante a geração de imagens consistentes em várias visualizações por construção. 3.2 Renderização Diferenciável e Treinamento Para supervisionar nosso modelo durante o treinamento, nos inspiramos no Nvdiffrec [ ] que realiza reconstrução de objetos 3D multi-visualização utilizando um renderizador diferenciável. Especificamente, renderizamos a malha 3D extraída e o campo de textura em imagens 2D usando um renderizador diferenciável [ ], e supervisionamos nossa rede com um discriminador 2D, que tenta distinguir a imagem de um objeto real ou renderizado do objeto gerado. 47 37 Assumimos que a distribuição de câmera C usada para adquirir as imagens no conjunto de dados é conhecida. Para renderizar as formas geradas, amostramos aleatoriamente uma câmera de C, e utilizamos um rasterizador diferenciável altamente otimizado Nvdiffrast [ ] para renderizar a malha 3D em uma silhueta 2D, bem como uma imagem onde cada pixel contém as coordenadas do ponto 3D correspondente na superfície da malha. Essas coordenadas são posteriormente usadas para consultar o campo de textura para obter os valores RGB. Como operamos diretamente na malha extraída, podemos renderizar imagens de alta resolução com alta eficiência, permitindo que nosso modelo seja treinado com resolução de imagem de até 1024×1024. Renderização Diferenciável c 37 Treinamos nosso modelo usando um objetivo adversarial. Adotamos a arquitetura do discriminador do StyleGAN [ ], e usamos o mesmo objetivo GAN não saturante com regularização R1 [ ]. Empiricamente, descobrimos que usar dois discriminadores separados, um para imagens RGB e outro para silhuetas, produz melhores resultados do que um único discriminador operando em ambos. Seja o discriminador, onde pode ser uma imagem RGB ou uma silhueta. O objetivo adversarial é então definido da seguinte forma: Discriminador e Objetivo 34 42 Dx x onde ( ) é definido como ( ) = − log(1 +exp(− )), é a distribuição de imagens reais, denota renderização, e é um hiperparâmetro. Como é diferenciável, os gradientes podem ser retropropagados de imagens 2D para nossos geradores 3D. g u g u u px R λ R Para remover faces flutuantes internas que não são visíveis em nenhuma das visualizações, regularizamos ainda mais o gerador de geometria com uma perda de entropia cruzada definida entre os valores SDF dos vértices vizinhos [ ]: Regularização 47 onde denota a perda de entropia cruzada binária e denota a função sigmoide. A soma na Eq. é definida sobre o conjunto de arestas únicas S na grade tetraédrica, para as quais sign( ) /= sign( ). H σ 2 e si sj A função de perda geral é então definida como: onde é um hiperparâmetro que controla o nível de regularização. µ 4 Experimentos Realizamos experimentos extensivos para avaliar nosso modelo. Primeiro, comparamos a qualidade das malhas texturizadas 3D geradas pelo GET3D com os métodos existentes usando os conjuntos de dados ShapeNet [ ] e Turbosquid [ ]. Em seguida, fazemos a análise de nossas escolhas de design na Seção . Finalmente, demonstramos a flexibilidade do GET3D adaptando-o para aplicações downstream na Seção . Resultados experimentais adicionais e detalhes de implementação são fornecidos no Apêndice. 9 4 4.2 4.3 4.1 Experimentos em Conjuntos de Dados Sintéticos Para avaliação no ShapeNet [ ], usamos três categorias com geometria complexa – , e , que contêm 7497, 6778 e 337 formas, respectivamente. Dividimos aleatoriamente cada categoria em treinamento (70%), validação (10%) e teste (20%), e removemos ainda do conjunto de teste formas que têm duplicatas no conjunto de treinamento. Para renderizar os dados de treinamento, amostramos aleatoriamente poses de câmera da hemisfera superior de cada forma. Para as categorias e , usamos 24 visualizações aleatórias, enquanto para usamos 100 visualizações devido ao menor número de formas. Como os modelos no ShapeNet possuem apenas texturas simples, também avaliamos o GET3D em um conjunto de dados de (442 formas) coletado do TurboSquid [ ], onde as texturas são mais detalhadas e dividimos em treinamento, validação e teste conforme definido acima. Finalmente, para demonstrar a versatilidade do GET3D, também fornecemos resultados qualitativos no conjunto de dados coletado do Turbosquid (563 formas), e no conjunto de dados do Renderpeople [ ] (500 formas). Treinamos um modelo separado em cada categoria. Conjuntos de Dados 9 Carro Cadeira Motocicleta Carro Cadeira Motocicleta Animais 4 Casa Corpo Humano 2