Home
Login

Projeto de aprendizado profundo que gera avatares humanos virtuais realistas a partir de áudio, sintetizando gestos de corpo inteiro e expressões faciais a partir da fala.

NOASSERTIONPython 2.8kfacebookresearchaudio2photoreal Last Updated: 2024-09-15

Audio2PhotoReal - Detalhes do Projeto

Visão Geral do Projeto

Audio2PhotoReal é um projeto inovador de aprendizado profundo de código aberto do Facebook Research (Meta Research) que implementa um sistema de síntese ponta a ponta de avatares humanos virtualizados e realistas a partir de áudio. A principal capacidade do projeto é gerar animações corporais completas e realistas de humanos com base na entrada de voz, incluindo expressões faciais e posturas corporais.

Características Técnicas

Funcionalidades Principais

  • Síntese Humana Orientada por Áudio: Gera animações corporais humanas completas apenas com base na entrada de áudio.
  • Expressões Faciais Realistas: Codificação facial de 256 dimensões gera expressões faciais naturais.
  • Geração de Postura Corporal Completa: Ângulos de articulação de 104 dimensões implementam movimentos corporais completos.
  • Otimização de Cenários de Diálogo: Modelagem de comportamento humano especificamente para cenários de diálogo.

Arquitetura Técnica

O projeto adota um design de arquitetura colaborativa multi-modelo:

  1. Modelo de Difusão Facial: Gera codificação facial de 256 dimensões com base no áudio.
  2. Modelo de Difusão Corporal: Combina áudio e postura guiada para gerar rotações de articulação de 104 dimensões.
  3. Gerador de Postura Guiada: Arquitetura VQ-VAE, gera postura guiada com frequência de 1fps.
  4. Codificador-Decodificador VQ: Realiza quantização vetorial do espaço de postura contínua de 104 dimensões.

Conjunto de Dados

Estrutura de Dados

O projeto fornece um conjunto de dados completo de quatro personagens:

  • PXB184, RLW104, TXB805, GQS883

Cada personagem contém aproximadamente 26-30 cenas de diálogo, cada cena contendo:

*audio.wav: Arquivo de áudio estéreo (48kHz)
  - Canal 0: Áudio do personagem atual
  - Canal 1: Áudio do parceiro de diálogo

*body_pose.npy: (T × 104) Array de ângulos de articulação
*face_expression.npy: (T × 256) Array de codificação facial
*missing_face_frames.npy: Índices de quadros faciais ausentes/danificados
data_stats.pth: Estatísticas de média e desvio padrão de cada modalidade

Divisão de Dados

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

Instalação e Uso

Demonstração Rápida

# Criar ambiente
conda create --name a2p_env python=3.9
conda activate a2p_env

# Instalar dependências
sh demo/install.sh

# Executar demonstração
python -m demo.demo

Instalação Completa

# Configuração do ambiente
conda create --name a2p_env python=3.9
conda activate a2p_env
pip install -r scripts/requirements.txt

# Baixar modelos necessários
sh scripts/download_prereq.sh

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

Download de Dados

# Baixar um único conjunto de dados
curl -L https://github.com/facebookresearch/audio2photoreal/releases/download/v1.0/<person_id>.zip -o <person_id>.zip
unzip <person_id>.zip -d dataset/

# Baixar todos os conjuntos de dados
sh scripts/download_alldatasets.sh

# Baixar modelos pré-treinados
sh scripts/download_allmodels.sh

Treinamento do Modelo

1. Treinamento do Modelo de Difusão 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. Treinamento do Modelo de Difusão 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. Treinamento do 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. Treinamento do Transformador de Postura Guiada

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

Geração de Inferência

Geração 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

Geração 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

Renderização Completa

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

Visualização

Visualização do Conjunto de Dados

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
  • Dependências Principais: PyTorch, PyTorch3D, Gradio

Cenários de Aplicação

  • Reuniões Virtuais e Colaboração Remota
  • Transmissão ao Vivo de Humanos Digitais e Criação de Conteúdo
  • Aplicações de Jogos e Entretenimento
  • Simulação de Educação e Treinamento
  • Interfaces de Interação Humano-Máquina

Star History Chart