综合介绍
JoyGen是一个创新的两阶段说话人脸视频生成框架,专注于解决音频驱动的面部表情生成问题。该项目由京东科技团队开发,采用先进的3D重建技术和音频特征提取方法,能够准确捕捉说话人的身份特征和表情系数,实现高质量的唇形同步和视觉合成。JoyGen框架包含两个主要阶段:首先是基于音频的唇部运动生成,其次是视觉外观合成。通过整合音频特征和面部深度图,为精确的唇音同步提供全面的监督。该项目不仅支持中文和英文音频驱动,还提供了完整的训练和推理pipeline,是一个功能强大的开源工具。
功能列表
- 音频驱动的3D面部表情生成和编辑
- 精确的唇形-音频同步技术
- 支持中文和英文音频输入
- 3D深度感知的视觉合成
- 面部身份特征保持功能
- 高质量视频生成和编辑能力
- 完整的训练和推理框架支持
- 预训练模型支持快速部署
- 支持自定义数据集训练
- 提供详细的数据预处理工具
使用帮助
1. 环境配置
1.1 基础环境要求
- 支持的GPU:V100, A800
- Python版本:3.8.19
- 系统依赖:ffmpeg
1.2 安装步骤
- 创建并激活conda环境:
conda create -n joygen python=3.8.19 ffmpeg
conda activate joygen
pip install -r requirements.txt
- 安装Nvdiffrast库:
git clone https://github.com/NVlabs/nvdiffrast
cd nvdiffrast
pip install .
- 下载预训练模型
从提供的下载链接获取预训练模型,并按照指定目录结构放置在./pretrained_models/
目录下。
2. 使用流程
2.1 推理过程
执行完整推理pipeline:
bash scripts/inference_pipeline.sh 音频文件 视频文件 结果目录
分步执行推理过程:
- 从音频提取面部表情系数:
python inference_audio2motion.py --a2m_ckpt ./pretrained_models/audio2motion/240210_real3dportrait_orig/audio2secc_vae --hubert_path ./pretrained_models/audio2motion/hubert --drv_aud ./demo/xinwen_5s.mp3 --seed 0 --result_dir ./results/a2m --exp_file xinwen_5s.npy
- 使用新的表情系数逐帧渲染深度图:
python -u inference_edit_expression.py --name face_recon_feat0.2_augment --epoch=20 --use_opengl False --checkpoints_dir ./pretrained_models --bfm_folder ./pretrained_models/BFM --infer_video_path ./demo/example_5s.mp4 --infer_exp_coeff_path ./results/a2m/xinwen_5s.npy --infer_result_dir ./results/edit_expression
- 基于音频特征和面部深度图生成面部动画:
CUDA_VISIBLE_DEIVCES=0 python -u inference_joygen.py --unet_model_path pretrained_models/joygen --vae_model_path pretrained_models/sd-vae-ft-mse --intermediate_dir ./results/edit_expression --audio_path demo/xinwen_5s.mp3 --video_path demo/example_5s.mp4 --enable_pose_driven --result_dir results/talk --img_size 256 --gpu_id 0
2.2 训练过程
- 数据预处理:
python -u preprocess_dataset.py --checkpoints_dir ./pretrained_models --name face_recon_feat0.2_augment --epoch=20 --use_opengl False --bfm_folder ./pretrained_models/BFM --video_dir ./demo --result_dir ./results/preprocessed_dataset
- 检查预处理数据并生成训练列表:
python -u preprocess_dataset_extra.py data_dir
- 开始训练:
修改config.yaml文件后执行:
accelerate launch --main_process_port 29501 --config_file config/accelerate_config.yaml train_joygen.py