Suivez nous sur

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

Intelligence Artificielle

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

mm
Grands modèles de langage et de texte en 3D

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 :

  1. Encodage de texte: Conversion de l'invite de texte de saisie en une représentation numérique
  2. Représentation 3D: Une méthode pour représenter la géométrie et l'apparence 3D
  3. Modèle gĂ©nĂ©ratif : Le modèle d'IA de base pour gĂ©nĂ©rer l'actif 3D
  4. 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 :

  1. Grilles de voxels : tableaux 3D de valeurs reprĂ©sentant l'occupation ou les caractĂ©ristiques
  2. Nuages ​​de points: Ensembles de points 3D
  3. Mailles: Sommets et faces définissant une surface
  4. Fonctions implicites: Fonctions continues définissant une surface (ex : fonctions de distance signées)
  5. 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 :

  1. Encodage de texte: L'invite de saisie est codée dans une représentation vectorielle dense à l'aide d'un modèle de langage.
  2. 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).
  3. 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.
  4. Raffinement: des réseaux supplémentaires peuvent affiner la géométrie, ajouter des textures ou améliorer les détails.
  5. 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 - 3d-gen

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.