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

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

相关推荐
月白风清江有声1 小时前
爆炸仿真的学习日志
人工智能
华奥系科技2 小时前
智慧水务发展迅猛:从物联网架构到AIoT系统的跨越式升级
人工智能·物联网·智慧城市
R²AIN SUITE2 小时前
MCP协议重构AI Agent生态:万能插槽如何终结工具孤岛?
人工智能
b***25112 小时前
动力电池点焊机:驱动电池焊接高效与可靠的核心力量|比斯特自动化
人工智能·科技·自动化
Gyoku Mint3 小时前
机器学习×第二卷:概念下篇——她不再只是模仿,而是开始决定怎么靠近你
人工智能·python·算法·机器学习·pandas·ai编程·matplotlib
小和尚同志3 小时前
通俗易懂的 MCP 概念入门
人工智能·aigc
dudly3 小时前
大语言模型评测体系全解析(下篇):工具链、学术前沿与实战策略
人工智能·语言模型
zzlyx993 小时前
AI大数据模型如何与thingsboard物联网结合
人工智能·物联网
说私域4 小时前
定制开发开源AI智能名片驱动下的海报工厂S2B2C商城小程序运营策略——基于社群口碑传播与子市场细分的实证研究
人工智能·小程序·开源·零售
猛犸MAMMOTH4 小时前
Python打卡第46天
开发语言·python·机器学习