EasyAnimateV5 视频生成大模型原理详解与模型使用

ops/2024/12/28 22:46:32/

在数字内容创作中,视频扮演的角色日益重要。然而,创作高质量视频通常耗时且昂贵。EasyAnimate 系列旨在利用人工智能技术简化这一过程。EasyAnimateV5 建立在其前代版本的基础之上,不仅在质量上有所提升,还在多模态数据处理和跨语言支持上有了进一步的增强。

EasyAnimate阿里云人工智能平台 PAI 自主研发的一款基于 DiT 的视频生成框架,能够生成高质量的长视频。它具备视频数据预处理、VAE 训练、DiT 训练、Lora训练、模型推理和模型评估等功能。此外,EasyAnimate 在预训练模型的基础上,通过少量图片进行 LoRA 微调,可实现视频风格的转变,大大增强了系统的扩展性和完整性,使其在众多方案中更具竞争优势。

EasyAnimate人工智能平台PAI上进行了集成,供用户一键训练和部署,在之前EasyAnimate版本的基础上,EasyAnimateV5重点突出了以下特点:

  • 应用MMDIT结构,拓展模型规模到7B与12B。

  • 支持不同控制输入的控制模型。

  • 更大幅度的图生视频策略。

  • 更多数据和更好的多阶段训练。

用户可以使用EasyAnimate来进行任意风格视频模型的训练和推理。目前,EasyAnimate将持续优化来达到更好的生成效果,欢迎大家持续关注。

开源地址:https://github.com/aigc-apps/EasyAnimate

DSW测试地址:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

技术报告:https://arxiv.org/abs/2405.18991

技术原理详解

模型规模拓展与结构更新

在我们的模型中,我们借鉴了CogVideoX与Stable Diffusion 3的方法,将文本和视频的嵌入连接起来,进一步通过自注意力机制进行特征融合,相比于原来Pixart通过Cross Attention实现文本特征融合方法,该方法不仅节省了计算次数,提高了计算效率,还让模型可以根据输入的不同条件自适应地调整注意力权重,灵活地融合多模态信息。

不过,文本和视频两种模态的特征空间存在显著差异,这可能导致它们的数值相差较大,不利于对齐。为了解决这一问题,我们参考Stable Diffusion 3,采用MMDiT架构作为基础模型。我们为每种模态设计了不同的to_k、to_q、to_v和前馈网络,并在一个自注意力机制中实现信息交互,以增强模态间的对齐。

另外,为了提高模型的理解能力,我们将模型进行了放大。参考Flux,我们模型的总参数量扩展到了7B与12B。

视频控制

EasyAnimate系列模型早在V3时便通过inpaint的方式实现了图生视频的功能,现在我们将其拓展到视频控制上。

在原始的Inpaint模型基础上,我们引入了一个新的控制信号替代了原有的mask信号。具体而言,我们将控制信号经过VAE编码后,与latent变量一起输入到patch流程中作为Guidance。

我们从26M的预训练数据中筛选出了大约443K条高质量视频,并采用不同的方法来提取控制条件,包括OpenPose、Scribble、Canny、Anime、MLSD、Hed和Depth,这些被用作训练中的条件控制信号。在训练过程中,我们根据不同的Token长度对视频进行了缩放,整个训练分为两个阶段:第一个阶段为13312(对应512x512x49的视频),第二个阶段为53248(对应1024x1024x49的视频)。

EasyAnimateV5-12b-Control模型为例:

  • 在13312阶段

  • Batch size为128,训练步数为5000。

  • 在53248阶段

  • Batch size为96,训练步数为2000。

训练后的模型可以输入Control Condition对输出视频进行控制,可控生成。以下是工作原理图:

基于Token长度的模型训练

EasyAnimateV5的训练分为多个阶段,除了图片对齐VAE的阶段外,其它阶段均为视频训练,分别对应了不同的Token长度。

我们首先使用图片让VAE与Transformer快速对齐,我们使用了10M的SAM数据集,进行从0开始的文本图片对齐训练,总共训练约120K步。相比于使用视频对齐,使用图片对齐的速度更快且对目标的描述更清晰,在训练完成后,模型已经有能力根据提示词去生成对应的图片,并且图片中的目标基本符合提示词描述。

然后我们使用视频训练,我们创新的根据不同的Token长度,对视频进行缩放后进行训练。视频训练分为多个阶段,每个阶段的Token长度分别是3328(对应256x256x49的视频),13312(对应512x512x49的视频),53248(对应1024x1024x49的视频)。其中:

  • 3328阶段

  • 使用了全部的数据(大约26.6M)训练文生视频模型,Batch size为1536,训练步数为66.5k。

  • 13312阶段

  • 使用了720P以上的视频训练(大约17.9M)训练文生视频模型,Batch size为768,训练步数为30k

  • 使用了最高质量的视频训练(大约0.5M)训练图生视频模型 ,Batch size为384,训练步数为5k

  • 53248阶段

  • 使用了最高质量的视频训练(大约0.5M)训练图生视频模型,Batch size为196,训练步数为5k。

训练时我们采用高低分辨率结合训练,因此模型支持从512到1024任意分辨率的视频生成,以13312 token长度为例:

  • 在512x512分辨率下,视频帧数为49;

  • 在768x768分辨率下,视频帧数为21;

  • 在1024x1024分辨率下,视频帧数为9;

这些分辨率与对应长度混合训练,模型可以完成不同大小分辨率的视频生成

图生视频策略

我们采用inpaint的方式实现图生视频,需要重建的部分和重建的参考图分别通过VAE进行编码,上图黑色的部分代表需要重建的部分,白色的部分代表首图,然后和随机初始化的latent进行concat,传入网络当中进行预测。

假设我们期待生成一个384x672x49的视频,此时的初始latent就是16x13x48x84,需要重建的参考图编码后也是4x13x48x84,另外我们对mask信息进行Resize,Resize后是1x13x48x84,三个向量concat到一起后便是33x13x48x84,传入DiT模型中进行噪声预测。

由于我们mask信息可以根据需要传入,我们不仅可以指定首图,还可以指定尾图。另外,我们还可以通过指定区域的mask实现视频编辑。

视频生成过程中,向视频中添加噪声会对生成结果产生显著影响。参考CogVideoX和SVD的做法,我们会在非背景的参考图上加入噪声,以打破原图并追求更大的运动幅度。与CogVideoX保持一致,我们从均值为-3.0、标准差为0.5的正态分布中采样得到噪声幅度,然后取其指数确保噪声幅度在合理范围内。我们通过函数会生成与输入视频形状相同的随机噪声,并根据已计算的噪声幅度进行缩放。这些噪声只添加到需要参考的帧上,得到加噪后的视频。

模型使用

DSW实践

我们支持从DSW上快速拉起,DSW上的免费体验产品包含30GB内存,可以支持EasyAnimateV5-7b-zh与EasyAnimateV5-12b-zh使用qfloat8在512分辨率下的运行:

DLC中默认使用的是app.py拉起的gradio-ui,在选择对应模型后,我们就可以填入下方的prompt进行预测了。

本地拉起

我们同样支持通过本地拉起使用EasyAnimate

以使用ComfyUI为例,在本机上可以通过执行如下的代码首先将EasyAnimate插件和ComfyUI-VideoHelperSuite安装。

cd ComfyUI/custom_nodes/# Git clone the easyanimate itself
git clone https://github.com/aigc-apps/EasyAnimate.git# Git clone the video outout node
git clone https://github.com/Kosinkadink/ComfyUI-VideoHelperSuite.gitcd EasyAnimate/
python install.py

然后运行ComfyUI软件,根据需求将EasyAnimate的comfyui文件夹下的json文件拖入ComfyUI界面中,在如下页面中,进行视频生成

联系我们

  • 项目开源地址:https://github.com/aigc-apps/EasyAnimate

  • 钉钉交流群号: 77450006752

参考文档

  • EasyAnimate: https://github.com/aigc-apps/EasyAnimate

  • CogVideo X: https://github.com/THUDM/CogVideo/

  • Flux: https://github.com/black-forest-labs/flux

  • Stable Diffusion 3: https://huggingface.co/stabilityai/stable-diffusion-3-medium/

  • SVD: https://arxiv.org/abs/2311.15127

  • MagVIT: https://github.com/google-research/magvit

  • PixArt: https://github.com/PixArt-alpha/PixArt-alpha

  • Open-Sora-Plan: https://github.com/PKU-YuanGroup/Open-Sora-Plan

  • Open-Sora: https://github.com/hpcaitech/Open-Sora

  • Animatediff: https://github.com/guoyww/AnimateDiff

  • Llava-v1.6-vicuna-7b:https://huggingface.co/liuhaotian/llava-v1.6-vicuna-7b

  • SAM: [PDF] Segment Anything | Semantic Scholar


http://www.ppmy.cn/ops/139585.html

相关文章

【附源码】基于环信鸿蒙IM SDK实现一个聊天Demo

项目背景 本项目基于环信IM 鸿蒙SDK 打造的鸿蒙IM Demo,完全适配HarmonyOS NEXT系统,实现了发送消息,添加好友等基础功能。代码开源,功能简洁,如果您有类似开发需求可以参考。 源码地址:https://github.c…

Word2vec、词向量是什么? |Gensim中word2vec模型的参数定义

前言: 最近在忙毕设,要学习一些AI的技术。很多资料看来看去,感觉只是在大脑皮层表面略过了一下,遂还是决定采用老方法,写博客!!!对了,我也只是一个萌新,博客的…

网络原理之 UDP 协议

目录 1. UDP 协议报文格式 2. UDP 的特点 (1) 无连接 (2) 不可靠 (3) 面向数据报 (4) 全双工 3. 基于 UDP 的应用层协议 前文是:UDP 的使用 首先了解一下基础知识: 1. UDP 协议报文格式 传输层最重要的协议有两个,一个是 TCP&#x…

vscode通过ssh连接虚拟机进行开发

虚拟机自带的vscode很卡而且画质感觉不行,所以用这种方法解决 1.VSCODE安装扩展Tabnine(AI代码补全),Remote Development 2.虚拟机终端ifconfig查看本机ip 192.168.43.197 开启ubuntu的SSH服务 sudo apt-get install openssh-server 配置vscode的ssh …

登Nature子刊!华中师范大学提出DigFrag,用AI精准分割分子片段,并生成44个药物/农药分子

过去几十年,基于片段的药物发现 (FBDD) 通过识别与靶标蛋白有微弱相互作用的小分子片段,并优化这些片段的结构信息,可以开发出活性更高的先导化合物,在新药研发中发挥了重要作用。 尽管 FBDD 在药物发现和开发领域扮演着关键角色…

springai结合ollama

目录 ollama 介绍 使用 下载: 安装: 点击这个玩意next就行了。 运行 spring ai使用ollama调用本地部署的大模型 加依赖 配置yml 写代码 ollama 介绍 官网:Ollama Ollama是一个用于部署和运行各种开源大模型的工具; …

热点数据失效 详解

热点数据失效详解 热点数据失效是指在分布式系统中,缓存中某些被频繁访问的热点数据在某个时间点同时失效,导致大量请求直接涌向数据库或后端服务,造成系统瞬间高负载甚至宕机。热点数据失效问题常见于高并发的业务场景(如秒杀、…

挑战用React封装100个组件【008】

项目地址 https://github.com/hismeyy/react-component-100 组件描述 这次的组件有点简单,这个卡片是可以控制视频播放的,用于展示一些比较小的视频动画。 样式展示 代码展示 VideoCard.tsx import { useRef, useState } from react import ./Video…