之前阿里推出了EMO,效果很棒,但是并未给出源码。
最近,腾讯游戏知几团队放出了类似产品 AniPortrait,并开源。我们一起来看下。
【视频请文末微信号中同名文章查看】
AniPortrait
AniPortrait:音频驱动的逼真肖像动画合成
作者:Huawei Wei, Zejun Yang, Zhisheng Wang
组织:Tencent Games Zhiji, Tencent
在这里,我们提出了AniPortrait,一个新颖的框架,用于生成由音频和参考肖像图像驱动的高质量动画。您还可以提供视频来实现面部重现。
流程
待办事项
- 现在我们的论文已经在arXiv上发布了。
- 更新代码以生成pose_temp.npy,用于头部姿态控制。
- 我们将在进一步优化后发布audio2pose预训练权重,用于音频到视频的转换。您可以在
./configs/inference/head_pose_temp
中选择头部姿态模板进行替换。
各种生成的视频
自主驱动
面部重现
视频来源:鹿火CAVY来自bilibili
音频驱动
安装
构建环境
我们建议使用 Python 版本 >=3.10 和 CUDA 版本 =11.7。然后按照以下方式构建环境:
pip install -r requirements.txt
下载权重
所有权重应放置在 ./pretrained_weights
目录下。您可以手动下载权重,如下所示:
-
下载我们训练的 权重,其中包括四个部分:
denoising_unet.pth
、reference_unet.pth
、pose_guider.pth
、motion_module.pth
和audio2mesh.pt
。 -
下载基于模型和其他组件的预训练权重:
最后,这些权重应按以下方式组织:
./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
|-- denoising_unet.pth
|-- motion_module.pth
|-- pose_guider.pth
`-- reference_unet.pth
注意:如果您已经安装了一些预训练模型,例如 StableDiffusion V1.5
,您可以在配置文件中指定它们的路径(例如 ./config/prompts/animation.yaml
)。
推理
以下是运行推理脚本的CLI命令:
请注意,您可以在命令中设置 -L 为所需的生成帧数,例如,-L 300。
自主驱动
python -m scripts.pose2vid --config ./configs/prompts/animation.yaml -W 512 -H 512
您可以参考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
在animation_facereenac.yaml中添加源脸部视频和参考图像。
音频驱动
python -m scripts.audio2vid --config ./configs/prompts/animation_audio.yaml -W 512 -H 512
在animation_audio.yaml中添加音频和参考图像。
您可以使用以下命令为头部姿态控制生成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
训练
数据准备
从原始视频中提取关键点并编写训练json文件(以下是处理VFHQ的示例):
python -m scripts.preprocess_dataset --input_dir VFHQ_PATH --output_dir SAVE_PATH --training_json JSON_PATH
更新训练配置文件中的行:
data:
json_path: JSON_PATH
第一阶段
运行命令:
accelerate launch train_stage_1.py --config ./configs/train/stage1.yaml
第二阶段
将预训练的运动模块权重 mm_sd_v15_v2.ckpt
(下载链接)放置在 ./pretrained_weights
下。
在配置文件 stage2.yaml
中指定第一阶段训练权重,例如:
stage1_ckpt_dir: './exp_output/stage1'
stage1_ckpt_step: 30000
运行命令:
accelerate launch train_stage_2.py --config ./configs/train/stage2.yaml
致谢
我们首先感谢EMO的作者,我们演示中的部分图像和音频来自EMO。此外,我们还要感谢 Moore-AnimateAnyone、majic-animate、animatediff 和 Open-AnimateAnyone 仓库的贡献者,感谢他们的开放研究和探索。
引用
@misc{wei2024aniportrait,
title={AniPortrait: Audio-Driven Synthesis of Photorealistic Portrait Animations},
author={Huawei Wei and Zejun Yang and Zhisheng Wang},
year={2024},
eprint={2403.17694},
archivePrefix={arXiv},
primaryClass={cs.CV}
}