GitHub - aigc-apps/EasyAnimate: 📺 An End-to-End Solution for High-Resolution and Long Video Generation Based on Transformer Diffusion (original) (raw)

📷 EasyAnimate | An End-to-End Solution for High-Resolution and Long Video Generation

😊 EasyAnimate is an end-to-end solution for generating high-resolution and long videos. We can train transformer based diffusion generators, train VAEs for processing long videos, and preprocess metadata.

😊 We use DIT and transformer as a diffuser for video and image generation.

😊 Welcome!

Arxiv Page Project Page Modelscope Studio Hugging Face Spaces Discord Page

English | 简体中文 | 日本語

Table of Contents

Introduction

EasyAnimate is a pipeline based on the transformer architecture, designed for generating AI images and videos, and for training baseline models and Lora models for Diffusion Transformer. We support direct prediction from pre-trained EasyAnimate models, allowing for the generation of videos with various resolutions, approximately 6 seconds in length, at 8fps (EasyAnimateV5, 1 to 49 frames). Additionally, users can train their own baseline and Lora models for specific style transformations.

We will support quick pull-ups from different platforms, refer to Quick Start.

New Features:

Function:

Our UI interface is as follows:ui

Quick Start

1. Cloud usage: AliyunDSW/Docker

a. From AliyunDSW

DSW has free GPU time, which can be applied once by a user and is valid for 3 months after applying.

Aliyun provide free GPU time in Freetier, get it and use in Aliyun PAI-DSW to start EasyAnimate within 5min!

DSW Notebook

b. From ComfyUI

Our ComfyUI is as follows, please refer to ComfyUI README for details.workflow graph

c. From docker

If you are using docker, please make sure that the graphics card driver and CUDA environment have been installed correctly in your machine.

Then execute the following commands in this way:

# 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. Local install: Environment Check/Downloading/Installation

a. Environment Check

We have verified EasyAnimate execution on the following environment:

The detailed of Windows:

The detailed of Linux:

We need about 60GB available on disk (for saving weights), please check!

The video size for EasyAnimateV5.1-12B can be generated by different GPU Memory, including:

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

The video size for EasyAnimateV5.1-7B can be generated by different GPU Memory, including:

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

✅ indicates it can run under "model_cpu_offload", 🧡 represents it can run under "model_cpu_offload_and_qfloat8", ⭕️ indicates it can run under "sequential_cpu_offload", ❌ means it can't run. Please note that running with sequential_cpu_offload will be slower.

Some GPUs that do not support torch.bfloat16, such as 2080ti and V100, require changing the weight_dtype in app.py and predict files to torch.float16 in order to run.

The generation time for EasyAnimateV5.1-12B using different GPUs over 25 steps is as follows:

GPU 384x672x25 384x672x49 576x1008x25 576x1008x49 768x1344x25 768x1344x49
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)

(Obsolete) EasyAnimateV3:

The video size for EasyAnimateV3 can be generated by different GPU Memory, including:

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

(⭕️) indicates it can run with low_gpu_memory_mode=True, but at a slower speed, and ❌ means it can't run.

b. Weights

We'd better place the weights along the specified path:

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)

Video Result

Image to Video with EasyAnimateV5.1-12b-zh-InP

Text to Video with EasyAnimateV5.1-12b-zh

Control Video with EasyAnimateV5.1-12b-zh-Control

Trajectory Control:

EasyAnimate-Trajectory_00030.mp4 EasyAnimate-Trajectory-Merge_00009.mp4 EasyAnimate_00105.mp4

Generic Control Video (Canny, Pose, Depth, etc.):

demo_pose.mp4 demo_scribble.mp4 demo_depth.mp4
demo_pose_out.mp4 demo_scribble_out.mp4 demo_depth_out.mp4

Camera Control with EasyAnimateV5.1-12b-zh-Control-Camera

Pan Up Pan Left Pan Right
Up.mp4 Left.mp4 Right.mp4
Pan Down Pan Up + Pan Left Pan Up + Pan Right
Down.mp4 Up_Left.mp4 Up_Right.mp4

How to use

1. Inference

a. Memory-Saving Options

Since EasyAnimateV5 and V5.1 have very large parameters, we need to consider memory-saving options to adapt to consumer-grade graphics cards. We provide GPU_memory_mode for each prediction file, allowing you to choose from model_cpu_offload, model_cpu_offload_and_qfloat8, or sequential_cpu_offload.

qfloat8 may reduce model performance but saves more memory. If memory is sufficient, it's recommended to use model_cpu_offload.

b. Via ComfyUI

For more details, see the ComfyUI README.

c. Run Python Files

d. Via WebUI Interface

WebUI supports text-to-video, image-to-video, video-to-video, and control-based video generation (such as Canny, Pose, Depth, etc.).

2. Model Training

A complete EasyAnimate training pipeline should include data preprocessing, Video VAE training, and Video DiT training. Among these, Video VAE training is optional because we have already provided a pre-trained Video VAE.

a. data preprocessing

We provide two simple demos:

A complete data preprocessing link for long video segmentation, cleaning, and description can refer to README in the video captions section.

If you want to train a text to image and video generation model. You need to arrange the dataset in this format.

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

The json_of_internal_datasets.json is a standard JSON file. The file_path in the json can to be set as relative path, as shown in below:

[ { "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" }, ..... ]

You can also set the path as absolute path as follow:

[ { "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 training (optional)

Video VAE training is an optional option as we have already provided pre trained Video VAEs. If you want to train video vae, you can refer to README in the video vae section.

c. Video DiT training

If the data format is relative path during data preprocessing, please set scripts/train.sh as follow.

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

If the data format is absolute path during data preprocessing, please set scripts/train.sh as follow.

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

Then, we run scripts/train.sh.

For details on setting some parameters, please refer to Readme Train and Readme Lora.

(Obsolete) EasyAnimateV1: If you want to train EasyAnimateV1. Please switch to the git branch v1.

Model zoo

EasyAnimateV5.1:

7B:

Name Type Storage Space Hugging Face Model Scope Description
EasyAnimateV5.1-7b-zh-InP EasyAnimateV5.1 30 GB 🤗Link 😄Link Official image-to-video weights. Supports video prediction at multiple resolutions (512, 768, 1024), trained with 49 frames at 8 frames per second, and supports for multilingual prediction.
EasyAnimateV5.1-7b-zh-Control EasyAnimateV5.1 30 GB 🤗Link 😄Link Official video control weights, supporting various control conditions such as Canny, Depth, Pose, MLSD, and trajectory control. Supports video prediction at multiple resolutions (512, 768, 1024), trained with 49 frames at 8 frames per second, and supports for multilingual prediction.
EasyAnimateV5.1-7b-zh-Control-Camera EasyAnimateV5.1 30 GB 🤗Link 😄Link Official video camera control weights, supporting direction generation control by inputting camera motion trajectories. Supports video prediction at multiple resolutions (512, 768, 1024), trained with 49 frames at 8 frames per second, and supports for multilingual prediction.
EasyAnimateV5.1-7b-zh EasyAnimateV5.1 30 GB 🤗Link 😄Link Official text-to-video weights. Supports video prediction at multiple resolutions (512, 768, 1024), trained with 49 frames at 8 frames per second, and supports for multilingual prediction.

12B:

Name Type Storage Space Hugging Face Model Scope Description
EasyAnimateV5.1-12b-zh-InP EasyAnimateV5.1 39 GB 🤗Link 😄Link Official image-to-video weights. Supports video prediction at multiple resolutions (512, 768, 1024), trained with 49 frames at 8 frames per second, and supports for multilingual prediction.
EasyAnimateV5.1-12b-zh-Control EasyAnimateV5.1 39 GB 🤗Link 😄Link Official video control weights, supporting various control conditions such as Canny, Depth, Pose, MLSD, and trajectory control. Supports video prediction at multiple resolutions (512, 768, 1024), trained with 49 frames at 8 frames per second, and supports for multilingual prediction.
EasyAnimateV5.1-12b-zh-Control-Camera EasyAnimateV5.1 39 GB 🤗Link 😄Link Official video camera control weights, supporting direction generation control by inputting camera motion trajectories. Supports video prediction at multiple resolutions (512, 768, 1024), trained with 49 frames at 8 frames per second, and supports for multilingual prediction.
EasyAnimateV5.1-12b-zh EasyAnimateV5.1 39 GB 🤗Link 😄Link Official text-to-video weights. Supports video prediction at multiple resolutions (512, 768, 1024), trained with 49 frames at 8 frames per second, and supports for multilingual prediction.

(Obsolete) EasyAnimateV5:

7B:

Name Type Storage Space Hugging Face Model Scope Description
EasyAnimateV5-7b-zh-InP EasyAnimateV5 22 GB 🤗Link 😄Link Official 7B image-to-video weights. Supports video prediction at multiple resolutions (512, 768, 1024), trained with 49 frames at 8 frames per second, and supports bilingual prediction in Chinese and English.
EasyAnimateV5-7b-zh EasyAnimateV5 22 GB 🤗Link 😄Link Official 7B text-to-video weights. Supports video prediction at multiple resolutions (512, 768, 1024), trained with 49 frames at 8 frames per second, and supports bilingual prediction in Chinese and English.
EasyAnimateV5-Reward-LoRAs EasyAnimateV5 - 🤗Link 😄Link The official reward backpropagation technology model optimizes the videos generated by EasyAnimateV5-12b to better match human preferences. |

12B:

Name Type Storage Space Hugging Face Model Scope Description
EasyAnimateV5-12b-zh-InP EasyAnimateV5 34 GB 🤗Link 😄Link Official image-to-video weights. Supports video prediction at multiple resolutions (512, 768, 1024), trained with 49 frames at 8 frames per second, and supports bilingual prediction in Chinese and English.
EasyAnimateV5-12b-zh-Control EasyAnimateV5 34 GB 🤗Link 😄Link Official video control weights, supporting various control conditions such as Canny, Depth, Pose, MLSD, etc. Supports video prediction at multiple resolutions (512, 768, 1024) and is trained with 49 frames at 8 frames per second. Bilingual prediction in Chinese and English is supported.
EasyAnimateV5-12b-zh EasyAnimateV5 34 GB 🤗Link 😄Link Official text-to-video weights. Supports video prediction at multiple resolutions (512, 768, 1024), trained with 49 frames at 8 frames per second, and supports bilingual prediction in Chinese and English.
EasyAnimateV5-Reward-LoRAs EasyAnimateV5 - 🤗Link 😄Link The official reward backpropagation technology model optimizes the videos generated by EasyAnimateV5-12b to better match human preferences. |

(Obsolete) EasyAnimateV4:

Name Type Storage Space Hugging Face Model Scope Description
EasyAnimateV4-XL-2-InP EasyAnimateV4 Before extraction: 8.9 GB / After extraction: 14.0 GB 🤗Link 😄Link

(Obsolete) EasyAnimateV3:

Name Type Storage Space Hugging Face Model Scope Description
EasyAnimateV3-XL-2-InP-512x512 EasyAnimateV3 18.2GB 🤗Link 😄Link EasyAnimateV3 official weights for 512x512 text and image to video resolution. Training with 144 frames and fps 24
EasyAnimateV3-XL-2-InP-768x768 EasyAnimateV3 18.2GB 🤗Link 😄Link EasyAnimateV3 official weights for 768x768 text and image to video resolution. Training with 144 frames and fps 24
EasyAnimateV3-XL-2-InP-960x960 EasyAnimateV3 18.2GB 🤗Link 😄Link EasyAnimateV3 official weights for 960x960 text and image to video resolution. Training with 144 frames and fps 24

(Obsolete) EasyAnimateV2:

Name Type Storage Space Url Hugging Face Model Scope Description
EasyAnimateV2-XL-2-512x512 EasyAnimateV2 16.2GB - 🤗Link 😄Link EasyAnimateV2 official weights for 512x512 resolution. Training with 144 frames and fps 24
EasyAnimateV2-XL-2-768x768 EasyAnimateV2 16.2GB - 🤗Link 😄Link EasyAnimateV2 official weights for 768x768 resolution. Training with 144 frames and fps 24
easyanimatev2_minimalism_lora.safetensors Lora of Pixart 485.1MB Download - - A lora training with a specifial type images. Images can be downloaded from Url.

(Obsolete) EasyAnimateV1:

1、Motion Weights

Name Type Storage Space Url Description
easyanimate_v1_mm.safetensors Motion Module 4.1GB download Training with 80 frames and fps 12

2、Other Weights

Name Type Storage Space Url Description
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

TODO List

Contact Us

  1. Use Dingding to search group 77450006752 or Scan to join
  2. You need to scan the image to join the WeChat group or if it is expired, add this student as a friend first to invite you.

ding group

Wechat group

Person

Reference

License

This project is licensed under the Apache License (Version 2.0).