(CVPR-2023)Align your Latents: High-Resolution Video Synthesis with Latent Diffusion Models (VideoLDM)
arxiv: 2304.08818 (arxiv.org)
非官方的github repo: srpkdyy/VideoLDM: Unofficial PyTorch implementation of the VideoLDM. (github.com)
简介
为什么要在2024年回顾一篇2023年的论文?
-
2023年,我们见证了人工智能生成内容(AIGC)的兴起,无论是能够将文本转换为图像的Stable Diffusion技术,还是文生视频的Sora技术,它们都极大地激发了人们的创意思维,提高了工作效率。
-
Sora技术的表现非常出色,但任何技术的发展都有其起点。我认为,文生视频技术的灵感很可能来自‘Align Your Latent’这一概念。现有大部分的视频生成模型算法,都可以在这篇文章中找到起源。
-
目前最强的开源视频模型(2024.04)Stable Video Diffusion,也是由本论文的第一第二作者完成。
视频怎么生成?Align Your Latent就行
-
我们将论文题目直接翻译:“调整你的潜在空间:使用潜在扩散模型进行高分辨率视频合成”。
-
作者开门见山,视频怎么生成?对齐图像的潜在空间特征就行!如果图像模型生成的图像之间在时序上对齐,那就可以生成一个连贯的视频!这也是现有几乎所有的视频生成模型的思路。
高质量的视频生成模型
这篇论文,验证了文生视频最朴素思路的可行性。这个朴素的思路为:
-
将图像模型改造成视频模型
-
借助自回归的方法,生成长视频
-
后处理:插帧和超分
具体算法
将图像模型改造成视频模型
-
多目标跟踪中,有一个经典的算法DeepSORT,检测模型和ReID模型来实现多目标跟踪。类似的,我们有一个朴素的思路,能否将已经存在的图像模型finetune成视频模型?
-
在图像模型中引入时序层,用于与空间层交互,实现帧之间的对齐。
方法步骤:
-
预训练的图像LDM:首先,使用一个预训练的图像LDM,该模型能够独立地生成高质量的帧(frames)。
-
时间层的引入:在图像LDM的基础上,引入额外的时间神经网络层,这些层与现有的空间层交错,并学习以时间上一致的方式对单个帧进行对齐。
-
时间一致性:通过训练这些时间层,使得生成的视频帧在时间维度上具有连贯性,即使在不同的时间步长上,生成的视频内容也能够保持一致性和连续性。
-
编码视频序列:将视频序列编码为潜在空间中的帧序列,然后通过时间层进行处理,以生成时间上连贯的视频。
-
微调:在视频数据上对时间层进行微调,同时保持空间层的权重固定,这样可以保留图像生成的能力,并通过时间层增强视频生成的能力。
关键点
-
时间注意力(Temporal Attention):使用时间注意力机制来学习视频帧之间的长期依赖关系。
-
3D卷积(3D Convolution):利用3D卷积层来捕捉视频帧的空间和时间信息。
-
正弦位置编码(Sinusoidal Positional Encoding):为模型提供时间上的位置信息,帮助模型理解帧之间的时间顺序。
借助自回归的方法,生成长视频
目的:
-
为了生成更长的视频,作者提出了一种预测模型,它能够基于一些初始的上下文帧(context frames)来预测后续的视频帧。
方法步骤:
-
上下文帧的利用:模型被训练来根据一些给定的上下文帧(例如,视频的前几个帧)来预测视频的后续帧。
-
时间掩码(Temporal Masking):通过引入一个时间掩码来指定模型需要预测的帧,掩码会覆盖模型应该预测的帧,而保留上下文帧。
-
迭代生成:在生成长视频时,可以迭代地应用采样过程,将最新的预测作为新的上下文。
-
分类器自由引导(Classifier-Free Guidance):使用分类器自由引导来稳定预测过程,这涉及到在采样时通过调整模型的输出来引导模型。
关键技术:
-
时间二进制掩码(Temporal Binary Mask):一个掩码,用于指示模型在序列中哪些帧是给定的上下文帧,哪些是需要预测的帧。
-
条件编码(Conditional Encoding):将掩码和编码后的视频帧一起输入模型,以便模型能够在生成过程中考虑到这些条件。
-
分类器自由扩散引导(Classifier-Free Diffusion Guidance):在采样过程中,通过调整模型的预测来引导模型,这种方法不需要分类器,而是直接在生成过程中进行调整。
实现细节:
-
在实际实现中,作者训练了能够基于0、1或2个上下文帧进行预测的模型,这允许在没有分类器的情况下进行引导。
-
在推理过程中,为了生成长视频,可以重复使用最新的预测作为新的上下文,从而实现长期的视频生成。
高帧率视频如何生成?插帧
目的:
-
高分辨率视频不仅需要高空间分辨率,同样需要高时间分辨率,即高帧率。
-
为了实现这一点,作者提出了一种时间插值方法,用于在给定的关键帧之间生成额外的帧,以此来提高视频的帧率。
方法步骤:
-
关键帧生成:首先使用模型生成视频的关键帧,这些帧包含了视频中主要的动作或场景变化。
-
时间插值模型:引入一个额外的模型,其任务是在两个给定的关键帧之间进行插值,生成额外的帧。
-
掩码条件机制:使用与预测模型中相同的掩码条件机制,但在插值任务中,掩码用于指定需要插值的帧。
-
多级插值:为了实现更高的帧率,模型不仅在两个关键帧之间预测三帧,还可以通过同时训练T → 4T和4T → 16T的插值模型来实现更大范围的帧率提升。
关键技术:
-
时间注意力和3D卷积:利用时间注意力和基于3D卷积的残差块来实现时间插值。
-
正弦位置编码:为模型提供时间上的位置信息,帮助模型理解帧之间的时间顺序。
-
多帧插值:通过预测两关键帧之间的多帧,来提高视频的时间分辨率。
实现细节:
-
在实验中,作者预测了两个关键帧之间的三帧,从而训练了一个T → 4T的插值模型。
-
为了实现更大的帧率,作者同时在T → 4T和4T → 16T的条件下训练模型,使用不同的fps(每秒帧数)的视频进行训练。
高分辨率视频如何生成?超分
目的:
-
尽管潜在扩散模型(LDM)已经提供了良好的原生分辨率,但作者希望进一步提高分辨率,达到更高的像素范围。
-
为了实现这一点,作者采用了级联扩散模型(cascaded diffusion models)的灵感,使用扩散模型(DM)进一步将视频LDM的输出放大4倍。
方法步骤:
-
像素空间的DM:对于驾驶视频合成实验,作者使用像素空间的DM来放大分辨率到512×1024。
-
LDM上采样器:对于文本到视频的模型,作者使用LDM上采样器来放大分辨率到1280×2048。
-
噪声增强与条件:在训练超分辨率模型时,使用噪声增强和噪声水平条件,以提高模型对不同分辨率输入的适应性。
-
时间感知的SR模型:为了保持视频帧之间的时间连贯性,作者还使SR模型具有时间感知能力,即在训练过程中考虑视频序列。
关键技术:
-
级联DM:使用级联DM来逐步提高视频的分辨率。
-
噪声增强:通过增加噪声水平来训练模型,使其能够处理不同分辨率的输入。
-
时间对齐:通过在训练过程中考虑整个视频序列,确保超分辨率模型生成的视频帧在时间上是连贯的。
实现细节:
-
在训练超分辨率模型时,作者使用了与基础图像模型相同的噪声时间表,并且固定了空间层,只优化时间层。
-
作者采用了局部操作的方式,高效地在补丁上进行所有上采样器训练,并且在应用模型时采用卷积方式。
实验
数据集
-
Webvid-10M。目前最常用的视频生成数据集。一千万个视频
-
自建的自动驾驶数据集。68万个视频
实验表现
-
在两个常用数据集对比了IS,FVD和CLIP相似度
-
题外话
-
重点不在实验,而在论文思路。实验对比的算法和使用的数据集已经十分老旧,但是整个算法的思路如今被广泛验证。
-
下一篇论文,我们将分析开源社区使用最多的模型:animatediff。