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

😊 EasyAnimate是一个用于生成高分辨率和长视频的端到端解决方案。我们可以训练基于转换器的扩散生成器,训练用于处理长视频的VAE,以及预处理元数据。

😊 我们基于DIT,使用transformer进行作为扩散器进行视频与图片生成。

😊 Welcome!

Arxiv Page Project Page Modelscope Studio Hugging Face Spaces Discord Page

English | 简体中文

目录

简介

EasyAnimate是一个基于transformer结构的pipeline,可用于生成AI图片与视频、训练Diffusion Transformer的基线模型与Lora模型,我们支持从已经训练好的EasyAnimate模型直接进行预测,生成不同分辨率,6秒左右、fps8的视频(EasyAnimateV5,1 ~ 49帧),也支持用户训练自己的基线模型与Lora模型,进行一定的风格变换。

我们会逐渐支持从不同平台快速启动,请参阅 快速启动

新特性:

  • 更新到v5版本,最大支持1024x1024,49帧, 6s, 8fps视频生成,拓展模型规模到12B,应用MMDIT结构,支持不同输入的控制模型,支持中文与英文双语预测。[ 2024.11.08 ]
  • 更新到v4版本,最大支持1024x1024,144帧, 6s, 24fps视频生成,支持文、图、视频生视频,单个模型可支持512到1280任意分辨率,支持中文与英文双语预测。[ 2024.08.15 ]
  • 更新到v3版本,最大支持960x960,144帧,6s, 24fps视频生成,支持文与图生视频模型。[ 2024.07.01 ]
  • ModelScope-Sora“数据导演”创意竞速——第三届Data-Juicer大模型数据挑战赛已经正式启动!其使用EasyAnimate作为基础模型,探究数据处理对于模型训练的作用。立即访问竞赛官网,了解赛事详情。[ 2024.06.17 ]
  • 更新到v2版本,最大支持768x768,144帧,6s, 24fps视频生成。[ 2024.05.26 ]
  • 创建代码!现在支持 Windows 和 Linux。[ 2024.04.12 ]

功能概览:

我们的ui界面如下: ui

快速启动

1. 云使用: AliyunDSW/Docker

a. 通过阿里云 DSW

DSW 有免费 GPU 时间,用户可申请一次,申请后3个月内有效。

阿里云在Freetier提供免费GPU时间,获取并在阿里云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 model.
# I2V models
# https://huggingface.co./alibaba-pai/EasyAnimateV5-12b-zh-InP
# https://modelscope.cn/models/PAI/EasyAnimateV5-12b-zh-InP
# T2V models
# https://huggingface.co./alibaba-pai/EasyAnimateV5-12b-zh
# https://modelscope.cn/models/PAI/EasyAnimateV5-12b-zh

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

a. 环境检查

我们已验证EasyAnimate可在以下环境中执行:

Windows 的详细信息:

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

Linux 的详细信息:

  • 操作系统 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-12B的视频大小可以由不同的GPU Memory生成,包括:

GPU memory 384x672x72 384x672x49 576x1008x25 576x1008x49 768x1344x25 768x1344x49
16GB 🧡 🧡
24GB 🧡 🧡 🧡 🧡
40GB
80GB

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

有一些不支持torch.bfloat16的卡型,如2080ti、V100,需要将app.py、predict文件中的weight_dtype修改为torch.float16才可以运行。

EasyAnimateV5-12B使用不同GPU在25个steps中的生成时间如下:

GPU 384x672x72 384x672x49 576x1008x25 576x1008x49 768x1344x25 768x1344x49
A10 24GB 约120秒 (4.8s/it) 约240秒 (9.6s/it) 约320秒 (12.7s/it) 约750秒 (29.8s/it)
A100 80GB 约45秒 (1.75s/it) 约90秒 (3.7s/it) 约120秒 (4.7s/it) 约300秒 (11.4s/it) 约265秒 (10.6s/it) 约710秒 (28.3s/it)

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

(Obsolete) EasyAnimateV3:

EasyAnimateV3的视频大小可以由不同的GPU Memory生成,包括:

GPU memory 384x672x72 384x672x144 576x1008x72 576x1008x144 720x1280x72 720x1280x144
12GB ⭕️ ⭕️ ⭕️ ⭕️
16GB ⭕️ ⭕️ ⭕️
24GB
40GB
80GB

b. 权重放置

我们最好将权重按照指定路径进行放置:

EasyAnimateV5:

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

视频作品

所展示的结果都是图生视频获得。

EasyAnimateV5-12b-zh-InP

I2V

T2V

EasyAnimateV5-12b-zh-Control

如何使用

1. 生成

a、运行python文件

  • 步骤1:下载对应权重放入models文件夹。
  • 步骤2:在predict_t2v.py文件中修改prompt、neg_prompt、guidance_scale和seed。
  • 步骤3:运行predict_t2v.py文件,等待生成结果,结果保存在samples/easyanimate-videos文件夹中。
  • 步骤4:如果想结合自己训练的其他backbone与Lora,则看情况修改predict_t2v.py中的predict_t2v.py和lora_path。

b、通过ui界面

  • 步骤1:下载对应权重放入models文件夹。
  • 步骤2:运行app.py文件,进入gradio页面。
  • 步骤3:根据页面选择生成模型,填入prompt、neg_prompt、guidance_scale和seed等,点击生成,等待生成结果,结果保存在sample文件夹中。

c、通过comfyui

具体查看ComfyUI README

d、显存节省方案

由于EasyAnimateV5的参数非常大,我们需要考虑显存节省方案,以节省显存适应消费级显卡。我们给每个预测文件都提供了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。

2. 模型训练

一个完整的EasyAnimate训练链路应该包括数据预处理、Video VAE训练、Video DiT训练。其中Video VAE训练是一个可选项,因为我们已经提供了训练好的Video VAE。

a.数据预处理

我们给出了一个简单的demo通过图片数据训练lora模型,详情可以查看wiki

一个完整的长视频切分、清洗、描述的数据预处理链路可以参考video caption部分的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部分的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"

...

train_data_format="normal"

如果数据的格式为绝对路径,则进入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

(Obsolete) EasyAnimateV1: 如果你想训练EasyAnimateV1。请切换到git分支v1。

模型地址

EasyAnimateV5:

7B:

名称 种类 存储空间 Hugging Face Model Scope 描述
EasyAnimateV5-7b-zh-InP EasyAnimateV5 22 GB 🤗Link 😄Link 官方的7B图生视频权重。支持多分辨率(512,768,1024)的视频预测,支持多分辨率(512,768,1024)的视频预测,以49帧、每秒8帧进行训练,支持中文与英文双语预测
EasyAnimateV5-7b-zh EasyAnimateV5 22 GB 🤗Link 😄Link 官方的7B文生视频权重。可用于进行下游任务的fientune。支持多分辨率(512,768,1024)的视频预测,支持多分辨率(512,768,1024)的视频预测,以49帧、每秒8帧进行训练,支持中文与英文双语预测

12B:

名称 种类 存储空间 Hugging Face Model Scope 描述
EasyAnimateV5-12b-zh-InP EasyAnimateV5 34 GB 🤗Link 😄Link 官方的图生视频权重。支持多分辨率(512,768,1024)的视频预测,支持多分辨率(512,768,1024)的视频预测,以49帧、每秒8帧进行训练,支持中文与英文双语预测
EasyAnimateV5-12b-zh-Control EasyAnimateV5 34 GB 🤗Link 😄Link 官方的视频控制权重,支持不同的控制条件,如Canny、Depth、Pose、MLSD等。支持多分辨率(512,768,1024)的视频预测,支持多分辨率(512,768,1024)的视频预测,以49帧、每秒8帧进行训练,支持中文与英文双语预测
EasyAnimateV5-12b-zh EasyAnimateV5 34 GB 🤗Link 😄Link 官方的文生视频权重。可用于进行下游任务的fientune。支持多分辨率(512,768,1024)的视频预测,支持多分辨率(512,768,1024)的视频预测,以49帧、每秒8帧进行训练,支持中文与英文双语预测
(Obsolete) EasyAnimateV4:
名称 种类 存储空间 Hugging Face Model Scope 描述
EasyAnimateV4-XL-2-InP.tar.gz EasyAnimateV4 解压前 8.9 GB / 解压后 14.0 GB 🤗Link 😄Link 官方的图生视频权重。支持多分辨率(512,768,1024,1280)的视频预测,以144帧、每秒24帧进行训练
(Obsolete) EasyAnimateV3:
名称 种类 存储空间 Hugging Face Model Scope 描述
EasyAnimateV3-XL-2-InP-512x512.tar EasyAnimateV3 18.2GB 🤗Link 😄Link 官方的512x512分辨率的图生视频权重。以144帧、每秒24帧进行训练
EasyAnimateV3-XL-2-InP-768x768.tar EasyAnimateV3 18.2GB 🤗Link 😄Link 官方的768x768分辨率的图生视频权重。以144帧、每秒24帧进行训练
EasyAnimateV3-XL-2-InP-960x960.tar EasyAnimateV3 18.2GB 🤗Link 😄Link 官方的960x960(720P)分辨率的图生视频权重。以144帧、每秒24帧进行训练
(Obsolete) EasyAnimateV2:
名称 种类 存储空间 下载地址 Hugging Face Model Scope 描述
EasyAnimateV2-XL-2-512x512.tar EasyAnimateV2 16.2GB - 🤗Link 😄Link 官方的512x512分辨率的重量。以144帧、每秒24帧进行训练
EasyAnimateV2-XL-2-768x768.tar EasyAnimateV2 16.2GB - 🤗Link 😄Link 官方的768x768分辨率的重量。以144帧、每秒24帧进行训练
easyanimatev2_minimalism_lora.safetensors Lora of Pixart 485.1MB Download - - 使用特定类型的图像进行lora训练的结果。图片可从这里下载.
(Obsolete) EasyAnimateV1:

1、运动权重

名称 种类 存储空间 下载地址 描述
easyanimate_v1_mm.safetensors Motion Module 4.1GB download Training with 80 frames and fps 12

2、其他权重

名称 种类 存储空间 下载地址 描述
PixArt-XL-2-512x512.tar Pixart 11.4GB download Pixart-Alpha official weights
easyanimate_portrait.safetensors Checkpoint of Pixart 2.3GB download Training with internal portrait datasets
easyanimate_portrait_lora.safetensors Lora of Pixart 654.0MB download Training with internal portrait datasets

未来计划

  • 支持更大规模参数量的文视频生成模型。

联系我们

  1. 扫描下方二维码或搜索群号:77450006752 来加入钉钉群。
  2. 扫描下方二维码来加入微信群(如果二维码失效,可扫描最右边同学的微信,邀请您入群)ding group Wechat group Person

参考文献

许可证

本项目采用 Apache License (Version 2.0).

Downloads last month
39
Inference API
Unable to determine this model’s pipeline type. Check the docs .