← 文章 / AI视频与短剧
Lilian Weng 2小时前 · 2026-08-31 13:38:28 · 1 阅读

用于视频生成的扩散模型

扩散模型过去几年在图像合成上取得了出色的效果。现在研究界开始攻克一个更难的课题——将其用于视频生成。视频生成可以看作是图像生成任务的超集,因为图像就是一帧的"视频",但它要难得多,原因如下:

  1. 对帧间时间一致性有额外要求,这天然需要模型编码更多的世界知识。
  2. 与文本或图像相比,收集大量高质量、高维度的视频数据更为困难,更不用说文本-视频配对数据了。


🥑 前置阅读:请确保已阅读上一篇关于"什么是扩散模型?"的博客,再继续往下看。

从零开始建模视频生成#

先来回顾一下从零设计和训练扩散视频模型的方法,也就是说,不依赖预训练的图像生成器。

参数化与采样基础#

这里我们使用与上一篇文章略有不同的变量定义,但数学本质不变。设 $\mathbf{x} \sim q_\text{real}$ 为从真实数据分布中采样的数据点。现在我们在时间维度上逐步加入少量高斯噪声,生成 $\mathbf{x}$ 的一系列噪声变体,记为 $\{\mathbf{z}_t \mid t =1 \dots, T\}$,随着 $t$ 增大噪声量也增大,最后 $q(\mathbf{z}_T) \sim \mathcal{N}(\mathbf{0}, \mathbf{I})$。这个加噪的前向过程是一个高斯过程。设 $\alpha_t, \sigma_t$ 定义该高斯过程的一个可微噪声调度:

$$ q(\mathbf{z}_t \vert \mathbf{x}) = \mathcal{N}(\mathbf{z}_t; \alpha_t \mathbf{x}, \sigma^2_t\mathbf{I}) $$

为了表示 $q(\mathbf{z}_t \vert \mathbf{z}_s)$,当 $0 \leq s < t \leq T$ 时,有:

$$ \begin{aligned} \mathbf{z}_t &= \alpha_t \mathbf{x} + \sigma_t\boldsymbol{\epsilon}_t \\ \mathbf{z}_s &= \alpha_s \mathbf{x} + \sigma_s\boldsymbol{\epsilon}_s \\ \mathbf{z}_t &= \alpha_t \Big(\frac{\mathbf{z}_s - \sigma_s\boldsymbol{\epsilon}_s}{\alpha_s}\Big) + \sigma_t\boldsymbol{\epsilon}_t \\ \mathbf{z}_t &= \frac{\alpha_t}{\alpha_s}\mathbf{z}_s + \sigma_t\boldsymbol{\epsilon}_t - \frac{\alpha_t\sigma_s}{\alpha_s} \boldsymbol{\epsilon}_s \\ \text{因此 }q(\mathbf{z}_t \vert \mathbf{z}_s) &= \mathcal{N}\Big(\mathbf{z}_t; \frac{\alpha_t}{\alpha_s}\mathbf{z}_s, \big(1 - \frac{\alpha^2_t\sigma^2_s}{\sigma^2_t\alpha^2_s}\big)\sigma^2_t \mathbf{I}\Big) \end{aligned} $$

设对数信噪比 $\lambda_t = \log[\alpha^2_t / \sigma^2_t]$,则 DDIM(Song et al. 2020)的更新可表示为:

$$ q(\mathbf{z}_t \vert \mathbf{z}_s) = \mathcal{N}\Big(\mathbf{z}_t; \frac{\alpha_t}{\alpha_s}\mathbf{z}_s, \sigma^2_{t\vert s} \mathbf{I}\Big) \quad \text{其中 }\sigma^2_{t\vert s} = (1 - e^{\lambda_t - \lambda_s})\sigma^2_t $$

有一种特殊的 $\mathbf{v}$-预测($\mathbf{v} = \alpha_t \boldsymbol{\epsilon} - \sigma_t \mathbf{x}$)参数化方式,由 Salimans & Ho (2022) 提出。实践表明,相比 $\boldsymbol{\epsilon}$-参数化,这种方式有助于避免视频生成中的颜色偏移。

$\mathbf{v}$-参数化的推导借助了角坐标的小技巧。首先定义 $\phi_t = \arctan(\sigma_t / \alpha_t)$,于是有 $\alpha_\phi = \cos\phi, \sigma_t = \sin\phi, \mathbf{z}_\phi = \cos\phi \mathbf{x} + \sin\phi\boldsymbol{\epsilon}$。$\mathbf{z}_\phi$ 对 $\phi$ 的变化率可写为:

$$ \mathbf{v}_\phi = \nabla_\phi \mathbf{z}_\phi = \frac{d\cos\phi}{d\phi} \mathbf{x} + \frac{d\sin\phi}{d\phi}\boldsymbol{\epsilon} = \cos\phi\boldsymbol{\epsilon} -\sin\phi\mathbf{x} $$

由此可以推出,

$$ \begin{aligned} \sin\phi\mathbf{x} &= \cos\phi\boldsymbol{\epsilon} - \mathbf{v}_\phi \\ &= \frac{\cos\phi}{\sin\phi}\big(\mathbf{z}_\phi - \cos\phi\mathbf{x}\big) - \mathbf{v}_\phi \\ \sin^2\phi\mathbf{x} &= \cos\phi\mathbf{z}_\phi - \cos^2\phi\mathbf{x} - \sin\phi \mathbf{v}_\phi \\ \mathbf{x} &= \cos\phi\mathbf{z}_\phi - \sin\phi \mathbf{v}_\phi \\ \text{Similarly } \boldsymbol{\epsilon} &= \sin\phi\mathbf{z}_\phi + \cos\phi \mathbf{v}_\phi \end{aligned} $$

DDIM 更新规则相应地变为:

$$ \begin{aligned} \mathbf{z}_{\phi_s} &= \cos\phi_s\hat{\mathbf{x}}_\theta(\mathbf{z}_{\phi_t}) + \sin\phi_s\hat{\epsilon}_\theta(\mathbf{z}_{\phi_t}) \quad\quad{\small \text{; }\hat{\mathbf{x}}_\theta(.), \hat{\epsilon}_\theta(.)\text{ 是两个模型,分别根据 }\mathbf{z}_{\phi_t}\text{ 预测 }\mathbf{x}\text{ 和 }\boldsymbol{\epsilon}}\\ &= \cos\phi_s \big( \cos\phi_t \mathbf{z}_{\phi_t} - \sin\phi_t \hat{\mathbf{v}}_\theta(\mathbf{z}_{\phi_t} ) \big) + \sin\phi_s \big( \sin\phi_t \mathbf{z}_{\phi_t} + \cos\phi_t \hat{\mathbf{v}}_\theta(\mathbf{z}_{\phi_t} ) \big) \\ &= {\color{red} \big( \cos\phi_s\cos\phi_t + \sin\phi_s\sin\phi_t \big)} \mathbf{z}_{\phi_t} + {\color{green} \big( \sin\phi_s \cos\phi_t - \cos\phi_s \sin\phi_t \big)} \hat{\mathbf{v}}_\theta(\mathbf{z}_{\phi_t} ) \\ &= {\color{red} cos(\phi_s - \phi_t)} \mathbf{z}_{\phi_t} + {\color{green} \sin(\phi_s - \phi_t)} \hat{\mathbf{v}}_\theta(\mathbf{z}_{\phi_t}) \quad\quad{\small \text{; 三角恒等式。}} \end{aligned} $$
在角坐标系下可视化扩散更新步骤的工作方式,DDIM 通过沿 $-\hat{\mathbf{v}}_{\phi_t}$ 方向移动来演化 $\mathbf{z}_{\phi_s}$。(图片来源:Salimans & Ho, 2022

模型的 $\mathbf{v}$-参数化是预测 $\mathbf{v}_\phi = \cos\phi\boldsymbol{\epsilon} -\sin\phi\mathbf{x} = \alpha_t\boldsymbol{\epsilon} - \sigma_t\mathbf{x}$。

在视频生成任务中,我们需要扩散模型执行多步上采样来延长视频时长或提高帧率。这要求模型具备在第一个视频 $\mathbf{x}^a$ 的基础上采样第二个视频 $\mathbf{x}^b$ 的能力,即 $\mathbf{x}^b \sim p_\theta(\mathbf{x}^b \vert \mathbf{x}^a)$,其中 $\mathbf{x}^b$ 可以是对 $\mathbf{x}^a$ 的自回归延伸,也可以是低帧率视频 $\mathbf{x}^a$ 中缺失的中间帧。

对 $\mathbf{x}_b$ 的采样除了依赖其自身对应的噪声变量外,还需要以 $\mathbf{x}_a$ 作为条件。Video Diffusion ModelsVDMHo & Salimans 等人,2022)提出了重建引导方法,通过调整去噪模型,使 $\mathbf{x}^b$ 的采样能够正确地以 $\mathbf{x}^a$ 为条件:

$$ \begin{aligned} \mathbb{E}_q [\mathbf{x}_b \vert \mathbf{z}_t, \mathbf{x}^a] &= \mathbb{E}_q [\mathbf{x}^b \vert \mathbf{z}_t] + \frac{\sigma_t^2}{\alpha_t} \nabla_{\mathbf{z}^b_t} \log q(\mathbf{x}^a \vert \mathbf{z}_t) \\ q(\mathbf{x}^a \vert \mathbf{z}_t) &\approx \mathcal{N}\big[\hat{\mathbf{x}}^a_\theta (\mathbf{z}_t), \frac{\sigma_t^2}{\alpha_t^2}\mathbf{I}\big] & {\small \text{; 闭合形式未知。}}\\ \tilde{\mathbf{x}}^b_\theta (\mathbf{z}_t) &= \hat{\mathbf{x}}^b_\theta (\mathbf{z}_t) - \frac{w_r \alpha_t}{2} \nabla_{\mathbf{z}_t^b} \| \mathbf{x}^a - \hat{\mathbf{x}}^a_\theta (\mathbf{z}_t) \|^2_2 & {\small \text{; 针对 }\mathbf{x}^b\text{ 的调整后去噪模型}} \end{aligned} $$

其中,$\hat{\mathbf{x}}^a_\theta (\mathbf{z}_t)$ 和 $\hat{\mathbf{x}}^b_\theta (\mathbf{z}_t)$ 是去噪模型分别对 $\mathbf{x}^a$ 和 $\mathbf{x}^b$ 的重建结果。$w_r$ 是一个权重因子,实验发现取较大的值($w_r >1$)能够提升样本质量。值得注意的是,同样可以利用该重建引导方法,以低分辨率视频为条件,将样本扩展到高分辨率。

模型架构:3D U-Net 与 DiT#

和文生图扩散模型类似,U-net 和 Transformer 仍然是两种常见的架构选择。Google 发表了一系列基于 U-net 架构的视频扩散建模论文,而 OpenAI 最近推出的 Sora 模型则采用了 Transformer 架构。

VDMHo & Salimans 等人,2022)沿用了标准的扩散模型框架,但对架构做了调整以适配视频建模。它将2D U-net扩展为可处理 3D 数据的形式(Cicek 等人,2016),其中每个特征图都表示为 frames × height × width × channels 的四维张量。这个 3D U-net 在空间和时间维度上做了分解,即每一层只作用于空间或时间其中一个维度,而不是同时处理两者:

  • 处理空间维度:
    • 原先 2D U-net 中的每个 2D 卷积层被扩展为仅作用于空间的 3D 卷积;具体来说,3x3 卷积变为 1x3x3 卷积。
    • 每个空间注意力块保持对空间维度做注意力计算,第一个轴(frames)作为 batch 维度处理。
  • 处理时间维度:
    • 在每个空间注意力块之后新增一个时间注意力块。该块对第一个轴(frames)做注意力计算,并将空间轴作为 batch 维度。使用相对位置编码来追踪帧的顺序。时间注意力块对模型捕获良好的时间一致性至关重要。
3D U-Net 架构。网络输入包括带噪视频 $\mathbf{z}_t$、条件信息 $\boldsymbol{c}$ 以及对数信噪比(log-SNR)$\lambda_t$。通道乘数 $M_1, \dots, M_K$ 表示各层的通道数。(图片来源:Salimans & Ho, 2022

Imagen VideoHo 等,2022)构建在级联扩散模型之上以提升视频生成质量,最高可输出 1280×768、24 fps 的视频。Imagen Video 的架构由以下组件构成,共包含 7 个扩散模型。

  • 一个冻结的 T5 文本编码器,用于提供文本嵌入作为条件输入。
  • 一个基础视频扩散模型。
  • 一组交错堆叠的空间与时间超分辨率扩散模型级联,包含 3 个 TSR(时间超分辨率)和 3 个 SSR(空间超分辨率)组件。
Imagen Video 的级联采样流程。实际应用中,文本嵌入会注入到所有组件中,而非仅限于基础模型。(图片来源:Ho 等,2022

基础去噪模型使用共享参数对所有帧同时执行空间操作,随后由时间层在不同帧之间混合激活值,以更好地捕捉时间一致性。实验表明,这种方式比逐帧自回归方法效果更好。

Imagen Video 扩散模型中一个时空可分离块的结构。(图片来源:Ho 等,2022

SSR 和 TSR 模型都将上采样后的输入与带噪数据 $\mathbf{z}_t$ 沿通道维度拼接后作为条件。其中 SSR 通过双线性缩放上采样,TSR 则通过重复帧或插入空白帧实现上采样。

Imagen Video 也采用了 渐进式蒸馏 来加速采样,每一次蒸馏迭代都能将所需的采样步数减半。他们的实验成功把全部 7 个视频扩散模型蒸馏到每个模型只需 8 步采样,且感知质量没有明显下降。

为了获得更好的可扩展性,SoraBrooks et al. 2024)采用了 DiT(Diffusion Transformer) 架构,在视频和图像潜编码的时空块上运行。视觉输入被表示为一系列时空块,作为 Transformer 的输入 token。

Sora 是一个 Diffusion Transformer 模型。
(图片来源:Brooks et al. 2024

改造图像模型以生成视频#

另一类主流的扩散视频建模方法是"膨胀"预训练的文到图扩散模型——插入时序层,然后可以选择只对新增层在视频数据上进行微调,甚至完全不做额外训练。这样新模型继承了原有的文图配对先验知识,有助于降低对文视频配对数据的需求。

在视频数据上微调#

Make-A-VideoSinger et al. 2022)在预训练的扩散图像模型上扩展了一个时间维度,主要包含三个关键组件:

  1. 一个在文图配对数据上训练的文生图基础模型。
  2. 时空卷积层和注意力层,用于把网络扩展到覆盖时间维度。
  3. 一个帧插值网络,用于生成高帧率视频。
Make-A-Video 流程示意图。
(图片来源:Singer et al. 2022

最终的视频推理过程可以形式化为:

$$ \hat{\mathbf{y}}_t = \text{SR}_h \circ \text{SR}^t_l \circ \uparrow_F \circ D^t \circ P \circ (\hat{\mathbf{x}}, \text{CLIP}_\text{text}(\mathbf{x})) $$

其中:

  • $\mathbf{x}$ 是输入文本。
  • $\hat{\mathbf{x}}$ 是经 BPE 编码后的文本。
  • $\text{CLIP}_\text{text}(.)$ 是 CLIP 文本编码器,$\mathbf{x}_e = \text{CLIP}_\text{text}(\mathbf{x})$。
  • $P(.)$ 是 prior 模块,根据文本嵌入 $\mathbf{x}_e$ 和 BPE 编码文本 $\hat{\mathbf{x}}$ 生成图像嵌入 $\mathbf{y}_e$:$\mathbf{y}_e = P(\mathbf{x}_e, \hat{\mathbf{x}})$。该部分在文本-图像配对数据上训练,不在视频数据上微调。
  • $D^t(.)$ 是时空解码器,生成 16 帧序列,每帧是 64x64 的低分辨率 RGB 图像 $\hat{\mathbf{y}}_l$。
  • $\uparrow_F(.)$ 是帧插值网络,通过在生成帧之间插值来提升有效帧率。这是对预测被遮蔽帧以进行视频上采样任务微调过的模型。
  • $\text{SR}_h(.), \text{SR}^t_l(.)$ 分别是空间和时空超分模型,分别将图像分辨率提升至 256x256 和 768x768。
  • $\hat{\mathbf{y}}_t$ 是最终生成的视频。

时空 SR 层包含伪 3D 卷积层和伪 3D 注意力层:

  • 伪 3D 卷积层:每个空间 2D 卷积层(由预训练图像模型初始化)后接一个时间 1D 层(初始化为恒等映射)。其思路是 2D 卷积层先生成多帧,再将帧重组为视频片段。
  • 伪 3D 注意力层:在每个(预训练的)空间注意力层之后堆叠一个时间注意力层,用以近似完整的时空注意力层。
伪 3D 卷积(左)和注意力(右)层的工作原理。
(图片来源:Singer et al. 2022

它们可以表示为:

$$ \begin{aligned} \text{Conv}_\text{P3D} &= \text{Conv}_\text{1D}(\text{Conv}_\text{2D}(\mathbf{h}) \circ T) \circ T \\ \text{Attn}_\text{P3D} &= \text{flatten}^{-1}(\text{Attn}_\text{1D}(\text{Attn}_\text{2D}(\text{flatten}(\mathbf{h})) \circ T) \circ T) \end{aligned} $$

其中输入张量 $\mathbf{h} \in \mathbb{R}^{B\times C \times F \times H \times W}$(依次对应批大小、通道数、帧数、高度和宽度);$\circ T$ 用于交换时间维与空间维;$\text{flatten}(.)$ 是一个矩阵算子,将 $\mathbf{h}$ 转换为 $\mathbf{h}’ \in \mathbb{R}^{B \times C \times F \times HW}$,$\text{flatten}^{-1}(.)$ 则执行相反操作。

训练时,Make-A-Video 流水线的各个组件独立训练。

  1. 首先,仅用图像(不带配对文本)训练解码器 $D^t$、先验 $P$ 以及两个超分辨率组件 $\text{SR}_h, \text{SR}^t_l$。
  2. 接着,加入新的时间层(初始化为恒等映射),然后在无标注视频数据上进行微调。

Tune-A-VideoWu 等人,2023)将预训练的图像扩散模型膨胀,使其支持单样本视频微调:给定一个包含 $m$ 帧的视频 $\mathcal{V} = \{v_i \mid i = 1, \dots, m\}$,并配有一段描述性提示 $\tau$,任务是根据稍作修改的相关文本提示 $\tau^*$ 生成新视频 $\mathcal{V}^*$。例如,$\tau$ = "A man is skiing" 可扩展为 $\tau^*$="Spiderman is skiing on the beach"。Tune-A-Video 主要用于物体编辑、背景更换和风格迁移。

除了膨胀二维卷积层外,Tune-A-Video 的 U-Net 架构还引入了 ST-Attention(时空注意力)模块,通过在前序帧中查询相关位置来捕捉时间一致性。给定第 $v_i$ 帧的隐特征,将前序帧 $v_{i-1}$ 和首帧 $v_1$ 分别投影为查询 $\mathbf{Q}$、键 $\mathbf{K}$ 和值 $\mathbf{V}$,ST-attention 定义如下:

$$ \begin{aligned} &\mathbf{Q} = \mathbf{W}^Q \mathbf{z}_{v_i}, \quad \mathbf{K} = \mathbf{W}^K [\mathbf{z}_{v_1}, \mathbf{z}_{v_{i-1}}], \quad \mathbf{V} = \mathbf{W}^V [\mathbf{z}_{v_1}, \mathbf{z}_{v_{i-1}}] \\ &\mathbf{O} = \text{softmax}\Big(\frac{\mathbf{Q} \mathbf{K}^\top}{\sqrt{d}}\Big) \cdot \mathbf{V} \end{aligned} $$
Tune-A-Video 架构概览。它在采样阶段之前,先对单个视频进行轻量级微调。注意,所有时序自注意力(T-Attn)层因为是新添加的,所以会进行完整微调;而 ST-Attn 和 Cross-Attn 中只更新 query 投影矩阵,以保留预训练阶段习得的文生图知识。ST-Attn 用于提升时空一致性,Cross-Attn 用于改善文本与视频的对齐。(图片来源:Wu et al. 2023

Runway 提出的 Gen-1 模型(Esser et al. 2023)专注于根据文本输入对给定视频进行编辑。它将视频的结构内容分解开来,以此实现生成条件 $p(\mathbf{x} \mid s, c)$ 的建模。不过,要清晰地分解这两个方面并不容易。

  • 内容 $c$ 描述视频的外观与语义信息,从文本中采样得到,用于条件编辑。CLIP 的帧嵌入能够很好地表征内容,并且与结构特征基本正交。
  • 结构 $s$ 描述几何与动态信息,包括物体的形状、位置以及随时间的变化,$s$ 从输入视频中采样得到。可以使用深度估计或其他任务特定的辅助信息(例如人体姿态、人脸关键点,用于人体视频合成)。

Gen-1 的架构改动比较常规:在残差块中,每个二维空间卷积层后接一个一维时间卷积层;在注意力块中,每个二维空间注意力块后接一个一维时间注意力块。训练时,结构变量 $s$ 与扩散潜变量 $\mathbf{z}$ 进行拼接,内容变量 $c$ 则通过交叉注意力层输入。推理时,先由 prior 模型将 CLIP 文本嵌入转换为 CLIP 图像嵌入。

Gen-1 模型训练流程概览。
(图片来源:Esser 等人,2023

Video LDMBlattmann 等人,2023)先训练一个 LDM(潜在扩散模型)图像生成器,然后在该模型基础上加入时间维度进行微调以生成视频。微调只作用于这些新增的时间层,作用于编码后的图像序列上。Video LDM 中的时间层 $\{l^i_\phi \mid i = \ 1, \dots, L\}$(见图 10)与已有的空间层 $l^i_\theta$ 交错排列,微调过程中空间层保持冻结不变。也就是说,我们只微调新增的参数 $\phi$,而不动预训练图像主干模型的参数 $\theta$。Video LDM 的流程是先以低帧率生成关键帧,再经过两步潜在帧插值来提升帧率。

长度为 $T$ 的输入序列在基础图像模型 $\theta$ 中被视为一批图像(即 $B \cdot T$),经过时间层 $l^i_\phi$ 时再重新整形为视频格式。时间层输出 $\mathbf{z}'$ 与空间层输出 $\mathbf{z}$ 之间通过跳跃连接进行融合,融合时使用一个可学习的合并参数 $\alpha$。实际实现中有两种时间混合层:(1) 时间注意力,(2) 基于三维卷积的残差块。

将预训练的图像合成 LDM 扩展为视频生成器。其中 $B, T, C, H, W$ 分别为批量大小、序列长度、通道数、高度和宽度。$\mathbf{c}_S$ 是可选的条件/上下文帧。(图片来源:Blattmann 等人,2023

不过,LDM 预训练自编码器仍存在一个问题:它只见过图像,从未见过视频。直接用它做视频生成会产生闪烁伪影,缺乏良好的时间一致性。为此,Video LDM 在解码器中加入了额外的时间层,并基于视频数据用由 3D 卷积构建的逐块时间判别器进行微调,而编码器保持不变,从而仍能复用预训练的 LDM。在时间解码器微调期间,冻结的编码器独立处理视频中的每一帧,再借助一个视频感知的判别器来确保跨帧重建的时间一致性。

视频潜扩散模型中自编码器的训练流程。解码器通过新增的跨帧判别器进行微调以获得时间一致性,编码器则保持冻结。(图片来源:Blattmann 等人,2023

与 Video LDM 类似,Stable Video DiffusionSVDBlattmann 等人,2023)的架构同样基于 LDM,在每个空间卷积和注意力层之后插入时间层,但 SVD 微调的是整个模型。视频 LDM 的训练分为三个阶段:

  1. 文到图预训练,对提升生成质量和提示跟随能力都至关重要。
  2. 视频预训练最好单独进行,且理想情况下应在一个更大规模的精选数据集上进行。
  3. 高质量视频微调,使用较小的、预先打好描述标签的高视觉保真度视频数据。

SVD 特别强调了数据集筛选对模型性能的关键作用。他们使用镜头检测流水线来获得更多的镜头切分,然后应用了三种不同的字幕模型:(1) 用 CoCa 对中间帧生成描述,(2) 用 V-BLIP 生成视频描述,(3) 基于前两个模型的输出,用 LLM 生成最终描述。接着他们持续优化视频数据集:剔除运动较少的片段(通过在 2 fps 下计算的光流分数进行过滤)、含有过多文字的片段(运用光学字符识别找出文字密集的视频),以及整体美学价值较低的片段(用 CLIP 嵌入对每个片段的首、中、末帧标注,计算美学分数和文本-图像相似度)。实验表明,经过筛选的更高质量数据集即使规模小得多,也能带来更好的模型质量。

先生成远距离关键帧、再用时序超分辨率添加插值的主要难点在于如何保持高质量的时序一致性。LumiereBar-Tal et al. 2024)转而采用了时空 U-Net(STUNet)架构,通过单次前向传播一次性生成整个时间跨度的视频,摆脱了对 TSR(时序超分辨率)模块的依赖。STUNet 在时间和空间两个维度上对视频进行下采样,因此计算开销都集中在一个紧凑的时空潜在空间里。

Lumiere 去除了 TSR(时序超分辨率)模型。膨胀后的 SSR 网络受显存限制只能处理短片段,因此 SSR 模型作用于一组较短但相互重叠的视频片段。(图片来源:Bar-Tal et al. 2024

STUNet 将一个预训练好的文生图 U-Net 膨胀,使其能够在时间和空间两个维度上对视频进行下采样和上采样。基于卷积的模块由预训练的文生图层后接一个分解的时空卷积组成;而在 U-Net 最粗粒度层级上的基于注意力的模块,则在预训练文生图模块后接入了时序注意力。训练针对新增加的层进行。

(a) 时空 U-Net(STUNet)、(b) 基于卷积的模块和 (c) 基于注意力的模块的架构。(图片来源:Bar-Tal et al. 2024

免训练适配#

令人意外的是,无需任何训练即可将预训练的文生图模型改造为输出视频 🤯。

如果我们直接随机采样一组潜变量序列,再将对应的解码图像拼成视频,那么视频中物体和语义在时间上的连贯性就无法得到保证。Text2Video-ZeroKhachatryan et al. 2023)通过两个关键机制来增强预训练的图像扩散模型,实现零样本、免训练的视频生成,从而保证时序一致性:

  1. 采样潜变量序列时引入运动动态,使全局场景和背景在时间上保持一致;
  2. 将帧级自注意力重编程为每帧与第一帧之间的跨帧注意力,以保持前景物体的上下文、外观和身份。
Text2Video-Zero 流水线概览。(图片来源:Khachatryan et al. 2023

带有运动信息的潜变量序列 $\mathbf{x}^1_T, \dots, \mathbf{x}^m_T$ 的采样过程如下:

  1. 定义一个方向 $\boldsymbol{\delta} = (\delta_x, \delta_y) \in \mathbb{R}^2$ 来控制全局场景和相机运动;默认设为 $\boldsymbol{\delta} = (1, 1)$。另外定义一个超参数 $\lambda > 0$ 来控制全局运动的幅度。
  2. 首先随机采样第一帧的潜变量 $\mathbf{x}^1_T \sim \mathcal{N}(0, I)$;
  3. 使用预训练的图像扩散模型(即论文中使用的 Stable Diffusion)执行 $\Delta t \geq 0$ 步 DDIM 反向更新,得到对应的潜变量 $\mathbf{x}^1_{T’}$,其中 $T’ = T - \Delta t$。
  4. 对潜变量序列中的每一帧,使用由 $\boldsymbol{\delta}^k = \lambda(k-1)\boldsymbol{\delta}$ 定义的对齐位移操作进行相应的运动平移,得到 $\tilde{\mathbf{x}}^k_{T’}$。
  5. 最后对所有 $\tilde{\mathbf{x}}^{2:m}_{T’}$ 应用 DDIM 前向步,得到 $\mathbf{x}^{2:m}_T$。
$$ \begin{aligned} \mathbf{x}^1_{T'} &= \text{DDIM-backward}(\mathbf{x}^1_T, \Delta t)\text{ where }T' = T - \Delta t \\ W_k &\gets \text{a warping operation of }\boldsymbol{\delta}^k = \lambda(k-1)\boldsymbol{\delta} \\ \tilde{\mathbf{x}}^k_{T'} &= W_k(\mathbf{x}^1_{T'})\\ \mathbf{x}^k_T &= \text{DDIM-forward}(\tilde{\mathbf{x}}^k_{T'}, \Delta t)\text{ for }k=2, \dots, m \end{aligned} $$

此外,Text2Video-Zero 将预训练 SD 模型中的 self-attention 层替换为一种新的跨帧注意力机制,该机制参考第一帧。其动机是在整个生成的视频中保持前景物体的外观、形状和身份信息。

$$ \text{Cross-Frame-Attn}(\mathbf{Q}^k, \mathbf{K}^{1:m}, \mathbf{V}^{1:m}) = \text{Softmax}\Big( \frac{\mathbf{Q}^k (\mathbf{K}^1)^\top}{\sqrt{c}} \Big) \mathbf{V}^1 $$

可选地,可以使用前景 mask 来进一步平滑并改善背景一致性。假设我们通过某种已有方法为第 $k$ 帧获得对应的前景 mask $\mathbf{M}_k$,背景平滑操作会在扩散步 $t$ 处,根据背景矩阵将实际潜在编码与扭曲后的潜在编码进行合并:

$$ \bar{\mathbf{x}}^k_t = \mathbf{M}^k \odot \mathbf{x}^k_t + (1 − \mathbf{M}^k) \odot (\alpha\tilde{\mathbf{x}}^k_t +(1−\alpha)\mathbf{x}^k_t)\quad\text{for }k=1, \dots, m $$

其中 $\mathbf{x}^k_t$ 是实际潜在编码,$\tilde{\mathbf{x}}^k_t$ 是背景区域扭曲后的潜在编码;$\alpha$ 是超参数,论文在实验中设置 $\alpha=0.6$。

Text2video-zero 可以与 ControlNet 结合使用:在每个扩散时间步 $t = T , \dots, 1$ 中,对每个 $\mathbf{x}^k_t$($k = 1, \dots, m$)应用 ControlNet 预训练的复制分支,并将 ControlNet 分支的输出加到主 U-net 的 skip-connections 中。

ControlVideoZhang et al. 2023)旨在根据文本提示 $\tau$ 和一个运动序列(例如深度图或边缘图)$\mathbf{c} = \{c^i\}_{i=0}^{N-1}$ 来生成视频。它基于 ControlNet 改进,新增了三个机制:

  1. 跨帧注意力(Cross-frame attention):在自注意力模块中加入完整的跨帧交互。它将所有时间步的潜变量帧映射到 $\mathbf{Q}, \mathbf{K}, \mathbf{V}$ 矩阵,从而在所有帧之间引入交互;这与 Text2Video-zero 不同,后者只让所有帧关注第一帧
  2. 交替帧平滑器(Interleaved-frame smoother):一种在交替帧上进行帧插值的机制,用来减少闪烁现象。在每个时间步 $t$,平滑器会对奇数帧或偶数帧进行插值,平滑对应的三帧片段。需要注意的是,经过平滑处理后帧数会随时间递减。
  3. 分层采样器(Hierarchical sampler):采用分层采样的方式,在显存受限的条件下生成具有时间一致性的长视频。长视频会被切分成多个短片段,每个片段挑选一个关键帧。模型先用完整的跨帧注意力预生成这些关键帧,以保证长期一致性;然后每个对应的短片段再以关键帧为条件依次合成。
ControlVideo 概览。(图片来源:Zhang et al. 2023

引用#

引用格式:

Weng, Lilian. (Apr 2024). Diffusion Models Video Generation. Lil’Log. https://lilianweng.github.io/posts/2024-04-12-diffusion-video/.

@article{weng2024video,
  title   = "Diffusion Models Video Generation.",
  author  = "Weng, Lilian",
  journal = "lilianweng.github.io",
  year    = "2024",
  month   = "Apr",
  url     = "https://lilianweng.github.io/posts/2024-04-12-diffusion-video/"
}

参考文献#

[1] Cicek et al. 2016. "3D U-Net: Learning Dense Volumetric Segmentation from Sparse Annotation."

[2] Ho、Salimans 等。"Video Diffusion Models." 2022 | 项目主页

[3] Bar-Tal 等,2024。"Lumiere: A Space-Time Diffusion Model for Video Generation."

[4] Brooks 等。"Video generation models as world simulators." OpenAI Blog,2024。

[5] Zhang 等,2023。"ControlVideo: Training-free Controllable Text-to-Video Generation."

[6] Khachatryan 等,2023。"Text2Video-Zero: Text-to-image diffusion models are zero-shot video generators."

[7] Ho 等,2022。"Imagen Video: High Definition Video Generation with Diffusion Models."

[8] Singer 等,2022。"Make-A-Video: Text-to-Video Generation without Text-Video Data."

[9] Wu 等。"Tune-A-Video: One-Shot Tuning of Image Diffusion Models for Text-to-Video Generation." ICCV 2023。

[10] Blattmann 等,2023。"Align your Latents: High-Resolution Video Synthesis with Latent Diffusion Models."

[11] Blattmann 等,2023。"Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets."

[12] Esser 等,2023。"Structure and Content-Guided Video Synthesis with Diffusion Models."

[13] Bar-Tal 等,2024。"Lumiere: A Space-Time Diffusion Model for Video Generation."

原始来源: Lilian Weng

评论 (0)