- MeshGPT génère des maillages triangulaires sous forme de séquences de tokens et vise à produire des maillages avec des arêtes vives et une triangulation concise, à la manière de modèles créés par des humains
- Contrairement aux résultats d’iso-surfacing denses, il échantillonne un vocabulaire géométrique appris pour produire directement une structure de maillage plus compacte
- Un encodeur-décodeur basé sur la convolution de graphe et la quantification vectorielle apprend d’abord un vocabulaire d’embeddings capturant la géométrie locale et la topologie
- Le transformeur décodeur-only prédit l’index suivant à partir des embeddings précédents et, après l’apprentissage, génère de nouveaux maillages en échantillonnant des séquences dans le vocabulaire
- Sur diverses catégories, il montre une hausse de 9 % de la shape coverage et une amélioration de 30 points du score FID, avec des usages possibles pour la complétion partielle de maillage et la génération de 3D assets pour des scènes
La méthode de génération de maillages de MeshGPT
- MeshGPT considère les maillages triangulaires comme des séquences de triangles, génère des tokens à partir d’un vocabulaire géométrique appris, puis les décode en faces triangulaires
- Le résultat vise des maillages clean, coherent et compacts, avec comme caractéristiques clés des sharp edges et une haute fidélité
- Par rapport aux baselines existantes, il génère des maillages plus concis tout en conservant des détails géométriques nets
- les baselines peuvent manquer des détails, produire des maillages trop triangulés ou sortir des formes excessivement simplifiées
- Les comparaisons quantitatives sur diverses catégories montrent de meilleurs résultats que les méthodes récentes de génération de maillages
- shape coverage en hausse de 9 %
- score FID amélioré de 30 points
Pipeline d’entraînement et usages
- MeshGPT commence par apprendre un vocabulaire d’embeddings géométriques pour les maillages triangulaires à partir d’une grande collection de formes
- utilisation d’un réseau encodeur-décodeur
- inclusion de la quantification vectorielle dans le goulot d’étranglement
- usage de convolutions de graphe pour que les embeddings capturent la géométrie locale du maillage et les informations de topologie
- Le vocabulaire appris est structuré en séquences, et le décodeur peut ensuite les reconstruire en triangles
- Le transformeur est chargé de la prédiction de séquences de tokens du vocabulaire appris
- il prend en entrée les embeddings précédents pour prédire l’index de l’embedding suivant
- une fois l’apprentissage terminé, il génère des maillages en échantillonnant directement des séquences dans le vocabulaire
- Lorsqu’un maillage partiel est fourni, il peut inférer plusieurs résultats possibles de shape completion
- il peut aussi montrer des exemples de complétion pendant que l’utilisateur édite un partial input mesh
- Il peut également servir à la génération de 3D assets pour des scènes, avec un exemple montrant une pièce remplie d’assets créés par MeshGPT
Ressources et travaux associés
- Ressources associées
- Travaux associés mentionnés
- PolyGen: An Autoregressive Generative Model of 3D Meshes : génère des maillages avec un transformeur pour la génération de points et un transformeur de génération de faces utilisant un pointer network
- BSP-Net : réseau qui génère des maillages compacts par binary space partitioning
- AtlasNet: A Papier-Mâché Approach to Learning 3D Surface Generation : représente les formes 3D comme un ensemble d’éléments de surface paramétriques
- Mesh Diffusion : utilise un modèle de diffusion 3D pour générer des maillages 3D paramétrés par deformable marching tetrahedra
1 commentaires
Commentaires sur Hacker News
Pour moi, c’est à ça que ressemble une idée vraiment révolutionnaire. L’article regorge de détails, et on sait déjà que les transformers passent bien à l’échelle
J’ai l’impression que beaucoup d’entreprises vont utiliser cette idée pour entraîner des pipelines génériques de génération d’assets 3D. L’idée de « d’abord utiliser des convolutions sur graphes pour apprendre un vocabulaire d’embeddings quantifiés latents, afin que ces embeddings capturent la géométrie locale du mesh et les informations topologiques. Puis ordonner ces embeddings et laisser le décodeur les reconstruire en triangles pour reconstituer efficacement le mesh » paraît, avec le recul, tellement élégante et évidente
Et la partie « comme approche pratique pour représenter un mesh M en génération auto-régressive, on définit les tokens à générer comme une séquence de triangles » est aussi vraiment superbe
Ce qui m’attire vraiment dans ce domaine, c’est plutôt https://yiconghong.me/LRM/, un grand modèle de reconstruction 3D entraîné sur plusieurs millions de modèles 3D variés, capable de produire un mesh 3D à partir d’une seule image
Les ResNet convolutionnels semblent eux aussi passer à l’échelle en vision et en langage : (cv) https://arxiv.org/abs/2301.00808, (cv) https://arxiv.org/abs/2110.00476, (nlp) https://github.com/HazyResearch/safari
Les perceptrons multicouches aussi, apparemment : (cv) https://arxiv.org/abs/2105.01601, (cv) https://arxiv.org/abs/2105.03404
Bien sûr, il n’y a pas de raison forte d’abandonner l’attention, mais je pense aussi que presque personne n’a vraiment essayé de balancer sur un problème un perceptron multicouche ou un modèle convolutionnel à l’échelle du milliard de paramètres. Des efforts énormes ont été investis dans l’attention, les transformers et leur passage à l’échelle, au point de produire des milliers d’articles par an, et on voit rarement un niveau d’investissement comparable sur d’autres architectures
L’une des raisons pour lesquelles l’article The ResNet Strikes Back est intéressant, c’est qu’il rappelle qu’il ne faut pas se laisser emporter par le battage médiatique, et que les progrès se combinent entre eux. Depuis l’époque des premiers ResNet, on a beaucoup appris sur les techniques d’entraînement, et lorsqu’on les réapplique à ResNet, les performances montent nettement et l’écart se réduit fortement. Au moins dans le domaine de la vision où je travaille, c’est le cas, et un environnement où il faut publier pour survivre ainsi que des revues guidées par les modes poussent facilement la recherche dans une seule direction
En tant qu’ingénieur machine learning qui utilise un peu Blender et fait du développement de jeux comme hobby, je trouve ça assez impressionnant, mais au vu des exemples limités de mobilier, ce n’est pas encore vraiment au niveau d’un usage pratique
Un modeleur expérimenté pourrait produire ce genre de mesh en moins de 5 minutes, et la génération doit encore être amorcée avec des polygones
La prochaine étape sera sans doute que des LLM pilotent la génération de l’amorce, et qu’on ajoute des modèles d’image à la partie auto-régressive de la structure. Là, on verra peut-être de vrais assets pour jeux mobiles
Dans beaucoup de cas, même si cela prend plus de temps qu’un expert et que la qualité est moindre, ce genre d’outil reste meilleur si l’alternative réaliste est de ne rien avoir du tout
Si je pouvais payer juste 1 à 2 dollars par modèle et l’intégrer immédiatement à mon jeu en version sur mesure, ce serait formidable
L’enjeu, c’est de donner des outils aux non-professionnels, tout en permettant aussi aux modeleurs expérimentés d’échapper à des tâches comme produire 10 000 variantes de chaises pour un futur jeu AAA et de se concentrer sur des choses plus intéressantes. Ils pourront créer des personnages uniques ou de nouveaux modèles futuristes absents des données d’entraînement, qui demandent une vraie imagination et une véritable expertise
Des systèmes procéduraux comme Blender Geometry Nodes peuvent déjà produire des variations infinies de ce genre de modèles. Cela dit, la vitesse des progrès reste impressionnante
Je crois que plus on a d’expérience sur un cas d’usage donné, plus on peut tirer de valeur des modèles de machine learning
Malheureusement, ce sont souvent précisément ces personnes qui résistent le plus à l’adoption sans même s’être suffisamment entraînées pour atteindre un niveau réellement utile. Une partie du problème vient sans doute du fait qu’on l’attend comme une baguette magique. En réalité, ce n’est qu’un nouvel outil, comme PhotoShop, Blender, Microsoft Word ou PowerPoint
La plupart des gens ouvrent ce genre d’application, cliquent un peu au hasard pendant quelques instants, puis s’en vont sans jamais y revenir. Pour l’« IA », c’est pareil
Le métier que j’ai choisi, la production 3D/cinéma, donne en ce moment l’impression d’être dans une tranchée en pleine guerre. C’est à la fois passionnant et effrayant
Un autre gros avantage, c’est la composabilité. Si le modèle peut générer une tasse et une table, cela veut dire qu’il sait aussi générer une tasse sur la table
Il suffit d’imaginer pouvoir créer en un clin d’œil des engrenages complexes et des pièces mécaniques adaptées à un projet, puis les placer exactement à l’endroit voulu avec la rotation voulue. C’est très proche de la manière dont fonctionne GitHub Copilot
On est tranquilles pour le moment, mais il faut apprendre à utiliser les nouvelles technologies
Quelle est l’entrée ? Est-ce que ça convertit une requête textuelle comme « chair » en mesh ?
À voir, on dirait que le principal mode d’entrée/sortie n’est pas une simple fonction annexe, mais bien le complétion de mesh
L’entrée elle-même semble être un mesh 3D. Donc le modèle semble faire de la « complétion de forme ». Par exemple, il génère une chaise à partir de seulement quelques pieds. Ou bien, quand la forme d’entrée est plus complète, il peut produire une « variation »
Cela dit, comme point de départ, ça a l’air correct. La qualité est faible, mais on pourrait injecter en entrée la sortie d’autres modèles texte-vers-mesh et utiliser ce modèle pour obtenir un résultat plus net et plus cohérent
On a l’impression que tous les problèmes difficiles restés sans grand progrès depuis les années 1990 attendent simplement d’être résolus d’une façon ou d’une autre par des transformers. C’est vraiment une époque incroyable
La prochaine percée sera une UX de création de scènes 3D en VR devant ce type de modèles. Dans tout environnement disposant de données d’entraînement, on pourra générer des environnements 3D pratiquement permanents et arbitraires
On peut utiliser des modèles de diffusion pour la génération de textures
Mark avait raison, il s’est juste lancé beaucoup trop tôt
Ah, ce Mark-là ? haha, d’accord
Cela dit, vaudrait-il pas mieux attribuer le mérite à quelqu’un comme Lecun ? Si Mark a tout misé sur le métavers, ce n’est certainement pas parce qu’il avait somehow prédit l’essor du deep learning. Même les gens qui entraînaient les premiers modèles n’étaient pas sûrs de voir à quel point ça marcherait bien
Même si ce n’était « que » de l’autocomplétion de mesh, ce serait déjà extrêmement utile pour les artistes 3D. Aujourd’hui, il y a une rupture entre la manière de sculpter un personnage et la manière de l’animer. En général, cela impose une étape longue de retopologie du modèle
Une retopologie basée sur des transformers qui prendrait un mesh grossier pour produire une topologie propre ferait gagner énormément de temps
Une autre application serait d’injecter dans MeshGPT les sorties de Gaussian splatting ou des modèles de diffusion. On pourrait obtenir directement à partir du texte des assets utilisables avec une topologie propre
J’ai l’impression qu’on ne réalise pas bien ici qu’on avance progressivement vers l’automatisation de l’automatisation elle-même. Et les programmeurs qui pourront encore gagner leur vie avec ça représenteront une toute petite minorité parmi ceux qui arrivent aujourd’hui à en vivre
J’aime bien ce domaine. Les articles incluent un site web soigné, des exemples et des vidéos
C’est bien plus rafraîchissant que le style d’article centré sur un résumé, une introduction et des résultats, tout serré et dense
Ça a vraiment l’air génial. J’ai l’impression que ça pourrait énormément aider les développeurs de jeux indé à générer de grands pools d’assets
À la place, les grandes entreprises vont créer des jeux du genre « crée ton propre jeu »
Les jeux indé actuels donnent déjà souvent une impression assez dérivée. À moyen terme, j’ai l’impression que les grandes entreprises vont utiliser cette technologie et tuer les jeux indé
Waouh, ça s’améliore vraiment. Il reste encore du chemin à cause des arêtes bizarres, mais à ce stade cela ressemble moins à un problème algorithmique ou complexe qu’à une amélioration itérative
Mon pipeline irait vraiment beaucoup plus vite si je n’avais plus besoin de faire passer tous mes meshes dans une bibliothèque de génération procédurale avec des dizaines de petits modificateurs de mesh branchés sur des pilotes. À la place, je pourrais simplement mettre tous les meshes dans un dossier, entraîner le réseau, puis lui demander d’autres objets dans le même style. À moins de vouloir intervenir de manière plus créative, on pourrait constater qu’il n’y a plus besoin de retopo ni d’autre travail manuel
Bien sûr, avant d’atteindre complètement ce niveau, la génération procédurale restera meilleure, mais c’est vraiment enthousiasmant de voir ça se concrétiser aussi vite. J’espère qu’au showcase Unreal de l’année prochaine, on parlera d’une nouvelle fonction Asset Generator