政安晨【零基础玩转各类开源AI项目】:解析开源项目:Champ 利用三维参数指导制作可控且一致的人体图像动画

目录

论文题目

[Champ: 利用三维参数指导制作可控且一致的人体图像动画](#Champ: 利用三维参数指导制作可控且一致的人体图像动画)

安装

[创建 conda 环境:](#创建 conda 环境:)

[使用 pip 安装软件包](#使用 pip 安装软件包)

推理

[1. 下载预训练模型](#1. 下载预训练模型)

[2. 准备准备引导动作数据](#2. 准备准备引导动作数据)

运行推理

训练模型

准备数据集

运行训练脚本

数据集


政安晨的个人主页:政安晨****

欢迎 👍点赞✍评论⭐收藏

收录专栏: 零基础玩转各类开源AI项目

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!

项目首页: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

或者,您也可以从源代码库中单独下载:

Champ ckpts:包括去噪 UNet、制导编码器、参考 UNet 和运动模块。

https://huggingface.co/fudan-generative-ai/champ/tree/main

StableDiffusion V1.5:在 Stable-Diffusion-V1-2 的基础上进行了初始化和微调。(感谢 runwayml)

https://huggingface.co/runwayml/stable-diffusion-v1-5

sd-vae-ft-mse:权重旨在与扩散器库一起使用。(感谢 stablilityai)

https://huggingface.co/stabilityai/sd-vae-ft-mse

图像编码器:从 CompVis/stable-diffusion-v1-4-original 进行微调,以接受 CLIP 图像嵌入而非文本嵌入。(感谢 lambdalabs)

https://huggingface.co/lambdalabs/sd-image-variations-diffusers/tree/main/image_encoder

最后,这些预训练模型的组织结构如下:

./pretrained_models/

|-- champ

| |-- denoising_unet.pth

| |-- guidance_encoder_depth.pth

| |-- guidance_encoder_dwpose.pth

| |-- guidance_encoder_normal.pth

| |-- guidance_encoder_semantic_map.pth

| |-- reference_unet.pth

| `-- motion_module.pth

|-- 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

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 将变成这样:

./example_data/

|-- motions/ # Directory includes motions per subfolder

| |-- motion-01/ # A motion sample

| | |-- depth/ # Depth frame sequance

| | |-- dwpose/ # Dwpose frame sequance

| | |-- mask/ # Mask frame sequance

| | |-- normal/ # Normal map frame sequance

| | `-- semantic_map/ # Semanic map frame sequance

| |-- motion-02/

| | |-- ...

| | `-- ...

| `-- motion-N/

| |-- ...

| `-- ...

`-- ref_images/ # Reference image samples(Optional)

|-- ref-01.png

|-- ...

`-- ref-N.png

运行推理

现在,我们将所有准备好的模型和运动数据分别保存在 ${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。

如果您的 VRAM 不足,可以切换到较短的运动序列,或从较长的序列中剪切出一个片段。我们在 inference.yaml 中提供了一个帧范围选择器,您可以用 [min_frame_index, max_frame_index] 列表替换它,这样就能方便地从序列中剪切出一个片段。

训练模型

训练过程包括两个不同的阶段。更多信息,请参阅 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)。

目录结构如下:

/training_data/

|-- video01/ # A video data frame

| |-- depth/ # Depth frame sequance

| |-- dwpose/ # Dwpose frame sequance

| |-- mask/ # Mask frame sequance

| |-- normal/ # Normal map frame sequance

| `-- semantic_map/ # Semanic map frame sequance

|-- video02/

| |-- ...

| `-- ...

`-- videoN/

|-- ...

`-- ...

选择另一小批数据作为验证集,并修改训练配置 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

作者政安晨向他们的工作致敬。

相关推荐
开发者每周简报7 分钟前
求职市场变化
人工智能·面试·职场和发展
AI前沿技术追踪20 分钟前
OpenAI 12天发布会:AI革命的里程碑@附35页PDF文件下载
人工智能
余~~1853816280026 分钟前
稳定的碰一碰发视频、碰一碰矩阵源码技术开发,支持OEM
开发语言·人工智能·python·音视频
galileo20161 小时前
LLM与金融
人工智能
DREAM依旧1 小时前
隐马尔科夫模型|前向算法|Viterbi 算法
人工智能
ROBOT玲玉1 小时前
Milvus 中,FieldSchema 的 dim 参数和索引参数中的 “nlist“ 的区别
python·机器学习·numpy
GocNeverGiveUp1 小时前
机器学习2-NumPy
人工智能·机器学习·numpy
浊酒南街2 小时前
决策树(理论知识1)
算法·决策树·机器学习
B站计算机毕业设计超人2 小时前
计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
大数据·人工智能·爬虫·python·机器学习·课程设计·数据可视化
学术头条2 小时前
清华、智谱团队:探索 RLHF 的 scaling laws
人工智能·深度学习·算法·机器学习·语言模型·计算语言学