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.
Das Projekt verwendet eine Architektur, die auf der Zusammenarbeit mehrerer Modelle basiert:
Das Projekt bietet einen vollständigen Datensatz von vier Personen:
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
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"])))
# 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
# 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"
# 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
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
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
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
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
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
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
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
python -m visualize.render_anno \
--save_dir vis_anno_test \
--data_root dataset/PXB184 \
--max_seq_length 600