Home
Login

Proyecto de aprendizaje profundo que genera avatares humanos virtuales realistas basados en audio, capaz de sintetizar gestos de cuerpo completo y expresiones faciales a partir de la voz.

NOASSERTIONPython 2.8kfacebookresearchaudio2photoreal Last Updated: 2024-09-15

Introducción Detallada al Proyecto Audio2PhotoReal

Resumen del Proyecto

Audio2PhotoReal es un innovador proyecto de aprendizaje profundo de código abierto de Facebook Research (Meta Research) que implementa un sistema de síntesis de extremo a extremo desde audio hasta avatares humanos virtualizados realistas. La capacidad central de este proyecto es generar animaciones corporales completas realistas basadas en la entrada de voz, incluyendo expresiones faciales y posturas corporales.

Características Técnicas

Funcionalidades Principales

  • Síntesis Humana Impulsada por Audio: Genera animaciones corporales completas basadas únicamente en la entrada de audio.
  • Expresiones Faciales Realistas: Generación de expresiones faciales naturales a partir de codificaciones faciales de 256 dimensiones.
  • Generación de Posturas Corporales Completas: Implementación de movimientos corporales completos a través de ángulos de articulación de 104 dimensiones.
  • Optimización de Escenas de Diálogo: Modelado del comportamiento humano específicamente para escenas de diálogo.

Arquitectura Técnica

El proyecto adopta un diseño de arquitectura colaborativa multi-modelo:

  1. Modelo de Difusión Facial: Genera codificaciones faciales de 256 dimensiones basadas en audio.
  2. Modelo de Difusión Corporal: Genera rotaciones articulares de 104 dimensiones combinando audio y posturas guía.
  3. Generador de Posturas Guía: Arquitectura VQ-VAE que genera posturas guía a una frecuencia de 1 fps.
  4. Codificador-Decodificador VQ: Vectorización del espacio de posturas continuas de 104 dimensiones.

Conjunto de Datos

Estructura de Datos

El proyecto proporciona un conjunto de datos completo para cuatro personajes:

  • PXB184, RLW104, TXB805, GQS883

Cada personaje contiene aproximadamente 26-30 escenas de diálogo, cada escena contiene:

*audio.wav: Archivo de audio estéreo (48kHz)
  - Canal 0: Audio del personaje actual
  - Canal 1: Audio del compañero de diálogo

*body_pose.npy: Array de ángulos de articulación (T × 104)
*face_expression.npy: Array de codificaciones faciales (T × 256)
*missing_face_frames.npy: Índices de fotogramas faciales faltantes/dañados
data_stats.pth: Estadísticas de media y desviación estándar de cada modalidad

División de Datos

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"])))

Instalación y Uso

Demostración Rápida

# Crear entorno
conda create --name a2p_env python=3.9
conda activate a2p_env

# Instalar dependencias
sh demo/install.sh

# Ejecutar demostración
python -m demo.demo

Instalación Completa

# Configuración del entorno
conda create --name a2p_env python=3.9
conda activate a2p_env
pip install -r scripts/requirements.txt

# Descargar modelos necesarios
sh scripts/download_prereq.sh

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

Descarga de Datos

# Descargar un solo conjunto de datos
curl -L https://github.com/facebookresearch/audio2photoreal/releases/download/v1.0/<person_id>.zip -o <person_id>.zip
unzip <person_id>.zip -d dataset/

# Descargar todos los conjuntos de datos
sh scripts/download_alldatasets.sh

# Descargar modelos pre-entrenados
sh scripts/download_allmodels.sh

Entrenamiento del Modelo

1. Entrenamiento del Modelo de Difusión Facial

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. Entrenamiento del Modelo de Difusión Corporal

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. Entrenamiento del Codificador VQ

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. Entrenamiento del Transformador de Posturas Guía

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

Generación por Inferencia

Generación Facial

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

Generación Corporal

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

Renderizado Completo

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

Visualización

Visualización del Conjunto de Datos

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

Requisitos Técnicos

  • CUDA: 11.7
  • Python: 3.9
  • GCC: 9.0
  • Dependencias Principales: PyTorch, PyTorch3D, Gradio

Escenarios de Aplicación

  • Reuniones Virtuales y Colaboración Remota
  • Transmisiones en Vivo de Humanos Digitales y Creación de Contenido
  • Aplicaciones de Juegos y Entretenimiento
  • Simulaciones de Educación y Formación
  • Interfaces de Interacción Humano-Máquina

Star History Chart