1 pontos por GN⁺ 2 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • GenCAD é um modelo que gera 3D CAD, todo o histórico de comandos CAD parametrizados e um programa CAD apenas a partir de uma imagem de entrada
  • B-rep é complexo para treinamento de IA, e malhas, voxels e nuvens de pontos facilitam a obtenção de dados, mas sacrificam precisão e possibilidade de edição
  • Após gerar uma sequência de comandos CAD parametrizados a partir de uma imagem, é possível convertê-la em um modelo sólido 3D por meio de um kernel geométrico
  • Combina um Transformer autorregressivo, aprendizado contrastivo, modelo de difusão latente e decodificador para gerar e reconstruir representações latentes de imagens e comandos CAD
  • É possível criar vários samples de CAD a partir da mesma imagem e também fazer busca condicionada por imagem para encontrar os 3 principais entre cerca de 7.000 programas CAD

Visão geral

  • GenCAD é um modelo de geração de CAD condicionado por imagem que produz não só o 3D CAD, mas também todo o histórico de comandos CAD parametrizados e o programa CAD
  • Estruturas de dados CAD como B-rep são complexas e dificultam o treinamento eficiente de modelos de IA, enquanto representações como malhas, voxels e nuvens de pontos facilitam a obtenção de dados, mas sacrificam a precisão e a possibilidade de edição dos modelos CAD reais
  • O GenCAD gera uma sequência de comandos CAD parametrizados a partir de uma imagem e a converte em um modelo sólido 3D usando um kernel geométrico
  • O objetivo é automatizar, com base em imagem, a modelagem 3D precisa e editável necessária para tarefas de engenharia, manufatura e exploração do espaço de design

Estrutura do modelo e funcionalidades

  • Arquitetura

    • Um encoder Transformer autorregressivo aprende a representação latente da sequência de comandos CAD
    • Um modelo baseado em aprendizado contrastivo aprende a representação latente conjunta entre a sequência de comandos CAD e a imagem CAD
    • Um modelo de difusão latente gera a representação latente da sequência de comandos CAD condicionada à imagem CAD
    • Um modelo decodificador converte a representação latente CAD em uma sequência de comandos CAD parametrizados
  • Geração de CAD

    • O GenCAD pode gerar um modelo CAD a partir de uma renderização de imagem como entrada
    • Mesmo com a mesma imagem de entrada, ele pode gerar vários samples de CAD, oferecendo diversidade de amostras
  • Busca de CAD

    • Suporta busca de CAD condicionada por imagem e encontra os 3 principais programas CAD em uma coleção de cerca de 7.000 programas CAD
  • Materiais

    • arXiv: artigo do GenCAD
    • Video: vídeo de demonstração
    • Code: repositório de código do GenCAD

1 comentários

 
GN⁺ 2 시간 전
Comentários do Hacker News
  • Rodei por algumas horas, mas ele não conseguiu produzir resultados utilizáveis nem para desenhos muito simples quando a entrada não fazia parte dos dados de treino
    No GitHub diz que a confiabilidade é de cerca de 60% até nos próprios dados de treino, então a imagem da tela inicial passa uma impressão bastante enganosa
    Gereis 10 imagens com complexidade parecida com a dos exemplos e executei umas 50 vezes para cada imagem, mas não houve um único caso em que funcionou direito, e quando raramente saía alguma coisa, estava completamente errado
    No estado atual, isso é bastante misleading e parece precisar de muito mais trabalho

    • Os exemplos também são confusos. Todos parecem imagens perfeitamente renderizadas/exportadas a partir de modelos 3D, o que não parece ser o uso mais útil para isso
      Seria realmente ótimo se transformasse um esboço desenhado à mão em um modelo CAD parametrizado
  • É interessante, mas não sei quão prático isso é. A parte demorada em desenhos CAD é definir as dimensões exatas, espaçamentos, tamanhos, tolerâncias etc. de cada feature e estabelecer as restrições para que seja fácil modificar depois, e isso não faz nada disso
    Dá para desenhar em 2D o que você quer e então gerar, mas no fim a parte difícil continua tendo que ser feita manualmente

    • Acho que isso é verdade partindo da premissa de que você já entende bem de ferramentas CAD. Usando impressora 3D recentemente, muitas vezes eu sabia o que queria, conseguia medir as dimensões e até fazer um esboço no papel, e mesmo assim o processo de transformar isso em um modelo 3D decente em uma ferramenta como o FreeCAD era extremamente trabalhoso
      Tenho bastante familiaridade com OpenSCAD, mas basta ficar um pouco mais complexo para eu travar bastante. Recentemente fiz uma torneira para uma pia de cozinha Lego Duplo para meu filho
      Se existisse uma boa ferramenta de IA/LLM em que eu pudesse colocar o esboço e os parâmetros e ela me poupasse do tempo gasto procurando na web e vendo tutoriais sobre como extrudar um círculo ao longo de uma curva, eu agradeceria muito
      Aliás, as ferramentas de IA existentes funcionam bem com OpenSCAD, então se você precisa de um modelo parametrizado que possa ser feito com formas simples, recomendo fortemente esse fluxo
    • Boa pergunta
      No meu antigo emprego, havia um motivo bem lógico para gastarmos muito tempo nisso. Nuvens de pontos geradas por câmeras montadas na cabeça, de baixa qualidade, acabam produzindo modelos muito complexos
      Por exemplo, se você olhar uma nuvem de pontos de uma IKEA LACK (https://www.ikea.com/gb/en/p/lack-nest-of-tables-set-of-2-wh...), ela será absurdamente complexa. Então o custo computacional fica alto só para permitir qualquer nível de interação (https://www.researchgate.net/publication/221064696/figure/fi...)
      Por isso existe muita pesquisa sobre converter nuvens de pontos em modelos “CAD” simplificados. Algo como representar uma mesa LACK com uns 40 triângulos em vez de 400 mil
      Uma abordagem é: “essa nuvem de pontos parece uma mesa, então vamos gerar vários candidatos de mesa e ver se algum encaixa”. Para isso, é preciso entender CAD paramétrico e ter um modelo capaz de criar várias mesas com parâmetros ajustáveis até encaixar
      Um caminho possivelmente mais fácil é importar a nuvem de pontos, deixar um modelo de imagem treinado em modelos CAD desenhar o modelo como imagem 2D, e então usar uma ferramenta dessas para obter o modelo real
      Não é eficiente, mas pode funcionar. Também há muitos usos menos desejáveis, como plágio automatizado
    • Como costuma acontecer no campo de IA generativa, isso também parece uma solução para um problema que não existe
    • Se alguém pudesse desenhar um móvel a lápis, apertar um botão, obter um desenho CAD razoável e depois editar, isso seria uma ferramenta enorme para pessoas como marceneiros
    • Talvez fosse melhor gerar CAD em forma de código com rótulos claros. Aí daria para pegar um paquímetro e conferir se tudo está no tamanho certo
  • Ao pesquisar para melhorar minha IA de CAD, vi tentativas parecidas com esta[0]. São soluções com grande potencial, mas acho que os projetos ou pesos atuais ainda não têm dados de treino nem tempo de treinamento suficientes para funcionar bem em modelos arbitrários
    O MeshCoder na prática só funciona em modelos baseados nos dados de treino. Não usei o GenCAD, mas os outros comentários confirmaram minha suspeita
    [0]: https://daibingquan.github.io/MeshCoder/
    [1]: https://grandpacad.com

  • Esse tipo de coisa já dava para fazer facilmente com OpenSCAD há muito tempo. Já criei muitos modelos legais e complexos assim, e também montei um repositório de prompts mostrando ao LLM como fazer, incluindo muitos modelos que eu mesmo criei
    https://github.com/cjtrowbridge/vibe-modeling

  • Eu queria ver quão bem isso funciona com fotos de peças reais ou desenhos à mão, mas assim que tentei configurar a imagem Docker, várias dependências começaram a falhar de tudo quanto é jeito
    Pelos exemplos, fico com a suspeita de que ele não funciona bem se a imagem não tiver sido gerada originalmente em CAD

    • Ironicamente, a imagem Docker existe justamente para evitar esse tipo de problema de dependência
  • Quem achar isso interessante provavelmente também vai gostar de OpenSCAD. Dá para gerar modelos CAD 3D em código
    https://openscad.org/

  • Se o autor estiver vendo isso, eu adoraria que removesse os vídeos com reprodução automática. No celular, eles sempre sequestram o áudio e interrompem o que eu estava ouvindo

  • Meu kernel CAD BRep open source em Rust também pode ser interessante: https://github.com/ecto/vcad
    A versão hospedada está em https://vcad.io
    Também escrevi um pouco sobre o que entra em um app CAD: https://campedersen.com/tessellation

    • Também estou tentando criar um programa CAD em Rust, então fui ver o site hospedado, mas não ficou claro para mim o que já funciona e o que ainda não funciona
      Acho suspeito que uma pessoa tenha escrito cerca de 115 mil linhas só de crates Rust em 4 meses, e ainda mais umas 100 mil linhas separadas no frontend
      Também fiquei curioso sobre por que foi escolhida a tesselação “imediata”. Assim que você cria um círculo, já aparecem vários segmentos de reta parecendo um círculo, e em restrições de tangência isso parece algo que falharia muito rápido. Fico em dúvida se isso é uma limitação atual ou parte da estratégia do kernel
    • Esqueci de mencionar: ele está conectado ao Claude, então dá para fazer vibe CAD passando por mais algumas etapas, como no post original. Quero treinar um modelo parecido em breve também
      Também escrevi sobre a primeira tentativa: https://campedersen.com/cad0
  • Não entendo muito bem esse tipo de coisa. A parte difícil não é fazer o desenho ou a modelagem, e sim a programação CAM
    Eu nem consegui encontrar um programa open source que importe um modelo 3D e permita configurar trajetórias de ferramenta na UI, então um LLM gerar trajetórias de ferramenta a partir do modelo parece ainda mais difícil

  • Posso estar deixando passar algo, mas se já existe uma renderização da imagem desde o começo, então provavelmente o CAD já existe também. É um demo legal, mas não entendo qual seria o caso de uso

    • Dá para usar para gerar a partir de um esboço ou para replicar uma peça que você não tem