EasyAnimate

EasyAnimate

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

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

EasyAnimate视频生成AI绘图深度学习计算机视觉Github开源项目

📷 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" }, ..... ]
<h4 id="vae-train">b. Video VAE训练(可选)</h4>

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

<h4 id="dit-train">c. Video DiT训练</h4>

如果数据预处理时数据格式为相对路径,请将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
<details> <summary>(已过时)EasyAnimateV1:</summary> 如果您想训练EasyAnimateV1,请切换到git分支v1。 </details>

模型库

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进行训练
<details> <summary>(已过时)EasyAnimateV2:</summary> | 名称 | 类型 | 存储空间 | 链接 | 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)下载。 | </details> <details> <summary>(已过时)EasyAnimateV1:</summary>

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下载使用内部人像数据集训练
</details>

算法详细说明

1. 数据预处理

视频切割

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

视频清洗和描述

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

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

2. 模型架构

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

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

<img src="https://yellow-cdn.veclightyear.com/835a84d5/1a6229e0-6822-4bf5-a1db-0ff355c16935.jpg" alt="ui" style="zoom:50%;" />

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

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

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

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

更多详细信息,请参阅arxiv

待办事项

  • 支持更大参数的模型。

联系我们

  1. 使用钉钉搜索群组77450006752或扫描加入
  2. 您需要扫描图像加入微信群,或如果已过期,请先添加该学生为好友以邀请您。 <img src="https://yellow-cdn.veclightyear.com/835a84d5/f77c0240-71d1-48ad-a7a3-9c8a81f42197.png" alt="钉钉群" width="30%"/>
<img src="https://yellow-cdn.veclightyear.com/835a84d5/a178cd8a-e80d-4400-b65f-9b1ea7a7c831.jpg" alt="微信群" width="30%"/> <img src="https://yellow-cdn.veclightyear.com/835a84d5/b6d5b891-69b2-4bd1-af71-1f90e9691ad6.jpg" alt="个人" width="30%"/>

参考

许可证

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

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多