1 pontos por GN⁺ 2023-11-29 | 1 comentários | Compartilhar no WhatsApp
  • O MeshGPT gera malhas triangulares como sequências de tokens, com o objetivo de criar malhas com arestas nítidas e triangulação concisa, como em modelos feitos por humanos
  • Ao contrário de resultados densos de iso-surfacing, ele amostra um vocabulário geométrico aprendido para produzir diretamente uma estrutura de malha mais compacta
  • Um codificador-decodificador baseado em convolução em grafos e quantização vetorial aprende primeiro um vocabulário de embeddings que captura geometria local e topologia
  • O transformador somente decodificador prevê o próximo índice com base nos embeddings anteriores e, após o treinamento, amostra sequências do vocabulário para gerar novas malhas
  • Em várias categorias, apresentou aumento de 9% em shape coverage e melhora de 30 pontos na pontuação FID, além de poder ser usado em conclusão parcial de malhas e geração de ativos 3D para cenas

Como o MeshGPT gera malhas

  • O MeshGPT trata malhas triangulares como uma sequência de triângulos, gera tokens a partir de um vocabulário geométrico aprendido e depois os decodifica em faces triangulares
  • O resultado busca uma malha clean, coherent e compact, com sharp edges e alta fidelidade como características principais
  • Em comparação com baselines existentes, ele gera malhas mais concisas enquanto preserva detalhes geométricos nítidos
    • Os baselines podem perder detalhes, criar malhas com triangulação excessiva ou produzir formas excessivamente simples
  • Em comparações quantitativas com várias categorias, mostrou resultados melhores do que métodos recentes de geração de malhas
    • shape coverage aumentou 9%
    • Pontuação FID melhorou em 30 pontos

Pipeline de treinamento e usos

  • Primeiro, aprende um vocabulário de embeddings geométricos para malhas triangulares a partir de uma grande coleção de formas
    • Usa uma rede codificador-decodificador
    • Inclui quantização vetorial no gargalo
    • Usa convolução em grafos para que os embeddings capturem informações de geometria local e topologia da malha
  • O vocabulário aprendido é composto como uma sequência, e o decodificador pode reconstruí-lo de volta em triângulos
  • O transformador é responsável pela predição de sequência de tokens do vocabulário aprendido
    • Recebe embeddings anteriores como entrada e prevê o índice do próximo embedding
    • Após o treinamento, gera malhas amostrando diretamente sequências do vocabulário
  • Quando uma malha parcial é fornecida, ele pode inferir vários resultados possíveis de shape completion
    • Também pode mostrar exemplos de conclusão enquanto o usuário edita uma malha de entrada parcial
  • Também pode ser usado para geração de ativos 3D para cenas, e há um exemplo de um cômodo preenchido com ativos criados pelo MeshGPT

Materiais e trabalhos relacionados

1 comentários

 
GN⁺ 2023-11-29
Opiniões no Hacker News
  • Acho que uma ideia realmente revolucionária se parece com isto. O artigo tem muitos detalhes, e já sabemos que transformers são escaláveis
    Acho que muitas empresas vão usar esta ideia para treinar pipelines genéricos de geração de assets 3D. Em retrospecto, a ideia de “primeiro usar convoluções de grafos para aprender um vocabulário de embeddings quantizados latentes, fazendo com que esses embeddings capturem informações locais de geometria e topologia da malha; depois ordenar esses embeddings e fazer o decodificador reconstruí-los em triângulos para reconstruir a malha de forma eficaz” parece bonita e óbvia demais
    Também acho muito legal a parte: “como uma abordagem prática para representar uma malha M para geração autorregressiva, definimos os tokens a serem gerados como uma sequência de triângulos”

    • É legal, mas, pelos padrões atuais da área de reconstrução 3D, também é uma linha de trabalho bastante comum. Eu não diria que este artigo é particularmente inovador ou excepcional
      O que realmente me atrai nessa área é https://yiconghong.me/LRM/, um grande modelo de reconstrução 3D que cria uma malha 3D a partir de uma única imagem e foi treinado com milhões de modelos 3D diversos
    • Outro ponto a notar aqui é que o treinamento leva, no máximo, cerca de 7 dias no total com 4 A100. Nem todo trabalho de ponta exige clusters em escala de datacenter
    • Alguém pode explicar o que são embeddings quantizados?
    • Dizem que “sabemos que transformers são escaláveis”, mas fico me perguntando se há evidências fortes de que outros modelos não escalam, ou se simplesmente dedicamos mais tempo aos transformers
      ResNets convolucionais também parecem escalar em visão e linguagem: (cv) https://arxiv.org/abs/2301.00808, (cv) https://arxiv.org/abs/2110.00476, (nlp) https://github.com/HazyResearch/safari
      Perceptrons multicamadas também parecem escalar: (cv) https://arxiv.org/abs/2105.01601, (cv) https://arxiv.org/abs/2105.03404
      Claro que também não há um motivo forte para abandonar atenção, mas acho que quase ninguém tentou jogar modelos de perceptron multicamadas ou convolucionais na escala de 1 bilhão de parâmetros no problema. Atenção, transformers e seu escalonamento receberam um esforço enorme, com milhares de artigos por ano, e é difícil ver esse nível em outras arquiteturas
      Uma das coisas boas do artigo The ResNet Strikes Back é que ele nos lembra de não nos deixarmos levar pelo hype e de que os avanços se combinam. Desde a época das ResNets originais, aprendemos muitas técnicas de treinamento; quando aplicamos isso às ResNets, o desempenho fica muito melhor e a diferença diminui bastante. Pelo menos é assim na área de visão que pesquiso, e, em um ambiente em que é preciso publicar artigos para sobreviver e com revisões guiadas por modas, a pesquisa tende facilmente a se concentrar em uma única direção
    • Fico curioso para saber como isto difere de técnicas semelhantes aplicadas anteriormente a sequências de DNA e RNA
  • Como engenheiro de machine learning que mexe um pouco com Blender e desenvolvimento de jogos por hobby, achei bem impressionante, mas, olhando só os exemplos limitados de móveis, ainda não parece estar em um nível prático
    Um modelador experiente conseguiria fazer uma malha dessas em menos de 5 minutos, e a geração ainda precisa ser semeada com polígonos
    Acho que o próximo passo será fazer um LLM controlar a geração da semente e adicionar um modelo de imagem à parte autorregressiva da estrutura. Aí talvez vejamos assets para jogos mobile de verdade

    • Não acho muito útil esse tipo de crítica a fluxos de trabalho com IA do tipo “um modelador experiente conseguiria fazer uma malha dessas em 5 minutos”. A maioria das pessoas não é modeladora experiente, não conhece alguém assim e não tem dinheiro para contratar uma
      Em muitos casos, mesmo que leve mais tempo do que um especialista e a qualidade seja pior, se a alternativa realista for não ter nada, uma ferramenta dessas é melhor
    • Ótimo. Então você pode me apresentar a modeladores que trabalhem sob demanda quando eu precisar e cobrem em intervalos de 5 minutos?
      Seria ótimo pagar só 1 ou 2 dólares por modelo e poder colocá-lo diretamente no meu jogo, personalizado para ele
    • Isto não é sobre modeladores experientes. Assim como Stable Diffusion não é só para artistas profissionais
      O ponto central é dar ferramentas a não especialistas e, ao mesmo tempo, libertar modeladores experientes de tarefas como criar 10 mil variações de cadeiras necessárias para futuros jogos AAA, para que possam se concentrar em trabalhos mais interessantes. Eles podem criar personagens únicos ou novos modelos futuristas que não existem nos dados de treinamento e que exigem imaginação e competência de verdade
    • Com essa topologia de malha mostrada aqui, o asset seria rejeitado em praticamente qualquer trabalho profissional. Um modelador experiente consegue fazer em 5 minutos um modelo de qualidade muito mais alta, muito mais adequado para texturização e deformação; um speed modeler conseguiria fazer algo parecido em menos de 1 minuto
      Sistemas procedurais como o Blender Geometry Nodes também já conseguem gerar variações infinitas desse tipo de modelo. Ainda assim, a velocidade do avanço é surpreendente
    • Assim como desenvolvedores experientes usam LLMs para dar o pontapé inicial em seus fluxos de trabalho, modeladores experientes também vão em breve usar ferramentas desse tipo como parte do fluxo de trabalho diário. Usuários casuais também poderão fazer coisas que antes não conseguiam, mas é quando especialistas naquele domínio de conhecimento as usam que elas realmente brilham
      Acredito que, quanto mais experiência você tiver em um caso de uso específico, mais utilidade conseguirá extrair de um modelo de machine learning
      Infelizmente, muitas vezes são exatamente essas pessoas que mais resistem à adoção, sem nem praticar até chegar a um nível em que a ferramenta seja realmente útil. Talvez parte do problema seja esperarem que isto seja uma varinha mágica. Na verdade, é apenas uma nova ferramenta como PhotoShop, Blender, Microsoft Word ou PowerPoint
      A maioria das pessoas abre esses apps, clica um pouco sem muito propósito e logo vai embora, sem voltar. Com “IA” é a mesma coisa
  • A profissão que escolhi, 3D/produção cinematográfica, hoje em dia parece estar numa trincheira de combate. É empolgante e assustador ao mesmo tempo.

    • Também dá para ver isso como scaffolding automático. Ferramentas comuns de modelagem e CAD podem incluir esse tipo de recurso para permitir um começo mais rápido.
      Outra grande vantagem é a possibilidade de composição. Se o modelo consegue gerar uma xícara e uma mesa, então ele também sabe gerar uma xícara em cima da mesa.
      Imagine poder criar engrenagens complexas e peças mecânicas sob medida para um projeto num piscar de olhos, e posicioná-las exatamente onde quiser, com a rotação desejada. É muito parecido com o modo como o GitHub Copilot funciona.
    • Nesse aspecto, não parece que os LLMs estejam muito mais à frente em animação 3D do que em programação. Eles conseguem cuspir pedaços que, isoladamente, parecem bons, mas quem precisa montar o quebra-cabeça é uma pessoa. E montar esse quebra-cabeça muitas vezes significa reescrever ou refazer a maior parte das peças.
      Por enquanto estamos seguros, mas precisamos aprender a aproveitar as novas tecnologias.
    • Se você conhece o papel de um produtor de bidding, deve imaginar as dificuldades que eles estão enfrentando. De um lado, cineastas dizem “ouvi dizer que agora a IA também fez isso”; do outro, produtores de bidding e clientes de estúdios de VFX/animação ficam correndo de um lado para o outro como se tudo tivesse virado novidade de novo.
    • CGI 3D já vinha avançando numa velocidade enorme nos últimos 30 anos, mesmo sem IA. As ferramentas de hoje são qualitativamente diferentes: escultura, simulação, rigging automático etc.
    • Como você vê os casos de uso dessa tecnologia na sua área? Fiquei curioso para saber se a qualidade parece alta.
  • Qual é a entrada? Ela transforma uma consulta em texto como “chair” em uma malha?
    Pelo que vi, parece que o principal modo de entrada e saída é completar malhas, não um simples recurso adicional.

    • Sim, é meio difícil de entender.
      A própria entrada parece ser uma malha 3D. Então parece que o modelo faz “completar formas”. Por exemplo, gera uma cadeira a partir de apenas algumas pernas. Ou, quando a forma de entrada é mais completa, talvez ele gere uma “variação”.
      Ainda assim, parece um bom ponto de partida. A qualidade é baixa, mas talvez dê para colocar como entrada a saída de outro modelo que gere texto-para-malha e usar este modelo para obter um resultado mais nítido e consistente.
    • Assim como você fornece um prompt em linguagem a um LLM apenas de linguagem, aqui você fornece a este LLM uma malha 3D a ser completada como prompt.
    • Eu também estava curioso sobre isso. Pelo diagrama, a entrada parece ser outra malha de cadeira, então achei um pouco menos interessante.
  • Parece que todos os problemas difíceis restantes que não tinham avançado muito desde os anos 90 estão esperando sua vez de serem resolvidos de alguma forma por transformers. Que época incrível.

  • O próximo avanço será uma UX para criar cenas 3D em VR diante de modelos como este. Em um ambiente com dados de treinamento, será possível gerar ambientes 3D arbitrários e praticamente permanentes.
    Modelos de difusão podem ser usados para gerar texturas.
    Mark estava certo; ele só se mexeu cedo demais.

    • Mark?
      Ah, esse Mark? hahaha, entendi.
      Não seria melhor dar o crédito a alguém como o Lecun? Certamente o fato de Mark ter apostado tudo no metaverso não foi porque ele, de alguma forma, previu que deep learning iria decolar. Nem mesmo as pessoas que treinaram os primeiros modelos tinham certeza de quão bem isso funcionaria.
  • Mesmo que isto seja “apenas” autocompletar malhas, é incrivelmente útil para artistas 3D. Hoje existe uma ruptura entre a forma de esculpir personagens e a forma de animá-los. Em geral, é necessária uma etapa demorada de retopologia do modelo.
    Uma retopologia baseada em transformer que receba uma malha bruta e entregue uma topologia limpa economizaria muito tempo.
    Outra aplicação é colocar a saída de Gaussian splatting ou de modelos de difusão no MeshGPT. Dá para obter diretamente, a partir de texto, assets utilizáveis com topologia limpa.

    • Mais do que para artistas 3D, isso será usado 99% por pessoas que nunca criaram uma malha à mão na vida. Pessoas que querem substituir a necessidade de contratar artistas 3D, por exemplo programadores que não querem ou não podem pagar um designer, arquitetos que nunca aprenderam nada além de CAD, trabalhos do tipo Fiverr etc.
      Parece que aqui as pessoas não percebem bem que estamos caminhando aos poucos para automatizar a própria automação. E os programadores que conseguirão ganhar a vida com isso serão uma fração muito pequena dos que conseguem ganhar a vida hoje.
    • É preciso entender que esse tipo de abordagem é muito sensível a dados dentro/fora da distribuição. Se você simplesmente plugar dados de usuários, provavelmente não vai funcionar direito.
    • Desculpe, mas acho que gerar topologia limpa para personagens será impossível por muito tempo.
  • Gosto desta área. O artigo inclui um site bonito, exemplos e vídeos.
    É muito mais refrescante do que o estilo de artigo com resumo denso, introdução e resultados.

  • Parece muito legal. Acho que ajudaria muito desenvolvedores indie de jogos a gerar um grande pool de assets.

    • Por causa desse tipo de tecnologia, acho que o desenvolvimento indie de jogos morreu.
      Em vez disso, grandes empresas vão criar jogos de “crie seu próprio jogo”.
      Hoje em dia os jogos indie já parecem bastante derivativos. No médio prazo, acho que as grandes empresas vão usar essa tecnologia e matar os jogos indie.
  • Uau, isso está melhorando muito. Ainda há um caminho a percorrer por causa de arestas estranhas, mas neste ponto parece mais uma questão de melhorias iterativas do que um problema algorítmico ou complexo.
    Meu pipeline ficaria muito mais rápido se eu não precisasse passar todas as malhas por uma biblioteca de geração procedural cheia de pequenos modificadores de malha conectados a drivers. Em vez disso, eu poderia colocar todas as malhas numa pasta, treinar a rede e depois pedir outras coisas no mesmo estilo. Dá para ver que não seria preciso fazer retopo nem outros trabalhos manuais, a menos que eu quisesse intervir de forma mais criativa.
    Claro que, até chegar totalmente a esse nível, a geração procedural ainda é melhor, mas é muito empolgante ver isso amadurecendo tão rápido. Espero que, por volta da showcase da Unreal do ano que vem, eles estejam falando de um novo recurso de Asset Generator.

    • Você tem alguma biblioteca de geração procedural para recomendar?