目录
项目首页:Champ
开源地址:GitHub - fudan-generative-vision/champ: Champ: Controllable and Consistent Human Image Animation with 3D Parametric GuidanceChamp: Controllable and Consistent Human Image Animation with 3D Parametric Guidance - fudan-generative-vision/champhttps://github.com/fudan-generative-vision/champ
论文地址:
https://arxiv.org/pdf/2403.14781
https://arxiv.org/abs/2403.14781
论文题目
Champ: 利用三维参数指导制作可控且一致的人体图像动画
在本研究中,我们介绍了一种人体图像动画制作方法,该方法利用潜在扩散框架中的三维人体参数模型,来增强 curernt 人体生成技术中的形状排列和运动引导。该方法利用 SMPL(Skinned Multi-Person Linear)模型作为三维人体参数模型,建立统一的身体形状和姿势表示。这有助于从源视频中准确捕捉复杂的人体几何和运动特征。具体来说,我们将从 SMPL 序列中获取的渲染深度图像、法线贴图和语义贴图与基于骨骼的运动引导结合起来,用全面的三维形状和详细的姿势属性来丰富潜在扩散模型的条件。多层运动融合模块整合了自我注意机制,用于融合空间域中的形状和运动潜表征。通过将三维人体参数模型表示为运动导向,我们可以在参考图像和源视频运动之间进行人体参数形状配准。在基准数据集上进行的实验评估证明,该方法具有生成高质量人体动画的卓越能力,能准确捕捉姿势和形状变化。此外,我们的方法在拟议的野生数据集上也表现出了卓越的泛化能力。
给定一个输入人体图像和一个描述运动序列的参考视频,目标是合成一个视频,其中图像中的人物复制在参考视频中观察到的动作,从而创建一个可控的、时间上一致的视觉输出。
安装
系统要求Ubuntu20.04/Windows 11、Cuda 12.1
已测试 GPUA100、RTX3090
创建 conda 环境:
conda create -n champ python=3.10
conda activate champ
使用 pip 安装软件包
pip install -r requirements.txt
推理
推理入口点脚本是 ${PROJECT_ROOT}/inference.py。在测试案例之前,有两项准备工作需要完成:
1. 下载预训练模型
您可以从我们的 HuggingFace 软件仓库轻松获取推理所需的所有预训练模型。(https://huggingface.co/fudan-generative-ai/champ)
通过下面的 cmd 将预训练模型克隆到 ${PROJECT_ROOT}/pretrained_models 目录中:
git lfs install
git clone https://huggingface.co/fudan-generative-ai/champ pretrained_models
或者,您也可以从源代码库中单独下载:
最后,这些预训练模型的组织结构如下:
2. 准备准备引导动作数据
在进行推理时,必须使用通过 SMPL 和渲染生成的指导运动数据。
您可以从 HuggingFace 软件仓库下载预渲染示例(https://huggingface.co/datasets/fudan-generative-ai/champ_motions_example),
并将其放入 ${PROJECT_ROOT}/example_data 目录:
git lfs install
git clone https://huggingface.co/datasets/fudan-generative-ai/champ_motions_example example_data
您也可以按照 SMPL 和渲染文档制作自己的运动数据。
(champ/docs/data_process.md at master · fudan-generative-vision/champ · GitHub)
最后,${PROJECT_ROOT}/example_data 将变成这样:
运行推理
现在,我们将所有准备好的模型和运动数据分别保存在 ${PROJECT_ROOT}/pretrained_models 和 ${PROJECT_ROOT}/example_data 中。
下面是推理命令:
python inference.py --config configs/inference/inference.yaml
动画结果将保存在 ${PROJECT_ROOT}/results 文件夹中。您可以通过修改 inference.yaml 来更改参考图像或引导动作。
inference.yaml 中的默认 motion-02 约有 250 帧,需要 ~20GB VRAM。
训练模型
训练过程包括两个不同的阶段。更多信息,请参阅 arXiv 上论文的 "训练部分"。
(https://arxiv.org/abs/2403.14781)
准备数据集
准备自己的人体动作训练视频(或使用我们的 HuggingFace 示例训练数据 https://huggingface.co/datasets/fudan-generative-ai/champ_trainning_sample),并修改训练配置 yaml 中的 data.video_folder 值。
所有训练视频都需要处理成 SMPL 和 DWPose 格式。请参阅数据处理文档(champ/docs/data_process.md at master · fudan-generative-vision/champ · GitHub)。
目录结构如下:
选择另一小批数据作为验证集,并修改训练配置 yaml 中的 validation.ref_images 和 validation.guidance_folders 根。
运行训练脚本
要训练 Champ 模型,请使用以下命令:
# Run training script of stage1
accelerate launch train_s1.py --config configs/train/stage1.yaml
# Modify the `stage1_ckpt_dir` value in yaml and run training script of stage2
accelerate launch train_s2.py --config configs/train/stage2.yaml
数据集
Type | HuggingFace | ETA |
---|---|---|
Inference | SMPL motion samples | Thu Apr 18 2024 |
Training | Sample datasets for Training | Sun May 05 2024 |