Home
Login

Ein Deep-Learning-Projekt, das realistische, audiobasierte, virtuelle menschliche Avatare erzeugt und aus Sprache Ganzkörpergesten und Gesichtsausdrücke synthetisiert.

NOASSERTIONPython 2.8kfacebookresearchaudio2photoreal Last Updated: 2024-09-15

Audio2PhotoReal Projektdetails

Projektübersicht

Audio2PhotoReal ist ein innovatives Open-Source-Deep-Learning-Projekt von Facebook Research (Meta Research), das ein End-to-End-Synthesesystem von Audio zu realistischen menschlichen Avataren realisiert. Die Kernkompetenz des Projekts ist die Generierung realistischer Ganzkörperanimationen von Menschen basierend auf Spracheingaben, einschließlich Gesichtsausdrücken und Körperhaltungen.

Technische Merkmale

Kernfunktionen

  • Audio-gesteuerte Personensynthese: Generierung vollständiger menschlicher Animationen nur basierend auf Audioeingaben
  • Realistische Gesichtsausdrücke: 256-dimensionale Gesichtskodierung erzeugt natürliche Gesichtsausdrücke
  • Ganzkörperhaltungsgenerierung: 104-dimensionale Gelenkwinkel realisieren vollständige Körperbewegungen
  • Optimierung von Gesprächsszenarien: Spezielle Modellierung des menschlichen Verhaltens in Gesprächsszenarien

Technische Architektur

Das Projekt verwendet eine Architektur, die auf der Zusammenarbeit mehrerer Modelle basiert:

  1. Gesichts-Diffusionsmodell: Generiert 256-dimensionale Gesichtskodierung basierend auf Audio
  2. Körper-Diffusionsmodell: Generiert 104-dimensionale Gelenkrotationen in Kombination mit Audio und geführter Pose
  3. Geführter Pose-Generator: VQ-VAE-Architektur, generiert geführte Posen mit einer Frequenz von 1 fps
  4. VQ-Encoder-Decoder: Vektorquantisierung des kontinuierlichen 104-dimensionalen Posenraums

Datensatz

Datenstruktur

Das Projekt bietet einen vollständigen Datensatz von vier Personen:

  • PXB184, RLW104, TXB805, GQS883

Jede Person enthält etwa 26-30 Gesprächsszenen, wobei jede Szene Folgendes enthält:

*audio.wav: Zweikanal-Audiodatei (48kHz)
  - Kanal 0: Audio der aktuellen Person
  - Kanal 1: Audio des Gesprächspartners

*body_pose.npy: (T × 104) Array der Gelenkwinkel
*face_expression.npy: (T × 256) Array der Gesichtskodierung
*missing_face_frames.npy: Index der fehlenden/beschädigten Gesichts-Frames
data_stats.pth: Statistiken zu Mittelwert und Standardabweichung der einzelnen Modalitäten

Datenaufteilung

train_idx = list(range(0, len(data_dict["data"]) - 6))
val_idx = list(range(len(data_dict["data"]) - 6, len(data_dict["data"]) - 4))
test_idx = list(range(len(data_dict["data"]) - 4, len(data_dict["data"])))

Installation und Verwendung

Schnelle Demo

# Umgebung erstellen
conda create --name a2p_env python=3.9
conda activate a2p_env

# Abhängigkeiten installieren
sh demo/install.sh

# Demo ausführen
python -m demo.demo

Vollständige Installation

# Umgebung konfigurieren
conda create --name a2p_env python=3.9
conda activate a2p_env
pip install -r scripts/requirements.txt

# Notwendige Modelle herunterladen
sh scripts/download_prereq.sh

# PyTorch3D installieren
pip install "git+https://github.com/facebookresearch/pytorch3d.git"

Daten herunterladen

# Einzelnen Datensatz herunterladen
curl -L https://github.com/facebookresearch/audio2photoreal/releases/download/v1.0/<person_id>.zip -o <person_id>.zip
unzip <person_id>.zip -d dataset/

# Alle Datensätze herunterladen
sh scripts/download_alldatasets.sh

# Vorab trainierte Modelle herunterladen
sh scripts/download_allmodels.sh

Modelltraining

1. Training des Gesichts-Diffusionsmodells

python -m train.train_diffusion \
  --save_dir checkpoints/diffusion/c1_face_test \
  --data_root ./dataset/PXB184/ \
  --batch_size 4 \
  --dataset social \
  --data_format face \
  --layers 8 \
  --heads 8 \
  --timestep_respacing '' \
  --max_seq_length 600

2. Training des Körper-Diffusionsmodells

python -m train.train_diffusion \
  --save_dir checkpoints/diffusion/c1_pose_test \
  --data_root ./dataset/PXB184/ \
  --lambda_vel 2.0 \
  --batch_size 4 \
  --dataset social \
  --add_frame_cond 1 \
  --data_format pose \
  --layers 6 \
  --heads 8 \
  --timestep_respacing '' \
  --max_seq_length 600

3. Training des VQ-Encoders

python -m train.train_vq \
  --out_dir checkpoints/vq/c1_vq_test \
  --data_root ./dataset/PXB184/ \
  --lr 1e-3 \
  --code_dim 1024 \
  --output_emb_width 64 \
  --depth 4 \
  --dataname social \
  --loss_vel 0.0 \
  --data_format pose \
  --batch_size 4 \
  --add_frame_cond 1 \
  --max_seq_length 600

4. Training des geführten Pose-Transformators

python -m train.train_guide \
  --out_dir checkpoints/guide/c1_trans_test \
  --data_root ./dataset/PXB184/ \
  --batch_size 4 \
  --resume_pth checkpoints/vq/c1_vq_test/net_iter300000.pth \
  --add_frame_cond 1 \
  --layers 6 \
  --lr 2e-4 \
  --gn \
  --dim 64

Inferenzgenerierung

Gesichtsgenerierung

python -m sample.generate \
  --model_path checkpoints/diffusion/c1_face/model000155000.pt \
  --num_samples 10 \
  --num_repetitions 5 \
  --timestep_respacing ddim500 \
  --guidance_param 10.0

Körpergenerierung

python -m sample.generate \
  --model_path checkpoints/diffusion/c1_pose/model000340000.pt \
  --resume_trans checkpoints/guide/c1_pose/checkpoints/iter-0100000.pt \
  --num_samples 10 \
  --num_repetitions 5 \
  --timestep_respacing ddim500 \
  --guidance_param 2.0

Vollständiges Rendering

python -m sample.generate \
  --model_path checkpoints/diffusion/c1_pose/model000340000.pt \
  --resume_trans checkpoints/guide/c1_pose/checkpoints/iter-0100000.pt \
  --num_samples 10 \
  --num_repetitions 5 \
  --timestep_respacing ddim500 \
  --guidance_param 2.0 \
  --face_codes ./checkpoints/diffusion/c1_face/samples_c1_face_000155000_seed10_/results.npy \
  --pose_codes ./checkpoints/diffusion/c1_pose/samples_c1_pose_000340000_seed10_guide_iter-0100000.pt/results.npy \
  --plot

Visualisierung

Datensatzvisualisierung

python -m visualize.render_anno \
  --save_dir vis_anno_test \
  --data_root dataset/PXB184 \
  --max_seq_length 600

Technische Anforderungen

  • CUDA: 11.7
  • Python: 3.9
  • GCC: 9.0
  • Hauptabhängigkeiten: PyTorch, PyTorch3D, Gradio

Anwendungsbereiche

  • Virtuelle Meetings und Remote-Zusammenarbeit
  • Digitale Personen-Livestreams und Inhaltserstellung
  • Spiele- und Unterhaltungsanwendungen
  • Bildungs- und Trainingssimulationen
  • Mensch-Maschine-Schnittstellen

Star History Chart