前言:最近阿里云PIA团队开源了基于Diffusion Transformer结构的视频生成模型EasyAnimate,并且提出了专门针对视频的slice VAE,对于目前基于Unet结构的视频生成最好如SVD形成了降维打击,不论是生成质量、生成时长上都是遥遥领先。这篇博客详细解读一下EasyAnimate的技术报告《EasyAnimate: A High-Performance Long Video Generation Method based on Transformer Architecture》
目录
贡献概述
EasyAnimate是一种用于视频生成的高级方法,它利用 Transformer 架构的力量来实现高性能结果。作者通过扩展了最初设计用于 2D 图像合成的 DiT 框架,通过结合运动模块块来适应 3D 视频生成的复杂性。它用于捕获时间动态,从而确保产生一致的帧和无缝的运动转换。运动模块可以适应各种 DiT 基线方法来生成具有不同风格的视频。它还可以在训练和推理阶段生成具有不同帧速率和分辨率的视频,适用于图像和视频。
模型结构
Video VAE
传统的基于图像的 VAE 的一个显着限制是它不能跨时间维度压缩。因此,细微的帧间时间关系仍未捕获,结果潜在特征很大,导致CUDA内存需求激增。这些挑战极大地阻碍了这种方法在创建长视频方面的实用性。一个主要的挑战在于有效地压缩视频编码器和解码器中的时间维度。
作者使用了MagViT,在MagViT的基础上引入切片机制,提出了Slice VAE。
MagViT采用因果 3D 卷积块。该块在使用 vanilla 3D 卷积之前以先前时间的方式沿时间轴引入填充,从而确保帧利用先验信息来增强时间因果关系,同时保持不受后续帧的影响。尽管 MagViT 对视频编码和解码的复杂方法,但它在训练极其冗长的视频序列时面临挑战,这主要是由于内存限制。具体来说,所需的内存甚至经常超过 A100 GPU 可用的内存,使得大型视频的一步解码(例如 1024x1024x40)是不可行的。所以不能尝试一步解码整个序列,需要切片后批量处理。
为了批处理视频序列,作者首先沿空间维度尝试了切片机制。然而,这导致了不同批次之间的轻微照明不一致。随后,我们转移到沿时间维度切片。通过这种方法,将一组视频帧分成几个部分,每个部分分别编码和解码,如图2(a)所示。尽管如此,不同批次的信息分布是不相等的。例如,由于MagViT中的前向填充过程,第一个批次包含一个真实特征和额外的填充特征,包含的信息较少。这种不均匀的信息分布是一个可能阻碍模型优化的独特方面。此外,这种批处理策略还会影响处理过程中视频的压缩率。或者,我们实现了不同批次的特征共享,如图 2(b) 所示。在解码过程中,特征与其前后特征(如果有)连接,从而产生更一致的特征并实现更高的压缩率。这涉及通过 SpatialTemporalDownBlock(编码器中标记为浅橙色)压缩特征,针对空间和时间维度。这样,编码的特征封装了时间信息,这反过来又保留了计算资源,同时提高了生成结果的质量。
Video DiT结构
主要有两点改进:在PixArt-α的基础上加了运动模块,并用了UViT连接增强稳定性。
运动模块设计:运动模块来利用嵌入在帧长度内的时间信息,通过将注意力机制整合到时间维度上,该模型获得了同化这种时间数据的能力,这对于生成视频运动至关重要。采用网格重塑操作来增强注意力机制的输入标记池,从而增强图像中存在的空间细节的利用率,最终导致生成性能优越。经过训练的运动模块可以适应各种DiT基线模型,以生成不同风格的视频。
UViT:在训练过程中,作者观察到深度 DITs 往往不稳定,正如模型的损失表现出从 0.05 增加到 0.2 所证明的那样,最终增加到 1.0。为了追求通过 DIT 层反向传播期间增强模型优化过程和反转梯度崩溃,我们使用相应变换器块之间的长跳跃连接,这对于基于 UNet 框架的稳定扩散模型是有效的。为了在现有的扩散变压器体系结构中无缝地集成这种修改,而不需要进行全面的再训练,我们用零填充权值初始化几个完全连接的层(图3(c)中的灰色块)。
三阶段训练
DiT 分为三个阶段进行训练:第一阶段,对新训练的 VAE 进行图像训练。第二阶段,运动模块在大规模数据集上进行训练以生成视频。第三阶段,整个 DiT 网络受益于使用高分辨率视频和图像进行训练。
DiT训练
DiT训练同样分成三个阶段:
- 第一阶段,使用图像数据将 DiT 参数与该 VAE 对齐开始。
- 第二阶段,使用大规模视频数据集和图像数据对运动模块预训练。
- 第三阶段,使用高质量的视频数据细化整个 DiT 模型以提高其生成性能。该模型是从较低到较高分辨率逐步缩放的,这是保存GPU内存和减少计算时间的有效策略。
数据集清洗策略
使用大约1200万张图像和视频数据来训练视频VAE模型和DiT模型。
视频分割
对于较长的视频分割,我们最初使用PySceneDetect。为了识别视频中的场景变化,并基于这些转换执行场景切割,以确保视频片段的主题一致性。切割后,我们只保留那些长度在 3 到 10 秒之间进行模型训练的片段。
视频过滤
过滤掉运动分数异常、包含字幕和美学评分低的片段。
视频字幕
VideoChat2和VILA对视频打上字幕。
效果试用
很尴尬呀,传不上来,总之效果挺不错的。
个人感悟
1、效果上比Sora放出来的Demo是要差不少的,但是比Open-Sora要好一些,重点是比SVD强不少。
2、感觉基于DiT结构确实好用啊,估计还会有更多开源的作品出来,期待一波。
3、好的模型赶紧用来搞新业务搞新论文,鸡冻,冲鸭!
标签:视频,Transformer,EasyAnimate,训练,模型,已死,VAE,DiT,生成 From: https://blog.csdn.net/qq_41895747/article/details/139827865