专栏名称: FightingCV
一个专注于分享计算机视觉、多模态机器学习方向前沿论文,解答常见科研问题,分享好用科研工具的公众号。努力努力再努力,瑞思拜!
目录
相关文章推荐
Foodaily每日食品  ·  瑞幸辗压下,库迪活成了“便利店” ·  4 天前  
煲都黎川  ·  价格暴跌!但... ·  2 天前  
51好读  ›  专栏  ›  FightingCV

Magic 1-For-1:一分钟内生成一分钟视频片段

FightingCV  · 公众号  ·  · 2025-02-21 09:00

正文

摘要

本技术报告介绍了 Magic 1-For-1 (Magic141),这是一种高效的视频生成模型,具有优化的内存消耗和推理延迟。 其核心思想很简单:将文本到视频的生成任务分解为两个更简单的子任务,用于扩散步骤蒸馏,即文本到图像生成和图像到视频生成。 我们验证了在使用相同的优化算法的情况下,图像到视频任务确实比文本到视频任务更容易收敛。 我们还探索了一系列优化技巧,以从三个方面降低图像到视频 (I2V) 模型训练的计算成本:1) 使用多模态先验条件注入来加快模型收敛速度;2) 应用对抗性步骤蒸馏来加快推理延迟;3) 使用参数稀疏化来优化推理内存成本。 借助这些技术,我们能够在3秒内生成5秒的视频剪辑。 通过应用测试时间滑动窗口,我们能够在一分钟内生成一个长时间的视频,并具有显着改善的视觉质量和运动动态,平均生成1秒的视频剪辑的花费不到1秒钟。 我们进行了一系列初步探索,以找出扩散步骤蒸馏期间计算成本和视频质量之间的最佳权衡,并希望这可能是开源探索的良好基础模型。 代码和模型权重可在 https://github.com/da-group-pku/magic-1-for-1 上获得。


图1: 一般VBENCH的比较实验结果突出了Magic 1-1-1-1的强劲表现。 我们的模型超过了其他开源TI2V模型,包括COGVIDEOX-I2V-SAT,I2VGEN-XL,SEINE-512X320,VIDEOCRAFTER-I2V和SVD-XT-1.0,都以性能和效率而言。

图2:
魔术1对1可以生成视频剪辑,并具有优化的效率质量折衷。

1 简介

近来,扩散模型在生成高质量图像和视频方面展现出优越的性能,其多样性显著优于传统的基于生成对抗网络 (GAN) 的方法 [4] 然而,传统的扩散模型需要数百或数千个步骤才能将噪声逐渐转换为结构化数据,这使得它们的计算成本很高,限制了它们的实际应用。 例如,最近的开源视频生成模型 [18] 需要大约 8 个 GPU 和 15 分钟才能生成一个 5 秒的视频剪辑,且未进行额外优化。

最近关于扩散步数蒸馏的研究 [28, 31, 26, 26] 旨在通过减少推理步骤来加速生成过程,同时保持较高的样本质量。 然而,大部分研究工作都集中在图像生成上。 尽管这些方法很有前景,但它们通常会影响视频质量,并且需要精心设计的架构才能获得令人满意的结果。 正如 SeaweedAPT [20] 中提到的,在转移视频生成时,大多数单步视频生成算法仍然存在严重的质量下降问题,例如运动动态和结构问题。

在本报告中,我们建议通过将视频生成任务分解为两个独立的子任务来简化该任务:文本到图像生成和图像到视频生成。 与 Emu Video [girdhar2311emu] (其重点是提高视频生成质量)的目的不同,我们专注于减少扩散推理步骤。 文本到图像任务因其简单性和广泛的先前研究工作而受益,使其本身更简单,并且需要的扩散步骤更少。

我们通过实验观察到,扩散步数蒸馏算法在文本到图像生成中收敛速度明显更快,同时也提高了最终生成的质量。 为了进一步增强生成先验,我们通过使用视觉输入增强文本编码器来结合多模态输入。 通过利用量化技术,我们将内存消耗从 40G 减少到 28G,并将所需的扩散步骤从 50 步减少到仅 4 步,在质量下降最小的前提下实现了优化的性能。 总之,我们的贡献包括:

  • 生成先验注入:我们通过任务分解注入更强的生成先验,从而提出了一种用于视频生成的新型加速策略。

  • 多模态引导:我们提出了一种多模态引导机制,该机制通过结合文本输入和视觉输入来加速模型收敛。

  • 综合优化:通过结合一系列模型加速技术,我们在生成质量和推理效率方面实现了最先进的权衡。

2 相关工作

视频生成一直是一个快速发展的研究领域,它利用了深度学习和生成模型的进步。 早期方法依赖于自回归模型 [17] ,该模型基于过去的帧逐帧生成视频,但会随着时间的推移而出现累积误差。 后来引入了变分自动编码器 (VAE) [2] 和生成对抗网络 (GAN) [34, 7] 来改进视频合成,提供更好的视觉保真度,但在较长序列上难以保持时间一致性。

最近的突破是由基于Transformer的架构和扩散模型驱动的。 VideoGPT [39] 将类似 GPT 的架构应用于视频符元化和合成,有效地捕捉长期依赖关系。 扩散模型也展示了令人鼓舞的结果,例如视频扩散模型 (VDM) [12] 通过迭代去噪建模时空动态,将图像扩散模型的成功扩展到视频。 此外,基于潜在空间的方法,如 Imagen Video [13] 和 Make-A-Video [30] ,通过在压缩表示空间中进行操作,专注于高效的高分辨率合成。 这些方法极大地推动了该领域的发展,使得能够生成逼真、时间连贯且保真度高的视频。

扩散步骤蒸馏的最新进展引入了各种方法来加速扩散模型的采样过程,旨在降低计算成本同时保持高质量的输出。 Salimans 和 Ho (2022) 提出了渐进式蒸馏,它通过训练学生模型以匹配具有更多步骤的教师模型的输出,迭代地将所需的采样步骤数量减半,从而在不显著损失图像质量的情况下实现更快的采样 [28] Meng 等人 (2023) 开发了一种针对无分类器引导扩散模型的蒸馏方法,通过减少高质量图像生成所需的采样步骤数量来显著加快推理速度 [21] Geng 等人 (2024) 提出了一种使用深度平衡架构将扩散模型蒸馏成单步生成模型的方法,实现了高效采样,同时图像质量损失最小 [9] Watson 等人 (2024) 提出了 EM 蒸馏,这是一种基于最大似然的 approach,它将扩散模型蒸馏成一步生成模型,有效地减少了采样步骤,同时保留了感知质量 [36] Zhou 等人 (2024) 提出了简单快速蒸馏 (SFD),它简化了现有的蒸馏范式,并将微调时间缩短了多达 1000 倍,同时实现了高质量的图像生成 [42] Yin等人(2024)提出了分布匹配蒸馏(DMD),这是一种将扩散模型转换为一步图像生成器的方法,同时最大限度地减少对图像质量的影响 [40] 这些进展通过大幅降低计算需求,有助于使基于扩散的生成模型更适用于实际应用。

3 方法

图像先验生成

我们使用基于扩散的方法和基于检索的方法来获取图像。 我们定义了一个统一函数 𝒢 ,它结合了基于扩散的生成和基于检索的增强:


其中 𝐱 T 𝒩 ( 0 , I ) 表示初始噪声, y 是文本输入, ( y ) 是检索到的相关图像集, θ 表示模型参数。 检索函数 正式定义为:


其中 𝒟 是图像语料库, ϕ ( y ) ψ ( 𝐱 ) 分别是文本和图像嵌入, sim ( , ) 是相似度函数(例如,余弦相似度)。 检索到的图像作为去噪过程中的附加条件信号:


其中 ϵ θ 是学习到的噪声预测模型, α t 是步长, σ t 是噪声方差, 𝐳 𝒩 ( 0 , I ) 这种基于检索增强的扩散过程确保生成的图像既保持高保真度又具有事实准确性。 最近的方法,例如基于检索增强的扩散模型(RDM) [27] 和kNN-Diffusion [29] ,已经证明了这种方法的有效性,显著提高了生成图像的真实感和上下文一致性。

Refer to caption
图3: Magic 1-For-1的整体架构。

图像先验注入和多模态引导设计

图像到视频 (I2V) 任务涉及使用输入图像作为第一帧生成与给定文本描述一致的视频。 具体而言,T2V模型将Shape T × C × H × W 的潜在张量 X 作为输入,其中 T , C , H T4>和 W 分别对应于压缩视频的帧,通道,高度和宽度。

与 Emu Video [10] 类似,为了结合图像条件 I ,我们将 I 作为视频的第一帧,并应用零填充来构建维度为 T × C × H × W 的张量 I o ,如图 3 所示。 此外,我们引入了一个形状为 T × 1 × H × W 的二元掩码 m ,其中第一个时间位置设置为 1,所有后续位置设置为零。 然后将潜在张量 X 、填充张量 I o 和掩码 m 沿通道维度连接起来,形成模型的输入。

如图 3 所示,由于输入张量的通道维度从 C 增加到 2 C + 1 ,我们调整模型第一个卷积模块的参数从 ϕ = ( C i n ( = C ) , C o u t , s h , s w ) ϕ = ( C i n ( = 2 C + 1 ) , C o u t , s h , s w ) 这里, C i n C i n 分别表示修改前后的输入通道数, C o u t 是输出通道数, s h s w 分别对应卷积核的高度和宽度。 为了保持 T2V 模型的表示能力, ϕ 的前 C 个输入通道从 ϕ 复制,而其他通道初始化为零。 I2V 模型在与 T2V 模型相同的的数据集上进行预训练,以确保一致性。

为了进一步增强参考图像的语义对齐,我们通过 VLM 文本编码器的视觉分支提取它们的嵌入,并将它们与文本嵌入连接起来,如图 3 所示。 这种集成提高了模型生成更好地捕捉图像和文本描述提供的上下文信息的视频的能力。

3.1 扩散蒸馏

Refer to caption
图4: 模型加速技术的概述,包括 DMD2 和 CFG 蒸馏。

扩散模型推理的迭代性质,其特征在于其多步采样过程,给推理速度带来了显著瓶颈。 在大型模型(例如我们的 130 亿参数扩散模型 Magic 1-For-1)中,这个问题尤其严重,因为每个单独采样步骤的计算成本很高。 如图 4 所示,我们通过实现一种双重蒸馏方法来应对这一挑战,该方法结合了步骤蒸馏和CFG蒸馏以实现更快的采样。 对于步骤蒸馏,我们利用DMD2,这是一种针对高效分布对齐和加速采样而设计的最新算法。 受分数蒸馏采样(SDS) [25] 的启发,DMD2通过一个涉及三个不同模型的协调训练范式来促进步骤蒸馏。 这些模型包括:一/四步生成器 G ϕ ,其参数被迭代优化;真实视频模型 u θ real ,其任务是逼近底层真实数据分布 p real ;以及伪造视频模型 u θ fake ,其估计生成的(伪造)数据分布 p fake 至关重要的是,所有三个模型都从同一个预训练模型初始化,确保一致性并简化训练过程。 步骤蒸馏的分布匹配目标可以用数学表达式表示为:

这里, 𝐳 t 代表时间步 t 处的视频潜在变量, z t = σ t z 1 + ( 1 σ t ) z ^ 0 ,其中 z ^ 0 表示由几步生成器合成的输出, σ t 表示噪声调度。 此公式将传统的基于分数函数的分布匹配(标准DMD2中固有)重新构建为一种新颖的方法,该方法侧重于时间步 t = 0 处的分布对齐。 此调整对于确保与Magic 1-For-1中使用的训练方法一致至关重要。 此外,DMD2需要实时更新 u θ fake 以保证对伪造数据分布 p fake 的准确逼近。 此更新由以下损失函数控制:

在实际实现中,训练DMD2需要同时使用三个模型,这使得即使在配备8个GPU(每个GPU具有80GB内存)的2个节点的ZeRO3配置下,也无法适应标准训练的模型。 为了解决这一限制,我们建议利用LoRA来处理伪造模型的参数更新。 此外,我们观察到直接使用标准DMD2方法进行训练通常会导致训练崩溃。 这个问题的出现是因为真实模型的输入源自几步生成器的输出,其数据分布与预训练阶段使用的训练数据分布差异很大。 为了减轻这个问题,我们采用了一个简单而有效的解决方案:将真实模型的参数稍微向伪造模型的参数偏移。 这是通过调整与低秩分支相关的权重因子实现的。 此调整有助于对齐数据分布,确保训练稳定。

在扩散模型的推理阶段,无分类器扩散引导 (CFG) [14, 6] 经常在每个采样步骤中使用。 CFG 通过在 dropout 条件下执行额外的计算,提高了生成结果相对于指定条件的保真度。 为了消除这种计算开销并提高推理速度,我们实现了 CFG 蒸馏 [21] 我们定义了一个蒸馏目标,训练学生模型 u θ s 直接生成引导输出。 特别地,我们将以下关于时间步长和引导强度的期望最小化:

其中

表示条件输出和无条件输出之间线性插值的预测。 T s 代表文本提示。 在这种公式中, p w ( w ) = 𝒰 [ w min , w max ] 表示引导强度参数在训练期间均匀采样,这使蒸馏模型能够有效地处理各种引导尺度,而无需重新训练。 为了整合引导权重 w ,我们将其作为额外输入提供给我们的学生模型。 此蒸馏过程有效地将传统的 CFG 计算压缩为单个简化的前向传递。 我们将整体蒸馏目标 L distillation 构建为两个损失项的加权和。 CFG 蒸馏损失用于使学生模型的输出与教师的引导预测对齐,而基础预测损失则确保学生保持教师的底层生成能力。 因此,完整的蒸馏损失由下式给出:

其中

这里, λ cfg 是整体蒸馏损失的平衡系数。

3.2 模型量化

我们利用 optimum-quanto 框架进行模型量化,采用 int8 仅权重量化以最大限度地减少模型的内存占用。 量化策略专门针对去噪网络,包括 Transformer 块、文本编码器和 VLM 编码器。 量化过程将原始 bfloat16 权重映射到 int8 值。 一种常见的方法是在转换之前将 bfloat16 值缩放至合适的范围。 例如,可以确定权重张量中的最大绝对值,缩放所有权重,使该最大值对应于最大可表示的 int8 值 (127 或 -128),然后执行转换。 此缩放的简化图示可以表示为:

其中 w bf16 表示原始 bfloat16 权重, w i n t 8 表示量化后的 int8 权重, max ( | w bf16 | ) 表示权重张量中的最大绝对值。 在实践中,可以使用更复杂的方法,例如每通道量化或量化意识培训,以提高性能。 为减轻潜在的 CUDA 错误并在推理过程中确保数值稳定性,模型中的所有线性层在使用量化后的 int8 权重进行矩阵乘法之前,会先将其输入转换为 bfloat16。 这种 bfloat16-int8 乘法有助于保持精度,同时仍然受益于 int8 权重减少的内存占用。

量化前,模型权重大约占用 32GB。 应用 int8 量化后,模型大小减小到约 16GB。 运行时,峰值内存使用量约为 30GB。 经过优化的模型能够在消费级和面向推理的GPU上运行,包括RTX 5090、A10和L20。

表1: 使用我们定制的VBench上Magic 1-For-1进行的定量结果比较。 每个样本都遵循VBench [10] 合成5个视频以避免错误。

#Steps Approach i2v Subject Motion Dynamic Aesthetic Imaging Temporal Average
Subject (↑)
Consistency (↑) Smoothness (↑) Degree (↑) Quality (↑) Quality (↑) Flickering (↑) (↑)
56-step Euler (baseline) 0.9804 0.9603 0.9954 0.2103 0.5884 0.6896 0.9937 0.7740
28-step Euler (baseline) 0.9274 0.9397 0.9953 0.2448 0.5687 0.6671 0.9935 0.7623
16-step Euler (baseline) 0.9750 0.9366 0.9957 0.1241 0.5590 0.6238 0.9946 0.7441
8-step Euler (baseline) 0.9787 0.9000 0.9962 0.0068 0.4994 0.5013 0.9961 0.6969
DMD2 0.9677 0.9634 0.9945 0.3207






请到「今天看啥」查看全文