- MeshGPT erzeugt Dreiecks-Meshes als Tokensequenzen und zielt auf die Generierung von Meshes mit scharfen Kanten und kompakter Triangulierung, ähnlich wie von Menschen erstellte Modelle
- Anders als dichte Iso-Surfacing-Ergebnisse erzeugt es durch das Sampling eines gelernten Geometrie-Vokabulars direkt eine kompaktere Mesh-Struktur
- Ein Encoder-Decoder auf Basis von Graph Convolution und Vektorquantisierung lernt zunächst ein Einbettungs-Vokabular, das lokale Geometrie und Topologie enthält
- Ein reiner Decoder-Transformer sagt auf Basis vorheriger Einbettungen den nächsten Index voraus und erzeugt nach dem Training neue Meshes, indem er Sequenzen aus dem Vokabular sampelt
- In verschiedenen Kategorien wurden eine Steigerung der shape coverage um 9 % und eine Verbesserung des FID-Werts um 30 Punkte gezeigt; außerdem ist der Ansatz für partielle Mesh-Vervollständigung und die Erzeugung von 3D-Assets für Szenen nutzbar
Wie MeshGPT Meshes erzeugt
- MeshGPT betrachtet Dreiecks-Meshes als Dreieckssequenzen, erzeugt Tokens aus einem gelernten Geometrie-Vokabular und dekodiert diese anschließend in Dreiecksflächen
- Das Ergebnis zielt auf clean, kohärente und kompakte Meshes ab; scharfe Kanten und hohe Detailtreue sind die zentralen Merkmale
- Im Vergleich zu bestehenden Baselines erzeugt es kompaktere Meshes und bewahrt dabei scharfe geometrische Details
- Baselines übersehen teils Details, erzeugen übermäßig triangulierte Meshes oder geben zu stark vereinfachte Formen aus
- Quantitative Vergleiche über verschiedene Kategorien hinweg zeigen bessere Ergebnisse als aktuelle Methoden zur Mesh-Generierung
- shape coverage um 9 % erhöht
- FID-Wert um 30 Punkte verbessert
Trainingspipeline und Einsatzmöglichkeiten
- Zunächst wird auf einer großen Shape-Sammlung ein Geometrie-Einbettungs-Vokabular für Dreiecks-Meshes gelernt
- Verwendet wird ein Encoder-Decoder-Netzwerk
- Es enthält Vektorquantisierung im Bottleneck
- Durch Graph Convolution kodieren die Einbettungen Informationen über lokale Mesh-Geometrie und Topologie
- Das gelernte Vokabular ist als Sequenz aufgebaut, und der Decoder kann diese wieder in Dreiecke rekonstruieren
- Der Transformer übernimmt die Vorhersage von Tokensequenzen des gelernten Vokabulars
- Er erhält frühere Einbettungen als Eingabe und sagt den Index der nächsten Einbettung voraus
- Nach abgeschlossenem Training erzeugt er Meshes, indem er Sequenzen direkt aus dem Vokabular sampelt
- Wenn ein partielles Mesh gegeben ist, lassen sich mehrere mögliche Ergebnisse für die shape completion ableiten
- Auch während ein Nutzer ein partielles Eingabe-Mesh bearbeitet, können Beispiele für Vervollständigungen gezeigt werden
- Der Ansatz kann auch zur Erzeugung von 3D-Assets für Szenen verwendet werden; es gibt ein Beispiel, in dem ein Raum mit von MeshGPT erzeugten Assets gefüllt wurde
Materialien und verwandte Arbeiten
- Relevante Materialien
- Ebenfalls erwähnte verwandte Arbeiten
- PolyGen: An Autoregressive Generative Model of 3D Meshes: erzeugt Meshes mit einem Transformer zur Punkterzeugung und einem Transformer zur Face-Erzeugung unter Nutzung eines Pointer Network
- BSP-Net: ein Netzwerk zur Erzeugung kompakter Meshes mittels binary space partitioning
- AtlasNet: A Papier-Mâché Approach to Learning 3D Surface Generation: stellt 3D-Shapes als Menge parametrischer Oberflächenelemente dar
- Mesh Diffusion: verwendet ein 3D diffusion model für die Erzeugung von 3D-Meshes, die durch deformable marching tetrahedra parametrisiert sind
1 Kommentare
Hacker-News-Kommentare
So sieht meiner Meinung nach eine wirklich revolutionäre Idee aus. Das Paper steckt voller Details, und wir wissen bereits, dass Transformer skalieren können.
Ich denke, viele Unternehmen werden diese Idee nutzen, um eine allgemeine 3D-Asset-Generierungspipeline zu trainieren. Die Idee, „zuerst mit Graph-Convolutions ein Vokabular latenter quantisierter Embeddings zu lernen und diese Embeddings lokale Mesh-Geometrie und Topologieinformationen erfassen zu lassen; diese Embeddings zu sequenzieren und den Decoder sie als Dreiecke rekonstruieren zu lassen, um das Mesh effektiv wiederherzustellen“, wirkt im Rückblick so schön und offensichtlich.
Auch der Teil „als praktischer Ansatz zur Darstellung eines Meshes M für autoregressive Generierung definieren wir die zu generierenden Tokens als Sequenz von Dreiecken“ ist wirklich großartig.
Was mich in diesem Bereich wirklich interessiert, ist https://yiconghong.me/LRM/, ein großes 3D-Rekonstruktionsmodell, das aus einem einzelnen Bild ein 3D-Mesh erzeugt und auf Millionen unterschiedlicher 3D-Modelle trainiert wurde.
Convolutional ResNets scheinen sowohl in Vision als auch in Sprache zu skalieren: (cv) https://arxiv.org/abs/2301.00808, (cv) https://arxiv.org/abs/2110.00476, (nlp) https://github.com/HazyResearch/safari
Mehrschicht-Perzeptrons scheinen ebenfalls zu skalieren: (cv) https://arxiv.org/abs/2105.01601, (cv) https://arxiv.org/abs/2105.03404
Natürlich gibt es auch keinen zwingenden Grund, Attention aufzugeben, aber ich glaube, kaum jemand hat ein MLP- oder Convolution-Modell mit einer Milliarde Parametern auf das Problem geworfen. In Attention, Transformer und deren Skalierung ist ein enormer Aufwand geflossen, mit Tausenden Papers pro Jahr; bei anderen Architekturen sieht man dieses Niveau kaum.
Einer der Gründe, warum das Paper The ResNet Strikes Back gut ist: Es erinnert daran, sich nicht vom Hype mitreißen zu lassen und dass Fortschritte miteinander kombiniert werden. Seit den ursprünglichen ResNet-Zeiten haben wir viel über Trainingstechniken gelernt; wendet man sie auf ResNets an, steigt die Leistung deutlich und die Lücke schrumpft stark. Zumindest gilt das in dem Vision-Bereich, in dem ich forsche, und in einem Umfeld, in dem man Papers veröffentlichen muss, um zu überleben, sowie mit trendgetriebenen Reviews kann Forschung leicht in eine Richtung gedrängt werden.
Als Machine-Learning-Engineer, der auch ein bisschen Blender nutzt und hobbymäßig Spiele entwickelt, finde ich das ziemlich beeindruckend, aber anhand der begrenzten Möbelbeispiele ist es noch nicht wirklich praxistauglich.
Ein erfahrener Modeler könnte so ein Mesh in unter 5 Minuten erstellen, und die Generierung muss weiterhin mit Polygonen geseedet werden.
Der nächste Schritt dürfte sein, dass ein LLM die Seed-Erzeugung steuert und ein Bildmodell zum autoregressiven Teil der Struktur hinzukommt. Dann könnten wir vielleicht echte Assets für Mobile Games sehen.
In vielen Fällen ist so ein Tool besser, selbst wenn es länger dauert und schlechtere Qualität liefert als ein Profi, wenn die realistische Alternative gar nichts ist.
Es wäre wirklich toll, wenn ich nur 1–2 Dollar pro Modell zahlen und es direkt maßgeschneidert in mein Spiel einbauen könnte.
Der Punkt ist, Nicht-Profis Werkzeuge zu geben und gleichzeitig erfahrene Modeler von Aufgaben wie 10.000 Stuhlvarianten für künftige AAA-Spiele zu befreien, damit sie sich auf interessantere Dinge konzentrieren können. Sie können einzigartige Charaktere oder neue futuristische Modelle erstellen, die nicht in den Trainingsdaten enthalten sind und echte Vorstellungskraft und Expertise erfordern.
Prozedurale Systeme wie Blender Geometry Nodes können bereits endlose Varianten solcher Modelle ausgeben. Trotzdem ist das Entwicklungstempo erstaunlich.
Ich glaube, je mehr Erfahrung man mit einem konkreten Use Case hat, desto mehr Nutzen zieht man aus einem Machine-Learning-Modell.
Leider sind genau diese Leute oft am stärksten gegen die Einführung, ohne es überhaupt so weit geübt zu haben, dass es tatsächlich nützlich wird. Ein Teil des Problems ist vermutlich, dass sie es als Zauberstab erwarten. In Wirklichkeit ist es nur ein neues Werkzeug wie PhotoShop, Blender, Microsoft Word oder PowerPoint.
Die meisten öffnen solche Apps, klicken kurz ziellos herum und verschwinden dann bald wieder, ohne zurückzukommen. Mit „AI“ ist es genauso.
Mein gewählter Beruf, 3D-/Filmproduktion, fühlt sich derzeit an, als säße man in einem Schützengraben. Spannend, aber auch beängstigend.
Ein weiterer großer Vorteil ist die Kombinierbarkeit. Wenn ein Modell eine Tasse und einen Tisch erzeugen kann, weiß es gewissermaßen auch, wie man eine Tasse auf einem Tisch erzeugt.
Stell dir vor, du könntest komplexe Zahnräder und Maschinenteile passend zu einem Projekt im Handumdrehen erstellen und sie exakt an der gewünschten Position und Rotation platzieren. Das ist der Funktionsweise von GitHub Copilot sehr ähnlich.
Fürs Erste sind wir sicher, aber wir müssen lernen, wie man neue Technologien nutzt.
Was ist die Eingabe? Wird eine Textabfrage wie „chair“ in ein Mesh umgewandelt?
So wie es aussieht, ist nicht ein einfaches Zusatzfeature, sondern Mesh-Vervollständigung die wichtigste Ein- und Ausgabeform.
Die Eingabe selbst scheint ein 3D-Mesh zu sein. Daher wirkt es so, als betreibe das Modell „Formvervollständigung“, zum Beispiel indem es aus ein paar Beinen einen Stuhl erzeugt. Oder wenn die Eingabeform vollständiger ist, erzeugt es vielleicht „Varianten“.
Als Ausgangspunkt sieht es aber trotzdem brauchbar aus. Die Qualität ist niedrig, aber man könnte wohl die Ausgabe anderer Modelle, die Text-zu-Mesh erzeugen, als Eingabe verwenden und mit diesem Modell schärfere und konsistentere Ergebnisse erhalten.
Es fühlt sich an, als würden all die verbliebenen schwierigen Probleme, bei denen es seit den 90ern kaum Fortschritt gab, darauf warten, auf irgendeine Weise mit Transformern gelöst zu werden. Wirklich eine beeindruckende Zeit.
Der nächste Durchbruch wird eine UX sein, mit der man in VR vor solchen Modellen 3D-Szenen erstellt. In Umgebungen, für die es Trainingsdaten gibt, wird man im Grunde permanente und beliebige 3D-Umgebungen erzeugen können.
Für die Texturgenerierung kann man Diffusionsmodelle verwenden.
Mark hatte recht und war wirklich viel zu früh dran.
Ach, der Mark? lol, verstehe.
Wäre es nicht besser, jemandem wie Lecun die Anerkennung zu geben? Mark hat sicher nicht deshalb alles auf das Metaverse gesetzt, weil er irgendwie vorhergesehen hätte, dass Deep Learning groß wird. Selbst die Leute, die die frühen Modelle trainiert haben, waren sich nicht sicher, wie gut das funktionieren würde.
Selbst wenn das „nur“ Mesh-Autovervollständigung ist, wäre es für 3D-Artists enorm nützlich. Derzeit gibt es eine Lücke zwischen der Art, wie man Charaktere sculptet, und der Art, wie man sie animiert. Normalerweise braucht man den zeitaufwendigen Schritt der Retopologie des Modells.
Eine Transformer-basierte Retopologie, die ein grobes Mesh nimmt und saubere Topologie ausgibt, wäre eine große Zeitersparnis.
Eine weitere Anwendung wäre, die Ausgabe von Gaussian Splatting oder Diffusionsmodellen in MeshGPT zu geben. Man könnte direkt aus Text nutzbare Assets mit sauberer Topologie erhalten.
Ich glaube, hier wird nicht recht verstanden, dass wir uns schrittweise in Richtung Automatisierung der Automatisierung bewegen. Und die Programmierer, die damit ihren Lebensunterhalt verdienen können, werden nur ein sehr kleiner Teil derjenigen sein, die heute davon leben können.
Ich mag dieses Feld. Das Paper enthält eine schöne Website, Beispiele und Videos.
Das ist deutlich erfrischender als der dichte, auf Abstract, Einleitung und Ergebnisse fokussierte Paper-Stil.
Sieht wirklich großartig aus. Für Indie-Game-Entwickler dürfte es enorm hilfreich sein, um einen großen Asset-Pool zu generieren.
Stattdessen werden große Unternehmen Spiele zum „Mach dein eigenes Spiel“ bauen.
Indie-Games wirken heutzutage ohnehin schon ziemlich derivativ. Mittelfristig werden große Unternehmen diese Technologie nutzen und Indie-Games abwürgen.
Wow, das wird wirklich besser. Wegen der seltsamen Kanten ist noch ein Stück Weg zu gehen, aber an diesem Punkt fühlt es sich nicht mehr wie ein algorithmisches oder komplexes Problem an, sondern wie iterative Verbesserungen.
Meine Pipeline würde wirklich schneller werden, wenn ich nicht mehr jedes Mesh in eine Bibliothek für prozedurale Generierung stecken müsste, in der unzählige kleine Mesh-Modifikatoren mit Drivern verbunden sind. Stattdessen könnte ich alle Meshes in einen Ordner legen, ein Netzwerk trainieren und dann weitere Dinge im gleichen Stil anfordern. Solange ich nicht kreativer eingreifen will, sehe ich, dass ich keine Retopologie oder andere Handarbeit mehr machen müsste.
Natürlich ist prozedurale Generierung weiterhin besser, bis wir dieses Niveau vollständig erreichen, aber es ist wirklich spannend, wie schnell sich das hier vollendet. Hoffentlich sprechen wir beim Unreal-Showcase im nächsten Jahr über ein neues Asset-Generator-Feature.