Génération 3D à partir d'images uniques via la diffusion multidomaine avec Wonder3D

Wonder3D représente une avancée majeure dans le domaine de la vision par ordinateur, présentée comme "Highlight" lors de la conférence CVPR 2024. Cette technologie open-source permet de reconstruire des maillages 3D texturés de haute précision à partir d'une simple image 2D en moins de trois minutes. Contrairement aux approches traditionnelles, elle s'appuie sur un modèle de diffusion multidomaine capable de générer simultanément des cartes de normales et des images couleur multi-vues cohérentes.

Capacités de reconstruction de Wonder3D

Le système excelle dans la transformation de concepts visuels plats en volumes complexes. Qu'il s'agisse de personnages stylisés, d'objets du quotidien ou de structures organiques, Wonder3D préserve la fidélité des détails et la cohérence géométrique.

Processus global de Wonder3DFigure 1 : Flux de travail illustrant la génération des vues multiples, des normales et du maillage final.

Configuration et mise en œuvre technique

Préparation de l'environnement

Pour déployer Wonder3D, une configuration Python basée sur Conda est recommandée afin de gérer les dépendances CUDA nécessaires au rendu rapide :

# Récupération du code source
git clone https://github.com/xx/Wonder3D.git
cd Wonder3D

# Initialisation de l'environnement virtuel
conda create -n env_wonder3d python=3.9
conda activate env_wonder3d

# Installation des modules requis
pip install -r requirements.txt
pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch

Implémentation logicielle

L'exemple suivant illustre comment instancier le moteur d'inférence pour traiter une image et extraire les vues générées.

import torch
from PIL import Image
from diffusers import DiffusionPipeline
from torchvision.utils import save_image, make_grid

def initialiser_moteur_3d(model_path='flamehaze1115/wonder3d-v1.0'):
    """Configure le pipeline de diffusion avec les optimisations GPU."""
    pipeline = DiffusionPipeline.from_pretrained(
        model_path,
        custom_pipeline='flamehaze1115/wonder3d-pipeline',
        torch_dtype=torch.float16
    )
    
    if torch.cuda.is_available():
        pipeline.to("cuda")
        pipeline.unet.enable_xformers_memory_efficient_attention()
    
    return pipeline

# Chargement du modèle
generateur = initialiser_moteur_3d()

# Traitement de l'image source
source_img = Image.open("data/input_object.png").convert("RGB")

# Lancement de l'inférence
# Le paramètre guidance_scale contrôle la fidélité par rapport à l'image source
resultats = generateur(
    source_img, 
    num_inference_steps=20, 
    output_type='pt', 
    guidance_scale=1.0
).images

# Exportation de la grille de résultats (Vues couleurs et normales)
grille = make_grid(resultats, nrow=6, padding=2, normalize=True)
save_image(grille, 'output_preview.png')

Interfaces interactives

Le projet inclut des applications Gradio pour faciliter l'expérimentation sans développement supplémentaire :

  • python gradio_app_mv.py : Pour la génération rapide des cartes multi-vues.
  • python gradio_app_recon.py : Pour le pipeline complet incluant la reconstruction du maillage.

Architecture et principes fondamentaux

L'innovation de Wonder3D réside dans son système de coordonnées relatif à la vue d'entrée. Contrairement aux méthodes qui tentent d'estimer une pose globale, Wonder3D fixe le référentiel sur l'image source, ce qui simplifie grandement la cohérence des normales produites.

Système de coordonnéesFigure 2 : Comparaison entre le système standard (a) et le système dépendant de la vue d'entrée (b) utilisé par Wonder3D.

Avantages structurels

  1. Diffusion jointe : La génération simultanée de la géométrie (normales) et de l'apparence (couleurs) assure un alignement parfait lors de la reconstruction.
  2. Géométrie Orthographique : Le modèle suppose une projection orthographique, ce qui améliore sa capacité de généralisation sur des images de synthèse ou des croquis.
  3. Fusion de normales efficace : Un algorithme optimisé permet de convertir les cartes de normales en une surface 3D continue en un temps record.

Optimisation des résultats

Pour maximiser la qualité du modèle 3D final, il est conseillé de respecter les points suivants :

  • Orientation : Les images présentant l'objet de face produisent généralement des résultats plus stables.
  • Résolution : Bien que le modèle traite nativement du 256x256, l'utilisation d'images sources nettes réduit les artefacts de texture.
  • Occlusion : Moins l'objet présente de parties cachées complexes, plus le maillage sera intègre sur ses faces arrière.

Paramètres de caméra

Wonder3D génère six vues spécifiques situées sur le plan d'élévation 0°. Les angles d'azimut prédéfinis sont : 0°, 45°, 90°, 180°, -90° et -45°. Cette disposition permet de couvrir l'intégralité de la topologie de l'objet tout en conservant une densité d'information suffisante pour la fusion de surfaces.

Étiquettes: Computer-Vision 3D-Reconstruction Diffusion-Models PyTorch CVPR

Publié le 16 juillet à 09h38