论文速览 | Pyramid Flow:以低分辨率的前几帧为约束高效生成视频

文摘   2024-12-12 20:09   新加坡  

按分辨率从低到高的顺序生成图像是一种常见思路。此外,Diffusion Forcing 等论文带来了一种新的扩散模型视频生成思路:将视频生成转换为约束于前几帧图像的单张图像自回归生成。Pyramid Flow 工作把两种思路结合起来,提出了一种新的视频生成范式:在自回归生成新帧时,用低分辨率的前几帧图像作为约束。这使得模型能够更高效率地利用历史帧的信息。

论文名:Pyramidal Flow Matching for Efficient Video Generative Modeling 

Arxiv: https://arxiv.org/abs/2410.05954 

GitHub:https://github.com/jy0205/Pyramid-Flow

以往工作

将图像生成拆解成从低分辨率到高分辨率是一种很常见的思想。基于扩散模型,有多种方式来应用这种思想。一种比较直接的方式是显式将图像生成分解成生成最低分辨率的图像和多轮超分辨率,代表工作是Cascaded Diffusion Models for High Fidelity Image Generation;另一种更加巧妙的方式是将图像上采样和扩散模型的去噪同时进行,代表工作是f-DM: A Multi-stage Diffusion Model via Progressive Signal Transformation。本文的多尺度设计和 f-DM 非常相似,我会在文末详细分析二者的区别。

将视频生成转换为约束于之前所有帧的图像生成是一种再简单不过的想法。然而,在使用扩散模型时,选择最佳的约束方式并不是一个简单的问题。比较常见的添加图像约束的方式是与原输入在通道维度上拼接。对于视频自回归生成而言,这个做法的问题是网络对于约束图像和待生成图像的处理不统一。近期,Diffusion Forcing 工作告诉我们,我们可以给视频扩散模型的不同帧添加不同的噪声,并修改注意力机制,从而将其转换成一个约束于之前帧的图像生成模型,并且模型对每一帧的处理在注意力层以外是统一的。

流匹配 (Flow Matching) 可以简单看成一种改进了噪声调度机制的 DDPM。假设时刻 表示纯高斯噪声,时刻 表示清晰图像,按照最常用的流匹配方法,中间 时刻的带噪图像为二者的线性插值。

此外,去噪网络的预测目标也从残余噪声 (epsilon) 改为了速度(velocity)。

相关博文:


Diffusion Forcing

多尺度的加噪过程

扩散模型中,我们要把清晰图像中的信息逐渐破坏掉。这样的图像退化方式不只添加高斯噪声一种,我们可以在添加噪声的同时下采样图像,定义出一种新的扩散模型前向过程(退化过程)。

如下图的一维扩散模型所示,Pyramid Flow 在加噪的同时做两次下采样。总时间被拆成了三段,第 个阶段的时间范围是

做下采样后,图像中的信息会突然减少。为了让同一个阶段的图像逐渐失去这些信息,而不是在一次下采样中突然失去,我们采用这样的插值策略:设 为最大分辨率下 时刻的带噪图像(其计算方法由上文的流匹配噪声公式决定),那么在第 阶段的分辨率下, 时刻的带噪图像 为:

其中, 表示把 下采样 倍, 表示把 上采样 倍, 表示 时刻在第 阶段里的插值比例。初看这些公式可能会有点头大,我们可以先看下面的示意图再回头看公式。

公式里做插值的两项分别表示当前阶段最清楚、最模糊的图像,插值比例 为 在当前阶段的时间窗口里的比例。这种插值不仅让噪声强度渐变,还让因下采样而产生的信息损失渐变,就好像是我们在连续地对图像下采样一样。

修改了退化机制后,除了定义流匹配的输入变量 外,我们还可以定义新的流匹配学习目标。流匹配的学习目标是一个速度,而速度又可以由两个端点决定。我们可以用上面的公式定义每一个阶段的端点,再以速度 为该阶段所有点的学习目标。

重新设置上采样噪声

在多尺度生成时,我们必须仔细考虑图像应该怎么跨越两个阶段,也就是图像该怎么上采样。

大多数涉及扩散模型多尺度生成的工作(比如 Laplacian Diffusion Models sampling, f-DM)都会在上采样时考虑调整噪声强度的大小。而 Pyramid Flow 不仅考虑了噪声的强度,还考虑到了噪声的协方差矩阵——原本扩散模型不同位置的噪声是相互独立的,但 2 倍上采样后一个像素会影响到周围 4 个像素,因此噪声之间的关系需要用协方差矩阵表示而不是独立表示。作者根据协方差矩阵必须半正定这一性质推导了一个更好的修改上采样后噪声的方法。

多尺度视频生成

Diffusion Forcing 工作表明,在训练视频扩散模型时,不同帧的退化程度可以不同。而在 Pyramid Flow 的框架下,图像的退化不仅包括加噪,还包括降采样。因此,用 Pyramid Flow 训练视频扩散模型时,可以让过往帧为低分辨率的,只让最新帧为最高分辨率的。这样做可以大大减少注意力操作的输入量,提升计算效率。此外,还可以参照 Diffusion Forcing 的做法,通过因果(causal)注意力把视频扩散模型转换成约束于前几帧的单张图像自回归生成。

实现细节

最后,我们来简单看一下 Pyramid Flow 的实现细节。Pyramid Flow 可以基于任何一种 DiT 架构的文生图模型开发,比如 SD3 和 FLUX.1。为了将文生图模型转换成视频模型,本工作做了如下的适配:

  • 将图像 VAE 变成能在时间维度压缩视频的 3D VAE。
  • 在 DiT 中用 RoPE 描述时间维度的位置关系。空间维度位置编码保持原模型的设计。

另外,为了对齐不同尺度的空间位置编码,本工作参考 CogVideoX,对低分辨率图像使用了位置编码外推。

本工作开源的视频模型需要用 128 块 A100 训练约 1 天,能生成 241 帧总时长 10 秒的视频。相比其他视频模型来说要的资源已经少了很多了。

批判性分析与总结

Pyramid Flow 在多尺度加噪的设计上和以往工作 f-DM 非常相似。二者都把扩散模型的加噪拆成不同尺度,都在同一尺度内采取线性插值的方式计算带噪图片,都考虑了上采样时噪声的变化。二者的不同之处在于:

  • f-DM 用的是 DDPM 的噪声调度,而 Pyramid Flow 用的是 Rectified Flow 的公式。由于 Rectified Flow 的公式本来就是线性插值,因此它对同尺度带噪图像插值来说兼容性更好一点。
  • 基于上一点,可能是由于同尺度线性插值与 DDPM 不太兼容,f-DM 额外用一个残差项表示下采样导致的误差。Pyramid Flow 没用到这一设计。
  • f-DM 从局部信噪比的角度推导了上采样时噪声应该发生的变化,而 Pyramid Flow 是从协方差矩阵的角度。

Pyramid Flow 没引用 f-DM,作者大概是独立发明了一遍类似的加噪策略。我在 GitHub 上已经告知了作者有 f-DM 这篇类似论文。当然,哪怕是有类似工作在前,Pyramid Flow 在结合流匹配和多尺度生成上还是有一定创新的。

包括这个工作在内,有好几个工作都在用扩散模型做多尺度图像生成。但是,不像自回归中的 VAR,这些工作在纯图像生成任务上并不是很有名。因此,多尺度生成虽然是一个不错的想法,但我们还需要多多思考该怎么在扩散模型里应用它。Pyramid Flow 最大的意义可能不在于其多尺度的设计,而在于将多尺度生成融合进了视频生成中。这样做最直接的好处是减少了历史帧的数据量,提升了模型计算效率。

虽然这个工作试图用同一个去噪模型来处理任意尺度的图像,但实际上它只用了 3 个尺度。只用 3 个尺度并不能说明模型能够处理任意多尺度的图像,这可能仅仅是暴力拟合的结果。因此,我觉得一个比较重要的思考方向是:怎么让去噪扩散模型更好地理解图像尺度这一概念,复用各个尺度的知识,从而实现任意多尺度的图像去噪。


天才程序员周弈帆
NTU MMLab 在读博士生,ACM金牌选手的个人博客。主要分享深度学习、算法教程。放眼全世界,几乎没有比我讲得更易懂、亲民的人,不信你去读读看。