Intelligence Artificielle
Comment fonctionne la génération d'IA texte en 3D : Meta 3D Gen, OpenAI Shap-E et plus

By
Ayush Mittal mital
La possibilité de générer des actifs numériques 3D à partir d’invites textuelles représente l’un des développements récents les plus intéressants en matière d’IA et d’infographie. Alors que le marché des actifs numériques 3D devrait passer de 28.3 milliards de dollars en 2024 à 51.8 milliards en 2029Les modèles d'IA de conversion de texte en 3D sont appelés à jouer un rôle majeur dans la révolution de la création de contenu dans des secteurs comme le jeu vidéo, le cinéma, le e-commerce, etc. Mais comment fonctionnent exactement ces systèmes d'IA ? Dans cet article, nous allons approfondir les détails techniques de la conversion de texte en 3D.
Le défi de la génération 3D
La génération d'actifs 3D à partir de texte est une tâche nettement plus complexe que la génération d'images 2D. Alors que les images 2D sont essentiellement des grilles de pixels, les ressources 3D nécessitent de représenter la géométrie, les textures, les matériaux et souvent les animations dans un espace tridimensionnel. Cette dimensionnalité et complexité supplémentaires rendent la tâche de génération beaucoup plus difficile.
Certains défis clés liés à la génération de texte en 3D incluent :
- Représenter la géométrie et la structure 3D
- Générer des textures et des matériaux cohérents sur la surface 3D
- Assurer la plausibilité physique et la cohérence de plusieurs points de vue
- Capturer simultanément les détails fins et la structure globale
- Générer des actifs qui peuvent être facilement rendus ou imprimés en 3D
Pour relever ces défis, les modèles texte-3D exploitent plusieurs technologies et techniques clés.
Composants clés des systèmes de conversion texte-3D
La plupart des systèmes de génération de texte en 3D de pointe partagent quelques composants de base :
- Encodage de texte: Conversion de l'invite de texte de saisie en une représentation numérique
- Représentation 3D: Une méthode pour représenter la géométrie et l'apparence 3D
- Modèle génératif : Le modèle d'IA de base pour générer l'actif 3D
- interprétation: Conversion de la représentation 3D en images 2D pour la visualisation
Explorons chacun d’entre eux plus en détail.
Encodage de texte
La première étape consiste à convertir l’invite de texte saisie en une représentation numérique avec laquelle le modèle d’IA peut fonctionner. Cela se fait généralement à l'aide de grands modèles de langage tels que BERT ou GPT.
Représentation 3D
Il existe plusieurs manières courantes de représenter la géométrie 3D dans les modèles IA :
- Grilles de voxels : tableaux 3D de valeurs représentant l'occupation ou les caractéristiques
- Nuages ​​de points: Ensembles de points 3D
- Mailles: Sommets et faces définissant une surface
- Fonctions implicites: Fonctions continues définissant une surface (ex : fonctions de distance signées)
- Champs de rayonnement neuronal (NeRF): Réseaux de neurones représentant la densité et la couleur dans l'espace 3D
Chacun présente des compromis en termes de résolution, d’utilisation de la mémoire et de facilité de génération. De nombreux modèles récents utilisent des fonctions implicites ou NeRF car ils permettent d'obtenir des résultats de haute qualité avec des exigences de calcul raisonnables.
Par exemple, nous pouvons représenter une simple sphère comme une fonction de distance signée :
import numpy as np def sphere_sdf(x, y, z, radius=1.0): return np.sqrt(x**2 + y**2 + z**2) - radius # Evaluate SDF at a 3D point point = [0.5, 0.5, 0.5] distance = sphere_sdf(*point) print(f"Distance to sphere surface: {distance}")
Modèle génératif
Le cœur d'un système de conversion texte-3D est le modèle génératif qui produit la représentation 3D à partir du intégration de texte. La plupart des modèles de pointe utilisent une variante d'un modèle de diffusion, similaire à ceux utilisés dans la génération d'images 2D.
Les modèles de diffusion fonctionnent en ajoutant progressivement du bruit aux données, puis en apprenant à inverser ce processus. Pour la génération 3D, ce processus se déroule dans l'espace de la représentation 3D choisie.
Un pseudocode simplifié pour une étape de formation du modèle de diffusion pourrait ressembler à :
def diffusion_training_step(model, x_0, text_embedding): # Sample a random timestep t = torch.randint(0, num_timesteps, (1,)) # Add noise to the input noise = torch.randn_like(x_0) x_t = add_noise(x_0, noise, t) # Predict the noise predicted_noise = model(x_t, t, text_embedding) # Compute loss loss = F.mse_loss(noise, predicted_noise) return loss # Training loop for batch in dataloader: x_0, text = batch text_embedding = encode_text(text) loss = diffusion_training_step(model, x_0, text_embedding) loss.backward() optimizer.step()
Lors de la génération, nous partons du bruit pur et débruitons de manière itérative, conditionnés par l'incorporation du texte.
interprétation
Pour visualiser les résultats et calculer les pertes pendant l'entraînement, nous devons restituer notre représentation 3D en images 2D. Cela se fait généralement à l'aide de techniques de rendu différenciables qui permettent aux dégradés de revenir tout au long du processus de rendu.
Pour les représentations basées sur un maillage, nous pourrions utiliser un moteur de rendu basé sur la rastérisation :
import torch import torch.nn.functional as F import pytorch3d.renderer as pr def render_mesh(vertices, faces, image_size=256): # Create a renderer renderer = pr.MeshRenderer( rasterizer=pr.MeshRasterizer(), shader=pr.SoftPhongShader() ) # Set up camera cameras = pr.FoVPerspectiveCameras() # Render images = renderer(vertices, faces, cameras=cameras) return images # Example usage vertices = torch.rand(1, 100, 3) # Random vertices faces = torch.randint(0, 100, (1, 200, 3)) # Random faces rendered_images = render_mesh(vertices, faces)
Pour les représentations implicites telles que les NeRF, nous utilisons généralement des techniques de marche de rayons pour restituer les vues.
Rassembler le tout : le pipeline de conversion texte en 3D
Maintenant que nous avons couvert les composants clés, voyons comment ils s'assemblent dans un pipeline de génération de texte en 3D typique :
- Encodage de texte: L'invite de saisie est codée dans une représentation vectorielle dense à l'aide d'un modèle de langage.
- Génération initiale: Un modèle de diffusion, conditionné par l'incorporation de texte, génère une représentation 3D initiale (par exemple une NeRF ou une fonction implicite).
- Cohérence multi-vue: Le modèle restitue plusieurs vues de l'actif 3D généré et garantit la cohérence entre les points de vue.
- Raffinement: des réseaux supplémentaires peuvent affiner la géométrie, ajouter des textures ou améliorer les détails.
- Sortie finale: La représentation 3D est convertie dans un format souhaité (par exemple, maillage texturé) pour une utilisation dans les applications en aval.
Voici un exemple simplifié de ce à quoi cela pourrait ressembler dans le code :
class TextTo3D(nn.Module): def __init__(self): super().__init__() self.text_encoder = BertModel.from_pretrained('bert-base-uncased') self.diffusion_model = DiffusionModel() self.refiner = RefinerNetwork() self.renderer = DifferentiableRenderer() def forward(self, text_prompt): # Encode text text_embedding = self.text_encoder(text_prompt).last_hidden_state.mean(dim=1) # Generate initial 3D representation initial_3d = self.diffusion_model(text_embedding) # Render multiple views views = self.renderer(initial_3d, num_views=4) # Refine based on multi-view consistency refined_3d = self.refiner(initial_3d, views) return refined_3d # Usage model = TextTo3D() text_prompt = "A red sports car" generated_3d = model(text_prompt)
Meilleurs modèles de texte en actifs 3D disponibles
3DGen – Méta
3DGén est conçu pour résoudre le problème de la génération de contenu 3D, tel que des personnages, des accessoires et des scènes, à partir de descriptions textuelles.

Grands modèles de langage et de texte en 3D – génération 3D
3DGen prend en charge le rendu basé sur la physique (PBR), essentiel pour un rééclairage réaliste des ressources 3D dans les applications du monde réel. Il permet également la retexturation générative de formes 3D précédemment générées ou créées par des artistes à l'aide de nouvelles entrées textuelles. Le pipeline intègre deux composants principaux : Meta 3D AssetGen et Meta 3D TextureGen, qui gèrent respectivement la génération de texte en 3D et de texte en texture.
Meta 3D AssetGen
Meta 3D AssetGen (Siddiqui et al., 2024) est responsable de la génération initiale d'actifs 3D à partir d'invites textuelles. Ce composant produit un maillage 3D avec des textures et des cartes de matériaux PBR en 30 secondes environ.
Meta 3D TextureGen
Meta 3D TextureGen (Bensadoun et al., 2024) affine les textures générées par AssetGen. Il peut également être utilisé pour générer de nouvelles textures pour les maillages 3D existants sur la base de descriptions textuelles supplémentaires. Cette étape dure environ 20 secondes.
Point-E (OpenAI)
Point-E, développé par OpenAI, est un autre modèle notable de génération de texte en 3D. Contrairement à DreamFusion, qui produit des représentations NeRF, Point-E génère des nuages ​​de points 3D.
Principales caractéristiques du Point-E :
a) Pipeline à deux étages: Point-E génère d'abord une vue 2D synthétique à l'aide d'un modèle de diffusion texte-image, puis utilise cette image pour conditionner un deuxième modèle de diffusion qui produit le nuage de points 3D.
b) Efficacité: Point-E est conçu pour être efficace sur le plan informatique, capable de générer des nuages ​​de points 3D en quelques secondes sur un seul GPU.
c) Informations sur la couleur: Le modèle peut générer des nuages ​​de points colorés, préservant à la fois les informations géométriques et d'apparence.
Limitations:
- Fidélité inférieure par rapport aux approches basées sur le maillage ou basées sur NeRF
- Les nuages ​​de points nécessitent un traitement supplémentaire pour de nombreuses applications en aval
Shap-E (OpenAI) :
S'appuyant sur Point-E, OpenAI a été introduit Forme-E, qui génère des maillages 3D au lieu de nuages ​​de points. Cela répond à certaines des limitations de Point-E tout en maintenant l’efficacité des calculs.
Principales caractéristiques de Shap-E :
a) Représentation implicite: Shap-E apprend à générer des représentations implicites (fonctions de distance signées) d'objets 3D.
b) Extraction de maillage: Le modèle utilise une implémentation différentiable de l'algorithme des marches cubes pour convertir la représentation implicite en un maillage polygonal.
c) Génération de textures: Shap-E peut également générer des textures pour les maillages 3D, ce qui donne des résultats plus attrayants visuellement.
Avantages :
- Temps de génération rapides (de quelques secondes à quelques minutes)
- Sortie de maillage direct adaptée au rendu et aux applications en aval
- Capacité à générer à la fois la géométrie et la texture
GET3D (NVIDIA) :
GET3D, développé par les chercheurs de NVIDIA, est un autre modèle puissant de génération de texte en 3D qui se concentre sur la production de maillages 3D texturés de haute qualité.
Principales fonctionnalités de GET3D :
a) Représentation explicite de la surface: Contrairement à DreamFusion ou Shap-E, GET3D génère directement des représentations de surface explicites (maillages) sans représentations implicites intermédiaires.
b) Génération de textures: Le modèle comprend une technique de rendu différenciable pour apprendre et générer des textures de haute qualité pour les maillages 3D.
c) Architecture basée sur GAN: GET3D utilise une approche de réseau contradictoire génératif (GAN), qui permet une génération rapide une fois le modèle entraîné.
Avantages :
- Géométrie et textures de haute qualité
- Temps d'inférence rapides
- Intégration directe avec les moteurs de rendu 3D
Limitations:
- Nécessite des données de formation 3D, qui peuvent être rares pour certaines catégories d'objets
Conclusion
La génération d’IA texte en 3D représente un changement fondamental dans la façon dont nous créons et interagissons avec le contenu 3D. En tirant parti de techniques avancées d’apprentissage en profondeur, ces modèles peuvent produire des ressources 3D complexes et de haute qualité à partir de simples descriptions textuelles. À mesure que la technologie continue d'évoluer, nous pouvons nous attendre à voir apparaître des systèmes de conversion texte-3D de plus en plus sophistiqués et performants qui révolutionneront les industries du jeu et du cinéma à la conception et à l'architecture de produits.
J'ai passé les cinq dernières années à m'immerger dans le monde fascinant du Machine Learning et du Deep Learning. Ma passion et mon expertise m'ont amené à contribuer à plus de 50 projets de génie logiciel divers, avec un accent particulier sur l'IA/ML. Ma curiosité continue m'a également attiré vers le traitement automatique du langage naturel, un domaine que j'ai hâte d'explorer davantage.
Tu peux aimer
-
Optimisation des champs de rayonnement neuronal (NeRF) pour le rendu 3D en temps réel sur les plateformes de commerce électronique
-
Protocole de contexte modèle de Claude (MCP) : guide du développeur
-
Modèles de conception en Python pour les ingénieurs en IA et LLM : un guide pratique
-
Microsoft AutoGen : flux de travail d'IA multi-agents avec automatisation avancée
-
Appels d'API LLM asynchrones en Python : un guide complet
-
AI Language Showdown : comparaison des performances de C++, Python, Java et Rust