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

目录

论文题目

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

安装

创建 conda 环境:

使用 pip 安装软件包

推理

1. 下载预训练模型

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/champicon-default.png?t=N7T8https://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.10conda 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

数据集

TypeHuggingFaceETA
InferenceSMPL motion samplesThu Apr 18 2024
TrainingSample datasets for TrainingSun May 05 2024

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工业无线通信解决方案,企业在进行智能化升级改造

某大型制造企业在进行智能化升级改造,需要将分布在各个车间的数控机床、自动化生产线、AGV小车等设备连接到云端,实现设备的远程监控、数据采集分析等功能。之前工厂内部是用工业以太网连接,存在布线难、成本高、灵活性差等问题。 在了解客户需求后,我司星创易联的工程师建议客…

淘宝扭蛋机小程序,扭蛋市场创新模式

扭蛋机作为潮玩市场的娱乐消费方式,成为了当下消费者的新宠。扭蛋机凭借自身性价比高、商品多样、惊喜性等特点,吸引了各个年龄层的消费者,不仅年轻人喜欢,不少小学生和老年人也非常喜欢,扭蛋机市场迎来了快速发展期。…

简单聊下办公白环境

在当今信息化时代,办公环境对于工作效率和员工满意度有着至关重要的影响。而白名单作为一种网络安全策略,其是否适合办公环境,成为了许多企业和组织需要思考的问题。本文将从白名单的定义、特点及其在办公环境中的应用等方面,探讨…

DSP问题:TMS320F280049 GPIO输入上拉电压只有2.1V

1、问题现象 使用TMS320F280049编写GPIO输入检测程序时,配置GPIO为输入上拉,使用万用表测量GPIO口只有2.1V左右,程序此时检测到的是低电平,导致无法检测到按钮按下(按钮按下接地)。 2、问题原因 TMS320F…

NRP-Z81探头NRP-Z85功率传感器NRP-Z86罗德与施瓦茨

精确和简单的功率测量重要的特点是高测量精度和速度。紧凑、坚固的R&SNRX基本单元,带彩色触摸显示屏,支持多达四个R&SNRP功率传感器和所有传感器相关测量功能。测量值以数字或图形方式显示,具体取决于测量功能。高分辨率图形用户界面…

【必会面试题】JVM内存分区?垃圾回收(GC)算法?如何处理OOM?

目录 JVM分区模型GC(垃圾回收)算法:处理OOM(Out Of Memory): JVM分区模型 JVM(Java虚拟机)内存划分为多个区域,以支持其运行时环境和对象的生命周期管理。以下是主要的内…

变压器绕线完成之后要做的事

1 调整感量:测主绕组电感量,通过磨气隙或垫气隙,测得感量没错以后,用胶带封装磁芯 2 测验同名端是否正确:两绕组首尾相连,测试连接后的总感量,是否比感量大的那个绕组还大。如果是,…

从零手写实现 nginx-09-compress http 文件压缩

前言 大家好,我是老马。很高兴遇到你。 我们为 java 开发者实现了 java 版本的 nginx https://github.com/houbb/nginx4j 如果你想知道 servlet 如何处理的,可以参考我的另一个项目: 手写从零实现简易版 tomcat minicat 手写 nginx 系列 …

计算欧几里得距离

任务描述 本关实现一个函数来计算欧几里得距离。 相关知识 K-means 算法的核心思想是,将数据集中的样本聚类为多个簇集,簇内样本距离较近,簇间样本距离较远。由此可见,其最基本的运算是判断样本(如书籍、电影、用户…

澳大利亚和德国媒体投放-国外新闻发稿-海外软文推广

德国媒体 Firmenpresse德国新闻 Firmenpresse德国新闻是一家备受欢迎的新闻发布平台,其好友搜索引擎在收录网站方面表现出色。如果您希望更好地将您的新闻传播给德国受众,Firmenpresse德国新闻将是一个理想的选择。 Frankfurt Stadtanzeiger法兰克福城…

电气灭火产品调查:全氟己酮自自动灭火贴多少钱一个?

根据国家消防救援局于透露,今年年初,河南南阳、江西新余、江苏南京接连发生重大火灾事故,截至日前,全国共接报火灾45万起,住宅、宾馆餐饮店、电动车火灾数量相比去年同期均有所上升。从引 发火灾的原因来看&#xff0c…

k8s-mysql主从部署

一.环境信息 mysql版本 :8.0 k8s 版本1.22 使用nfs作为共享存储 二.配置mysql主节点yaml apiVersion: v1 kind: ConfigMap metadata:name: mysql-master-confignamespace: mysqllabels:app: mysql-master-config data:my.cnf: |[client]default-character-setutf8[mysql]d…

MySQL Doublewrite Buffer 有了解过吗?

引言:在数据库管理中,确保数据的完整性和一致性是至关重要的。然而,在持久化数据到磁盘的过程中,可能会遇到各种意外情况,如断电或系统崩溃,从而导致部分数据写入,而另一部分数据未能成功写入&a…

揭秘!如何从精益生产转向智能制造

企业在“工业4.0、智能制造、互联网”等概念满天飞的环境下迷失了方向,不知该如何下手,盲目跟风。 君不见,很多企业在“工业4.0、智能制造、互联网”等概念满天飞的环境下迷失了方向,不知该如何下手,盲目跟风&#xf…

D365 使用 X++ 设置采购行的财务维度组合

文章目录 前言一、代码 前言 使用 X 设置采购行的财务维度组合 一、代码 PurchLine purchLine;DimensionAttributeValueSetStorage dimensionAttributeValueSetStorage;DimensionAttributeValue dimensionAttributeValue;DimensionAt…

2024下《系统集成项目管理工程师》50个高频考点汇总!值得收藏

宝子们!5月软考考完了,终于可以考系统集成了! 整理了50个高频考点,涵盖全书90%考点,先把这个存下!再慢慢看书,边看书边背这个 1、信息安全的基本要素有: (1&#xff09…

迈入智能新纪元:智慧机房运维系统引领行业变革

在数字化飞速发展的今天,机房作为信息时代的“心脏”,其稳定运行对于企业的业务连续性至关重要。然而,传统的机房运维模式面临着诸多挑战,如响应速度慢、故障定位难、资源浪费大等问题。智慧机房运维系统,它将以智能化…

Java【问题 07】SSH不同版本使用jsch问题处理(7.4升级9.7及欧拉原生8.8)

SSH不同版本使用jsch问题处理 1.问题一2.问题二2.1 说明2.2 解决 3.问题三 1.问题一 # 1.系统 cat /etc/os-release # 系统信息 NAME"openEuler" VERSION"22.03 (LTS-SP1)" ID"openEuler" VERSION_ID"22.03" PRETTY_NAME"openEu…

nginx快速删除一行

使用光标定位到要删除的行,连续按两次键盘上的字母d,则可删除; 如果原先在编辑模式下,按esc键退出编辑模式,然后定位到要删除的位,按2次d,则可快速删除,删除后想继续编辑&#xff0…

延时任务工具类

自定义工具类 package com.sxfoundation.task;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.task.TaskRejectedException; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.spri…