GenCAD
(gencad.github.io)- 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
1 comentários
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
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
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
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
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
Para comparar, um dos meus projetos recentes é deste nível, e eu ainda chamaria isso de um caso bem simples[4]
Não sou um engenheiro mecânico treinado trabalhando comercialmente; sou só um programador que projeta coisas no tempo livre
[1] - https://github.com/cjtrowbridge/vibe-modeling/blob/main/outp...
[2] - https://github.com/cjtrowbridge/vibe-modeling/blob/main/outp...
[3] - https://github.com/cjtrowbridge/vibe-modeling/blob/main/outp...
[4] - https://object.ceph-eu.hswaw.net/q3k-personal/fe3e54e6df604a...
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
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
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
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