ONNX 模型库
返回模型

说明文档

UniAnimate-DiT:基于大规模视频扩散 Transformer 的人物图像动画

本仓库包含 UniAnimate-DiT 的检查点。该模型在论文 UniAnimate-DiT: Human Image Animation with Large-Scale Video Diffusion TransformerReplace Anyone in Videos 中进行了描述。

  • UniAnimate-Wan2.1-14B-Lora-12000.ckpt:训练 12000 步后的 LoRA 权重和额外可学习模块。

  • dw-ll_ucoco_384.onnx:用于姿态提取的 dwpose 模型。

  • yolox_l.onnx:用于姿态提取的模型。

UniAnimate-DiT

基于 Wan2.1UniAnimate 扩展版本

UniAnimate-DiT 基于最先进的基于 DiT 的 Wan2.1-14B-I2V 模型,用于一致的人物图像动画。Wan2.1 是阿里巴巴开源的视频合成模型集合。我们的代码基于 DiffSynth-Studio,感谢这个优秀的开源项目。

<table> <center> <tr> <!-- <td width=25% style="border: none"> --> <td ><center> <video height="260" controls autoplay loop src="https://cloud.video.taobao.com/vod/wuGhP_lx9FMOZcibpgPg3HAFQXRt2cPSQPMkG2mxQGw.mp4" muted="false"></video> </td> <td ><center> <video height="260" controls autoplay loop src="https://cloud.video.taobao.com/vod/K4lR1PGHnWYc7X6-e8dkZ_60TCr0_6Gqjc3rT6CW7Xw.mp4" muted="false"></video> </td> </tr> </table>

UniAnimate-DiT 快速入门

(1) 安装

在使用此模型之前,请创建 conda 环境并从源代码安装 DiffSynth-Studio。

conda create -n UniAnimate-Wan python=3.9.21
conda activate UniAnimate-Wan

# CUDA 11.8
pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu118
# CUDA 12.1
pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu121
# CUDA 12.4
pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu124

git clone https://github.com/ali-vilab/UniAnimate-DiT.git
cd UniAnimate-DiT
pip install -e .

UniAnimate-DiT 支持多种 Attention 实现。如果您已安装以下任意 Attention 实现,它们将按优先级启用。

推理

(2) 下载预训练检查点

使用 huggingface-cli 下载 Wan2.1-14B-I2V-720P 模型:

pip install \"huggingface_hub[cli]\"
huggingface-cli download Wan-AI/Wan2.1-I2V-14B-720P --local-dir ./Wan2.1-I2V-14B-720P

或使用 modelscope-cli 下载 Wan2.1-14B-I2V-720P 模型:

pip install modelscope
modelscope download Wan-AI/Wan2.1-I2V-14B-720P --local_dir ./Wan2.1-I2V-14B-720P

下载预训练的 UniAnimate-DiT 模型(仅包含 lora 和额外可学习模块的权重):

pip install modelscope
modelscope download xiaolaowx/UniAnimate-DiT --local_dir ./checkpoints

最终,模型权重将组织在 ./checkpoints/ 中,如下所示:

./checkpoints/
|---- dw-ll_ucoco_384.onnx
|---- UniAnimate-Wan2.1-14B-Lora-12000.ckpt
└---- yolox_l.onnx

(3) 姿态对齐

缩放目标姿态序列以匹配参考图像的姿态(您也可以安装 pip install onnxruntime-gpu==1.18.1 以在 GPU 上更快提取):

# 参考图像 1
python run_align_pose.py  --ref_name data/images/WOMEN-Blouses_Shirts-id_00004955-01_4_full.jpg --source_video_paths data/videos/source_video.mp4 --saved_pose_dir data/saved_pose/WOMEN-Blouses_Shirts-id_00004955-01_4_full 

# 参考图像 2
python run_align_pose.py  --ref_name data/images/musk.jpg --source_video_paths data/videos/source_video.mp4 --saved_pose_dir data/saved_pose/musk 

# 参考图像 3
python run_align_pose.py  --ref_name data/images/WOMEN-Blouses_Shirts-id_00005125-03_4_full.jpg --source_video_paths data/videos/source_video.mp4 --saved_pose_dir data/saved_pose/WOMEN-Blouses_Shirts-id_00005125-03_4_full

# 参考图像 4
python run_align_pose.py  --ref_name data/images/IMG_20240514_104337.jpg --source_video_paths data/videos/source_video.mp4 --saved_pose_dir data/saved_pose/IMG_20240514_104337

# 参考图像 5
python run_align_pose.py  --ref_name data/images/10.jpg --source_video_paths data/videos/source_video.mp4 --saved_pose_dir data/saved_pose/10

演示视频处理后的目标姿态将位于 data/saved_pose 中。--ref_name 表示参考图像的路径,--source_video_paths 提供源姿态,--saved_pose_dir 表示处理后目标姿态的路径。

(4) 运行 UniAnimate-Wan2.1-14B-I2V 生成 480P 视频

CUDA_VISIBLE_DEVICES=\"0\" python examples/unianimate_wan/inference_unianimate_wan_480p.py

大约需要 23G GPU 显存。之后,将在 ./outputs 文件夹下生成 832x480(高 x 宽)分辨率的 81 帧视频片段:

对于长视频生成,运行以下命令:

CUDA_VISIBLE_DEVICES=\"0\" python examples/unianimate_wan/inference_unianimate_wan_long_video_480p.py

(5) 运行 UniAnimate-Wan2.1-14B-I2V 生成 720P 视频

CUDA_VISIBLE_DEVICES=\"0\" python examples/unianimate_wan/inference_unianimate_wan_720p.py

大约需要 36G GPU 显存。之后,将生成 1280x720 分辨率的 81 帧视频片段:

注意:尽管我们的模型是在 832x480 分辨率上训练的,但我们观察到直接在 1280x720 上推理通常也是可行的,并能产生令人满意的结果。

对于长视频生成,运行以下命令:

CUDA_VISIBLE_DEVICES=\"0\" python examples/unianimate_wan/inference_unianimate_wan_long_video_720p.py

训练

我们支持在自己的数据集上训练 UniAnimate-DiT。

步骤 1:安装额外的包

pip install peft lightning pandas
# 多 GPU 的 deepspeed
pip install -U deepspeed

步骤 2:准备数据集

为了加速训练,我们预先处理了视频,提取了视频帧和相应的 Dwpose,并用 pickle 包打包。您需要按以下方式管理训练数据:

data/example_dataset/
└── TikTok
    └── 00001_mp4
      ├── dw_pose_with_foot_wo_face.pkl # 打包的 Dwpose
      └── frame_data.pkl # 打包的帧

我们鼓励添加大量数据来微调模型以获得更好的结果。实验结果表明,大约 1000 个训练视频可以微调出一个好的人物图像动画模型。

步骤 3:训练

为方便起见,我们不预处理 VAE 特征,而是将 VAE 预处理和 DiT 模型训练放在一个训练脚本中,同时也便于数据增强以提高性能。您也可以选择先提取 VAE 特征,然后进行后续的 DiT 模型训练。

LoRA 训练(单张 A100 GPU):

CUDA_VISIBLE_DEVICES=\"0\" python examples/unianimate_wan/train_unianimate_wan.py \
   --task train  \
   --train_architecture lora \
   --lora_rank 64 --lora_alpha 64  \
   --dataset_path data/example_dataset   \
   --output_path ./models_out_one_GPU   \
   --dit_path \"/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00001-of-00007.safetensors,/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00002-of-00007.safetensors,/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00003-of-00007.safetensors,/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00004-of-00007.safetensors,/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00005-of-00007.safetensors,/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00006-of-00007.safetensors,/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00007-of-00007.safetensors\"    \
   --max_epochs 10   --learning_rate 1e-4   \
   --accumulate_grad_batches 1   \
   --use_gradient_checkpointing --image_encoder_path \"/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/models_clip_open-clip-xlm-roberta-large-vit-huge-14.pth\"  --use_gradient_checkpointing_offload 

LoRA 训练(多 GPU,基于 Deepseed):

CUDA_VISIBLE_DEVICES=\"0,1,2,3\" python examples/unianimate_wan/train_unianimate_wan.py  \
   --task train   --train_architecture lora \
   --lora_rank 128 --lora_alpha 128  \
   --dataset_path data/example_dataset   \
   --output_path ./models_out   --dit_path \"/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00001-of-00007.safetensors,/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00002-of-00007.safetensors,/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00003-of-00007.safetensors,/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00004-of-00007.safetensors,/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00005-of-00007.safetensors,/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00006-of-00007.safetensors,/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00007-of-00007.safetensors\"     \
   --max_epochs 10   --learning_rate 1e-4   \
   --accumulate_grad_batches 1   \
   --use_gradient_checkpointing \
   --image_encoder_path \"/mnt/user/VideoGeneration_Baselines/Wan2.1/Wan2.1-I2V-14B-720P/models_clip_open-clip-xlm-roberta-large-vit-huge-14.pth\" \
   --use_gradient_checkpointing_offload \
   --training_strategy \"deepspeed_stage_2\" 

您也可以通过设置 --pretrained_lora_path=\"./checkpoints/UniAnimate-Wan2.1-14B-Lora.ckpt\" 来微调我们训练好的模型。

步骤 4:测试

测试在单 GPU 上训练的 LoRA 微调模型:

import torch
from diffsynth import ModelManager, WanVideoPipeline, save_video, VideoData, WanUniAnimateVideoPipeline


# 加载模型
model_manager = ModelManager(device=\"cpu\")
model_manager.load_models(
    [\"Wan2.1/Wan2.1-I2V-14B-720P/models_clip_open-clip-xlm-roberta-large-vit-huge-14.pth\"],
    torch_dtype=torch.float32, # Image Encoder 使用 float32 加载
)
model_manager.load_models(
    [
        [
            
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00001-of-00007.safetensors\",
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00002-of-00007.safetensors\",
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00003-of-00007.safetensors\",
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00004-of-00007.safetensors\",
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00005-of-00007.safetensors\",
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00006-of-00007.safetensors\",
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00007-of-00007.safetensors\",

        ],
        \"Wan2.1/Wan2.1-I2V-14B-720P/models_t5_umt5-xxl-enc-bf16.pth\",
        \"Wan2.1/Wan2.1-I2V-14B-720P/Wan2.1_VAE.pth\",
    ],
    torch_dtype=torch.bfloat16, 
)

model_manager.load_lora_v2(\"models/lightning_logs/version_1/checkpoints/epoch=0-step=500.ckpt\", lora_alpha=1.0)

...
...

测试基于 Deepspeed 多 GPU 训练的 LoRA 微调模型,首先需要 python zero_to_fp32.py . output_dir/ --safe_serialization 将 .pt 文件转换为 .safetensors 文件,然后运行:

import torch
from diffsynth import ModelManager, WanVideoPipeline, save_video, VideoData, WanUniAnimateVideoPipeline


# 加载模型
model_manager = ModelManager(device=\"cpu\")
model_manager.load_models(
    [\"Wan2.1/Wan2.1-I2V-14B-720P/models_clip_open-clip-xlm-roberta-large-vit-huge-14.pth\"],
    torch_dtype=torch.float32, # Image Encoder 使用 float32 加载
)
model_manager.load_models(
    [
        [
            
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00001-of-00007.safetensors\",
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00002-of-00007.safetensors\",
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00003-of-00007.safetensors\",
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00004-of-00007.safetensors\",
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00005-of-00007.safetensors\",
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00006-of-00007.safetensors\",
            \"Wan2.1/Wan2.1-I2V-14B-720P/diffusion_pytorch_model-00007-of-00007.safetensors\",

        ],
        \"Wan2.1/Wan2.1-I2V-14B-720P/models_t5_umt5-xxl-enc-bf16.pth\",
        \"Wan2.1/Wan2.1-I2V-14B-720P/Wan2.1_VAE.pth\",
    ],
    torch_dtype=torch.bfloat16, 
)

model_manager.load_lora_v2([
            \"./models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt/output_dir/model-00001-of-00011.safetensors\",
            \"./models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt/output_dir/model-00002-of-00011.safetensors\",
            \"./models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt/output_dir/model-00003-of-00011.safetensors\",
            \"./models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt/output_dir/model-00004-of-00011.safetensors\",
            \"./models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt/output_dir/model-00005-of-00011.safetensors\",
            \"./models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt/output_dir/model-00006-of-00011.safetensors\",
            \"./models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt/output_dir/model-00007-of-00011.safetensors\",
            \"./models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt/output_dir/model-00008-of-00011.safetensors\",
            \"./models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt/output_dir/model-00009-of-00011.safetensors\",
            \"./models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt/output_dir/model-00010-of-00011.safetensors\",
            \"./models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt/output_dir/model-00011-of-00011.safetensors\",
            ], lora_alpha=1.0)

...
...

引用

如果您发现此代码库对您的研究有用,请引用以下论文:

@article{wang2025unianimate,
      title={UniAnimate: Taming Unified Video Diffusion Models for Consistent Human Image Animation},
      author={Wang, Xiang and Zhang, Shiwei and Gao, Changxin and Wang, Jiayu and Zhou, Xiaoqiang and Zhang, Yingya and Yan, Luxin and Sang, Nong},
      journal={Science China Information Sciences},
      year={2025}
}

@article{wang2025unianimate-DiT,
      title={UniAnimate-DiT: Human Image Animation with Large-Scale Video Diffusion Transformer},
      author={Wang, Xiang and Zhang, Shiwei and Tang, Longxiang and Zhang, Yingya and Gao, Changxin and Wang, Yuehuan and Sang, Nong},
      journal={arxiv:2504.11289},
      year={2025}
}

免责声明

本项目旨在用于学术研究,我们明确不对用户生成的内容承担任何责任。用户在使用生成模型时需对自己的行为全权负责。项目贡献者与用户的行为无法律关联,也不承担任何责任。请务必以负责任的方式使用生成模型,遵守道德和法律标准。

ZheWang123/UniAnimate-DiT

作者 ZheWang123

image-to-video
↓ 0 ♥ 24

创建时间: 2025-04-16 16:31:20+00:00

更新时间: 2025-05-19 16:53:53+00:00

在 Hugging Face 上查看

文件 (5)

.gitattributes
README.md
UniAnimate-Wan2.1-14B-Lora-12000.ckpt
dw-ll_ucoco_384.onnx ONNX
yolox_l.onnx ONNX