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 se movem 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 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-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 da 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 o GET3D, um modelo enerativo que gera diretamente malhas exturizadas xplícitas com topologia complexa, detalhes geométricos ricos e texturas de alta fidelidade. Bridgeamos o sucesso recente em 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 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 T 3D 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 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 [ ], a criação de 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 capazes de 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 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 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 atende a todos eles (Tabela ). Por exemplo, métodos que geram nuvens de pontos 3D [ , 68, 75] normalmente não produzem texturas e precisam ser convertidos em uma malha em pós-processamento. 1 5 Métodos que geram voxels geralmente carecem de detalhes geométricos e não produzem textura [ , , , ]. 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 produzem diretamente malhas 3D texturizadas [ , ] normalmente requerem modelos de formas pré-definidos 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 volumétrica neural [ ] e redes adversariais generativas 2D (GANs) [ , , , , ] levou ao surgimento da síntese de imagens 3D-aware [ , , , , , ]. No entanto, essa 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 a partir 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 o GET3D, um modelo enerativo para formas 3D que produz diretamente malhas exturizadas xplícitas com alto detalhe geométrico 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 *explícita* [ ] 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 imagens G T 3D E 60 47 37 de resolução tão alta quanto 1024 × 1024, permitindo-nos aprender detalhes geométricos e de textura de alta qualidade. Demonstramos desempenho de última geração 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 malha explícita como representação de saída, o GET3D também é muito flexível e pode ser facilmente adaptado a outras tarefas, incluindo: aprendendo a gerar efeitos de iluminação decompostos de material e dependentes da visualizaçã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 Trabalhos Relacionados 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 pesquisas na 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 [ , , , ], representações implícitas [ , ] ou 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 os 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 semelhante 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 volumétrica 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 volumétrica 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 depois aumentando os resultados com uma CNN 2D. No entanto, o ganho de desempenho vem ao custo de uma consistência multi-vista 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 é uma tarefa não trivial. Em contraste, o 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 nosso framework GET3D para sintetizar formas 3D texturizadas. Nosso processo de geração é dividido em duas partes: um ramo de geometria, que produz 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) propagando os gradientes do discriminador 2D para ambos os ramos do gerador. 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 funções de perda na Seção . 4.3.1 2 3.1 3.2 3.1 Modelo Generativo de Malhas 3D Texturizadas Pretendemos 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 *estilos* 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 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 com sinal (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 marchas [ ]. 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 o espaço 3D completo 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 marchas tetraédricas diferenciáveis [ ], onde os valores SDF em espaço contínuo são computados 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 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 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 subdivisão volumétrica adicionalmente 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 marchas tetraédricas diferenciáveis para extrair a malha explícita. As marchas tetraédricas 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 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 em 2, para a cor RGB ∈ R3 nesse local. 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 de 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 planos de características, 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 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, 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 muito 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 no Nvdiffrec [ ] que realiza reconstrução de objetos 3D multi-vista 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 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 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 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 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, 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 adicionalmente 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 Motocicleta Carro Cadeira Motocicleta Animais 4 Casas Corpo Humano 2