AI个人学习
和实操指南

AniPortrait:音频驱动图片或视频动作生成逼真的数字人讲话视频

综合介绍

AniPortrait是一个由音频驱动生成逼真的肖像动画的创新框架。该项目由腾讯游戏知己实验室的华为伟、杨泽俊和王志声开发。AniPortrait能够通过音频和参考肖像图像生成高质量的动画,甚至可以提供视频进行面部重现。通过使用先进的3D中间表示和2D面部动画技术,该框架能够生成自然流畅的动画效果,适用于影视制作、虚拟主播和数字人等多种应用场景。

AniPortrait:音频驱动生成逼真的数字人说话视频-1

演示地址:https://huggingface.co/spaces/ZJYang/AniPortrait_official


 

AniPortrait:音频驱动图片或视频动作生成逼真的数字人讲话视频-1

 

功能列表

  • 音频驱动动画:通过音频输入生成对应的肖像动画。
  • 视频驱动动画:提供视频进行面部重现,生成逼真的面部动画。
  • 高质量动画生成:使用3D中间表示和2D面部动画技术,生成高质量的动画效果。
  • 网络界面演示:通过Gradio Web UI提供在线演示,方便用户体验。
  • 模型训练与推理:支持模型的训练与推理,用户可以自定义数据进行训练和生成。

 

使用帮助

安装

环境搭建

推荐使用Python版本>=3.10和CUDA版本=11.7。按照以下步骤搭建环境:

pip install -r requirements.txt

下载权重

所有权重文件应放置在./pretrained_weights目录下。手动下载权重文件如下:

  1. 下载训练好的权重,包括以下部分:denoising_unet.pthreference_unet.pthpose_guider.pthmotion_module.pth等。
  2. 下载基础模型和其他组件的预训练权重:
    • StableDiffusion V1.5
    • sd-vae-ft-mse
    • image_encoder
    • wav2vec2-base-960h

权重文件结构组织如下:

./pretrained_weights/
|-- image_encoder
|   |-- config.json
|   `-- pytorch_model.bin
|-- sd-vae-ft-mse
|   |-- config.json
|   |-- diffusion_pytorch_model.bin
|   `-- diffusion_pytorch_model.safetensors
|-- stable-diffusion-v1-5
|   |-- feature_extractor
|   |   `-- preprocessor_config.json
|   |-- model_index.json
|   |-- unet
|   |   |-- config.json
|   |   `-- diffusion_pytorch_model.bin
|   `-- v1-inference.yaml
|-- wav2vec2-base-960h
|   |-- config.json
|   |-- feature_extractor_config.json
|   |-- preprocessor_config.json
|   |-- pytorch_model.bin
|   |-- README.md
|   |-- special_tokens_map.json
|   |-- tokenizer_config.json
|   `-- vocab.json
|-- audio2mesh.pt
|-- audio2pose.pt
|-- denoising_unet.pth
|-- film_net_fp16.pt
|-- motion_module.pth
|-- pose_guider.pth
`-- reference_unet.pth

Gradio Web UI

通过以下命令尝试我们的网络演示。我们还提供了在线演示

python -m scripts.app

推理

请注意,可以在命令中设置-L为所需的生成帧数,例如-L 300

加速方法:如果生成视频时间过长,可以下载film_net_fp16.pt并放置在./pretrained_weights目录下。

以下是运行推理脚本的CLI命令:

自驱动

python -m scripts.pose2vid --config ./configs/prompts/animation.yaml -W 512 -H 512 -acc

可以参考animation.yaml格式添加自己的参考图像或姿态视频。将原始视频转换为姿态视频(关键点序列),可以运行以下命令:

python -m scripts.vid2pose --video_path pose_video_path.mp4

面部重现

python -m scripts.vid2vid --config ./configs/prompts/animation_facereenac.yaml -W 512 -H 512 -acc

animation_facereenac.yaml中添加源面部视频和参考图像。

音频驱动

python -m scripts.audio2vid --config ./configs/prompts/animation_audio.yaml -W 512 -H 512 -acc

animation_audio.yaml中添加音频和参考图像。删除animation_audio.yaml中的pose_temp可以启用audio2pose模型。您还可以使用此命令生成用于头部姿态控制的pose_temp.npy

python -m scripts.generate_ref_pose --ref_video ./configs/inference/head_pose_temp/pose_ref_video.mp4 --save_path ./configs/inference/head_pose_temp/pose.npy

训练

数据准备

下载VFHQCelebV-HQ。从原始视频中提取关键点并编写训练json文件(以下是处理VFHQ的示例):

python -m scripts.preprocess_dataset --input_dir VFHQ_PATH --output_dir SAVE_PATH --training_json JSON_PATH

在训练配置文件中更新行:

data:
json_path: JSON_PATH

阶段1

运行命令:

accelerate launch train_stage_1.py --config ./configs/train/stage1.yaml

阶段2

将预训练的运动模块权重mm_sd_v15_v2.ckpt(下载链接)放置在./pretrained_weights目录下。在stage2.yaml配置文件中指定阶段1的训练权重,例如:

stage1_ckpt_dir: './exp_output/stage1'
stage1_ckpt_step: 30000

运行命令:

accelerate launch train_stage_2.py --config ./configs/train/stage2.yaml
未经允许不得转载:首席AI分享圈 » AniPortrait:音频驱动图片或视频动作生成逼真的数字人讲话视频

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文