码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 政安晨【零基础玩转各类开源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 环境:

    1. conda create -n champ python=3.10
    2. 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 目录中:

    1. git lfs install
    2. 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 目录:

    1. git lfs install
    2. 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 模型,请使用以下命令:

    1. # Run training script of stage1
    2. accelerate launch train_s1.py --config configs/train/stage1.yaml
    3. # Modify the `stage1_ckpt_dir` value in yaml and run training script of stage2
    4. accelerate launch train_s2.py --config configs/train/stage2.yaml

    数据集

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

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

  • 相关阅读:
    关于椭球的一点形象的解说
    tensorflow实现强化学习DDPG算法
    苹果开发初学者指南:Xcode 如何为运行的 App 添加环境变量(Environmental Variable)
    细解“微服务”架构体系——SpringCloud Alibaba!
    51单片机K型热电偶温度采集及控制温控模块MAX6675热电偶LCD1602
    【MM32F5270开发板试用】定制MicroPython及读取MPU6050数据到OLED1306
    2.Rust变量
    【数据挖掘】6. 核函数
    【JS高级】ES6_参数增强、解构的简谈与应用_14
    数据湖在爱奇艺数据中台的应用
  • 原文地址:https://blog.csdn.net/snowdenkeke/article/details/139417303
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号