1 Punkte von GN⁺ 2 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • GenCAD ist ein Modell, das allein aus einer Bildeingabe 3D-CAD, die vollständige parametrisierte CAD-Befehlshistorie und CAD-Programme erzeugt
  • B-rep ist für das AI-Training komplex, und Meshes, Voxel und Punktwolken erleichtern zwar die Datenbeschaffung, opfern dafür jedoch Genauigkeit und Änderbarkeit
  • Aus einem Bild kann eine parametrische CAD-Befehlssequenz erzeugt und anschließend über einen Geometrie-Kernel in ein 3D-Solid-Modell umgewandelt werden
  • Durch die Kombination aus autoregressivem Transformer, Contrastive Learning, latentem Diffusionsmodell und Decoder werden latente Repräsentationen von Bildern und CAD-Befehlen erzeugt und rekonstruiert
  • Aus demselben Bild lassen sich mehrere CAD-Samples erzeugen, außerdem wird eine bildkonditionierte Suche unterstützt, die unter rund 7.000 CAD-Programmen die Top 3 findet

Überblick

  • GenCAD ist ein bildkonditioniertes CAD-Generierungsmodell, das nicht nur 3D-CAD, sondern auch die vollständige parametrisierte CAD-Befehlshistorie und CAD-Programme ausgibt
  • CAD-Datenstrukturen wie B-rep sind komplex und erschweren ein effizientes Training von AI-Modellen; Darstellungen wie Meshes, Voxel und Punktwolken erleichtern zwar die Datenbeschaffung, opfern jedoch die Genauigkeit und Änderbarkeit echter CAD-Modelle
  • GenCAD erzeugt aus Bildern parametrische CAD-Befehlssequenzen und wandelt diese mit einem Geometrie-Kernel in 3D-Solid-Modelle um
  • Ziel ist es, präzise und bearbeitbare 3D-Modellierung, wie sie für Engineering-Arbeiten, Fertigung und die Erkundung von Designräumen benötigt wird, bildbasiert zu automatisieren

Modellaufbau und Funktionen

  • Architektur

    • Ein autoregressiver Transformer-Encoder lernt die latente Repräsentation von CAD-Befehlssequenzen
    • Ein auf Contrastive Learning basierendes Modell lernt eine gemeinsame latente Repräsentation von CAD-Befehlssequenzen und CAD-Bildern
    • Ein latentes Diffusionsmodell erzeugt, bedingt auf CAD-Bilder, die latente Repräsentation von CAD-Befehlssequenzen
    • Ein Decoder-Modell wandelt die latente CAD-Repräsentation in parametrische CAD-Befehlssequenzen um
  • CAD-Generierung

    • GenCAD kann aus Bild-Renderings CAD-Modelle erzeugen
    • Auch bei derselben Bildeingabe können mehrere CAD-Samples erzeugt werden, was Sample-Diversität ermöglicht
  • CAD-Suche

    • Unterstützt bildkonditionierte CAD-Suche und findet aus einer Sammlung von rund 7.000 CAD-Programmen die Top 3 CAD-Programme
  • Materialien

    • arXiv: GenCAD-Paper
    • Video: Demo-Video
    • Code: GenCAD-Code-Repository

1 Kommentare

 
GN⁺ 2 시간 전
Hacker-News-Kommentare
  • Ich habe es ein paar Stunden lang ausprobiert, aber bei Eingaben, die nicht aus den Trainingsdaten stammen, konnte es nicht einmal für sehr einfache Zeichnungen brauchbare Ergebnisse erzeugen.
    Auf GitHub steht, dass die Zuverlässigkeit selbst bei den eigenen Trainingsdaten nur bei etwa 60 % liegt, daher wirkt das Bild auf der Startseite ziemlich irreführend.
    Ich habe 10 Bilder mit einer den Beispielen ähnlichen Komplexität erstellt und jedes davon etwa 50-mal laufen lassen, aber kein einziges Mal hat es korrekt funktioniert; und selbst wenn es selten einmal etwas ausgegeben hat, war es völlig falsch.
    Im aktuellen Zustand ist das ziemlich misleading, und es scheint noch viel Arbeit nötig zu sein.

    • Auch die Beispiele sind verwirrend. Sie sehen alle wie perfekt gerenderte/exportierte Bilder aus 3D-Modellen aus, und gerade dafür scheint mir das nicht besonders nützlich zu sein.
      Wenn es aus handgezeichneten Skizzen parametrisierte CAD-Modelle machen würde, wäre das wirklich großartig.
  • Interessant ist es schon, aber ich bin mir über den praktischen Nutzen nicht sicher. Der zeitaufwendige Teil bei CAD-Zeichnungen besteht darin, für jedes Feature die exakten Maße, Abstände, Größen und Toleranzen festzulegen und Zwangsbedingungen so zu setzen, dass sich das Ganze später leicht ändern lässt — genau das übernimmt dieses Tool überhaupt nicht.
    Man kann zwar zeichnen, was man haben will, als 2D-Skizze eingeben und dann generieren lassen, aber den schwierigen Teil muss man am Ende weiterhin selbst erledigen.

    • Unter der Annahme, dass man sich gut mit CAD-Werkzeugen auskennt, würde ich zustimmen. Als ich zuletzt einen 3D-Drucker benutzt habe, wusste ich oft genau, was ich wollte, konnte Maße nehmen und sogar auf Papier skizzieren, und trotzdem war es in Tools wie FreeCAD häufig sehr mühsam, daraus ein ordentliches 3D-Modell zu machen.
      Mit OpenSCAD bin ich ziemlich vertraut, aber sobald es etwas komplexer wird, komme ich schnell an Grenzen. Kürzlich habe ich zum Beispiel für mein Kind einen Wasserhahn für eine Lego-Duplo-Küchenspüle gebaut.
      Wenn es ein gutes AI-/LLM-Tool gäbe, bei dem ich die Skizze und Parameter eingebe und das mir die Zeit erspart, im Web nachzuschlagen, wie man einen Kreis entlang einer Kurve extrudiert, und Tutorials dazu anzuschauen, wäre ich wirklich dankbar.
      Nebenbei: Bestehende AI-Tools funktionieren mit OpenSCAD schon ziemlich gut; wenn man also ein parametrisiertes Modell braucht, das sich aus einfachen Formen bauen lässt, kann ich diesen Workflow sehr empfehlen.
    • Gute Frage.
      In meiner früheren Firma war es ziemlich logisch, warum wir dafür viel Zeit aufgewendet haben. Punktwolken, die von qualitativ schlechten kopfmontierten Kameras erzeugt werden, machen Modelle sehr komplex.
      Wenn man sich zum Beispiel eine Punktwolke eines Ikea-LACK ansieht (https://www.ikea.com/gb/en/p/lack-nest-of-tables-set-of-2-wh...), wäre die extrem komplex. Deshalb wird schon für ein Mindestmaß an Interaktion der Rechenaufwand hoch (https://www.researchgate.net/publication/221064696/figure/fi...).
      Darum gibt es viel Forschung dazu, Punktwolken in vereinfachte „CAD“-Modelle umzuwandeln. Ein LACK-Tisch wird dann nicht mehr durch 400.000 Dreiecke dargestellt, sondern eher durch ungefähr 40.
      Ein Ansatz ist: „Diese Punktwolke sieht wie ein Tisch aus, also erzeugen wir viele mögliche Tische und prüfen, welcher passt.“ Dafür braucht man ein Verständnis von parametrischem CAD sowie ein Modell, das viele Tische mit anpassbaren Parametern erzeugen kann, bis einer passt.
      Ein möglicherweise einfacherer Weg wäre, die Punktwolke zu nehmen, ein auf CAD-Modellen trainiertes Bildmodell daraus ein 2D-Bild erzeugen zu lassen und dann mit einem solchen Tool das eigentliche Modell zu erhalten.
      Effizient ist das nicht, aber es könnte funktionieren. Es gibt allerdings auch viele weniger wünschenswerte Anwendungen, etwa automatisches Plagiieren.
    • Wie so oft bei generativer AI wirkt auch das hier wie eine Lösung für ein nicht existierendes Problem.
    • Wenn man Möbel mit dem Bleistift skizzieren, einen Knopf drücken und dann eine halbwegs brauchbare CAD-Zeichnung bekommen und weiterbearbeiten könnte, wäre das für Leute wie Schreiner ein gewaltiges Werkzeug.
    • Ich glaube eher, dass die Erzeugung von CAD in Codeform mit klaren Labels besser passen würde. Dann könnte man mit dem Messschieber alles nachprüfen und sehen, ob die Maße stimmen.
  • Als ich mir ähnliche Ansätze[0] angesehen habe, um mein CAD-AI zu verbessern, bin ich auf Dinge wie dieses hier gestoßen. Das sind Lösungen mit großem Potenzial, aber ich glaube, dass den aktuellen Projekten oder Gewichten schlicht Trainingsdaten und Trainingszeit fehlen, um bei beliebigen Modellen gut zu funktionieren.
    MeshCoder funktioniert im Wesentlichen nur bei modellenahen Trainingsdaten. GenCAD habe ich nicht ausprobiert, aber die anderen Kommentare bestätigen meinen Verdacht.
    [0]: https://daibingquan.github.io/MeshCoder/
    [1]: https://grandpacad.com

  • So etwas war mit OpenSCAD schon vor langer Zeit leicht möglich. Ich habe damit viele coole und komplexe Modelle gebaut und sogar ein Prompt-Repository erstellt, das LLMs zeigt, wie sie das machen sollen, einschließlich vieler von mir gebauter Modelle.
    https://github.com/cjtrowbridge/vibe-modeling

  • Ich wollte sehen, wie gut das mit Fotos realer Teile oder handgezeichneten Entwürfen funktioniert, aber sobald ich versucht habe, das Docker-Image einzurichten, sind mir auf alle möglichen Arten nicht installierte Abhängigkeiten um die Ohren geflogen.
    Wenn ich mir die Beispiele ansehe, vermute ich ohnehin, dass es bei Bildern, die nicht ursprünglich aus CAD erzeugt wurden, nicht gut funktioniert.

    • Ironischerweise wurde ein Docker-Image genau dafür gemacht, solche Abhängigkeitsprobleme zu vermeiden.
  • Wer so etwas interessant findet, mag wahrscheinlich auch OpenSCAD. Damit kann man 3D-CAD-Modelle per Code erzeugen.
    https://openscad.org/

  • Falls der Autor mitliest: Bitte entfernt die automatisch abspielenden Videos. Auf dem Handy reißen sie mir immer den Ton weg, wenn ich gerade etwas anderes höre.

  • Mein Open-Source-Rust-BRep-CAD-Kernel könnte ebenfalls interessant sein: https://github.com/ecto/vcad
    Eine gehostete Version gibt es unter https://vcad.io
    Ich habe auch etwas darüber geschrieben, was in einer CAD-App steckt: https://campedersen.com/tessellation

    • Ich versuche auch gerade, ein CAD-Programm in Rust zu bauen, und habe mir die gehostete Seite angesehen, aber es ist mir nicht klar, was funktioniert und was noch nicht.
      Dass eine Person in vier Monaten allein für die Rust-Crates etwa 115.000 Zeilen geschrieben hat, erscheint mir fragwürdig, und dazu kommen noch einmal 100.000 Zeilen fürs Frontend.
      Ich frage mich auch, warum „sofortige“ Tessellation gewählt wurde. Sobald man einen Kreis erzeugt, besteht er ja gleich aus vielen Liniensegmenten, und bei tangentialen Constraints scheint das schnell zu scheitern. Ich frage mich, ob das eine aktuelle Einschränkung ist oder Teil der Kernel-Strategie.
    • Ich habe vergessen zu erwähnen, dass es mit Claude verbunden ist, sodass man wie im Original über ein paar zusätzliche Schritte vibe CAD machen kann. Ich würde bald auch gern ähnliche Modelle trainieren.
      Über den ersten Versuch habe ich ebenfalls geschrieben: https://campedersen.com/cad0
  • Ich verstehe diese Art von Projekt nicht so recht. Der schwierige Teil ist nicht das Zeichnen und Modellieren, sondern die CAM-Programmierung.
    Ich habe nicht einmal ein Open-Source-Programm gefunden, das 3D-Modelle importiert und in einer UI Werkzeugpfade festlegen lässt; dass ein LLM aus einem Modell Werkzeugpfade generiert, erscheint mir noch schwieriger.

  • Vielleicht übersehe ich etwas, aber wenn es von Anfang an ein gerendertes Bild gibt, hat man das CAD wahrscheinlich sowieso schon. Tolle Demo, aber ich verstehe den Anwendungsfall nicht.

    • Man könnte es für die Generierung aus Skizzen oder zum Nachbauen von Teilen verwenden, die man nicht besitzt.