>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Python

Comment créer un avatar 4D animable à partir de quelques photos avec CAP4D

Aperçu

Créer des têtes 3D contrôlables à partir d'une ou plusieurs photos se heurte généralement au même mur. Soit vous obtenez un masque plat sans l'arrière de la tête ni une géométrie correcte, soit vous avez besoin d'un studio avec vingt caméras synchronisées pour entraîner le réseau neuronal.

Il y a quelques jours, je suis tombé sur le dépôt CAP4D de chercheurs de l'Université de Toronto et de LG Electronics, accepté à CVPR 2025. Les auteurs ont publié un pipeline qui prend un ensemble arbitraire de photos ou une courte vidéo d'une caméra monoculaire et construit un avatar 4D entièrement animable basé sur le 3D Gaussian Splatting.

Ce qui se cache sous le capot

Si l'on décompose l'architecture, le pipeline se compose de quatre étapes :

  1. Suivi facial via FLAME. Le script traite les images sources via un outil de suivi 3D (Pixel3DMM ou le futur FlowFace), en ajustant les paramètres de la tête au modèle paramétrique FLAME.
  2. Diffusion multi-vues (MMDM). Ici, les auteurs ont pris Stable Diffusion et ControlNet, en les affinant pour générer des vues cohérentes de la tête selon différentes expressions faciales et poses. Le réseau de diffusion « complète » littéralement le visage sous des angles qui n'étaient pas présents dans les photos originales.
  3. Entraînement Gaussien (Gaussian Splatting). Une représentation basée sur GaussianAvatars est entraînée sur les images générées et sources. Les Gaussiens sont liés au maillage polygonal FLAME, fournissant une géométrie stable lors des déformations.
  4. Animation et export PLY. L'avatar terminé peut être piloté par des paramètres de fichiers existants ou transférer des expressions faciales depuis n'importe quelle autre vidéo. Le résultat est exporté vers un fichier .ply qui s'ouvre directement dans le navigateur via le moteur Brush.

Installation et premiers écueils

Le README décrit la configuration standard de l'environnement Conda, mais il y a quelques endroits où il est facile de trébucher :

  • Vous devez installer manuellement les dépendances Python :

Ensuite, vous devez compiler manuellement PyTorch3D avec le support CUDA :

  • Pour travailler avec le modèle paramétrique, vous devez vous enregistrer sur le site FLAME (gratuit pour un usage non commercial) et définir les variables d'environnement :

Si le script de téléchargement échoue en raison de problèmes de version NumPy, le dépôt fournit aimablement un utilitaire scripts/fixes/fix_flame_pickle.py.

Test rapide sur des personnages prêts à l'emploi

Pour vérifier que tous les noyaux CUDA et les bibliothèques sont correctement installés, les auteurs ont ajouté une exécution de test :

  • Si une vidéo de Nikola Tesla se rend en examples/debug_output/, votre environnement est correctement configuré. Ensuite, vous pouvez construire les exemples prêts à l'emploi (Tesla, Lincoln ou l'auteur du dépôt Felix) :

Le script produira un fichier d'animation exported_animation.ply. Vous pouvez le télécharger sur leur visualiseur web sur GitHub Pages et faire pivoter la caméra avec votre souris directement dans la fenêtre du navigateur à 60 FPS.

Exécution sur vos propres données

Quand vous voulez donner vie à votre propre visage ou à un personnage issu d'une vidéo, le processus est un peu plus complexe. Vous aurez besoin du dépôt Pixel3DMM pour le suivi monoculaire :

  • Ensuite, lancez le suivi sur le dossier contenant les photos et la vidéo cible à partir de laquelle les expressions sont extraites :

Générez des vues synthétiques avec le modèle de diffusion :

  • Ajustez les Gaussiens à la géométrie :

Pour ceux qui ne veulent pas appeler les étapes individuellement, les auteurs ont regroupé l'ensemble du pipeline dans un seul script bash :

  • Le pipeline est gourmand en ressources. L'étape MMDM utilise toute la GPU disponible, consomme pas mal de VRAM et nécessite 64 Go de RAM. Sur une seule GPU grand public, la génération d'images peut prendre quelques heures.

La deuxième nuance est liée au suivi. Actuellement, le script principal repose sur le Pixel3DMM tiers, qui échoue parfois sur des angles complexes. Les auteurs ont entraîné leurs poids de diffusion avec des annotations de FlowFace, mais le module FlowFace lui-même devrait être publié dans le dépôt bientôt. Pour cette raison, les générations personnalisées peuvent sembler légèrement moins nettes que les démos officielles.

À qui ce projet est destiné

Si vous travaillez sur le rendu neuronal, les avatars numériques pour les jeux, l'animation pour des projets indépendants, ou si vous explorez simplement le 3D Gaussian Splatting, le code de CAP4D mérite définitivement un coup d'œil. Il montre bien comment combiner une diffusion 2D avec une représentation 3D à travers le maillage paramétrique strict FLAME, en contournant le problème des points de vue insuffisants.

Pour un démarrage rapide, je recommande d'abord de jouer avec les préréglages prêts à l'emploi avec Lincoln et Tesla pour évaluer les performances du renderer web, et seulement ensuite de passer à la construction de pipelines personnalisés sur votre propre ensemble de données.

Projets similaires