Autores: Jun Gao, NVIDIA, Universidade de Toronto, Instituto Vector (jung@nvidia.com) Tianchang Shen, NVIDIA, Universidade de Toronto, Instituto Vector (frshen@nvidia.com) Zian Wang, NVIDIA, Universidade de Toronto, Instituto Vector (zianw@nvidia.com) Wenzheng Chen, NVIDIA, Universidade de Toronto, Instituto Vector (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, Universidade de Toronto, Instituto Vector (sfidler@nvidia.com) Resumo A medida que várias indústrias se movem para a 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 torna-se evidente. Em nosso trabalho, pretendemos treinar modelos generativos 3D de alto desempenho que sintetizam malhas texturizadas que podem ser consumidas diretamente por motores de renderização 3D, tornando-se assim imediatamente utilizáveis em aplicações downstream. Trabalhos anteriores sobre modelagem generativa 3D ou carecem de detalhes geométricos, são limitados na topologia de malha que podem produzir, tipicamente 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, apresentamos GET3D, um modelo enerativo que gera diretamente malhas xplícitas exturizadas com topologia complexa, detalhes geométricos ricos e texturas de alta fidelidade. Bridamos sucessos recentes em modelagem de superfícies diferenciáveis, renderização diferenciável, bem como Redes Adversariais Generativas 2D para treinar nosso modelo a partir de coleções de imagens 2D. GET3D é capaz de gerar malhas texturizadas 3D de alta qualidade, variando de carros, cadeiras, animais, motos e personagens humanos a edifícios, alcançando melhorias significativas sobre métodos anteriores. Nossa página do projeto: G E T 3D 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 consome muito tempo e requer conhecimento técnico específico, bem como habilidades de modelagem artística. Um dos principais desafios é, portanto, a escala – enquanto se pode 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 diferentes ainda leva um tempo considerável do artista. 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 tornaram-se recentemente uma área ativa de pesquisa [ , , , , , , , , , , ]. No entanto, para serem praticamente úteis para aplicações do mundo real atuais, os modelos generativos 3D devem idealmente atender aos 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 estã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 focaram em subconjuntos dos requisitos acima, mas nenhum método até hoje cumpre todos eles (Tabela ). Por exemplo, métodos que geram nuvens de pontos 3D [ , 68, 75] tipicamente não produzem texturas e precisam ser convertidos em uma malha em pós-processamento. 1 5 Métodos que geram voxels muitas vezes carecem de detalhes geométricos e não produzem textura [ , , , ]. Modelos generativos baseados em campos neurais [ , ] focam na extração de geometria, mas desconsideram a textura. A maioria deles também requer supervisão 3D explícita. Finalmente, métodos que produzem diretamente malhas 3D texturizadas [ , ] tipicamente requerem modelos de forma pré-definidos 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 na renderização de volume neural [ ] e Redes Adversariais Generativas 2D (GANs) [ , , , , ] levou ao surgimento da síntese de imagens 3D-aware [ , , , , , ]. No entanto, esta linha de trabalho visa sintetizar imagens multi-visão consistentes 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 marchas [ ], extrair a textura correspondente não é trivial. 45 34 35 33 29 52 7 57 8 49 51 25 39 Neste trabalho, apresentamos uma abordagem inovadora que visa atender a todos os requisitos de um modelo generativo 3D praticamente útil. Especificamente, propomos GET3D, um modelo enerativo para formas 3D que produz diretamente malhas xplícitas exturizadas com alto detalhe geométrico e de textura e topologia de malha arbitrária. No coração de nossa abordagem está um processo generativo que utiliza um método de extração de superfície e diferenciável [ ] e uma técnica de renderização diferenciável [ , ]. O primeiro nos permite otimizar e produzir diretamente malhas 3D texturizadas com topologia arbitrária, enquanto o último nos permite treinar nosso modelo com imagens 2D, alavancando assim discriminadores poderosos e maduros desenvolvidos para síntese de imagens 2D. Como nosso modelo gera malhas diretamente e usa um renderizador gráfico (diferenciável) altamente eficiente, podemos escalar nosso modelo para treinar com resolução de imagem de até 1024 × 1024, permitindo-nos aprender detalhes geométricos e de textura de alta qualidade. G E T 3D explícito 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, motos, carros, personagens humanos e edifícios. Com malha explícita como representação de saída, GET3D também é muito flexível e pode ser facilmente adaptado para outras tarefas, incluindo: aprendizado para gerar efeitos de iluminação decompostos de materiais e dependentes da visão usando renderização diferenciável avançada [ ], sem supervisão, geração de forma 3D guiada por texto usando CLIP [ ] embedding. 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 na síntese de imagens de alta resolução [ , , , , , , ]. Esse progresso também inspirou a pesquisa 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 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ícitas [ , ], ou representações de octree [ ]. No entanto, esses trabalhos focam 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 imagens 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 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-visão reduzida. Ao utilizar um discriminador duplo, EG3D [ ] pode mitigar parcialmente esse problema. No entanto, extrair uma superfície texturizada de métodos baseados em renderização neural é um empreendimento não trivial. Em contraste, GET3D produz diretamente malhas 3D texturizadas que podem ser prontamente usadas em motores gráficos padrão. Síntese de Imagens Generativas 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 nossa estrutura GET3D para síntese de formas 3D texturizadas. Nosso processo de geração é dividido em duas partes: um ramo de geometria, que produz diferenciávelmente 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 (Sec. ). 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 o treinamento adversarial a partir de imagens (com máscaras indicando um objeto de interesse) propagando os gradientes do discriminador 2D para ambos os ramos geradores. Nosso modelo é ilustrado na Fig. . Nas seções seguintes, primeiro apresentamos nosso gerador 3D na Sec , antes de prosseguir para a renderização diferenciável e as funções de perda na Sec . 4.3.1 2 3.1 3.2 3.1 Modelo Generativo 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 usados posteriormente para produzir que controlam a geração de formas 3D e textura, respectivamente. Apresentamos formalmente o gerador para geometria na Sec. e o gerador de textura na Sec. . 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 DMTet [ ], uma representação de superfície diferenciável proposta recentemente. 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 diferenciávelmente por meio de tetraedros de marchas [ ]. Deformar a grade movendo seus vértices resulta em uma melhor utilização de sua resolução. Ao adotar DMTet para extração de superfície, podemos produzir malhas explícitas com topologia e gênero arbitrários. Em seguida, fornecemos um breve resumo do DMTet e nos referimos ao artigo original para mais detalhes. 60 22 24 17 Seja ( ) a denotação do espaço 3D completo onde 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 do SDF ∈ R e a deformação ∆ ∈ R3 do vértice a partir de sua coordenada canônica inicial. Esta representação permite a recuperação da malha explícita por meio de tetraedros de marchas diferenciáveis [ ], onde os valores de SDF no espaço contínuo são calculados por interpolação baricêntrica de seus valores 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 de SDF e deformações em cada vértice através de uma série de convoluções 3D condicionais e camadas totalmente conectadas. Especificamente, primeiro usamos camadas convolucionais 3D para gerar um volume de características condicionado em 1. Em seguida, consultamos a característica em cada vértice ∈ usando interpolação trilinear e a alimentamos em MLPs que produzem o valor do SDF e a deformação ∆ . Em casos onde modelagem em alta resolução é necessária (por exemplo, motos 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 de tetraedros de marchas diferenciáveis para extrair a malha explícita. Os tetraedros de marchas determinam a topologia da superfície dentro de cada tetraedro com base nos sinais de . Em particular, uma face de malha é extraída quando sign( ) /= sign( ), onde denotam 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 . Note que a equação acima só é avaliada quando si 6= sj , portanto, é diferenciável, e o gradiente de mi,j pode ser retropropagado para os valores de 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. Portanto, 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 em 2, para a cor RGB ∈ R3 nessa localização. Como o campo de textura depende da geometria, condicionamos adicionalmente esse mapeamento no 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 Dada os planos de características, o vetor de características f t ∈ R 32 de um ponto de superfície p pode ser recuperado como f t = P e ρ(πe(p)), onde πe(p) é a projeção do ponto p para o plano de características 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. Note que, diferente de outros trabalhos em síntese de imagens 3D-aware que também usam uma representação de campo neural, só precisamos 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 multi-visão consistentes por construção. 3.2 Renderização Diferenciável e Treinamento Para supervisionar nosso modelo durante o treinamento, nos inspiramos em Nvdiffrec [ ] que realiza reconstrução de objetos 3D multi-visã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 renderizada 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 usadas adicionalmente 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 de 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 & 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 de 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 Conduzimos experimentos extensivos para avaliar nosso modelo. Primeiro, comparamos a qualidade das malhas 3D texturizadas geradas por GET3D com os métodos existentes usando os conjuntos de dados ShapeNet [ ] e Turbosquid [ ]. Em seguida, fazemos ablações em nossas escolhas de design na Sec. . Finalmente, demonstramos a flexibilidade do GET3D adaptando-o para aplicações downstream na Sec. . 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 mais 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 o dividimos em treinamento, validação e teste como definido acima. Finalmente, para demonstrar a versatilidade do GET3D, também fornecemos resultados qualitativos no conjunto de dados de coletado do Turbosquid (563 formas) e no conjunto de dados de do Renderpeople [ ] (500 formas). Treinamos um modelo separado em cada categoria. Conjuntos de Dados 9 Carro Cadeira Moto Carro Cadeira Moto Animais 4 Casas Corpo Humano 2