政安晨【零基础玩转各类开源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

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

相关推荐
白熊1883 分钟前
【计算机视觉】OpenCV实战项目- 抖音动态小表情
人工智能·opencv·计算机视觉
摸鱼仙人~5 分钟前
为什么有的深度学习训练,有训练集、验证集、测试集3个划分,有的只是划分训练集和测试集?
人工智能·深度学习
机器之心6 分钟前
7B扩散LLM,居然能跟671B的DeepSeek V3掰手腕,扩散vs自回归,谁才是未来?
人工智能
揣晓丹7 分钟前
JAVA实战开源项目:校园失物招领系统(Vue+SpringBoot) 附源码
java·开发语言·vue.js·spring boot·开源
墨风如雪17 分钟前
不再只是建议:Augment Agent 想成为真正帮你干活的 AI 开发伙伴!
aigc
魔众22 分钟前
AIGCPanel 0.10.0 重磅更新,功能再升级!
人工智能
白雪讲堂36 分钟前
AI SEO内容优化指南:如何打造AI平台青睐的高质量内容
人工智能·自然语言处理
云说智树37 分钟前
破解GenAI时代工业物联网落地难题:研华IoTSuite如何用“全栈技术“重构智造未来?
人工智能·物联网
Yan-英杰41 分钟前
DeepSeek-R1模型现已登录亚马逊云科技
java·大数据·人工智能·科技·机器学习·云计算·deepseek
Jamence1 小时前
多模态大语言模型arxiv论文略读(一)
人工智能·深度学习·语言模型