1 points par GN⁺ 2 시간 전 | 1 commentaires | Partager sur WhatsApp
  • 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

    • arXiv : article GenCAD
    • Video: vidéo de démonstration
    • Code : dépôt de code GenCAD

1 commentaires

 
GN⁺ 2 시간 전
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

    • Les exemples eux aussi sont déroutants. Ils ressemblent tous à des images parfaitement rendues/exportées à partir de modèles 3D, ce qui ne me paraît pas être le cas d’usage le plus utile
      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 pense que c’est vrai si l’on connaît bien les outils CAD. En utilisant récemment une imprimante 3D, il m’est souvent arrivé de savoir exactement ce que je voulais, de prendre les mesures, de faire un croquis sur papier, et malgré tout de trouver très fastidieux le passage à un vrai modèle 3D dans un outil comme FreeCAD
      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
    • Bonne question
      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é
    • Comme souvent dans l’IA générative, cela ressemble aussi à une solution à un problème inexistant
    • Si l’on pouvait dessiner un meuble au crayon, appuyer sur un bouton, puis obtenir un plan CAD correct qu’on peut retoucher, ce serait un outil énorme pour des gens comme les menuisiers
    • Je pense qu’il vaudrait mieux générer du CAD sous forme de code avec des libellés clairs. On pourrait alors tout vérifier au pied à coulisse pour s’assurer que les dimensions sont bonnes
  • 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

  • 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

    • Ironiquement, une image Docker est justement censée éviter ce genre de problèmes de dépendances
  • 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

    • J’essaie moi aussi de créer un programme CAD en Rust, donc j’ai regardé le site hébergé, mais j’ai du mal à comprendre ce qui doit fonctionner et ce qui ne fonctionne pas encore
      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 oublié de le mentionner, mais c’est relié à Claude, donc on peut faire du vibe CAD en passant par quelques étapes supplémentaires, comme dans le post original. J’aimerais aussi bientôt entraîner un modèle similaire
      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

    • On pourrait l’utiliser à partir d’un croquis, ou pour reproduire une pièce qu’on ne possède pas déjà