ITADN
aigc-apps/EasyAnimate
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

📷 EasyAnimate | 高分辨率与长视频生成的端到端解决方案

😊 EasyAnimate 是一个用于生成分辨率高且时长长的视频的端到端解决方案。我们可以训练基于 transformer 的扩散生成器,训练用于处理长视频的 VAE,并对元数据(metadata)进行预处理。

😊 我们使用 DIT 和 transformer 作为视频和图像生成的扩散器(diffuser)。

😊 欢迎!

Arxiv Page Project Page Modelscope Studio Hugging Face Spaces Discord Page

English | 简体中文 | 日本語

目录

简介

EasyAnimate 是一个基于 transformer 架构的流水线,旨在生成 AI 图像和视频,并为 Diffusion Transformer 训练基线模型和 Lora 模型。我们支持直接从预训练的 EasyAnimate 模型进行预测,从而生成具有各种分辨率、时长约 6 秒、帧率为 8fps 的视频(EasyAnimateV5,1 到 49 帧)。此外,用户可以针对特定的风格转换训练自己的基线模型和 Lora 模型。

我们将支持从不同平台快速拉取,请参阅 快速开始

新功能:

  • EasyAnimate-V5.1 现已在 diffusers 中支持。有关实现细节,请参阅 PR。相关权重可从 EasyAnimate-V5.1-diffusers 下载。有关使用说明,请参阅 Usage。 [ 2025.03.06 ]
  • 已更新至 v5.1 版本,使用 Qwen2 VL 作为文本编码器,并使用 Flow 作为采样方法。它支持中文和英文的双语预测。除了 Canny 和 Pose 等常见控制外,还支持轨迹控制和相机控制。 [2025.01.21]
  • 使用奖励反向传播训练 Lora 并优化视频,使其更好地符合人类偏好,详情见 here。EasyAnimateV5-7b 现已发布。 [2024.11.27]
  • 已更新至 v5,支持生成高达 1024x1024、49 帧、6 秒、8fps 的视频,模型规模扩展至 12B,采用 MMDIT 结构,并启用支持多种输入的控制模型;支持中文和英文的双语预测。 [2024.11.08]
  • 已更新至 v4,支持生成高达 1024x1024、144 帧、6 秒、24fps 的视频;支持从文本、图像和视频生成视频,单个模型可处理 512 到 1280 的分辨率;启用中文和英文的双语预测。 [2024.08.15]
  • 已更新至 v3,支持从文本和图像生成高达 960x960、144 帧、6 秒、24fps 的视频。 [2024.07.01]
  • ModelScope-Sora “Data Director” 创意大赛 — 第三届 Data-Juicer 大模型数据挑战赛现已正式启动!以 EasyAnimate 作为基础模型,探索数据处理对模型训练的影响。请访问竞赛网站了解详情。[2024.06.17]
  • 更新至 v2,支持生成最高 768x768 分辨率、144 帧、6 秒、24fps 的视频。[2024.05.26]
  • 代码已创建! 现支持 Windows 和 Linux。[2024.04.12]

Function:

我们的 UI 界面如下: ui

快速开始

1. 云端使用:AliyunDSW/Docker

a. 从 AliyunDSW

DSW 提供免费 GPU 时长,用户可申请一次,申请后有效期为 3 个月。

Aliyun 在 Freetier 提供免费 GPU 时长,获取后在 Aliyun PAI-DSW 中使用,即可在 5 分钟内启动 EasyAnimate!

DSW Notebook

b. 来自 ComfyUI

我们的 ComfyUI 如下,详情请参阅 ComfyUI READMEworkflow graph

c. 来自 docker

如果您正在使用 docker,请确保您的机器上已正确安装显卡驱动和 CUDA 环境。

然后按以下方式执行以下命令:

# pull image
docker pull mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easycv/torch_cuda:easyanimate

# enter image
docker run -it -p 7860:7860 --network host --gpus all --security-opt seccomp:unconfined --shm-size 200g mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easycv/torch_cuda:easyanimate

# clone code
git clone https://github.com/aigc-apps/EasyAnimate.git

# enter EasyAnimate's dir
cd EasyAnimate

# download weights
mkdir models/Diffusion_Transformer
mkdir models/Motion_Module
mkdir models/Personalized_Model

# Please use the hugginface link or modelscope link to download the EasyAnimateV5.1 model.
# https://huggingface.co/alibaba-pai/EasyAnimateV5.1-12b-zh-InP
# https://modelscope.cn/models/PAI/EasyAnimateV5.1-12b-zh-InP

# https://huggingface.co/alibaba-pai/EasyAnimateV5.1-12b-zh
# https://modelscope.cn/models/PAI/EasyAnimateV5.1-12b-zh

2. 本地安装:环境检查/下载/安装

a. 环境检查

我们已在以下环境中验证了 EasyAnimate 的运行:

Windows 的详细信息:

  • OS: Windows 10
  • python: python3.10 & python3.11
  • pytorch: torch2.2.0
  • CUDA: 11.8 & 12.1
  • CUDNN: 8+
  • GPU: Nvidia-3060 12G

Linux 的详细信息:

  • OS: Ubuntu 20.04, CentOS
  • python: python3.10 & python3.11
  • pytorch: torch2.2.0
  • CUDA: 11.8 & 12.1
  • CUDNN: 8+
  • GPU:Nvidia-V100 16G & Nvidia-A10 24G & Nvidia-A100 40G & Nvidia-A100 80G

我们需要磁盘上约有 60GB 的可用空间(用于保存权重),请检查!

EasyAnimateV5.1-12B 可以通过不同的 GPU 显存生成以下视频尺寸,包括:

GPU memory384x672x25384x672x49576x1008x25576x1008x49768x1344x25768x1344x49
16GB🧡⭕️⭕️⭕️
24GB🧡🧡🧡🧡🧡
40GB
80GB

EasyAnimateV5.1-7B 的视频尺寸可根据不同的 GPU 显存生成,包括:

GPU 显存384x672x25384x672x49576x1008x25576x1008x49768x1344x25768x1344x49
16GB🧡🧡⭕️⭕️
24GB🧡🧡
40GB
80GB

✅ 表示可以在 "model_cpu_offload" 下运行,🧡 表示可以在 "model_cpu_offload_and_qfloat8" 下运行,⭕️ 表示可以在 "sequential_cpu_offload" 下运行,❌ 表示无法运行。请注意,使用 sequential_cpu_offload 运行速度会更慢。

一些不支持 torch.bfloat16 的 GPU,例如 2080ti 和 V100,需要将 app.py 和 predict 文件中的 weight_dtype 更改为 torch.float16 才能运行。

EasyAnimateV5.1-12B 使用不同 GPU 进行 25 步生成的时间如下:

GPU384x672x25384x672x49576x1008x25576x1008x49768x1344x25768x1344x49
A10 24GB~120s (4.8s/it)~240s (9.6s/it)~320s (12.7s/it)~750s (29.8s/it)
A100 80GB~45s (1.75s/it)~90s (3.7s/it)~120s (4.7s/it)~300s (11.4s/it)~265s (10.6s/it)~710s (28.3s/it)
(已弃用) EasyAnimateV3:

EasyAnimateV3 的视频尺寸可根据不同的 GPU 显存生成,包括:

GPU 显存384x672x72384x672x144576x1008x72576x1008x144720x1280x72720x1280x144
12GB⭕️⭕️⭕️⭕️
16GB⭕️⭕️⭕️
24GB
40GB
80GB

(⭕️) 表示可以在 low_gpu_memory_mode=True 下运行,但速度较慢,❌ 表示无法运行。

b. 权重

我们最好将 权重 放置在指定路径:

EasyAnimateV5.1:

📦 models/
├── 📂 Diffusion_Transformer/
│   ├── 📂 EasyAnimateV5.1-12b-zh-InP/
│   └── 📂 EasyAnimateV5.1-12b-zh/
├── 📂 Personalized_Model/
│   └── your trained trainformer model / your trained lora model (for UI load)

视频结果

使用 EasyAnimateV5.1-12b-zh-InP 进行图像转视频

使用 EasyAnimateV5.1-12b-zh 进行文本生成视频

使用 EasyAnimateV5.1-12b-zh-Control 控制视频

轨迹控制:

通用控制视频(Canny、Pose、Depth 等):

使用 EasyAnimateV5.1-12b-zh-Control-Camera 进行相机控制

向上平移 向左平移 向右平移
向下平移 向上平移 + 向左平移 向上平移 + 向右平移

如何使用

1. Inference

a. 内存节省选项

由于 EasyAnimateV5 和 V5.1 拥有非常大的参数,我们需要考虑内存节省选项以适应消费级显卡。我们为每个预测文件提供了 GPU_memory_mode,允许您从 model_cpu_offload、model_cpu_offload_and_qfloat8 或 sequential_cpu_offload 中进行选择。

  • model_cpu_offload 表示整个模型在使用后会移至 CPU,从而节省部分内存。
  • model_cpu_offload_and_qfloat8 表示整个模型在使用后会移至 CPU,并对 transformer 模型应用 float8 量化,从而节省更多内存。
  • sequential_cpu_offload 表示模型的每一层在使用后都会移至 CPU,速度较慢但能节省大量内存。

qfloat8 可能会降低模型性能,但能节省更多内存。如果内存充足,建议使用 model_cpu_offload。

b. 通过 ComfyUI

更多详情,请参阅 ComfyUI README

c. 运行 Python 文件

  • 步骤 1:下载对应的 权重 并将其放置在 models 文件夹中。
  • 步骤 2:根据权重和预测目标使用不同的文件进行预测。
    • 文本生成视频:
      • 修改 predict_t2v.py 文件中的 prompt、neg_prompt、guidance_scale 和 seed。
      • 然后运行 predict_t2v.py 文件并等待结果,结果存储在 samples/easyanimate-videos 文件夹中。
    • 图像生成视频:
      • 修改 predict_i2v.py 文件中的 validation_image_start、validation_image_end、prompt、neg_prompt、guidance_scale 和 seed。
      • validation_image_start 是起始图像,validation_image_end 是视频的结束图像。
      • 然后运行 predict_i2v.py 文件并等待结果,结果存储在 samples/easyanimate-videos_i2v 文件夹中。
    • 视频生成视频:
      • 修改 predict_v2v.py 文件中的 validation_video、validation_image_end、prompt、neg_prompt、guidance_scale 和 seed。
      • validation_video 是视频到视频的参考视频。您可以使用以下视频运行演示:演示视频
      • 然后运行 predict_v2v.py 文件并等待结果,结果存储在 samples/easyanimate-videos_v2v 文件夹中。
    • 通用控制视频(Canny、Pose、Depth 等):
      • 修改 predict_v2v_control.py 文件中的 control_video、validation_image_end、prompt、neg_prompt、guidance_scale 和 seed。
  • control_video 是用于视频生成的控制视频,使用 Canny、Pose、Depth 等提取。您可以使用以下视频运行演示:Demo Video
    • 然后运行 predict_v2v_control.py 文件并等待结果,结果存储在 samples/easyanimate-videos_v2v_control 文件夹中。
    • 轨迹控制视频:
      • 在 predict_v2v_control.py 文件中修改 control_video、ref_image、validation_image_end、prompt、neg_prompt、guidance_scale 和 seed。
      • control_video 是控制视频,ref_image 是参考首帧图像。您可以使用以下图像和视频运行演示:Demo Image, Demo Video
      • 然后运行 predict_v2v_control.py 文件并等待结果,结果存储在 samples/easyanimate-videos_v2v_control 文件夹中。
      • 建议通过 ComfyUI 进行交互。
    • 相机控制视频:
      • 在 predict_v2v_control.py 文件中修改 control_video、ref_image、validation_image_end、prompt、neg_prompt、guidance_scale 和 seed。
      • control_camera_txt 是相机控制视频的控制文件,ref_image 是参考首帧图像。您可以使用以下图像和控制文件运行演示:Demo Image, Demo File (from CameraCtrl)
      • 然后运行 predict_v2v_control.py 文件并等待结果,结果存储在 samples/easyanimate-videos_v2v_control 文件夹中。
      • 建议通过 ComfyUI 进行交互。
  • 步骤 3:若要与其他骨干网络以及您自行训练的 Lora 结合使用,请在 predict_t2v.py 文件中相应地修改 predict_t2v.py 和 lora_path。

d. 通过 WebUI 界面

WebUI 支持文生视频、图生视频、视频生视频以及基于控制的视频生成(例如 Canny、Pose、Depth 等)。

  • 步骤 1:下载对应的 权重 并将其放置在 models 文件夹中。
  • 步骤 2:运行 app.py 文件以进入 Gradio 页面。
  • 步骤 3:在页面中选择生成模型,填写 prompt、neg_prompt、guidance_scale、seed 等参数,点击生成,并等待结果,结果将存储在 sample 文件夹中。

2. 模型训练

完整的 EasyAnimate 训练流程应包括数据预处理、Video VAE 训练和 Video DiT 训练。其中,Video VAE 训练是可选的,因为我们已经提供了预训练的 Video VAE。

a. 数据预处理

我们提供了两个简单的示例:

  • 使用图像数据训练 Lora 模型。更多详情,请参阅 wiki
  • 使用视频数据进行 SFT 模型训练。更多详情,请参阅 wiki

完整的长视频分割、清洗和描述的数据预处理流程,可参考 video captions 部分的 README

如果您想要训练一个文生图和视频生成模型。您需要按照此格式组织数据集。

📦 project/
├── 📂 datasets/
│   ├── 📂 internal_datasets/
│       ├── 📂 train/
│       │   ├── 📄 00000001.mp4
│       │   ├── 📄 00000002.jpg
│       │   └── 📄 .....
│       └── 📄 json_of_internal_datasets.json

json_of_internal_datasets.json 是一个标准的 JSON 文件。json 中的 file_path 可以设置为相对路径,如下所示:

[
    {
      "file_path": "train/00000001.mp4",
      "text": "A group of young men in suits and sunglasses are walking down a city street.",
      "type": "video"
    },
    {
      "file_path": "train/00000002.jpg",
      "text": "A group of young men in suits and sunglasses are walking down a city street.",
      "type": "image"
    },
    .....
]

您也可以将路径设置为绝对路径,如下所示:

[
    {
      "file_path": "/mnt/data/videos/00000001.mp4",
      "text": "A group of young men in suits and sunglasses are walking down a city street.",
      "type": "video"
    },
    {
      "file_path": "/mnt/data/train/00000001.jpg",
      "text": "A group of young men in suits and sunglasses are walking down a city street.",
      "type": "image"
    },
    .....
]

b. Video VAE 训练(可选)

Video VAE 训练是一个可选项,因为我们已经提供了预训练的 Video VAE。 如果您想要训练 video vae,请参考 video vae 部分的 README

c. Video DiT 训练

如果在数据预处理期间数据格式为相对路径,请按照以下方式设置 scripts/train.sh

export DATASET_NAME="datasets/internal_datasets/"
export DATASET_META_NAME="datasets/internal_datasets/json_of_internal_datasets.json"

如果在数据预处理期间数据格式为绝对路径,请按照以下方式设置 scripts/train.sh

export DATASET_NAME=""
export DATASET_META_NAME="/mnt/data/json_of_internal_datasets.json"

然后,我们运行 scripts/train.sh。

sh scripts/train.sh

有关设置某些参数的详细信息,请参考 Readme TrainReadme Lora

(已弃用)EasyAnimateV1: 如果您想要训练 EasyAnimateV1,请切换到 git 分支 v1。

Model zoo

EasyAnimateV5.1:

7B:

名称类型存储空间Hugging FaceModel Scope描述
EasyAnimateV5.1-7b-zh-InPEasyAnimateV5.130 GB🤗Link😄Link官方图生视频权重。支持多种分辨率(512、768、1024)的视频预测,以每秒 8 帧、49 帧进行训练,并支持多语言预测。
EasyAnimateV5.1-7b-zh-ControlEasyAnimateV5.130 GB🤗Link😄Link官方视频控制权重,支持 Canny、Depth、Pose、MLSD 以及轨迹控制等多种控制条件。支持多种分辨率(512、768、1024)的视频预测,以每秒 8 帧、49 帧进行训练,并支持多语言预测。
EasyAnimateV5.1-7b-zh-Control-CameraEasyAnimateV5.130 GB🤗Link😄Link官方视频相机控制权重,支持通过输入相机运动轨迹进行方向生成控制。支持多种分辨率(512、768、1024)的视频预测,以每秒 8 帧、49 帧进行训练,并支持多语言预测。
EasyAnimateV5.1-7b-zhEasyAnimateV5.130 GB🤗Link😄Link官方文生视频权重。支持多种分辨率(512、768、1024)的视频预测,以每秒 8 帧、49 帧进行训练,并支持多语言预测。

12B:

名称类型存储空间Hugging FaceModel Scope描述
EasyAnimateV5.1-12b-zh-InPEasyAnimateV5.139 GB🤗Link😄Link官方图生视频权重。支持多种分辨率(512、768、1024)的视频预测,以每秒 8 帧、49 帧进行训练,并支持多语言预测。
EasyAnimateV5.1-12b-zh-ControlEasyAnimateV5.139 GB🤗Link😄Link官方视频控制权重,支持 Canny、Depth、Pose、MLSD 以及轨迹控制等多种控制条件。支持多种分辨率(512、768、1024)的视频预测,以每秒 8 帧、49 帧进行训练,并支持多语言预测。
EasyAnimateV5.1-12b-zh-Control-CameraEasyAnimateV5.139 GB🤗Link😄Link官方视频相机控制权重,支持通过输入相机运动轨迹进行方向生成控制。支持多种分辨率(512、768、1024)的视频预测,以每秒 8 帧、49 帧进行训练,并支持多语言预测。
EasyAnimateV5.1-12b-zhEasyAnimateV5.139 GB🤗Link😄Link官方文生视频权重。支持多种分辨率(512、768、1024)的视频预测,以每秒 8 帧、49 帧进行训练,并支持多语言预测。
(已弃用)EasyAnimateV5:

7B:

名称类型存储空间Hugging FaceModel Scope描述
EasyAnimateV5-7b-zh-InPEasyAnimateV522 GB🤗Link😄Link官方 7B 图生视频权重。支持多种分辨率(512、768、1024)的视频预测,以每秒 8 帧、49 帧进行训练,并支持中英文双语预测。
EasyAnimateV5-7b-zhEasyAnimateV522 GB🤗Link😄Link官方 7B 文生视频权重。支持多种分辨率(512、768、1024)的视频预测,以每秒 8 帧、49 帧进行训练,并支持中英文双语预测。
EasyAnimateV5-Reward-LoRAsEasyAnimateV5-🤗Link😄Link官方奖励反向传播技术模型,优化 EasyAnimateV5-12b 生成的视频,使其更好地符合人类偏好。 |

12B:

名称类型存储空间Hugging FaceModel Scope描述
EasyAnimateV5-12b-zh-InPEasyAnimateV534 GB🤗Link😄Link官方图生视频权重。支持多种分辨率(512、768、1024)的视频预测,使用 49 帧、每秒 8 帧进行训练,并支持中英文双语预测。
EasyAnimateV5-12b-zh-ControlEasyAnimateV534 GB🤗Link😄Link官方视频控制权重,支持 Canny、Depth、Pose、MLSD 等多种控制条件。支持多种分辨率(512、768、1024)的视频预测,使用 49 帧、每秒 8 帧进行训练。支持中英文双语预测。
EasyAnimateV5-12b-zhEasyAnimateV534 GB🤗Link😄Link官方文生视频权重。支持多种分辨率(512、768、1024)的视频预测,使用 49 帧、每秒 8 帧进行训练,并支持中英文双语预测。
EasyAnimateV5-Reward-LoRAsEasyAnimateV5-🤗Link😄Link官方奖励反向传播技术模型,优化 EasyAnimateV5-12b 生成的视频,使其更好地符合人类偏好。 |
(已弃用)EasyAnimateV4:
名称类型存储空间Hugging FaceModel Scope描述
EasyAnimateV4-XL-2-InPEasyAnimateV4解压前:8.9 GB / 解压后:14.0 GB🤗链接😄链接
(已弃用)EasyAnimateV3:
名称类型存储空间Hugging FaceModel Scope描述
EasyAnimateV3-XL-2-InP-512x512EasyAnimateV318.2GB🤗链接😄链接EasyAnimateV3 用于 512x512 文本和图像到视频分辨率的官方权重。以 144 帧和 24 fps 进行训练
EasyAnimateV3-XL-2-InP-768x768EasyAnimateV318.2GB🤗链接😄链接EasyAnimateV3 用于 768x768 文本和图像到视频分辨率的官方权重。以 144 帧和 24 fps 进行训练
EasyAnimateV3-XL-2-InP-960x960EasyAnimateV318.2GB🤗链接😄链接EasyAnimateV3 用于 960x960 文本和 图像到视频分辨率的官方权重。以 144 帧和 24 fps 进行训练
(已弃用)EasyAnimateV2:
名称类型存储空间网址Hugging FaceModel Scope描述
EasyAnimateV2-XL-2-512x512EasyAnimateV216.2GB-🤗链接😄链接EasyAnimateV2 512x512 分辨率的官方权重。使用 144 帧和 24 fps 进行训练
EasyAnimateV2-XL-2-768x768EasyAnimateV216.2GB-🤗链接😄链接EasyAnimateV2 768x768 分辨率的官方权重。使用 144 帧和 24 fps 进行训练
easyanimatev2_minimalism_lora.safetensorsPixart 的 Lora485.1MB下载--使用特定类型图像训练的 lora。图像可从 网址 下载。
(已弃用)EasyAnimateV1:

1、运动权重

名称类型存储空间网址描述
easyanimate_v1_mm.safetensors运动模块4.1GB下载使用 80 帧和 12 fps 进行训练

2、其他权重

名称类型存储空间网址描述
PixArt-XL-2-512x512.tarPixart11.4GB下载Pixart-Alpha 官方权重
easyanimate_portrait.safetensorsPixart 的检查点2.3GB下载使用内部人像数据集进行训练
easyanimate_portrait_lora.safetensorsPixart 的 Lora654.0MB下载使用内部人像数据集进行训练

待办事项

  • 支持参数更大的模型。

联系我们

  1. 使用钉钉搜索群 77450006752 或扫码加入
  2. 您需要扫描二维码加入微信群,如果二维码已过期,请先添加该学生为好友,由其邀请您加入。
ding group Wechat group Person

参考

许可证

本项目基于 Apache License (Version 2.0) 授权。