分享
Lilian Weng|视频生成的扩散模型
输入“/”快速插入内容
Lilian Weng|视频生成的扩散模型
原文地址:
https://lilianweng.github.io/posts/2024-04-12-diffusion-video/
编译:机器之心
视频生成任务本身是图像合成的超集,因为图像就是单帧视频。视频合成的难度要大得多,原因是:
1.
视频合成还需要不同帧之间保持时间一致性,很自然,这需要将更多世界知识编码到模型之中。
2.
相比于文本或图像,收集大量高质量、高维度的视频数据要更为困难,更遑论配对的文本 - 视频数据了。
如果你想了解扩散模型在图像生成方面的应用,可参读 Lilian Weng 之前发布的博文《
What are Diffusion Models?
》
从头建模视频生成
首先,我们先来看看如何从头设计和训练扩散视频模型,也就是说不使用已经预训练好的图像生成器。
参数化和采样
这里使用的变量定义与
之前那篇文章
稍有不同,但数学形式是一致的。令 𝐱~𝑞_real 是从该真实数据分布采样的一个数据点。现在,在时间中添加少量高斯噪声,创建出 𝐱 的一个有噪声变体序列,记为:{𝐳_𝑡 | 𝑡 = 1..., 𝑇},其中噪声随 𝑡 的增加而增长,而最后的 𝑞(𝐳_𝑇)~𝒩(𝟎,𝐈)。这个添加噪声的前向过程是一个高斯过程。令 𝛼_𝑡 和 𝜎_𝑡 为这个高斯过程的可微噪声调度(differentiable noise schedule):
为了表示 𝑞(𝐳_𝑡|𝐳_𝑠),其中 0≤𝑠<𝑡≤𝑇,有:
令对数信噪比为 𝜆𝑡=log[𝛼𝑡2/𝜎𝑡2], ,则可将 DDIM 更新表示为:
Salimans & Ho (2022) 的论文《
Progressive Distillation for Fast Sampling of Diffusion Models
》为这里提出了一个特殊的 𝐯 预测参数: 𝑣-prediction (𝑣=𝛼𝑡𝜖−𝜎𝑡𝑥) p。研究表明,相比于 𝝐 参数,𝐯 参数有助于避免视频生成中出现颜色变化问题。
𝐯 的参数化是通过角坐标中的技巧导出的。首先,定义 𝜙_𝑡=arctan (𝜎_𝑡/𝛼_𝑡),由此可得到 𝛼_𝜙=cos 𝜙, 𝜎_𝑡=sin 𝜙, 𝐳_𝜙=cos 𝜙𝐱+sin 𝜙𝝐。𝐳_𝜙 的速度可以写成:
然后可以推导出:
DDIM 更新规则就可以据此更新:
图 1:以角坐标形式展示扩散更新步骤的工作方式,其中 DDIM 通过让 z_{𝜙_𝑠} 沿 −𝑣^𝜙𝑡 的方向移动而使其不断演进。
对模型来说,𝐯 的参数化就是预测
对于视频生成任务,为了延长视频长度或提升帧率,需要扩散模型运行多个上采样步骤。这就需要基于第一个视频 𝐱^𝑎 采样第二个视频 𝐱^𝑏 的能力, 𝑥𝑏∼𝑝𝜃(𝑥𝑏|𝑥𝑎), 其中 𝐱^𝑏 可能是 𝐱^𝑎 的自回归扩展或是一个低帧率的视频之中缺失的帧。