Audio2PhotoReal 项目详细介绍
项目概述
Audio2PhotoReal是Facebook Research(Meta Research)开源的一个创新深度学习项目,实现了从音频到逼真人体虚拟化身的端到端合成系统。该项目的核心能力是根据语音输入生成逼真的全身人体动画,包括面部表情和身体姿态。
技术特点
核心功能
- 音频驱动的人体合成: 仅基于音频输入生成完整的人体动画
- 逼真的面部表情: 256维面部编码生成自然的面部表情
- 全身姿态生成: 104维关节角度实现完整的身体动作
- 对话场景优化: 专门针对对话场景中的人体行为建模
技术架构
项目采用多模型协同的架构设计:
- 面部扩散模型: 基于音频生成256维面部编码
- 身体扩散模型: 结合音频和引导姿态生成104维关节旋转
- 引导姿态生成器: VQ-VAE架构,1fps频率生成引导姿态
- VQ编码器-解码器: 对连续104维姿态空间进行向量量化
数据集
数据结构
项目提供了四个人物的完整数据集:
- PXB184, RLW104, TXB805, GQS883
每个人物包含约26-30个对话场景,每个场景包含:
*audio.wav: 双声道音频文件(48kHz)
- 声道0: 当前人物音频
- 声道1: 对话伙伴音频
*body_pose.npy: (T × 104) 关节角度数组
*face_expression.npy: (T × 256) 面部编码数组
*missing_face_frames.npy: 缺失/损坏的面部帧索引
data_stats.pth: 各模态的均值和标准差统计
数据划分
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"])))
安装和使用
快速演示
# 创建环境
conda create --name a2p_env python=3.9
conda activate a2p_env
# 安装依赖
sh demo/install.sh
# 运行演示
python -m demo.demo
完整安装
# 环境配置
conda create --name a2p_env python=3.9
conda activate a2p_env
pip install -r scripts/requirements.txt
# 下载必要模型
sh scripts/download_prereq.sh
# 安装PyTorch3D
pip install "git+https://github.com/facebookresearch/pytorch3d.git"
数据下载
# 下载单个数据集
curl -L https://github.com/facebookresearch/audio2photoreal/releases/download/v1.0/<person_id>.zip -o <person_id>.zip
unzip <person_id>.zip -d dataset/
# 下载所有数据集
sh scripts/download_alldatasets.sh
# 下载预训练模型
sh scripts/download_allmodels.sh
模型训练
1. 面部扩散模型训练
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. 身体扩散模型训练
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. 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. 引导姿态变换器训练
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
技术要求
- CUDA: 11.7
- Python: 3.9
- GCC: 9.0
- 主要依赖: PyTorch, PyTorch3D, Gradio
应用场景
- 虚拟会议和远程协作
- 数字人直播和内容创作
- 游戏和娱乐应用
- 教育和培训仿真
- 人机交互界面