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 À medida que várias indústrias avançam na 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, visamos 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 a jusante. 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, introduzimos o GET3D, um modelo enerativo que gera diretamente malhas xplicit extured com topologia complexa, ricos detalhes geométricos e texturas de alta fidelidade. Unimos sucessos recentes na modelagem de superfícies diferenciáveis, renderização diferenciável e Redes Adversariais Generativas 2D para treinar nosso modelo a partir de coleções de imagens 2D. O GET3D é capaz de gerar malhas 3D texturizadas 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 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 é 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 pode encontrar modelos 3D em marketplaces 3D como Turbosquid [ ] ou Sketchfab [ ], criar muitos modelos 3D para, digamos, preencher um jogo ou um filme com uma multidão de personagens que parecem diferentes ainda leva um tempo significativo 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 3D generativas 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 atender aos seguintes requisitos: 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 focaram em subconjuntos dos requisitos acima, mas nenhum método até hoje atende a 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 malha em 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 [ , ] focam na extração de geometria, mas ignoram a textura. A maioria deles também requer supervisão 3D explícita. Finalmente, métodos que geram diretamente malhas 3D texturizadas [ , ] tipicamente requerem modelos de formas predefinidos e não conseguem 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 Adversariais Generativas 2D (GANs) [ , , , , ] levou ao surgimento da síntese de imagens 3D-aware [ , , , , , ]. No entanto, esta linha de trabalho visa sintetizar imagens consistentes em múltiplas vistas 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 subjacente do campo neural usando o algoritmo de cubo de marcha [ ], extrair a textura correspondente não é trivial. 45 34 35 33 29 52 7 57 8 49 51 25 39 Neste trabalho, introduzimos uma abordagem inovadora 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 xplicit extured com alta qualidade geométrica e de textura e topologia de malha arbitrária. No cerne de nossa abordagem está um processo generativo que utiliza um método de extração de superfície diferenciável [ ] 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 ú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 diretamente malhas 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 várias categorias com geometria complexa do ShapeNet [ ], Turbosquid [ ] e Renderpeople [ ], como cadeiras, motocicletas, carros, personagens humanos e edifícios. Com 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: 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 formas 3D guiada por texto usando 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 demanda 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 representações de nuvem de pontos [ , , , ], implícitas [ , ], ou octree [ ]. No entanto, esses trabalhos focam principalmente na geração de geometria e ignoram a aparência. Suas representações de saída também precisam de pós-processamento para torná-las compatíveis com mecanismos 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 semelhante ao nosso trabalho, Textured3DGAN [ , ] e DIBR [ ] geram malhas 3D texturizadas, mas formulam a geração como uma deformação de um modelo de malha, o que impede a geração de 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 depois aumentando os resultados com uma CNN 2D. No entanto, o ganho de desempenho vem ao custo de uma consistência reduzida em múltiplas vistas. 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, o GET3D gera diretamente malhas 3D texturizadas que podem ser prontamente usadas em mecanismos 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 sintetizar 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 de 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 resultante 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) propagando os gradientes do discriminador 2D para ambos os ramos geradores. Nosso modelo é ilustrado na Fig. . Nas seções a seguir, introduzimos primeiro 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 Gerador de Malhas 3D Texturizadas Atingimos o objetivo de 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 de 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. 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 marcha [ ]. A deformação da 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. Em seguida, 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 marcha diferenciáveis [ ], onde os valores SDF no espaço contínuo são calculados por uma 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 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 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 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 marcha para extrair a malha explícita. Os tetraedros de marcha 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 é avaliada apenas quando si 6= sj , portanto, é diferenciável, e o gradiente de mi,j pode ser propagado de volta para os valores SDF si e as 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 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 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 forma 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 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 no 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, nós 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 significativamente a complexidade computacional para renderizar imagens de alta resolução e garante a geração de imagens consistentes em múltiplas vistas 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 em múltiplas vistas 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 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 & 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 propagados de imagens 2D para nossos geradores 3D. g u g u u px R λ R Para remover faces internas flutuantes que não são visíveis em nenhuma das vistas, 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 Conduzimos experimentos extensivos para avaliar nosso modelo. Primeiro, comparamos a qualidade das malhas 3D texturizadas geradas pelo GET3D com os métodos existentes usando os conjuntos de dados ShapeNet [ ] e Turbosquid [ ]. Em seguida, realizamos ablations de nossas escolhas de design na Sec. . Finalmente, demonstramos a flexibilidade do GET3D adaptando-o a aplicações a jusante 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 treino (70%), validação (10%) e teste (20%), e removemos ainda do conjunto de teste formas que têm duplicatas no conjunto de treino. Para renderizar os dados de treinamento, amostramos aleatoriamente poses de câmera da hemisfera superior de cada forma. Para as categorias e , usamos 24 vistas aleatórias, enquanto para usamos 100 vistas 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 treino, 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 Animal 4 Casa Corpo Humano 2