全文为Weng, Lilian. (Apr 2024). Diffusion Models Video Generation. Lil’Log.的中文翻译版本。
在过去几年里,扩散模型在图像合成方面显示出了优异的效果。现在,研究界已经开始着手一项更加艰巨的任务——将扩散模型用于视频生成。该任务可以看作是图像生成的超集,因为图像可以认为是1帧的视频,但是图像生成更加具有挑战性,原因如下:
- 它对跨帧的时间一致性有额外的要求,这自然需要将更多的世界知识编码到模型中。(例如物体运动的物理规则)
- 与文本或者图像相比,收集大量高质量、高维度的视频数据更加困难,文本视频对的获取也更加困难和复杂。
从头开始建模一个视频生成模型
首先,让我们回顾一下设计和训练扩散视频模型的方法,这意味着我们不依赖预先训练的图像生成器。
参数以及关于采样的相关知识
设 $x \sim q_{real}$ 是从实际数据分布中采样的数据点。现在我们在时间上添加少量的高斯噪声,产生一系列噪声变化 $x$ ,表示为 ${\textbf{z}_t | t = 1, …,T}$,噪声随着 $t$ 的增加而增加,最后一个 $q(\textbf{z}_T) \sim \mathcal{N}(\textbf{0}, \textbf{I})$。噪声添加的前向过程是一个高斯过程。使用 $\alpha_t, \sigma_t$ 定义高斯过程的可微分噪声公式:
设对数信噪比为 $\lambda_t = log[\alpha_t^2 / \sigma_t^2]$ ,我们可以将DDIM更新表示为:
$\bf{v}$ 参数化是通过角度坐标中的技巧得出的。首先,我们定义 $\phi_t = arctan(\sigma_t/\alpha_t)$ ,因此我们有 $\alpha_\phi = cos\phi, \sigma_\phi = sin\phi, \bf{z}_\phi = cos\phi \bf{x} + sin\phi \bf{\epsilon}$ 。$\bf{z}_t$ 的速率可以表示为:

模型的 $\bf{v}$ 预测是预测 $\bf{v}_\phi=cos\phi\boldsymbol{\epsilon} - sin\phi\bf{x} = \alpha_t \boldsymbol{\epsilon} - \sigma_t \bf{x}$ 。
在视频生成的情形中,我们需要扩散模型运行多个步骤的上采样,以延长视频长度或提高帧数。这需要对以第一个 $\bf{x}^a$ 为条件的第二个图像 $\bf{x}^b \sim p_\theta(\bf{x}^b|\bf{x}^a)$ 进行采样,其中 $\bf{x}^b$ 可能是自回归扩展的帧或者低帧数视频中间缺失的帧。
$\bf{x}^b$ 的采样不仅需要自身对应的噪声变量外,还需要考虑 $\bf{x}^a$ 条件。视频扩散模型(VDM; Ho & Salimans, 2022)提出了使用调整后的降噪模型的重建指导方法,使得采样 $\bf{x}^b$ 可以适当地以以下基于 $\bf{x}^a$ 的条件进行:
模型架构:3D U-Net和DIT
与文本到图像的扩散模型类似,U-Net和Transformer仍然是两种常见的架构选择。Google有一系列采用U-Net架构的扩散视频论文,OpenAI最近的Sora模型采用了transformer架构。
VDM(Ho & Salimans, et al. 2022)采用了标准的扩散模型设置,但是改变了视频建模的架构。它扩展了2D U-Net以用于3D数据 (Clcek et al. 2016) ,其中每一个特征图代表帧x高度x宽度x通道的4D张量。这个3D U-Net在空间和时间上被分解,这意味着每一层只在时间或者空间维度上起作用,而不能同时在两者上起作用。
- 处理空间:
- 与2D U-Net相同,每个旧的2D卷积层都扩展为仅空间3D的卷积层,例如,3*3卷积变成了1*3*3卷积。
- 每个空间注意力块(
spatial attention block
)都保持为空间上的注意力,其中第一个轴(frame
)被视为批量维度。
- 每个空间注意力块(
- 与2D U-Net相同,每个旧的2D卷积层都扩展为仅空间3D的卷积层,例如,3*3卷积变成了1*3*3卷积。
- 处理时间:
- 在每个空间注意力块之后添加一个时间注意力块(
temporal attention block
)。它在第一个轴(frame
)上执行注意力,并将空间轴作为批处理维度。相对位置嵌入(relative position embedding
)用于跟踪帧的顺序。时间注意力块对于模型捕获良好的时间连贯性非常重要。
- 在每个空间注意力块之后添加一个时间注意力块(

Imagen Video(Ho, et al. 2022)基于一系列扩散模型构建,以提高视频生成的质量,并升级以24fps输出1280*768的视频。Imagen Video架构由以下组件构成,总共有7个扩散模型。
- 一个冻结的T5文本编码器,用于提供文本嵌入作为条件输入
- 一个基本的视频扩散模型
- 交错的时间和空间超分辨率扩散模型的级联,包括3个TSR(时间超分辨率)和3个SSR(空间超分辨率)组件。

基本去噪模型同时对具有共享参数的所有帧执行空间操作,然后时间层跨帧混合激活以更好地捕获时间一致性,这被证明比帧自回归的方法效果更好。

SSR和TSR模型都以与通道上含有噪声的数据 $\bf{z}_t$ 相连的上采样输入为条件。SSR通过双线性调整大小进行上采样,而TSR通过重复帧或者填充空白帧来上采样。
Imagen Video还应用渐进式蒸馏来加快采样速度,每次蒸馏迭代都可以将所需的采样步骤减少一半。在实验中,能够将7个组件提炼为每个组件仅8个采样步骤,而不会在感知质量上造成任何明显的损失。
为了实现更好的扩展工作,Sora(Brooks et al. 2024)利用了DiT(Diffusion Transformer)架构,该架构在视频和图像潜在编码的时空patch上运行。视觉输入表示为一系列时空patch,这些patch充当Transformer的输入token。

调整图像模型以生成视频
扩散视频模型建模的另一种突出方法是通过插入时间层来“膨胀”预先训练的图像到文本扩散模型,然后我们可以选择只对视频数据上的新层进行微调,或者完全避免额外的训练。新模型继承了文本-图像对的先验知识,有助于减轻对文本-视频对的数据需求。
使用视频数据进行微调
Make-A-Video(Singer et al. 2022)扩展了具有时间维度的预训练扩散图像模型,该模型由3个关键组件构成:
- 基于文本-图像对训练的基本图像生成模型。
- 时空卷积层和注意力层来扩展网络以覆盖时间维度。
- 用于生成高帧率的帧插值网络。

最终的视频推理方案可以表述为:
- $\bf{x}$ 是输入文本。
- $\hat{\bf{x}}$ 是BPE编码的文本。
- $CLIP_{text}(\cdot)$ 是CLIP文本编码器,则 $\bf{x_e} = CLIP_{text}(\bf{x})$ 。
- $P(\cdot)$ 是先验的,$\bf{y}_e$ 在给定文本嵌入 $\bf{x}_e$ 和BPE编码文本 $\hat{\bf{x}}: \bf{y}_e = P(\bf{x}_e, \hat{\bf{x}})$ 的情况下生成图像嵌入。这部分是在文本-图像对数据上训练的,而不是在视频数据上微调的。
- $D^t(\cdot)$ 是生成一系列16帧的时空解码器,其中每帧都是低分辨率的64*64的RGB图像 $\hat{\bf{y}}_l$。
- $\uparrow_F(\cdot)$ 是帧插值网络,通过在生成的帧之间进行插值来提高有效帧速率。这是一个经过微调的模型,用于预测视频上采样的掩码帧。
- $SR_h(\cdot), SR_l^t(\cdot)$ 是时间和空间超分辨率模型,将图像分辨率分别提高到256*256和768*768。
- $\hat{\bf{y}}_t$ 是最终生成的视频。
时空SR层包括伪3D卷积层和伪3D注意力层:
- 伪3D卷积层:每个时空2D卷积层(从预训练图像模型初始化)后跟一个时间1D层(初始化为一个恒等函数)。从概念上讲,2D卷积层首先生成多个帧,然后将帧重塑为视频片段。
- 伪3D注意力层:在每个预先训练的空间注意力层之后,堆叠一个时间注意力层,用于近似一个完整的时空注意力层。

它们可以表示为:
在训练阶段,Make-A-Video管道的不同组件是独立训练的。
- 解码器 $D^t$ 、生图先验 $P$ 和两个超分辨率组件 $SR_h, SR_l^t$ 首先单独在图像上进行训练,没有成对的文本。
- 接下来添加新的时间层,初始化为一个恒等函数,对未标记的视频数据进行微调。
Tune-A-Video(Wu et al. 2023)膨胀了一个预训练的图像扩散模型,以实现一次性的适应视频生成的微调:给定一个包含 $m$ 帧的视频,$\mathcal{V} = {v_i|i=1,…,m}$ 与描述性提示 $\tau$ 配对,任务是基于轻微编辑和一个相关的文本描述 $\tau$ 生成一个新的视频 $\mathcal{V^*}$ 。例如:$\tau$ = "A man is skiing"
可以扩展为 $\tau$ = "Spiderman is skiing on the beach"
。Tune-A-Video旨在用于对象编辑、背景更改和风格迁移。
除了膨胀2D卷积层外,Tune-A-Video的U-Net架构还集成了ST-Attention
(时空注意力)块,通过查询前几帧的相关位置来捕获时间一致性。给定frame
$v_i$ 、前一帧 $v_{i-1}$ 和第一帧 $v_1$ 的潜在特征,投射到query
$\bf{Q}$ 、key
$\bf{K}$ 、和value
$\bf{V}$ 中,则ST-Attention
可以被定义为:

Gen-1模型(Esser et al. 2023)的目标是根据文本输入编辑给定视频。它分解了视频生成条件 $p(\bf{x}|s,c)$ 中对于结构structure
和内容content
的要求,但是,要对这两个方面进行清晰的分解并不容易。
- $\bf{c}$ 指视频的外观和语义信息,即从文本中采样以进行条件编辑。帧的CLIP嵌入可以很好地表示内容,并且很大程度上与结构特征保持正交。
- $\bf{s}$ 描述网格和动力学,包括对象的形状、位置、时间变化,并从输入的视频中采样,可以使用深度信息或者针对于其他特定任务的信息(例如,人体姿态或者面部特征)。
Gen-1的架构变化相当标准,即在剩余块中的每个2D空间卷积层后添加1D时间卷积层,并在注意力块的每一个2D空间注意力块之后添加1D时间注意力块。在训练期间,结构变量 $\bf{s}$ 与扩散潜空间中的变量 $\bf{z}$ 连接,其中变量 $\bf{c}$ 在交叉注意力层中提供。在推理时,在推理时,片段嵌入通过之前的 CLIP 文本嵌入转换为 CLIP 图像嵌入。

Video LDM(Blattmann et al. 2023)首先训练了一个LDM图像生成器。然后,对模型进行微调,添加了时间维度以生成视频。微调仅应用于编码图像序列中新添加的时序层。Video LDM中的时间层 ${l_\phi^i | i=1,…L }$ 与在微调期间保持的现有空间层 $l_\theta^i$ 交错,只微调新参数 $\phi$ ,而不微调预训练主干模型参数 $\theta$ 。Video LDM的pipeline首先以低fps生成关键帧,然后通过两步潜在帧插值进行处理以提高fps。
长度 $T$ 的输入序列被看作基本图像生成模型 $\theta$ 生成的一批图像(即 $\bf{B} \cdot \bf{T}$ ),然后被重塑为时间层的视频 $l_\phi^i$ 格式。存在一个跳跃连接,使通过学习的合并参数 $\alpha$ 实现时间层输出 $\bf{z’}$ 和空间输出 $\bf{z}$ 的组合。在实验中,实现了两种类型的时间混合层:(1)单独的时间注意力层加在空间注意力层之后和(2)基于3D卷积的残差块按合并参数组合。

但是,LDM预训练的自动编码器仍然存在一个问题,即只能看到图像,而看不到视频。单纯将其用于视频生成可能会产生闪烁伪影,而没有良好的时间一致性。因此,Video LDM在解码器中添加了额外的时间层,并且使用由3D卷积构建的基于patch的时间判别器对视频数据进行微调,而编码器保持不变,因而可以继续使用预训练的LDM。在时间解码器微调期间,冻结的编码器独立处理视频中的每个帧,并且使用视频感知判别器在帧之间强制执行时间一致的重建。

与Video LDM类似,Stable Video Diffusion(SVD, Blattmann et al. 2023)也基于LDM,在每个空间卷积层和注意力层后插入时间层,但SVD对整个模型进行了微调。训练SVD分为三个阶段:
- 文本到图像的预训练 :有助于提高视频质量以及提示的跟随。
- 视频预训练:分离训练更加有利,理想情况下应该在一个更大规模的精选的数据集上进行。
- 高质量视频微调:使用具有高视觉保真度的较小的、带有字幕的视频进行。
SVD特别强调了数据集管理在模型性能中的关键作用。他们通过使用剪辑检测架构在为每个模型获得更多的视频切片,然后应用了三种不同的用于生成字幕的模型:(1)CoCa用于挑选帧;(2)V-BLIP用于获取视频字幕;(3)基于前面两个模型,使用LLM生成字幕。然后他们继续优化视频数据集,通过删除运动较少的视频(通过以2fps计算的低光流分数过滤),视频中具有过多的文本(应用OCR识别具有大量文本的视频),具有较低的美学价值的视频(使用CLIP对视频的第一帧、中间一帧以及最后一帧提取特征,计算美学分数和文本-图像相似度)。实验表明,经过过滤的、高质量的数据集会带来更好的模型质量,即使这个数据集要小得多。
先生成远距离的关键帧,然后添加具有时间超分辨率的帧插值,一个关键的挑战是如何保持高质量的时间一致性。Lumiere(Bar-Tal et al. 2024)采用了时空U-Net(STUNet)架构,通过单次传递一次性生成视频的整个持续时间,消除了对TSR(时间超分辨率)组件的依赖。STUNet在时间和空间维度上对视频进行下采样,因此大量的计算发生在时空潜在空间中。

STUNet对预训练的文本到图像的U-Net进行膨胀,以便能够在时间和空间维度上对视频进行下采样和上采样。卷积块由预先训练的文本到图像层构成,伴随着一系列的时空卷积。在U-Net的瓶颈特征处,包括预先训练的从文本到图像的注意力块,其中包含了1D的时间注意力。训练仅发生在新添加的层中。

免训练适配
令人惊讶的是,无需任何训练即可调整预先训练的文本到图像的生成模型以输出视频。
如果我们天真地采样一系列潜在空间中的特征,然后解码出一个对应的视频,那么在时间上的对象和语义的一致性是无法保证的。Text2Video-Zero(Khachatryan et al. 2023)通过增强预训练的图像扩散模型,使用了两个关键的时间一致性机制实现了零样本、免训练的视频生成:
- 使用运动动力学对潜在空间的序列进行采样,以保持全局场景一致。
- 在第一帧上通过每帧的新跨层注意力重新设计了帧级的自注意力,以保留前景对象的上下文、外观和身份。

使用运动信息对一系列潜空间变量 $\bf{x}_T^1,…,\bf{x}_T^m$ 进行采样的过程如下:
- 定义控制全局场景和照相机运动方向 $\bf{\delta} = (\delta_x, \delta_y) \in \mathbb{R}^2$ ;默认情况下,我们设置 $\bf{\delta} = (1, 1)$ 。此外,定义一个控制全局运动量的超参数 $\lambda > 0$ 。
- 首先随机采样第一帧的潜空间变量,$\bf{x}_T^1 \sim \mathcal{N}(0,I)$ ;
- 使用预训练的图像扩散模型执行后向更新步骤,例如论文中的稳定扩散(SD)模型,并获取相应的潜在空间变量 $\bf{x}_{T’}^1$,其中 $T’ = T - \Delta t$ 。
- 对于潜在空间变量序列中的每一帧,我们应用相应的运动平移,并使用定义的 $\delta ^k = \lambda(k-1) \delta$ 进行变形操作来获得 $\bf{\tilde{x}}_{T’}^k$ 。
此外,Text2Video-Zero将预训练SD模型中的自注意力层替换为参考第一帧的新跨帧注意力机制。其动机是在生成的整个视频中保留有关前景对象的外观、形状和身份信息。
Text2video-zero可以在每个扩散的时间步 $t = T,…,1$ 中对每一帧 $\bf{x}_t^k\ k=1,…,m$ 应用预训练的 ControlNet 分支,并将 ControlNet 分支输出添加到主U-Net到跳跃连接中。
ControlVideo(Zhang et al. 2023) 旨在生成以文本提示 $\tau$ 和运动序列(例如深度或边缘图)为条件的视频,$\bf{c} = {c^i}_{i=0}^{N-1}$ 。它基于 ControlNet 改进出三个新机制:
- 跨帧注意力:在自注意力模块中添加了全跨帧的交互。它通过将潜空间中的帧映射到 $\bf{Q, K, V}$ 矩阵来引入所有帧之间的交互,这与 Text2Video-zero 不同,Text2Video-zero 仅配置所有帧关注第一帧。
- 交错帧更加平滑:在每个时间步 $t$ ,平滑器会对偶数帧或奇数帧进行插值,以平滑其对应的3帧。在平滑步骤后,帧数会随着时间的推移而减少。
- 分层采样器:利用分层采样器在内存限制下能够生成具有时间一致性的长视频。长视频被拆分成多个短片段,每个短片段都选中了一个关键帧。该模型预先生成这些具有完全跨帧注意到关键帧,以实现长期的一致性,并且每个相应的片段都是根据关键帧顺序合成的。

Citation
Weng, Lilian. (Apr 2024). Diffusion Models Video Generation. Lil’Log. https://lilianweng.github.io/posts/2024-04-12-diffusion-video/.
References
[1] Cicek et al. 2016. “3D U-Net: Learning Dense Volumetric Segmentation from Sparse Annotation.”
[2] Ho & Salimans, et al. “Video Diffusion Models.” 2022 | webpage
[3] Bar-Tal et al. 2024 “Lumiere: A Space-Time Diffusion Model for Video Generation.”
[4] Brooks et al. “Video generation models as world simulators.” OpenAI Blog, 2024.
[5] Zhang et al. 2023 “ControlVideo: Training-free Controllable Text-to-Video Generation.”
[6] Khachatryan et al. 2023 “Text2Video-Zero: Text-to-image diffusion models are zero-shot video generators.”
[7] Ho, et al. 2022 “Imagen Video: High Definition Video Generation with Diffusion Models.”
[8] Singer et al. “Make-A-Video: Text-to-Video Generation without Text-Video Data.” 2022.
[9] Wu et al. “Tune-A-Video: One-Shot Tuning of Image Diffusion Models for Text-to-Video Generation.” ICCV 2023.
[10] Blattmann et al. 2023 “Align your Latents: High-Resolution Video Synthesis with Latent Diffusion Models.”
[11] Blattmann et al. 2023 “Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets.”
[12] Esser et al. 2023 “Structure and Content-Guided Video Synthesis with Diffusion Models.”
[13] Bar-Tal et al. 2024 “Lumiere: A Space-Time Diffusion Model for Video Generation.”