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

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

相关推荐
AI营销资讯站2 分钟前
原圈科技AI营销内容生产体系助力企业降本提效新变革
大数据·人工智能
AI科技星3 分钟前
质量定义方程中条数概念的解析与经典例子计算
数据结构·人工智能·经验分享·算法·计算机视觉
啊阿狸不会拉杆3 分钟前
《数字图像处理》第8章-图像压缩和水印
图像处理·人工智能·算法·计算机视觉·数字图像处理
智航GIS4 分钟前
ArcGIS大师之路500技---034重采样算法选择
人工智能·算法·arcgis
~央千澈~5 分钟前
序章《程序员进化:AI 编程革命》——用 Cursor 驱动的游戏开发实战作者:卓伊凡
人工智能·ai编程
风途知识百科6 分钟前
专用气象设备 —— 光伏气象站与防爆气象站[特殊字符]!
人工智能
roman_日积跬步-终至千里7 分钟前
【计算机视觉18-2】语义理解-CNN架构设计_VGG_Inception_ResNet
人工智能·计算机视觉·cnn
摄影图7 分钟前
卫星插画推荐:星轨下的科技美学像素漫画图赏
人工智能·科技·aigc·插画
存储国产化前线7 分钟前
国产工业级存储进阶之路:从自主可控主控到可靠可用的全链路突围
大数据·人工智能·物联网