GenCAD
(gencad.github.io)- GenCAD est un modèle qui, à partir d’une simple image en entrée, génère de la CAO 3D, ainsi que l’historique complet des commandes CAO paramétrées et le programme CAO
- Le B-rep est complexe pour l’apprentissage par IA, tandis que les maillages, voxels et nuages de points facilitent l’obtention des données au prix de la précision et de la capacité de modification
- Après avoir généré depuis une image une séquence de commandes CAO paramétriques, il est possible de la convertir en modèle solide 3D via un noyau géométrique
- Il combine un Transformer autorégressif, l’apprentissage contrastif, un modèle de diffusion latente et un décodeur pour générer et reconstruire des représentations latentes d’images et de commandes CAO
- Il peut produire plusieurs échantillons CAO à partir d’une même image et prend aussi en charge une recherche conditionnée par l’image pour retrouver les 3 meilleurs résultats parmi environ 7 000 programmes CAO
Aperçu
- GenCAD est un modèle de génération CAO conditionnée par l’image, qui produit non seulement de la CAO 3D, mais aussi l’historique complet des commandes CAO paramétrées et le programme CAO
- Les structures de données CAO comme le B-rep sont complexes, ce qui rend difficile l’apprentissage efficace de modèles d’IA, tandis que des représentations comme les maillages, voxels et nuages de points facilitent l’accès aux données, mais au détriment de la précision et de la modifiabilité des modèles CAO réels
- GenCAD génère depuis une image une séquence de commandes CAO paramétriques, puis la convertit en modèle solide 3D à l’aide d’un noyau géométrique
- L’objectif est d’automatiser, à partir d’images, la modélisation 3D précise et modifiable nécessaire aux travaux d’ingénierie, à la fabrication et à l’exploration de l’espace de conception
Architecture du modèle et fonctionnalités
-
Architecture
- Un encodeur Transformer autorégressif apprend la représentation latente des séquences de commandes CAO
- Un modèle fondé sur l’apprentissage contrastif apprend une représentation latente conjointe entre les séquences de commandes CAO et les images CAO
- Un modèle de diffusion latente génère la représentation latente des séquences de commandes CAO à condition d’images CAO
- Un décodeur convertit la représentation latente CAO en séquence de commandes CAO paramétriques
-
Génération CAO
- GenCAD peut générer un modèle CAO à partir d’un rendu d’image en entrée
- Même avec une même image en entrée, il peut produire plusieurs échantillons CAO, offrant ainsi une diversité d’échantillons
-
Recherche CAO
- Il prend en charge la recherche de CAO conditionnée par l’image et retrouve les 3 meilleurs programmes CAO dans une collection d’environ 7 000 programmes CAO
-
Ressources
1 commentaires
Avis Hacker News
Je l’ai fait tourner pendant quelques heures, mais sur des entrées qui ne faisaient pas partie des données d’entraînement, il n’a pas réussi à produire de résultats exploitables, même pour des dessins très simples
Sur GitHub, il est indiqué qu’il atteint une fiabilité d’environ 60 % même sur ses propres données d’entraînement, donc l’image de la page d’accueil donne une impression assez trompeuse
J’ai créé 10 images d’une complexité comparable aux exemples et lancé chaque image une cinquantaine de fois, sans aucun cas de fonctionnement correct, et quand il produisait quelque chose, c’était complètement faux
En l’état, c’est assez trompeur, et il semble qu’il faille encore beaucoup de travail
Si cela permettait de créer un modèle CAD paramétrique à partir d’un croquis à main levée, ce serait vraiment bien
C’est intéressant, mais je ne suis pas sûr de l’utilité pratique. Dans un dessin CAD, ce qui prend du temps, c’est de définir précisément les dimensions, espacements, tailles, tolérances, etc. de chaque feature, puis de poser les contraintes pour pouvoir modifier facilement le tout par la suite, et ça ne fait rien de tout ça
On peut sans doute dessiner en 2D ce qu’on veut puis le générer, mais au final la partie difficile reste à faire soi-même
Je suis assez à l’aise avec OpenSCAD, mais dès que ça devient un peu plus complexe, ça bloque vite. Récemment, j’ai fabriqué pour mon enfant un robinet pour un évier de cuisine Lego Duplo
S’il existait un bon outil IA/LLM dans lequel on entre un croquis et des paramètres, et qui me ferait gagner le temps passé à chercher sur le web comment extruder un cercle le long d’une courbe et à regarder des tutoriels, j’en serais vraiment reconnaissant
À noter que les outils IA existants s’en sortent déjà plutôt bien avec OpenSCAD, donc si vous avez besoin d’un modèle paramétrique réalisable avec des formes simples, je recommande fortement cette approche
Dans un ancien poste, il y avait une raison assez logique pour laquelle nous passions beaucoup de temps là-dessus. Les nuages de points générés par des caméras montées sur la tête de mauvaise qualité produisent des modèles très complexes
Par exemple, si l’on regarde un nuage de points d’une Ikea LACK (https://www.ikea.com/gb/en/p/lack-nest-of-tables-set-of-2-wh...), ce sera extrêmement complexe. Donc le moindre niveau d’interaction devient coûteux en calcul (https://www.researchgate.net/publication/221064696/figure/fi...)
C’est pourquoi il existe beaucoup de recherches visant à convertir des nuages de points en modèles “CAD” simplifiés. Une table LACK peut ainsi être représentée par environ 40 triangles au lieu de 400 000
Une approche consiste à se dire : « ce nuage de points ressemble à une table, générons beaucoup de tables candidates et voyons si l’une correspond ». Pour cela, il faut comprendre le CAD paramétrique et disposer d’un modèle capable de générer de nombreuses tables avec des paramètres ajustables jusqu’à trouver la bonne correspondance
Une méthode potentiellement plus simple serait de prendre un nuage de points, de laisser un modèle d’image entraîné sur des modèles CAD le dessiner en 2D, puis d’utiliser un outil comme celui-ci pour obtenir le modèle réel
Ce ne serait pas efficace, mais ça pourrait fonctionner. Il y a aussi beaucoup d’usages moins souhaitables, comme le plagiat automatisé
En regardant ce sujet pour améliorer mon IA CAD, j’ai vu des tentatives similaires[0]. Ce sont des approches au fort potentiel, mais je pense que les projets ou poids actuels n’ont pas encore assez de données d’entraînement ni de temps d’entraînement pour bien fonctionner sur des modèles arbitraires
MeshCoder ne fonctionne pratiquement que sur des modèles issus de ses données d’entraînement. Je n’ai pas essayé GenCAD, mais les autres commentaires confirment mes soupçons
[0]: https://daibingquan.github.io/MeshCoder/
[1]: https://grandpacad.com
On pouvait déjà faire ce genre de choses facilement avec OpenSCAD depuis longtemps. J’ai créé de nombreux modèles complexes et élégants de cette manière, et j’ai même constitué un dépôt de prompts pour montrer au LLM comment procéder, avec beaucoup de modèles que j’ai moi-même réalisés
https://github.com/cjtrowbridge/vibe-modeling
Pour comparer, l’une de mes conceptions récentes ressemble à ça, et je la qualifierais encore de cas très simple[4]
Je ne suis pas un ingénieur mécanicien de formation travaillant dans le commerce, juste un programmeur qui conçoit des choses sur son temps libre
[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...
J’aurais voulu voir à quel point cela fonctionne bien à partir de photos réelles de pièces ou de dessins à la main, mais dès que j’ai essayé de configurer l’image Docker, des dépendances non installées ont commencé à casser dans tous les sens
À voir les exemples, je soupçonne que cela ne fonctionne pas bien dès qu’on ne part pas d’images générées en CAD
Si ce genre de choses vous intéresse, il y a de fortes chances que vous aimiez aussi OpenSCAD. On peut y générer des modèles CAD 3D en code
https://openscad.org/
Si l’auteur lit ceci, j’aimerais qu’il supprime la vidéo en lecture automatique. Sur téléphone, elle interrompt toujours ce que j’écoute en prenant le contrôle du son
Mon noyau CAD BRep open source en Rust peut aussi être intéressant : https://github.com/ecto/vcad
La version hébergée est disponible sur https://vcad.io
J’ai aussi un peu écrit sur ce qui entre dans la composition d’une app CAD : https://campedersen.com/tessellation
Le fait qu’une seule personne ait écrit environ 115 000 lignes de crates Rust en 4 mois me rend sceptique, et encore plus avec 100 000 lignes de frontend en plus
Je me demande aussi pourquoi avoir choisi une tessellation “immédiate”. Dès qu’on crée un cercle, il est déjà remplacé par plusieurs segments qui lui ressemblent, et j’ai l’impression que des contraintes de tangence échoueraient très vite. Je me demande si c’est une limite actuelle ou un élément de la stratégie du noyau
J’ai aussi écrit sur ma première tentative : https://campedersen.com/cad0
J’ai du mal à comprendre ce type d’approche. La partie difficile n’est pas le dessin technique ou la modélisation, c’est la programmation CAM
Je n’ai même pas trouvé de programme open source permettant d’importer un modèle 3D et de définir des trajectoires d’outil dans une UI, donc demander à un LLM de générer les trajectoires à partir du modèle me paraît encore plus difficile
Il y a peut-être quelque chose qui m’échappe, mais s’il existe déjà un rendu d’image au départ, il y a de fortes chances qu’on ait déjà le CAD aussi. C’est une démo sympa, mais je ne vois pas bien le cas d’usage