Diffusion Model Search

视频扩散模型

"过去几年,扩散模型在图像合成方面取得了显著成果。自然可以联想扩散模型视频生成方面的应用。这项任务本身是图像情况的超集,因为图像是 1 帧的视频。"

视频扩散模型面临的挑战

  1. 视频生成对时间上跨帧的间一致性有额外的要求,需要更多的知识编码。
  2. 高质量的视频文本对数据更难获得。

接下来要介绍的是视频扩散模型领域的两个早期工作,谷歌的VDM(Video Diffusion Model)和meta的make-a-video。

Video Diffusion Model(VDM)

谷歌的VDM是第一个尝试将扩散模型用于视频生成任务的模型。

在图像生成任务上的扩散模型所用到的 UNet 网络架构通常来自 PIXELCNN++ 改进版本,它先进空间下采样(spatial downsampling)然后进行空间上采样(spatial upsampling),其中在进行每一步空间上采样时都通过跳跃连接(skip connections)来同对应步的下采样过程的特征图进行联系。

网络上采样和下采样的基本单元都是 2D 卷积残差块(2D convolutional residual blocks),只是在改进的版本中,为了能够引入文本这类的条件信息,每个 2D 卷积残差块后面还跟着一个注意块或者说空间注意块(spatial attention block)。

论文将这一图像扩散模型架构扩展至视频,Video Diffusion Models 提出了 3D UNet 架构。具体来说,该架构将原 UNet 中的 2D 卷积替换成了 space-only 3D 卷积(space-only 3D convolution),举例来说,如果原来用的是 3x3 卷积,那么现在就要把它替换为 1x3x3 卷积(其中第一个维度对应视频帧,即时间维度,第二个和第三个维度对应帧高和帧宽,即空间维度,由于第一个维度是 1 所以对时间没有影响只对空间有影响)。

随后的空间注意块仍然保留,但只针对空间维度进行注意力操作,也就是把时间维度 flatten 为 batch 维度。在每个空间注意块之后,新插入一个时间注意块(temporal attention block),该时间注意块在第一个维度即时间维度上执行注意力,并将空间维度 flatten 为 batch 维度。

论文在每个时间注意力块中使用相对位置嵌入(relative position embeddings),以便让网络能够不依赖具体的视频帧时间也能够区分视频帧的顺序。这种先进行空间注意力,再进行时间注意力的方式,可以称为时空分离注意力(factorized space-time attention)。3D UNet 模型的整体架构如下图所示。

VDM将图像扩散模型架构扩展至视频,提出了 3D UNet 架构。具体来说,该架构将原 UNet 中的 2D 卷积替换成了 space-only 3D 卷积(space-only 3D convolution)。

核心思想
  • 使用space-only的3D卷积和时空分离注意力。
  • 是修改扩散模型的采样过程为重构指导采样
Space-only 3D卷积与时空分离注意力

3DU-net将卷积核的维度从3 x 3,扩展到1 x 3 x 3,其中1对应的是时间维度,由于时间维度是1所以对时间没有影响只对空间有影响,所以这就是2维空间上的卷积。特征向量上,对应的添加了一个视频帧维度。在VDM中保留了图像生成扩散模型中空间上的注意力模块,原来的注意块只针对空间维度进行注意力操作,而把第一个维度也就是时间维度视为批处理维度,VDM在每一个空间注意块之后,新插入一个时间注意块,时间注意块在时间维度上执行注意力,时间注意力块的操作,就是在计算帧与帧之间的注意力,从而捕捉视频序列中的运动或者变化,这种注意力操作可以帮助网络生成更加连贯和逼真的视频。VDM在每个时间注意力块中使用了相对位置嵌入,以便让网络能够不依赖于具体的视频帧时间也能够区分视频帧的顺序。这种先进行空间注意力,再进行时间注意力的方式称为时空分离注意力

这是3D U-net的整体模型架构

"3D U-net结构"

模型通过卷积和时空分离注意力的方式来处理每一个块,在进行每一步空间上采样时都通过跳跃连接来同对应步的下采样过程的特征图进行联系。

时空分离注意力的好处

  1. 可以对视频和图片生成进行联合建模训练。可以在每个视频的最后一帧后面添加随机的多张图片,然后通过掩码的方式来将视频以及各图片进行隔离,从而让视频和图片生成能够联合训练起来。
  2. 同时可以减少计算量和内存消耗(只让每个视频时间步的每个键和查询向量与自己匹配,而不是与其他时间步的向量匹配)
重构指导采样

这一部分是对于推导的修改,使其在生成过程中更好的完成任务或者增强图像分辨率。每次训练只训练一个16帧的视频片段,生成一个样本,然后在用第二个样本扩展第一个。这样可以生成任意长度的视频,同时能够对视频的时间维度进行上采样,插帧更高分辨率(时间维度)的视频。

这种方法需要从条件模型采样,即视频A生成视频B。这个条件模型可以显示的通过预训练来生成,但也可以节省资源直接从原本的生成式模型中推导出来。以往的工作中往往采用替换(replacement)来完成这一步,用新生成的内容代替原本的视频A,继续迭代生成更新的视频。同样的,在抽样过程中也是采用相同的替换逻辑。

但在实际的使用过程中发现,虽然这个替换方法生成的视频B单独看起来没问题,但是跟视频A不一致。因为在隐空间中视频B的更新方法只和视频B的当前内容+随机采样的内容有关。

采样分布的期望

视频A没有参与进去。但是第二个才是我们需要的。

理想的分布期望

所以这里重新写了生成的公式:

重写后的公式

添加了第二项来弥补替换法缺失的视频A的贡献。但视频A和随机采样的内容是无法得到的,并没有这样的完美的去噪模型,所以采用一个高斯函数来近似的代替,加上一个权重w的影响,能够比较好的适应视频任务:

使用高斯分布代替视频A的分布

这个方法称之为重构(reconstruction)。相似的,这个重构指导也能够扩展到空间插值的情况中。用于生成更高清晰度的图像。

Make-A-Video

然后是meta的make-a-video

模型结构

make-a-video pipline

他是一个从文本到视频的模型,输入是噪声视频数据和文本描述,文本描述编码会与每一层进行融合,使得生成的视频更符合语义描述。

第一层是时间空间解码器,从噪声数据中结合文本描述通过一个预训练的T2I扩散模型cover出较小的较粗糙的大概的时空上几张关键帧,这几张关键帧之间的图像gap比较大,所以在第2层有一个插帧的模块,将空缺的动作补上。然后是一个时间和空间上的超分的模块,来增加图像的分辨率和时间上的连贯性,最后是一个只在空间上的超分模块,来精细化图像的分辨率来达到视频高清的一个效果。

创新点
  1. 新颖的时间空间解码模块make video基于T2I,不要求成对的文本-视频数据,使用一个新的时间空间模块,实现T2V。加速了训练过程,不需要从头开始训练视觉或多模态的表示.同时继承了图像生成模型的广度。
  2. 其次,它用一个视频解码器、插帧模型和两个超分模型,设计了时空的pipeline去生成一个高帧率高分辨率的视频。
模型效果

论文数据结果

然后这是论文中给出的make-a-video与VDM等其他模型在一些评价指标上对比的一些结果。可以看到make-a-video不论是视频画面的质量还是视频内容相关性上都有很大的提升。

最近呢随着更多更好的视频数据集以及更好的模型架构的出现,生成视频的质量和逻辑性也是越来越好。对于扩散模型在视频生成上的应用就介绍到这里,接下来由我的组员继续介绍扩散模型在图像编辑上的应用。