从头设计视频生成扩散模型

作者: Lilian Weng

来源: Lil’Log

发布日期: 2024-04-27 12:11:28

本文介绍了扩散模型在视频生成中的应用,探讨了从头设计和训练扩散视频模型的方法,包括参数化、模型架构及微调策略。文中提到多种视频生成模型及其架构设计,强调了时间一致性和高质量生成的重要性。

过去几年来,扩散模型强大的图像合成能力已经得到充分证明。研究社区现在正在攻克一个更困难的任务:视频生成。近日,OpenAI安全系统负责人Lilian Weng写了一篇关于视频生成的扩散模型的博客。Lilian Weng机器之心对这篇博客进行了不改变原意的编译、整理,以下是博客原文:

视频生成任务本身是图像合成的超集,因为图像就是单帧视频。视频合成的难度要大得多,原因是:

1. 视频合成还需要不同帧之间保持时间一致性,很自然,这需要将更多世界知识编码到模型之中。

2. 相比于文本或图像,收集大量高质量、高维度的视频数据要更为困难,更罔论配对的文本-视频数据了。

如果你想了解扩散模型在图像生成方面的应用,可参读本文作者Lilian Weng之前发布的博文《What are Diffusion Models?》。

从头建模视频生成

首先,我们先来看看如何从头设计和训练扩散视频模型,也就是说不使用已经预训练好的图像生成器。这里使用的变量定义与之前那篇文章稍有不同,但数学形式是一致的。令~_real是从该真实数据分布采样的一个数据点。现在,在时间中添加少量高斯噪声,创建出的一个有噪声变体序列,记为:{~_ | = 1..., T},其中噪声随T的增加而增长,而最后的~(x)~(t, x)。这个添加噪声的前向过程是一个高斯过程。

令~_和~_为这个高斯过程的可微噪声调度(differentiable noise schedule):为了表示~(x|y),其中0≤t≤T,有:令对数信噪比为~,则可将DDIM更新表示为:Salimans & Ho (2022)的论文《Progressive Distillation for Fast Sampling of Diffusion Models》为这里提出了一个特殊的~预测参数:研究表明,相比于~参数,~参数有助于避免视频生成中出现颜色变化问题。

~的参数化是通过角坐标中的技巧导出的。首先,定义~_ = arctan (y/x),由此可得到~_ = cos θ, ~_ = sin θ, ~ = cos θx + sin θy。~的速度可以写成:然后可以推导出:DDIM更新规则就可以据此更新:

对模型来说,~的参数化就是预测。对于视频生成任务,为了延长视频长度或提升帧率,需要扩散模型运行多个上采样步骤。这就需要基于第一个视频~^采样第二个视频~^的能力,其中~^可能是~^的自回归扩展或是一个低帧率的视频之中缺失的帧。除了其自身对应的有噪声变量之外,~^的采样还需要基于~^。

Ho & Salimans等人2022年的视频扩散模型(VDM)提出使用一种经过调整的去噪模型来实现重构引导方法,这样就可以很好地以~^为基础实现~^的采样:其中~是~^和~^根据所提供的去噪模型的重构。而~_是一个加权因子,可以寻找一个较大的~_ > 1来提升采样质量。请注意,使用同样的重建引导方法,也有可能基于低分辨率视频来扩展样本,使之变成高分辨率样本。

模型架构:3D U-Net和DiT类似于文生图扩散模型,U-Net和Transformer依然是常用的架构选择。谷歌基于U-net架构开发了一系列扩散视频建模论文,OpenAI近期的Sora模型则是利用了Transformer架构。VDM采用了标准的扩散模型设置,但对架构进行了一些修改,使之更适合视频建模任务。

它对2D U-net进行了扩展,使其能处理3D数据,其中每个特征图(feature map)都表示一个4D张量:帧数x高度x宽度x通道数。这个3D U-net是在空间和时间上进行分解,也就是说每一层都仅会操作空间或时间一个维度,而不会同时操作两者。

处理空间:原本和2D U-net中一样的2D卷积层会被扩展成仅针对空间的3D卷积,具体来说,就是3x3卷积变成1x3x3卷积。

每一个空间注意力模块依然是关注空间的注意力,其中第一个轴(frames)则被当成批(batch)维度处理。处理时间:每个空间注意力模块之后会添加一个时间注意力模块。其关注的是第一个轴(frames)并将空间轴视为批维度。使用这种相对位置嵌入可以跟踪帧的顺序。这个时间注意力模块可让模型获得很好的时间一致性。

Ho, et al.在2022年提出的Imagen Video基于一组级联的扩散模型,其能提升视频生成的质量,并将输出升级成24帧率的1280x768分辨率视频。Imagen Video架构由以下组件构成,总计7个扩散模型。一个冻结的T5文本编码器,用以提供文本嵌入作为条件输入。一个基础视频扩散模型。

一组级联的交织放置的空间和时间超分辨率扩散模型,包含3个TSR(时间超分辨率)和3个SSR(空间超分辨率)组件。

在实践中,文本嵌入会被注入到所有组件中,而不只是基础模型中。基础去噪模型使用共享的参数同时在所有帧上执行空间操作,然后时间层将各帧的激活混合起来,以更好地实现时间一致性;事实证明这种方法的效果优于帧自回归方法。

Imagen Video还应用了渐进式蒸馏来加速采样,每次蒸馏迭代都可以将所需的采样步骤减少一半。在实验中,他们能够将所有7个视频扩散模型蒸馏为每个模型仅8个采样步骤,同时不会对感知质量造成任何明显损失。

为了更好地扩大模型规模,Sora采用了DiT(扩散Transformer)架构,其操作的是视频和图像隐代码的时空块(spacetime patch)。其会将视觉输入表示成一个时空块序列,并将这些时空块用作Transformer输入token。

调整图像模型来生成视频

在扩散视频建模方面,另一种重要方法是通过插入时间层来“扩增”预训练的文生图扩散模型,然后就可以选择仅在视频上对新的层进行微调或完全避免进行额外的训练。这个新模型会继承文本-图像对的先验知识,由此可以帮助缓解对文本-视频对数据的需求。

在视频数据上进行微调

Singer et al.在2022年提出的Make-A-Video是在一个预训练扩散图像模型的基础上扩展一个时间维度,其包含三个关键组件:1. 一个在文本-图像对数据上训练的基础文生图模型。2. 时空卷积和注意力层,使网络覆盖时间维度。3. 一个帧插值网络,用于高帧率生成。

最终的视频推理方案的数学形式可以写成这样:其中:~是输入文本,是BPE编码的文本,是CLIP文本编码器P(.)是先验,给定文本嵌入~和BPE编码的文本生成图像嵌入~:这部分是在文本-图像对数据上训练的,不会在视频数据上进行微调。是时空解码器,其能生成一系列的16帧视频,其中每一帧都是低分辨率的64x64 RGB图像。是帧插值网络,可通过在生成的帧之间插值而有效提升帧率。

这是一个经过微调的模型,可用于为视频上采样任务预测被掩蔽的帧。是空间和时空超分辨率模型,可分别将图像分辨率提升到256x256和768x768。是最终生成的视频。

时空超分辨率层包含伪3D卷积层和伪3D注意力层:伪3D卷积层:每个空间2D卷积层(由预训练图像模型初始化)后面跟着一个时间1D层(由恒等函数初始化)。从概念上讲,其中的2D卷积层首先生成多帧,然后这些帧会被调整为一段视频。伪3D注意力层:在每个(预训练)空间注意力层之后堆叠一个时间注意力层,从而近似得到一个完整的时空注意力层。

它们可以表示成:其中有输入张量~∈ℝ^{B×C×T×H×W}(对应于批量大小、通道数、帧数、高度和宽度);的作用是交换时间和空间维度;flatten(.)是一个矩阵算子,可将~转换成~'∈ℝ^{B×C×T×H×W},而flatten¹(.)的作用则相反。训练时,Make-A-Video工作流程中的不同组件是分开训练的。解码器D^、先验P和两个超分辨率组件首先单独在图像上训练,而不使用配对的文本。

接下来添加新的时间层,其初始化为恒等函数,然后在未标注的视频数据上进行微调。

Wu et al.在2023年提出的Tune-A-Video是对一个预训练图像扩散模型进行扩展,使之可以实现单样本视频微调:给定一段包含T帧的视频~={~_ | =1,...,T},搭配上描述性的prompt~,任务目标是基于经过稍有编辑且相关的文本prompt~*生成一段新视频~*。

举个例子,~ = "A man is skiing"可以扩展成~* ="Spiderman is skiing on the beach"。Tune-A-Video的设计目的是用于对象编辑、背景修改和风格迁移。

除了扩展2D卷积层之外,Tune-A-Video的U-Net架构还整合了ST-Attention(时空注意力)模块,可通过查询在之前帧中的相关位置来实现时间一致性。

给定帧~_、前一帧~_{t-1}和第一帧~_1的隐含特征(它们被投射成查询~、键~和值~),ST-Attention的定义是:在采样阶段之前,它首先在单个视频上运行一个轻量加权的微调阶段。请注意整个时间自注意力(T-Attn)层都会得到微调,因为它们是新加入的,但在微调阶段,ST-Attn和Cross-Attn中只有查询投射会被更新,以保留先验的文生图知识。

ST-Attn能提升时空一致性,Cross-Attn能优化文本-视频的对齐。

Esser et al.在2023年提出的Gen-1模型(Runway)针对的任务是根据文本输入编辑给定视频。它在考虑生成条件时会将视频的结构和内容分开处理:p (x | y,c)。但是,要将这两方面清楚地分开实非易事。内容x是指视频的外观和语义,其可从文本采样来进行条件化编辑。

视频帧的CLIP嵌入能很好地表示内容,并且能在很大程度上与结构特征保持正交。结构z描述了几何性质和动态情况,包括形状、位置、物体的时间变化情况,z是从输入视频采样的。可以使用深度估计或其它针对特定任务的辅助信息(比如用于人类视频合成的人体姿势或人脸标识信息)。

Gen-1中的架构变化相当标准,即在其残差模块中的每个2D空间卷积层之后添加1D时间卷积层,在其注意力模块中的每个2D空间注意力模块之后添加1D时间注意力模块。训练期间,结构变量z会与扩散隐变量x连接起来,其中内容变量x会在交叉注意力层中提供。在推理时间,会通过一个先验来转换CLIP嵌入——将其从CLIP文本嵌入转换成CLIP图像嵌入。

Blattmann et al.在2023年提出的Video LDM首先是训练一个LDM(隐扩散模型)图像生成器。然后微调该模型,使之得到添加了时间维度的视频。这个微调过程仅用于那些在编码后的图像序列上新增加的时间层。Video LDM中的时间层会与已有的空间层交错放置,而这些空间层在微调过程中会保持冻结。也就是说,这里仅微调新参数~,而不会微调预训练的图像骨干模型参数~。

Video LDM的工作流程是首先生成低帧率的关键帧,然后通过2步隐含帧插值过程来提升帧率。

长度为T的输入序列会被解释成用于基础图像模型~的一批图像(即x_1,...,x_T),然后再调整为用于时间层的视频格式。~中有一个skip连接通过一个学习到的融合参数~导向了时间层输出~'和空间输出~的组合。在实践中,实现的时间混合层有两种:(1) 时间注意力,(2) 基于3D卷积的残差模块。

类似于Video LDM,Blattmann et al.在2023年提出的Stable Video Diffusion(SVD)的架构设计也是基于LDM,其中每一个空间卷积和注意力层之后都插入时间层,但SVD是在整个模型层面上执行微调。训练视频LDM分为三个阶段:1. 文生图预训练很重要,有助于提升质量以及遵从prompt的能力。

2. 将视频预训练分开是有利的,理想情况下应当在更大规模的经过整编的数据集上进行。3. 使用一段更小的、高视觉保真度的预先标注了字幕的视频进行高质量视频微调。

SVD专门强调了数据集整编对模型性能的关键作用。

他们使用了一个剪辑检测流程来从每段视频获得更多剪辑,然后对其使用三个不同的字幕标注器模型:(1) 用于中间帧的CoCa,(2) 用于视频字幕的V-BLIP,(3) 基于前两个标注使用LLM来进行标注。

然后他们还能继续提升视频数据集,其做法包括移除运动更少的视频片段(通过以2 fps速度计算低光流分数进行过滤)、清除过多的文本(使用光学字符识别来识别具有大量文本的视频)、清除看起来不够美的视频(使用CLIP嵌入标注每段视频的第一帧、中间帧和最后帧并计算美学分数和文本-图像相似度)。实验表明,使用经过过滤的更高质量的数据集能得到更好的模型质量,即便这个数据集要小得多。

对于首先生成远距离关键帧然后再使用时间超分辨率进行插值的方法,其中的关键挑战是如何维持高质量的时间一致性。Bar-Tal et al.在2024年提出的Lumiere则是采用了一种时空U-Net(STUNet)架构,其可在单次通过中一次性生成整段时间上持续的视频,这样就无需依赖TSR(时间超分辨率)组件了。

STUNet会在时间和空间维度上对视频进行下采样,因此会在一个紧凑的时间-空间隐空间内具备很高的计算成本。

无训练适应也有可能不使用任何训练就让预训练的文生图模型输出视频,这多少有点让人惊讶。如果我们直接简单地随机采样一个隐含代码的序列,然后用解码出来的对应图像构建一段视频,那么无法保证物体和语义在时间上的一致性。

Khachatryan et al.在2023年提出的Text2Video-Zero可实现零样本无训练的视频生成,其做法是让预训练的图像扩散模型具备用于时间一致性的两个关键机制:1. 采样具有运动动态的隐含代码序列,以保证全局场景和背景的时间一致性。2. 使用一个新的跨帧注意力(每一帧在第一帧上的注意力)重新编程帧层面的自注意力,以保证前景事物的上下文、外观和身份信息的一致性。

Text2Video-Zero可与ControlNet结合起来,其中在每个扩散时间步骤t=1,...,T,每一帧都会在(t=1,...,T)上使用ControlNet预训练的副本分支,并将该ControlNet分支的输出添加到主U-Net的skip连接。Zhang et al.在2023年提出的ControlVideo的目标是基于文本prompt和运动序列(例如深度或边缘图)生成视频。

该模型是基于ControlNet调整得到的,其中新增了三个机制:1. 跨帧注意力:在自注意力模块中添加完整的跨帧交互。它引入了所有帧之间的交互,其做法是将所有时间步骤的隐含帧映射到~_1,~_2,...,~_T矩阵,这不同于Text2Video-Zero(其是让所有帧都关注第一帧)。

2. 交替式帧平滑器(interleaved-frame smoother)机制是通过在交替帧上采用帧插值来减少闪烁效应。在每个时间步骤t,该平滑器会插值偶数或奇数帧,以平滑其相应的三帧剪辑。请注意,平滑步骤后帧数会随时间推移而减少。3. 分层式采样器能在内存限制下保证长视频的时间一致性。一段长视频会被分割成多段短视频,其中每一段短视频都会选出一帧关键帧。

该模型会使用完全跨帧注意力预生成这些关键帧以实现长期一致性,而每段相应的短视频都基于这些关键帧按顺序合成。

UUID: 1dc78cd4-97e7-4cee-a4a3-abe62246fed8

原始文件名: /home/andie/dev/tudou/annot/AI语料库-20240917-V2/AI语料库/学术头条公众号-pdf2txt/学术头条2024年/学术头条_2024-04-27_Sora之后,OpenAI Lilian Weng亲自撰文教你从头设计视频生成扩散模型.txt

是否为广告: 否

处理费用: 0.0275 元