open-sora1.0
VAE:目前没有较好的开源的时空VAE,采用了2D VAE的架构。
STDiT:视频训练涉及大量的token。考虑到24fps的1分钟视频,我们有1440帧。通过VAE下采样4倍和patch大小下采样2倍,我们得到了1440x1024≈150万个token。为了降低计算成本,使用性能较好的时空注意力STDiT(顺序)。我们在 STDiT 中的每个空间注意力之后插入一个时间注意力。
PixArt-α是一个经过高效训练的高质量图像生成模型,具有T5条件化的DiT结构。我们使用PixArt-α初始化我们的模型,并将插入的时间注意力的投影层初始化为零。这种初始化在开始时保留了模型的图像生成能力,而Latte的架构则不能。插入的注意力将参数数量从5.8亿增加到7.24亿。
采用渐进式训练策略:在366K预训练数据集上进行16x256x256的训练,然后在20K数据集上进行16x256x256、16x512x512和64x512x512的训练。通过扩展位置嵌入,这一策略极大地降低了计算成本。
open-sora1.1
相比open-sora1.0,实现了Sora报告中提到的以下功能:
-
可变的视频时长、分辨率、宽高比(包括采样灵活性、改进的取景范围和构图)
-
提示词增加图片和视频选项(使图像动起来、生成式增长视频、视频到视频编辑、连接不同视频)
- 图像生成功能
ST-DiT修改
-
在时间注意力模块中添加旋转位置编码:遵循目前LLM的最佳实践,我们将时间注意力模块中的正弦位置编码更改为旋转位置编码,因为它也算一项序列预测任务。
-
在时间注意力模块中添加AdaIN和Layernormal:我们将时间注意力与AdaIN和Layer范数作为空间注意力包裹起来,以稳定训练。
-
QK归一化与RMSNorm:和SD3类似地,我们应用QK归一化来提高半精度训练的稳定性。
-
支持动态输入大小和视频条件限定:为了支持多分辨率、宽高比和fps训练,我们ST-DiT-2来接受任何输入大小。延申PixArt-alpha的想法,我们支持限定视频的高度、宽度、宽高比、帧长和fps。
-
将T5token数量从120扩展到200:我们使用的视频描述通常少于200个token,我们发现模型也可以很好地处理更长的文本。
支持不同视频长度/分辨率/宽高比/帧率(fps)训练
使用原始无损视频的分辨率、宽高比和视频长度进行训练可以增加采样灵活性,改善取景和构图。我们找到了三种实现这一目标的方法:-
NaViT:通过不同掩码策略支持在同一训练批次内使用不同大小的数据,并且训练效率下降很少。然而,该系统实现起来有点复杂,并且可能无法兼容kernal优化技术(如flashattention)。
-
填充(FiT,Open-Sora-Plan):通过填充支持同一批次内的不同大小的数据。然而,将不同的分辨率填充到相同的大小会导致效率降低。
-
分桶训练(SDXL、PixArt):支持通过分桶的方式在不同批次中动态调整大小,但在同一批次内数据大小必须相同,只能应用固定数量的数据大小。在一个批次中,我们不需要实现复杂的掩码或填充。
桶是(分辨率,帧数量,宽高比)的三元组。我们为不同的分辨率提供预定义的宽高比,每一分辨率的宽高比在aspect.py中定义,不需要在配置文件中定义,由于不同桶的数据的内存占用和处理速度不一样,所有为每个桶新增(保留概率,batch-size),batchsize用于平衡处理速度,保留概率用于平衡内存占用,配置文件中分桶策略的配置具体如下,bucket_config = {# 分辨率:{帧数,(保留概率,batch-size)}"480p": {16: (1.0, 8),},"720p": {16: (0.5, 4),},"1080p": {16: (0.2, 2)},"4K", {16: (0.1, 1)},}假设给定一个超过 16 帧的 2K 视频,程序将首先尝试将其放入“1080p”桶中,因为它的分辨率比 1080p 更大但小于 4K。由于1080p的keep_prob为20%,因此会生成一个随机数,如果小于0.2,则将视频放入桶中。如果视频没有放入桶中,程序会尝试将其放入“720p”桶中。由于 720p 的 keep_prob 为 50%,因此视频有 50% 的机会被放入桶中。如果视频没有放入桶中,程序会尝试直接将其放入“480p”桶中,因为它是最小的分辨率。使用Masked DiT作为图生视频/视频生视频模型
MDT在保持扩散训练过程的同时引入mask modeling学习策略。通过mask部分加噪声的图像token,MDT利用一个非对称Diffusion Transformer (Asymmetric Diffusion Transformer) 架构从未被mask的加噪声的图像token预测被mask部分的图像token,从而同时实现mask modeling 和扩散训练过程。自动长宽比分桶
Aspect Ratio Bucket,是一项 允许不同宽高比分辨率的图像存在于同一数据集中进行训练 的技术。它将宽高比接近的图像分组到一个被称为“桶(bucket)”的结构中,各桶分别训练。SDXL:在训练过程中,一个Batch从一个桶里的图像采样,并且我们在每个训练步骤中在不同的桶大小之间交替切换。除此之外,aspect ratio也会作为条件嵌入到U-Net(Base)模型中,让模型能够更好地学习到“多尺度特征”。完成了多尺度微调后,Stable Diffusion XL就可以进行不同aspect ratio的AI绘画了,不过推荐生成尺寸的base为1024x1024。如果需要借助超分模型将尺寸过小的图像放大。可能会在对图像超分的同时会引入一些噪声伪影,影响模型的训练,导致生成一些模糊的图像。SDXL将U-Net(Base)模型与原始图像分辨率相关联,核心思想是将输入图像的原始高度和宽度作为额外的条件嵌入U-Net模型中,表示为nbsp;nbsp;。height和width都使用傅里叶特征编码进行独立嵌入,然后将特征concat后加在Time Embedding上,将图像尺寸引入训练过程。这样以来,模型在训练过程中能够学习到图像的原始分辨率信息,从而在推理生成阶段更好地适应不同尺寸的图像生成,而不会产生噪声伪影的问题。 -