OpenAI安全系统负责人:从头构建视频生成扩散模型

553d5dd865f34cd4065a92fe8ba1bbe9.jpeg

者 | Lilian Weng

OneFlow编译

翻译|杨婷、宛子琳、张雪聃

题图由SiliconFlow MaaS平台生成

过去几年,扩散模型(Diffusion models)在图像合成领域取得了显著成效。目前,研究界已开始尝试更具挑战性的任务——将该技术用于视频生成。视频生成任务是图像生成的扩展,因为视频本质上是一系列连续的图像帧。相较于单一的图像生成,视频生成的难度更大,原因如下:

  1. 它要求在时间轴上各帧之间保持时间一致性,这自然意味着需要将更多的世界知识嵌入到模型中。

  2. 相较于文本或图像,收集大量高质量、高维度的视频数据难度更大,更不用说要获取文本与视频的配对数据了。

阅读要求:在继续阅读本文之前,请确保你已经阅读了之前发布的关于图像生成的“什么是扩散模型?(https://lilianweng.github.io/posts/2021-07-11-diffusion-models/)”一文。(本文作者Lilian Weng是OpenAI的AI安全与对齐负责人。本文由OneFlow编译发布,转载请联系授权。原文:https://lilianweng.github.io/posts/2024-04-12-diffusion-video/)

1

从零开始的视频生成建模

首先,我们来回顾一下从头开始设计和训练扩散视频模型的方法,这里的“从头开始”指的是我们不依赖预训练的图像生成器。

参数化与采样基础

在前一篇文章的基础上,我们对变量的定义稍作调整,但数学原理依旧不变。假设7189713701fccfb959aaf48f0b3dbd09.png是从真实数据分布中采样的数据点。现在,我们逐步向其引入少量的高斯噪声,形成一系列x的噪声变量5a663c3c5d59499836ddd6c1346fb853.png,随着的增长,噪声量逐渐增大,直至最终形成47ed45f5a8bf8d12847daba27410ad46.png。这一逐步添加噪声的前向过程遵循高斯过程。此外,我们用b640cf87202de66a454d910678df431e.png来表示高斯过程的一个可微分的噪声调度(noise schedule):

fa11a69e2c5004fe9c57cc5689a35c0e.png

dd060a9492128e8ded1ad99ab336a658.png表示为6ccdba78903e121cb8396f962ea6c82f.png,需要以下操作:

72039bc7685c5bcd444c3c96cc927f66.png

设对数信噪比e45e00d5157834f12cb80281c095c714.png,我们可以将DDIM(宋等人,2020年)更新表示为:

b8f35612a26357a9ec4d4399580d3539.png

由Salimans和Ho(2022年)提出的v预测 e1e5627ce5c59492eae7881fe7f3cce0.jpeg参数化,特别适用于在视频生成中避免色彩偏移,相比cd4a954328c8f0bec270141ce17f6435.jpeg参数化,其效果更佳。

v参数化采用了角坐标系中的一个巧妙技巧进行推导。首先,我们定义02ad852143596b28d1b1dab25e67d3e3.png,然后得到b9383ce0aad10c5ea5a39a59ebd7f90b.png297a0bb693ca96eb8f12451639ca83ea.png的速率可以表示为:

1a3622e07295d45eb97b1e9cfc670579.png

然后可以推导出:

e2caca04baa723925ee48442554325b7.png

相应地,DDIM更新规则为:

789a0b54e4245c827e4de669986fc9ce.png

48cac47bc965377c8d75275d3499c432.png

图1:扩散更新步数在角坐标中的工作原理,其中,DDIM沿着79bbf7a8c30fec4ebbe6469ae497665f.png方向移动d2baf62986b03d47aa9a157921d515ed.png来进行演化。(图源:Salimans和Ho,2022)

模型的v参数化是为了预测87449d19f1274e33e5a959282d017510.png

在视频生成中,我们需要扩散模型运行多个上采样步数,以延长视频长度或提高帧率。这要求模型具备根据第一个视频ed2b9d203208dd35c3a1e4877362cd8c.png采样第二个视频2c535aa238f3a15031a0b62a31a130ef.png的能力,e5905776fa09eb3f87f98171ad13fb97.png,其7ff6f59dd4ebf6629e66648adb307569.png可能是52ac4ed280476536b95e5be527c2d6f9.png的自回归扩展,或者是低帧率视频748058ddfccd503cf7a20eb61e546b63.png中的缺失帧。

采样ddb4c4c626bf246403791218625cf3ba.png时,不仅要依赖其自身的噪声变量,还需要考虑视频16ede48c3cae361a75830609dd632206.png。视频扩散模型(VDM;Ho和Salimans等人,2022年)提出了一种重建引导(reconstruction guidance)方法,使用调整后的去噪模型,确保视频899be309357fe6172e8aa210141b2ec0.png的采样能够恰当地考虑47243ea5726db902a4b00cb94c81391d.png

9cd87b002697b77010eb3918bd121016.png

其中,dd03186438efeb53491f7f94efc37e73.png是去噪模型提供的290775dc34e3051069bed15a1ac6d0a8.pnge076b9f4e60cfc1a99ba973b0e96863b.png的重建。Wr是一个权重因子,Wr>1有助于提升样本质量。值得注意的是,也可以利用相同的重建引导方法,同时以低分辨率视频为条件,将样本扩展为高分辨率。

2

模型架构:3D U-Net 和 DiT

与文本到图像的扩散模型类似,U-Net和Transformer是两种常见的架构选择。Google基于U-Net架构发表了一系列关于扩散视频建模的论文,而OpenAI最近推出的Sora模型则利用了Transformer架构。

视频扩散模型(VDM;Ho和Salimans等人,2022年)采用了标准的扩散模型配置,但对架构进行了适当调整,以便更好地适用于视频建模。它将2D U-Net扩展到3D数据(Cicek 等人. 2016),使得每个特征图都表示一个4D张量(帧×高度×宽度×通道)。这种3D U-Net在空间和时间上进行了分解,即每一层只在空间或时间维度上进行操作,而不是同时处理这两个维度:

处理空间

  • 原先2D U-Net中的2D卷积层被扩展为仅在空间上进行的3D卷积,具体来说,原本的3x3卷积变成了1x3x3卷积。

  • 每个空间注意力模块仍然只关注空间,其中第一帧被视为批处理维度。

处理时间

  • 在每个空间注意力块之后,增加了一个时间注意力块。该模块对第一帧进行注意力操作,并将空间维度视为批处理维度。时间注意力块利用了相对位置嵌入来追踪帧的顺序,这对于模型捕捉良好的时间连贯性非常关键。

6282d3c49f8944ad2df79d5df88d4ff5.png

图2:3D U-Net架构图。输入到网络的包括噪声视频Zt、条件信息c和对数信噪比(log-SNR)33337dd697c79c3c8be2856d7b77b002.jpeg。通道乘数1c6523304b0cbc1b8666487a2131acba.png表示各层的通道数量。(图源:Salimans和Ho,2022年)

Imagen Video(Ho等人,2022年)构建在一系列扩散模型的级联之上,以提升视频生成质量,并升级至输出1280x768分辨率、每秒24帧的视频。Imagen Video的架构由以下部分构成,共包含7个扩散模型。

  • 一个冻结的T5文本编码器,提供文本嵌入作为条件输入。

  • 一个基础视频扩散模型。

  • 一个由空间和时间超分辨率扩散模型交错组成的级联,包括3个TSR(时间超分辨率)和3个SSR(空间超分辨率)组件。

8e6f0fc6f22b7b90328e4bb95b1d3122.png

图3:Imagen Video中的级联采样流程。在实际操作中,文本嵌入被注入到所有组件中,而不仅仅是基础模型。(图源:Ho等人,2022年)

基础去噪模型使用共享参数的同时,对所有帧执行空间操作,然后时间层混合跨帧激活以更好地捕捉时间连贯性,这比帧自回归方法更有效。

b4576bd1c2daab4ee3cd54bf21fa5e04.png

图4:Imagen Video扩散模型中一个空间-时间可分离块的架构。(图源:Ho等人,2022年)

SSR和TSR模型都基于上采样输入数据与噪声数据abc82da3ab9b64fd28f9c6aa0cc10b39.png进行逐通道连接。其中,SSR模型通过双线性调整大小进行上采样,而TSR模型则通过重复帧或填充空白帧进行上采样。

Imagen Video还应用了渐进蒸馏(progressive distillation)以加速采样,每次蒸馏迭代都能将所需的采样步数减半。他们的实验成功将所有7个视频扩散模型蒸馏为单个模型仅需8个采样步数,而不会在感知质量上产生明显损失。

为实现更好的扩展效果,Sora(Brooks等人,2024年)利用了DiT(Diffusion Transformer)架构,该架构在视频和图像latent code的时空块(patch)上运行。视觉输入表示为一系列的时空块,由这些块充当Transformer的输入词元。

99d4bd5db4fafb5b30c0036d40a0880c.png

图5:Sora是一种扩散Transformer模型。

(图源:Brooks等人,2024年)

3

将图像模型转换为视频生成模型

另一种重要的扩散视频建模方法是通过插入时间层来“扩展(nflate)”预训练的图像到文本扩散模型,然后可以选择仅在视频数据上微调新层,或完全避免额外的训练。模型继承了文本-图像对的先验知识,因此可以帮助减轻对文本-视频对数据的要求。

在视频数据上微调

Make-A-Video(Singer等人,2022年)通过增加时间维度来扩展预训练的扩散图像模型,包括以下三个关键步骤:

  1. 在文本-图像对数据上训练的基础文本到图像模型。

  2. 用于扩展网络以涵盖时间维度的时空卷积和注意力层。

  3. 用于高帧率生成的帧插值网络。

cb494ff9792e5c1ec1370502987e56b9.png

图6:Make-A-Video pipeline示意图。

(图源:Singer等人,2022年)

最终的视频推理方案可以表示为:

e3eb2b206c1d722e19c812c93c3f577d.png

其中:

  • 0b1319eaa4bd35815d0ccc01c3038af7.jpeg是输入文本。

  • da4cfc6921b4a3dc5855004d11eea6b9.jpeg是BPE编码的文本。

  • 95854a0852b1f182c2267363000f6d37.jpeg是CLIP文本编码器,b2cb5d0b816ab611c8e1982062acb4f7.png

  • P(.)是先验知识,用于生成图像嵌入de66cf3f485a574f8606e4738c7e4502.png,给定文本嵌入b1848b54bcccb2ff60fa59c543d66a14.png和BPE编码的文本。96aa41cc2e3ca68c47a8e81caca8a3b0.png,这一部分在文本-图像对数据上进行训练,而不是通过视频数据进行微调。

  • D^t(.)是时空解码器,用于生成一系列16帧图像,其中每一帧为低分辨率的64x64 RGB图像762e53235f84945b00253d8ee6275856.png

  • 11b03f4b5a575cb15307df1a315d9265.png是帧插值网络,通过在生成的帧之间进行插值来增加有效帧率。这是针对预测视频上采样的掩码帧任务进行微调的模型。

  • 5c20bd24f52f0c01e7d5d742a130041c.jpeg分别为空间模型和时空超分辨率模型,分别将图像分辨率增加到256x256和768x768。

  • fe975598e2997195264a20657ce71b9e.jpeg是最终生成的视频。

时空超分辨率层包括伪3D卷积层和伪3D注意力层:

  • 伪3D卷积层:每个空间2D卷积层(从预训练的图像模型初始化)后跟一个时间1D层(初始化为恒等函数)。理论上讲,2D卷积层先生成多帧图像,然后这些图像帧被重塑为视频片段。

  • 伪3D注意力层:在每个(预训练的)空间注意力层之后堆叠一个时间注意力层,并用它来近似全时空注意力层。

292a4d2afbe058984dd785f0173fd20e.png

图7:伪3D卷积层(左)和注意力层(右)的工作原理。

(图源:Singer等,2022

它们可以表示为:

42bd34eeb2358b7348e53a6e5eae606b.png

其中输入张量28ab36cbcf624fb186f7ed836d0789c2.png(对应批处理大小、通道数、帧数、高度和宽度);84c327159db7c7baf5072d434792253b.png在时间和空间维度之间进行交换; f78b2e5ce7e7d1c2ce8e5a00f22a4071.png是一个矩阵运算符,用于将h转换为1a7849cc8ad0e389b248692903cb1b04.png,而6c987f8e0a43fc8234a1368e05a3a2b4.png则反转该过程。

在训练过程中,Make-A-Video pipeline中的不同组件是独立训练的。

1. 解码器aef64e9c7d5e5127d84a734c68ba0919.png、先验函数0d7ba66426b5bf42d97bb83736186ab6.png和两个超分辨率组件7afaea49200097684b9ca4f0a1d5e51f.png,首先仅在图像上进行训练,不需要配对的文本数据。

2. 接着添加新的时间层,并被初始化为恒等函数,然后在未标注的视频数据上微调。

Tune-A-Video(吴等人,2023年)通过扩展预训练的图像扩散模型实现了一次性视频调优:给定一个包含 m 帧的视频, 表示为4e13aaf49660da788b60cc191e9d7c85.png, 并配对一个描述性提示e48996259c742b481ca5ac187b662e4f.png, 任务是基于经过编辑和关联的文本提示9bb6c3248ac94a2a2c4f54238c8799d9.png生成一个新视频0e33d9d0d94a54ea0fdaae0dea5e05b9.png。例如,62b3e0773846d527e6bed82ad7d208d8.png= "A man is skiing" 可以扩展为b860bea5575218abe68f0af0ce4d037a.png="Spiderman is skiing on the beach". Tune-A-Video主要用于视频的对象编辑、背景更改和风格转移。

除扩展2D卷积层外,Tune-A-Video的U-Net架构还融合了ST-Attention(时空注意力)模块,通过查询先前帧中的相关位置来捕捉时间一致性。给定帧a1858c726acfed5d0fd9fbeee21dc9c8.png、先前帧4bb68268fb24c467f5c6e99ceb30ceed.png以及第一帧166e1a1d1ac96b7719a73e6e0c3eb6aa.png的潜在特征,将其投影为查询Q, 键K和值V, ST-attention定义为:

b8de37c473370110a7efc968ef1ae3dc.png

0bc73a6776fa7c2c6996f9bbec6f3732.png

图8:Tune-A-Video架构概览。在采样前,它首先对单个视频进行了轻量级微调。需要注意的是,整个时间自注意力(T-Attn)层都进行了微调,因为它们是新添加的,但在微调过程中只更新了ST-Attn和Cross-Attn中的查询投影,以保留先前的文本到图像知识。ST-Attn提高了时空一致性,Cross-Attn则完善了文本与视频的一致性。(图源:吴等人,2023年

Runway的Gen-1模型(Esser等人,2023年)旨在根据文本输入编辑给定的视频任务。它将视频的结构和内容设计分解为生成条件p(x|s,c)。然而,将视频的结构与内容进行清晰的分解并不容易。

  • Content c指视频特征(appearance)和语义, 从文本中采样进行条件编辑。帧的CLIP嵌入是内容的良好表征,并且在很大程度上与结构特征呈正交分布。

  • Structure s描述了视频的几何与动态特征,包括对象的形状、位置、时间变化等,s从输入视频中采样得到,可以使用深度估计(depth estimation)或其他任务特定的辅助信息(如用于人类视频合成的人体姿势或面部特征点)。

Gen-1中的架构变化相当标准,即在其残差块中每个2D空间卷积层后添加1D时间卷积层,在其注意力块中每个2D空间注意力块后添加1D时间注意力块。在训练期间,结构变量s与扩散潜变量z进行串联操作, 其中内容变量c由交叉注意力层提供。推理时,通过先验知识将CLIP嵌入转换为CLIP图像嵌入,从而将CLIP文本嵌入转换为CLIP图像嵌入。

f0fc068234d4cf386f51c761467404a1.png

图9:Gen-1模型训练的pipeline概览。

(图源:Esser等人,2023年)

Video LDM(Blattmann等人,2023年)首先训练了一个LDM (Latent diffusion model) 图像生成器。然后微调模型,以生成具有时间维度的视频,微调仅适用于编码图像序列中新增加的时间层。Video LDM中的时间层ca5a7f45518a7dcc95811ef1106a551c.png与现有保持冻结(frozen)状态的空间层ed9c6acd22549c67860d0b396be9773d.png交错排列。换句话说,我们仅微调新参数69711f8f71c875212d5d1c0da2c4d1ee.png,而不是预训练的图像骨干模型参数96a88a6f6364d6a52130f19d58468b56.jpeg。Video LDM的pipeline首先以较低的帧率生成关键帧,然后通过两个潜在帧插值步数处理提高帧率。

输入长度为的序列可以看做图像的批处理 (即7f0179bb8180eaa73c8546b5f97257e6.png),用于基础图像模型6f32ca4c46c819a08753b6d940c8975e.jpeg,然后被重塑为视频格式,用于7bde389e676b799f3aa1b47fb1d0f043.png的时间层。残差连接(skip connection)将时间层2f436f29bf00717527a4bbff3d043c95.png与空间输出z通过一个学习得到的合并参数6100481c6953a0e19ab84c75a9bd7828.png进行组合,这在实践中实现了两种类型的时间混合层:(1)时间注意力和(2)基于3D卷积的残差块。

c3c7d130cf892534ed7521efa93c1264.png

图10:一个用于图像合成的预训练LDM被扩展为视频生成器。

1d4d0f4cae98b114176929def008569f.png分别表示批处理大小、序列长度、通道数、高度和宽度。41d2dfc6a18f8613764aa757bee7a6fb.png是一个可选的条件/上下文帧。(图源:Blattmann等人,2023年

然而,LDM 的预训练自编码器存在一个问题,它只能处理图像而不能处理视频。简单地将其用于视频生成可能会导致闪烁的伪影等问题,缺乏良好的时间连贯性。因此,视频 LDM 在解码器中添加了额外的时间层,并用基于 3D 卷积构建的patch-wise时间鉴别器对视频数据进行微调,而编码器保持不变,这样我们仍然可以重用预训练的 LDM。在时间解码器微调过程中,冻结的编码器独立处理视频中的每一帧,并通过视频感知鉴别器在帧之间实现时间上的连贯重建。

0b7d4995d7a6790b459cf232967ec1b0.png

图 11:视频潜在扩散模型中自编码器的训练pipeline。解码器经过微调,以确保具有与新的跨帧鉴别器相一致的时间连贯性,而编码器保持冻结状态。(图源:Blattmann 等人,2023年)

与Video LDM类似,稳定视频扩散(SVD;Blattmann等,2023年)的架构设计也基于LDM,但在每个空间卷积和注意力层之后插入了时间层,但SVD微调了整个模型。训练视频LDM有三个阶段:

  1. 文本到图像的预训练非常重要,有助于提升质量并改善提示跟踪。

  2. 视频预训练最好分开进行,并且最好发生在一个更大规模的、精心策划的数据集上。

  3. 高质量视频微调使用视觉保真度高的较小、预标注的视频。

SVD特别强调数据集精选在模型性能中的关键作用。他们应用了一个剪切检测流程来获取每个视频更多的切割点,然后应用了三种不同的字幕模型:(1) CoCa用于中间帧,(2) V-BLIP用于视频字幕,以及(3) 基于前两个字幕的 LLM 字幕。然后他们能够继续改进视频数据集,通过移除动作较少的片段(通过在2fps计算的低光流分数进行筛选),存在过多文本的片段(应用OCR来识别包含大量文本的视频),或者普遍审美价值较低的片段(使用CLIP嵌入对每个片段的第一帧、中间和最后一帧进行标注并计算美学分数和文本-图像相似度)。实验表明,经过筛选的、更高质量的数据集会带来更好的模型质量,即使这个数据集要小得多。

保持高质量的时间一致性是先生成远程关键帧,然后再通过时间超分辨率添加插值这一过程中的关键挑战。相比之下,Lumiere(Bar-Tal等,2024年)采用了空时 U-Net(STUNet)架构,通过一次传递生成整个视频的整个时间段,消除了对TSR(时间超分辨率)组件的依赖。STUNet在时间和空间维度上对视频进行下采样,因此昂贵的计算发生在紧凑的时间-空间潜空间中。

如何保持高质量的时间一致性的关键挑战,Lumiere(Bar-Tal等,2024年)相反采用了一种称为空时 U-Net(STUNet)的架构,通过单次传递生成整个视频的整个时间持续周期,从而消除了对 TSR(时间超分辨率)组件的依赖。STUNet在时间和空间维度上对视频进行降采样,因此,在紧凑的时空潜空间中,出现了成本更高的计算。

d46377bfe6d22abd8defd6174cd1f957.png

图12:Lumiere去除了TSR(时间超分辨率)模型。由于内存限制,膨胀的SSR网络只能在视频的短片段上运行,因此SSR模型在一组更短但重叠的视频片段上运行。(图片来源:Bar-Tal等人,2024年)

STUNet将预训练的文本到图像U-net进行扩展,以便能够在时间和空间维度上对视频进行下采样和上采样。基于卷积的block包括预训练的文本到图像层,然后是分解的时空卷积。在最粗糙的U-Net级别上的基于注意力的block包含预训练的文本到图像,然后是时间注意力。进一步的训练只发生在新添加的层上。

8adeb1ead1ea66ebf3b429b8ed1ca0f7.png

图 13:(a)Space-Time U-Net(STUNet)的架构,(b)基于卷积的块,和(c)基于注意力的块。(图片来源:Bar-Tal 等人,2024年)

令人惊讶的是,我们可以在不进行任何训练的情况下将预训练的文本到图像模型调整为输出视频 。

如果我们简单地随机采样一系列潜在代码,然后构建解码对应图像的视频,那么对象和语义在时间上的一致性是没有保证的。Text2Video-Zero(Khachatryan 等人,2023年)通过以下两个关键机制来增强预训练的图像扩散模型,以实现零训练、无需训练的视频生成,确保时间上的一致性:

  1. 使用运动动态对潜在代码序列进行采样,以保持全局场景和背景的时间一致性;

  2. 使用第一帧上每帧的新跨帧注意力来对帧级自注意力进行重新编码,以保留前景对象的上下文、外观和身份。

f6279bfeb76154dbe25ec8cad2d75eaa.png

图 14:Text2Video-Zero pipeline概览。(图源:Khachatryan 等人,2023年)

对一组包含运动信息的潜在变量进行采样的过程,391f0a08490aa9c846007e445493a88f.png,如下所述:

1. 定义一个方向db3651034c2186ec672d935f542dfc89.jpeg用于控制全局场景和相机运动;默认情况下,我们设为af7fdf5805b5703603bb71cb5c039014.jpeg。同时,定义一个控制全局运动量的超参数9a31337cfc618e701912eba255383c9f.png

2. 首先随机抽样第一帧的潜在编码,c7049ba04914b8ad48786d6ad4d017b0.png

3. 使用预训练的图像扩散模型,例如论文中的稳定扩散(SD)模型,执行978c2a88053f412ae71513b59902811e.png:DDIM反向更新step,并获得相应的潜在编码4ee82de8eb42e45babe556e472725cef.png,其中eaf2994cde9e6c94c5f5c50a120bd12b.png

4. 对于潜在编码序列中的每一帧,我们应用相应的运动转换,并使用由以下公式定义的变形操作:34dd5414ac82b795bc7ae4463bcfa549.png

5. 最后对所有72c8000d883b0c22193976c57ce92e07.png应用 DDIM 前向step,来获得7ce59513aaad2249691641365b3c23e4.jpeg

f5ce6847c4d75cf19c128f42df87bc20.png

此外,Text2Video-Zero将预训练的SD模型中的自注意力层替换为一种新的跨帧注意力机制,参考第一帧。其动机是在生成的视频中保留关于前景对象的外观、形状和身份的信息。

e607e6200c63e67026cedb253c5474d8.png

作为一个可选项,背景遮罩(mask)可以用于进一步平滑和改善背景的一致性。假设我们使用某种现有方法为第 k 帧获取相应的前景遮罩Mk,背景平滑将在扩散步数t时,相对于背景矩阵,合并实际和变形的潜在编码:

fcaa014ff7ca68a6af65f2bff0b4962f.png

其中,48f8845a22d5a0fd064bc2296860ef38.png是实际的潜在编码,1fe8a0a903776727a2782be7763423d4.png是在背景上变形的潜在编码;0c3513aab5a0eb877a67d9b54f123b78.png是一个超参数,文献中在实验里设定6484969745887c3a58d7f909682001f9.png

Text2Video-Zero可以与ControlNet相结合,其中ControlNet的预训练副本分支应用于每个cb3e39c6eb5885dbdf4e1cdc466b0d7e.png,对于k=1,...,m在每个扩散时间步t=T,...,1,并将ControlNet分支的输出添加到主U-net的跳跃连接中。

ControlVideo(张等人,2023年)旨在根据文本提示2aea4fffc26d797e809cdfbc5b398fb1.png和运动序列(例如,深度或边缘图05d6270a27dd7cbba30c3f71794f6067.png生成视频。它由ControlNet改编而成,增加了三种新机制:

1. 跨帧注意力(Cross-frame attention:在自注意力模块中增加完全的跨帧交互。它通过将所有时间步的潜变量帧映射到Q,K,V矩阵中,引入了所有帧之间的交互作用,与Text2Video-Zero不同,后者只配置所有帧,以关注第一帧。

2. 交错帧平滑器Interleaved-frame smoother)是一种机制,用于在交替帧上进行帧插值,以减少闪烁效果。在每个时间步t,平滑器对偶数或奇数帧进行插值,以平滑它们对应的三帧片段。请注意,在平滑步之后,帧数会随时间减少。

3. 利用分层采样器Hierarchical sampler)实现在内存限制下保持时间一致性的长视频。长视频被分割成多个短片段,每个片段都选择了一个关键帧。模型预生成这些关键帧,使用完全的跨帧注意力以保持长期连贯性,并且每个相应的短片段都是在关键帧的条件下依次合成的。

678a167ff109e4e0af76ae0038615d56.png

图15:ControlVideo概览。(图源:张等人,2023年)

参考文献(请上下滑动) 

[1] Cicek et al. 2016. “3D U-Net: Learning Dense Volumetric Segmentation from Sparse Annotation.”

[2] Ho & Salimans, et al. “Video Diffusion Models.” 2022 | webpage

[3] Bar-Tal et al. 2024 “Lumiere: A Space-Time Diffusion Model for Video Generation.”

[4] Brooks et al. “Video generation models as world simulators.” OpenAI Blog, 2024.

[5] Zhang et al. 2023 “ControlVideo: Training-free Controllable Text-to-Video Generation.”

[6] Khachatryan et al. 2023 “Text2Video-Zero: Text-to-image diffusion models are zero-shot video generators.”

[7] Ho, et al. 2022 “Imagen Video: High Definition Video Generation with Diffusion Models.”

[8] Singer et al. “Make-A-Video: Text-to-Video Generation without Text-Video Data.” 2022.

[9] Wu et al. “Tune-A-Video: One-Shot Tuning of Image Diffusion Models for Text-to-Video Generation.” ICCV 2023.

[10] Blattmann et al. 2023 “Align your Latents: High-Resolution Video Synthesis with Latent Diffusion Models.”

[11] Blattmann et al. 2023 “Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets.”

[12] Esser et al. 2023 “Structure and Content-Guided Video Synthesis with Diffusion Models.”

[13] Bar-Tal et al. 2024“Lumiere: A Space-Time Diffusion Model for Video Generation.”

【OneDiff v1.0发布(生产环境稳定加速SD&SVD)】本次更新包含以下亮点,欢迎体验新版本:github.com/siliconflow/onediff

  • OneDiff质量评估

  • 重复利用编译图

  • 改进对Playground v2.5的支持

  • 支持ComfyUI-AnimateDiff-Evolved

  • 支持ComfyUI_IPAdapter_plus

  • 支持Stable Cascade

  • 提高了VAE的性能

  • 为OneDiff企业版提供量化工具

4675c7228cd41857ccd5e32174bc44ed.png

(SDXL E2E Time)

5a728ba06b14eae023f510f0fe767044.png

(SVD E2E Time)

(OneDiff Demo)

其他人都在看

c7b4929d14c93ed02ed79c81f14b8be6.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/16130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习Day-18:ResNet50V2算法实战与解析

🍨 本文为:[🔗365天深度学习训练营] 中的学习记录博客 🍖 原作者:[K同学啊 | 接辅导、项目定制] 要求: 根据本文Tensorflow代码,编写对应的Pytorch代码了解ResNetV2与ResNetV的区别 一、 基础…

【实战JVM】-基础篇-03-Java内存结构

【实战JVM】-基础篇-03-Java内存结构 1 运行时数据区1.1 总览1.2 程序计数器1.2.1 是否会内存溢出 1.3 java虚拟机栈1.3.1 栈帧的组成1.3.1.1 局部变量表1.3.1.2 操作数栈1.3.1.3 帧数据1.3.1.3.1 动态链接1.3.1.3.2 方法出口1.3.1.3.3 异常表 1.3.2 是否会内存溢出1.3.3 设置虚…

【神经网络结构可视化】使用 Visualkeras 可视化 Keras / TensorFlow 神经网络结构

文章目录 Visualkeras介绍下载安装代码示例1、导入必要的库2、创建VGG16神经网络模型3、可视化神经网络结构4、完整代码5、使用教程 可视化自己创建的神经网络结构1、导入要的库2、创建自己的神经网络模型3、可视化神经网络结构图4、完整代码 Visualkeras介绍 Visualkeras是一…

C++代码错误解决1(函数模板)

1、代码如下 //示例函数模板的使用 #include <iostream> #include <string> using namespace std; template <typename T>//函数模板 T max(T a,T b) {return a>b?a:b; } int main() {int a,b;cout<<"input two integers to a&b:"…

【微机原理及接口技术】可编程并行接口芯片8255A

【微机原理及接口技术】可编程并行接口芯片8255A 文章目录 【微机原理及接口技术】可编程并行接口芯片8255A前言一、8255A的内部结构和引脚1.与外设接口&#xff08;数据端口&#xff09;2.与处理器接口 二、8255A的工作方式三、8255A的编程1. 写入方式控制字&#xff1a;控制字…

从0开始回顾ElasticSearch

1 elasticsearch概述 1.1 elasticsearch简介 官网: https://www.elastic.co/ ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的…

【动手学强化学习】第 6 章 Dyna-Q 算法知识点总结

【动手学强化学习】第 6 章 Dyna-Q 算法知识点总结 本章知识点基于模型的强化学习与无模型的强化学习方法简介无模型的强化学习方法基于模型的强化学习方法 强化学习算法的评价指标Dyna-Q算法Dyna-Q 算法的具体流程Dyna-Q 代码实践 本章知识点 基于模型的强化学习与无模型的强…

C++语言·list链表

其实现在在讲这些容器的时候&#xff0c;我们的重点已经不是它的接口都有什么&#xff0c;功能都是什么了&#xff0c;这些内容官网上都能查到&#xff0c;而且容器和容器之间接口的不同处很少&#xff0c;我在讲解的话也只是把官网上的东西截图下来复述一下。现在的重点其实都…

AtCoder Regular Contest 178 A~D

A.Good Permutation 2&#xff08;贪心&#xff09; 题意&#xff1a; 给你一个正整数 N N N和一个由 M M M个正整数 A ( A 1 , A 2 , … , A M ) A(A_{1},A_{2}, \dots,A_{M}) A(A1​,A2​,…,AM​)组成的序列。 在这里&#xff0c; A A A的所有元素都是介于 1 1 1和 N N …

网络编程-TCP

一、TCP的相关IP 1.1 SeverSocket 这是Socket类,对应到网卡,但是这个类只能给服务器使用. 1.2 Socket 对应到网卡,既可以给服务器使用,又可以给客户端使用. TCP是面向字节流的,传输的基本单位是字节. TCP是有连接的,和打电话一样,需要客户端拨号,服务器来听. 服务器的内核…

Stream流的使用

目录 一&#xff0c;Stream流 1.1 概述 1.2 Stream代码示例 二&#xff0c;Stream流的使用 2.1 数据准备 2.2 创建流对象 2.3 中间操作 filter map distinct sorted limit skip flatMap 2.4 终结操作 foreach count max&min collect 2.5 查找与匹配 a…

redis中String,Hash类型用法与场景使用

String 用法 1. 设置键值对 &#xff08;1&#xff09;设置键值对使用 set 命令设置 key 的值。 返回值&#xff1a;ok&#xff0c;如果 key 已经存在&#xff0c;set 命令会覆盖旧值。 &#xff08;2&#xff09;使用 setex 命令设置 key 的值并为其设置过期时间&#xff…

安全设计 | CISA:构建不可侵犯的代码,软件安全设计的未来之路

软件制造商在产品设计和开发过程中应采取安全设计原则和方法&#xff0c;以减少网络安全风险&#xff0c;并转变责任重心&#xff0c;使产品在设计时就内置安全特性&#xff0c;而不是依赖于后期的补丁和修复。为此CISA发布了《软件安全设计的原则和方法》&#xff0c;帮助软件…

兵器室管控系统|DW-306是一套成熟系统

概述 智慧兵器室管理系统&#xff08;DW-S306&#xff09;是依托互3D技术、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 本解决方案利用现有内部网络&#xff0c;部署部队智能兵器室管理系统&#xff…

【Java】欸...?我学集合框架?真的假的?

【Java】欸…&#xff1f;我学集合框架&#xff1f;真的假的&#xff1f; Java集合框架 概述 Java集合框架主要由以下几个部分组成&#xff1a; 接口&#xff08;Interfaces&#xff09;&#xff1a;定义了集合的基本操作&#xff0c;如添加、删除、遍历等。实现&#xff0…

大语言模型的工程技巧(二)——混合精度训练

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 混合精度训练的示例请参考如下链接&#xff1a;regression2chatgpt/ch11_llm/gpt2_lora_optimum.ipynb 本文将讨论如何利用混合…

Java语法篇-易错

文章目录 类型转换switch case类之间关系及UMLtry catch finally 类型转换 隐式类型转换&#xff0c;不同数值类型参与计算时&#xff0c;低精度会转化为高精度参与运算 byte,short,char参与整数运算时会转成int float,int 参与浮点数运算时会转成double 强制类型转换 高精…

数据结构 —— 栈 与 队列

1.栈 1.1栈的结构和概念 栈&#xff08;Stack&#xff09;是一种特殊的线性数据结构&#xff0c;它遵循后进先出&#xff08;LIFO&#xff0c;Last In First Out&#xff09;的原则。栈只允许在一端插入和删除数据&#xff0c;这一端被称为栈顶&#xff08;top&#xff09;&a…

c++引用和内联函数

一、引用 1.引用概念 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空 间&#xff0c;它和它引用的变量共用同一块内存空间。&#xff08;引用类型必须和引用实体是同种类型的&#xff09;&#xff0c;如&#x…

MySQL--联合索引应用细节应用规范

目录 一、索引覆盖 1.完全覆盖 2.部分覆盖 3.不覆盖索引-where条件不包含联合索引的最左则不覆盖 二、MySQL8.0在索引中的新特性 1.不可见索引 2.倒序索引 三、索引自优化--索引的索引 四、Change Buffer 五、优化器算法 1.查询优化器算法 2.设置算法 3.索引下推 …