Project Icon

EasyAnimate

基于Transformer的高分辨率长视频生成框架

EasyAnimate是一个开源的高分辨率长视频生成框架。该项目基于Transformer架构,采用类Sora结构和DIT技术,使用Transformer作为视频生成的扩散器。EasyAnimate支持训练扩散模型生成器、处理长视频的VAE和元数据预处理。用户可直接使用预训练模型生成多种分辨率的6秒24帧视频,也可训练自定义基线模型和Lora模型实现特定风格转换。

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

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

😊 基于类似 Sora 的结构和 DIT,我们使用 transformer 作为视频生成的扩散器。我们基于动作模块、u-vit 和 slice-vae 构建了 easyanimate。未来,我们将尝试更多的训练方案来改进效果。

😊 欢迎使用!

Arxiv 页面 项目页面 Modelscope Studio Hugging Face Spaces Discord 页面

English | 简体中文

目录

简介

EasyAnimate 是一个基于 transformer 架构的管道,可用于生成 AI 照片和视频,训练 Diffusion Transformer 的基线模型和 Lora 模型。我们支持直接从预训练的 EasyAnimate 模型进行预测,生成不同分辨率的视频,24 fps 的 6 秒视频(1 ~ 144 帧,未来我们将支持更长的视频)。我们还支持用户训练自己的基线模型和 Lora 模型来执行特定的风格转换。

我们将支持从不同平台快速启动,请参考快速开始

最新动态:

  • 支持 ComfyUI,详情请参考 ComfyUI README。[ 2024.07.12 ]
  • 更新至 v3 版本,支持最高 720p 144 帧(960x960,6秒,24fps)视频生成,并支持文本和图像生成视频模型。[ 2024.07.01 ]
  • ModelScope-Sora "数据导演"创意冲刺赛已宣布,使用 EasyAnimate 作为训练骨干来研究数据预处理的影响。请访问比赛的官方网站了解更多信息。[ 2024.06.17 ]
  • 更新至 v2 版本,支持最多 144 帧(768x768,6秒,24fps)的生成。[ 2024.05.26 ]
  • 创建代码!现在支持 Windows 和 Linux。[ 2024.04.12 ]

功能:

这些是我们生成的结果 图库(点击下方图片查看视频):

观看视频

我们的 UI 界面如下: ui

快速开始

1. 云端使用:AliyunDSW/Docker

a. 从 AliyunDSW

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

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

DSW Notebook

b. 从 ComfyUI

我们的 ComfyUI 如下,详情请参考 ComfyUI README工作流图

c. 从 docker

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

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

EasyAnimateV3:

# 拉取镜像
docker pull mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easycv/torch_cuda:easyanimate

# 进入镜像
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

# 克隆代码
git clone https://github.com/aigc-apps/EasyAnimate.git

# 进入 EasyAnimate 目录
cd EasyAnimate

# 下载权重
mkdir models/Diffusion_Transformer
mkdir models/Motion_Module
mkdir models/Personalized_Model

wget https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/easyanimate/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512.tar -O models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512.tar
cd models/Diffusion_Transformer/
tar -xvf EasyAnimateV3-XL-2-InP-512x512.tar
cd ../../

<details>
  <summary>(已过时)EasyAnimateV2:</summary>

拉取镜像

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

进入镜像

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

克隆代码

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

进入EasyAnimate目录

cd EasyAnimate

下载权重

mkdir models/Diffusion_Transformer mkdir models/Motion_Module mkdir models/Personalized_Model

wget https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/easyanimate/Diffusion_Transformer/EasyAnimateV2-XL-2-512x512.tar -O models/Diffusion_Transformer/EasyAnimateV2-XL-2-512x512.tar

cd models/Diffusion_Transformer/ tar -xvf EasyAnimateV2-XL-2-512x512.tar cd ../../

</details>

<details>
  <summary>(已过时)EasyAnimateV1:</summary>
  

拉取镜像

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

进入镜像

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

克隆代码

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

进入EasyAnimate目录

cd EasyAnimate

下载权重

mkdir models/Diffusion_Transformer mkdir models/Motion_Module mkdir models/Personalized_Model

wget https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/easyanimate/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512.tar -O models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512.tar wget https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/easyanimate/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-768x768.tar -O models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-768x768.tar wget https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/easyanimate/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-960x960.tar -O models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-960x960.tar

cd models/Diffusion_Transformer/ tar -xvf EasyAnimateV3-XL-2-InP-512x512.tar tar -xvf EasyAnimateV3-XL-2-InP-768x768.tar tar -xvf EasyAnimateV3-XL-2-InP-960x960.tar cd ../../

</details>

### 2. 本地安装:环境检查/下载/安装
#### a. 环境检查
我们已在以下环境中验证了EasyAnimate的执行:

Linux详细信息:
- 操作系统: Ubuntu 20.04, CentOS
- Python版本: py3.10 & py3.11
- PyTorch版本: torch2.2.0
- CUDA版本: 11.8
- CUDNN版本: 8+
- GPU型号: Nvidia-V100 16G & Nvidia-A10 24G & Nvidia-A100 40G & Nvidia-A100 80G

我们需要大约60GB的可用磁盘空间(用于保存权重文件),请检查确认!

不同显存可以生成的视频大小包括:
| GPU显存 | 384x672x72 | 384x672x144 | 576x1008x72 | 576x1008x144 | 720x1280x72 | 720x1280x144 |
|----------|----------|----------|----------|----------|----------|----------|
| 12GB | ⭕️ | ⭕️ | ⭕️ | ⭕️ | ❌ | ❌ |
| 16GB | ✅ | ✅ | ⭕️ | ⭕️ | ⭕️ | ❌ |
| 24GB | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| 40GB | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 80GB | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |

✅ 表示可以在low_gpu_memory_mode=False下运行,⭕️ 表示可以在low_gpu_memory_mode=True下运行,❌ 表示无法运行。当low_gpu_memory_mode=True时,运行速度会较慢。GPU需要支持bfloat16预测。

#### b. 权重
我们最好将[权重](#model-zoo)放置在指定路径:

EasyAnimateV3:

📦 models/ ├── 📂 Diffusion_Transformer/ │ └── 📂 EasyAnimateV3-XL-2-InP-512x512/ ├── 📂 Personalized_Model/ │ └── 你训练的trainformer模型 / 你训练的lora模型 (用于UI加载)


<details>
  <summary>(已过时)EasyAnimateV2:</summary>

📦 models/ ├── 📂 Diffusion_Transformer/ │ └── 📂 EasyAnimateV2-XL-2-512x512/ ├── 📂 Personalized_Model/ │ └── 你训练的trainformer模型 / 你训练的lora模型 (用于UI加载)

</details>

<details>
  <summary>(已过时)EasyAnimateV1:</summary>

📦 models/ ├── 📂 Diffusion_Transformer/ │ └── 📂 PixArt-XL-2-512x512/ ├── 📂 Motion_Module/ │ └── 📄 easyanimate_v1_mm.safetensors ├── 📂 Personalized_Model/ │ ├── 📄 easyanimate_portrait.safetensors │ └── 📄 easyanimate_portrait_lora.safetensors

</details>

# 如何使用

<h3 id="video-gen">1. 推理 </h3>
#### a. 使用Python代码
- 步骤1:下载相应的[权重](#model-zoo)并将其放置在models文件夹中。
- 步骤2:在predict_t2v.py文件中修改prompt、neg_prompt、guidance_scale和seed。
- 步骤3:运行predict_t2v.py文件,等待生成结果,并将结果保存在samples/easyanimate-videos文件夹中。
- 步骤4:如果您想将其他已训练的主干网络与Lora结合使用,请根据情况修改predict_t2v.py中的predict_t2v.py和Lora_path。

#### b. 使用webui
- 步骤1:下载相应的[权重](#model-zoo)并将其放置在models文件夹中。
- 步骤2:运行app.py文件以进入图形界面。
- 步骤3:根据页面选择生成模型,填写prompt、neg_prompt、guidance_scale和seed,点击生成,等待生成结果,并将结果保存在samples文件夹中。

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

<h4 id="data-preprocess">a. 数据预处理</h4>

我们提供了一个通过图像数据训练Lora模型的简单演示,详情可以在[wiki](https://github.com/aigc-apps/EasyAnimate/wiki/Training-Lora)中查看。

长视频分割、清洗和描述的完整数据预处理链接可以参考视频字幕部分的[README](./easyanimate/video_caption/README.md)。

如果您想训练文本到图像和视频生成模型,需要按以下格式安排数据集:

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


json_of_internal_datasets.json是一个标准的JSON文件。json中的file_path可以设置为相对路径,如下所示:
```json
[
    {
      "file_path": "videos/00000001.mp4",
      "text": "一群穿着西装戴着墨镜的年轻人正在城市街道上行走。",
      "type": "video"
    },
    {
      "file_path": "train/00000001.jpg",
      "text": "一群穿着西装戴着墨镜的年轻人正在城市街道上行走。",
      "type": "image"
    },
    .....
]

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

[
    {
      "file_path": "/mnt/data/videos/00000001.mp4",
      "text": "一群穿着西装戴着墨镜的年轻人正在城市街道上行走。",
      "type": "video"
    },
    {
      "file_path": "/mnt/data/train/00000001.jpg",
      "text": "一群穿着西装戴着墨镜的年轻人正在城市街道上行走。",
      "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
(已过时)EasyAnimateV1: 如果您想训练EasyAnimateV1,请切换到git分支v1。

模型库

EasyAnimateV3:

名称类型存储空间链接Hugging Face描述
EasyAnimateV3-XL-2-InP-512x512.tarEasyAnimateV318.2GB下载🤗链接EasyAnimateV3用于512x512文本和图像到视频分辨率的官方权重。使用144帧和24fps进行训练
EasyAnimateV3-XL-2-InP-768x768.tarEasyAnimateV318.2GB下载🤗链接EasyAnimateV3用于768x768文本和图像到视频分辨率的官方权重。使用144帧和24fps进行训练
EasyAnimateV3-XL-2-InP-960x960.tarEasyAnimateV318.2GB下载🤗链接EasyAnimateV3用于960x960文本和图像到视频分辨率的官方权重。使用144帧和24fps进行训练
(已过时)EasyAnimateV2: | 名称 | 类型 | 存储空间 | 链接 | Hugging Face | 描述 | |--|--|--|--|--|--| | EasyAnimateV2-XL-2-512x512.tar | EasyAnimateV2 | 16.2GB | [下载](https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/easyanimate/Diffusion_Transformer/EasyAnimateV2-XL-2-512x512.tar) | [🤗链接](https://huggingface.co/alibaba-pai/EasyAnimateV2-XL-2-512x512) | EasyAnimateV2 512x512分辨率的官方权重。使用144帧和24帧率训练 | | EasyAnimateV2-XL-2-768x768.tar | EasyAnimateV2 | 16.2GB | [下载](https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/easyanimate/Diffusion_Transformer/EasyAnimateV2-XL-2-768x768.tar) | [🤗链接](https://huggingface.co/alibaba-pai/EasyAnimateV2-XL-2-768x768) | EasyAnimateV2 768x768分辨率的官方权重。使用144帧和24帧率训练 | | easyanimatev2_minimalism_lora.safetensors | Pixart的Lora | 485.1MB | [下载](https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/easyanimate/Personalized_Model/easyanimatev2_minimalism_lora.safetensors) | - | 使用特定类型图像训练的lora。图像可从[此链接](https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/easyanimate/asset/v2/Minimalism.zip)下载。 |
(已过时)EasyAnimateV1:

1、运动权重

名称类型存储空间链接描述
easyanimate_v1_mm.safetensors运动模块4.1GB下载使用80帧和12帧率训练

2、其他权重

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

算法详细说明

1. 数据预处理

视频切割

对于长视频切割,EasyAnimate利用PySceneDetect识别视频中的场景变化,并基于某些阈值进行场景切割,以确保视频片段主题的一致性。切割后,我们只保留长度在3到10秒之间的片段用于模型训练。

视频清洗和描述

遵循SVD的数据准备过程,EasyAnimate提供了一个简单而有效的数据处理流程,用于高质量数据过滤和标注。它还支持分布式处理以加快数据预处理速度。整体流程如下:

  • 时长过滤:分析视频的基本信息,过滤掉时长短或分辨率低的低质量视频。
  • 美学过滤:通过计算均匀分布的4帧的平均美学得分,过滤掉内容较差(模糊、昏暗等)的视频。
  • 文本过滤:使用easyocr计算中间帧的文本占比,过滤掉文本占比较大的视频。
  • 运动过滤:计算帧间光流差异,过滤掉运动过慢或过快的视频。
  • 文本描述:使用videochat2和vila对视频帧进行重新描述。PAI还在开发一个更高质量的视频重描述模型,一旦完成将尽快发布使用。

2. 模型架构

我们采用了PixArt-alpha作为基础模型,并在此基础上修改了VAE和DiT模型结构,以更好地支持视频生成。EasyAnimate的整体结构如下:

下图概述了EasyAnimate的流程。它包括文本编码器、视频VAE(视频编码器和解码器)以及扩散变换器(DiT)。T5编码器用作文本编码器。其他组件的详细信息在以下各节中描述。

ui

我们扩展了原本为2D图像合成设计的DiT框架,以适应3D视频生成的复杂性,通过引入一个名为混合运动模块的特殊运动模块块。

在运动模块中,我们采用了时间注意力和全局注意力的组合,以确保生成连贯的帧和流畅的运动过渡。

此外,参考U-ViT,它在EasyAnimate中引入了跳跃连接结构,通过结合浅层特征进一步优化更深层的特征。每个跳跃连接结构还初始化为零的全连接层,允许它作为插件模块应用于先前训练好且表现良好的DiT。

此外,它提出了切片VAE,解决了MagViT在处理长时间和大型视频时遇到的内存困难,同时在视频编码和解码阶段相比MagViT实现了更大的时间维度压缩。

更多详细信息,请参阅arxiv

待办事项

  • 支持更大参数的模型。

联系我们

  1. 使用钉钉搜索群组77450006752或扫描加入
  2. 您需要扫描图像加入微信群,或如果已过期,请先添加该学生为好友以邀请您。 钉钉群
微信群 个人

参考

许可证

本项目采用Apache许可证(版本2.0)授权。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号