CFG-Zero*:Flow Matching 模型中更稳健的无分类器引导方法

南洋理工&普渡提出CFG-Zero*,提升Flow Matching模型中无分类器引导的稳健性。通过优化缩放因子和零初始化,改善生成图像/视频的细节、文本对齐和稳定性。

原文标题:南洋理工&普渡大学提出CFG-Zero*:在Flow Matching模型中实现更稳健的无分类器引导方法

原文作者:机器之心

冷月清谈:

南洋理工大学与普渡大学联合提出的CFG-Zero*,旨在解决Flow Matching模型中Classifier-Free Guidance (CFG) 的结构性误差问题。CFG作为一种常用的引导策略,在模型训练不足时易导致样本偏离真实分布。CFG-Zero*通过优化缩放因子和零初始化两项创新机制,在几乎不增加计算开销的前提下,提升生成图像/视频在细节保真度、文本对齐性和稳定性上的表现。优化缩放因子动态调整CFG中无条件项的强度,避免过度引导。零初始化则跳过模型最不可靠的预测阶段,降低初始误差传播。实验结果表明,CFG-Zero*在文本生成图像和视频任务中,均优于原始CFG,并在多个SOTA模型上得到验证。目前,CFG-Zero*已集成至ComfyUI与Diffusers,方便开发者使用。

怜星夜思:

1、CFG-Zero*通过优化缩放因子和零初始化改善了Flow Matching模型的效果,那么在其他类型的生成模型中,例如GAN,这两项技术是否也能带来类似的提升?如果不能,原因会是什么?
2、文章中提到CFG在模型训练不足时会引入误差,CFG-Zero*通过零初始化缓解这个问题。那么,除了零初始化,是否存在其他方法来解决训练初期CFG的误差问题?例如,是否可以设计一种自适应的CFG强度调整策略,根据训练进度动态调整CFG的权重?
3、CFG-Zero*在文本生成图像和视频任务中都取得了不错的效果,那么它在其他生成任务中,例如音频生成、3D模型生成等方面是否也能适用?如果适用,需要进行哪些调整?

原文内容

图片


本篇论文是由南洋理工大学 S-Lab 与普渡大学提出的无分类引导新范式,支持所有 Flow Matching 的生成模型。目前已被集成至 Diffusers 与 ComfyUI


图片


  • 论文标题:CFG-Zero*: Improved Classifier-Free Guidance for Flow Matching Models
  • 论文地址:https://arxiv.org/abs/2503.18886
  • 项目主页:https://weichenfan.github.io/webpage-cfg-zero-star/
  • 代码仓库:https://github.com/WeichenFan/CFG-Zero-star

随着生成式 AI 的快速发展,文本生成图像与视频的扩散模型(Diffusion Models)已成为计算机视觉领域的研究与应用热点。


近年来,Flow Matching 作为一种更具可解释性、收敛速度更快的生成范式,正在逐步取代传统的基于随机微分方程(SDE)的扩散方法,成为主流模型(如 Lumina-Next、Stable Diffusion 3/3.5、Wan2.1 等)中的核心方案。


然而,在这一技术迭代过程中,一个关键问题依然存在:如何在推理阶段更好地引导生成过程,使模型输出更加符合用户提供的文本描述。


Classifier-Free Guidance(CFG)是当前广泛采用的引导策略,但其引导路径在模型尚未充分训练或估计误差较大时,容易导致样本偏离真实分布,甚至引入不必要的伪影或结构崩塌。


对此,南洋理工大学 S-Lab 与普渡大学的研究者联合提出了创新方法——CFG-Zero*,针对传统 CFG 在 Flow Matching 框架下的结构性误差进行了理论分析,并设计了两项轻量级但效果显著的改进机制,使生成图像/视频在细节保真度、文本对齐性与稳定性上全面提升。


图片


研究动机:CFG 为何失效?

传统的 CFG 策略通过对有条件与无条件预测结果进行插值来实现引导。然而在 Flow Matching 模型中,推理过程是通过解常微分方程(ODE)进行的,其每一步依赖于前一步的速度估计。


当模型训练不足时,初始阶段的速度往往较为不准确,而 CFG 此时的引导反而会将样本推向错误轨迹。研究者在高斯混合分布的可控实验中发现,CFG 在初始步的引导效果甚至不如「静止不动」,即设速度为 0。


方法介绍

研究者提出了 CFG-Zero*,并引入以下两项关键创新:


图片


1.优化缩放因子(Optimized Scale):在每个时间步中动态计算有条件速度与无条件速度的内积比值,从而调整 CFG 中无条件项的强度,避免「过度引导」导致的误差。

2.零初始化(Zero-init):将 ODE 求解器的前 K 步速度置为零(默认 K=1),跳过模型最不可靠的预测阶段,有效降低初始误差传播。

这两项策略可无缝集成至现有的 CFG 推理流程中,几乎不引入额外计算开销。下面我们具体介绍该方法的细节:


优化缩放因子

首先,CFG 的目标是能够估计出一个修正的速度,能够尽可能接近真实速度:


图片


为了提升引导的精度,研究者引入了一个修正因子 s:


图片


基于此可以建立优化的目标:


图片


代入化简可以得到:


图片


求解最优值为:


图片


因此新的 CFG 形式为:


图片


零初始化

研究者在 2D 多元高斯分布上进行进一步定量分析,可以求解得到扩散过程中每一步的最优速度的 closed-form:


图片


基于此,他们在训练了一个模型,并分析训练不同轮数下模型的误差,如下图所示。


图片


研究者发现在训练早期阶段,无分类引导得到的速度误差较大,甚至不如将速度设置为 0:


图片


他们进一步在高维情况下验证了这一观察,如下图所示。


图片


研究者对比原始 CFG 与仅使用零初始化的 CFG,发现随着模型的收敛,零初始化的收益逐渐变小,在 160 轮训练后出现拐点,与多元高斯实验结果吻合。


实验结果

研究者在多个任务与主流模型上验证了 CFG-Zero* 的有效性,涵盖了文本生成图像(Text-to-Image)与文本生成视频(Text-to-Video)两大方向。


在图像生成任务中,研究团队选用了 Lumina-Next、SD3、SD3.5、Flux 等当前 SOTA 模型进行对比实验,结果显示 CFG-Zero* 在 Aesthetic Score 与 CLIP Score 两项核心指标上均优于原始 CFG。


例如在 Stable Diffusion 3.5 上,美学分有明显提高,不仅图像美感更强,而且语义一致性更好。在 T2I-CompBench 评测中,CFG-Zero* 在色彩、纹理、形状等多个维度均取得更优表现,特别适用于需要精准表达复杂语义的生成任务。


在视频生成任务中,研究者将 CFG-Zero* 集成到 Wan2.1 模型中,评估标准采用 VBench 基准套件。结果表明,改进后的模型在 Aesthetic Quality、Imaging Quality、Motion Smoothness 等方面均有所提升,呈现出更连贯、结构更稳定的视频内容。CFG-Zero* 有效减少了图像跳变与不自然的位移问题。


图片


实际测试

CFG-Zero* 在开源社区中实现了快速落地。目前,该方法已正式集成至 ComfyUI 与 Diffusers 官方库,并被纳入视频生成模型 Wan2.1GP 的推理流程。借助这些集成,普通开发者与创作者也能轻松体验该方法带来的画质与文本对齐提升。


图片


该方法可以用于图生视频。我们使用官方的 repo 用这张测试图:


输入 prompt:「Summer beach vacation style. A white cat wearing sunglasses lounges confidently on a surfboard, gently bobbing with the ocean waves under the bright sun. The cat exudes a cool, laid-back attitude. After a moment, it casually reaches into a small bag, pulls out a cigarette, and lights it. A thin stream of smoke drifts into the salty breeze as the cat takes a slow drag, maintaining its nonchalant pose beneath the clear blue sky.」


得到的视频如下:(第一个为原始 CFG 生成的,第二个为 CFG-Zero* 生成的),效果还是比较明显,值得尝试。


图片
图片


该方法对 Wan2.1 文生视频同样适用:(图 1 为原始 CFG,图 2 为 CFG-Zero*)


图片
图片


使用的 Prompt:「A cat walks on the grass, realistic.」


该方法同时兼容 LoRA: 


使用的 LoRA 为:https://civitai.com/models/46080?modelVersionId=1473682


Prompt:「Death Stranding Style. A solitary figure in a futuristic suit with a large, intricate backpack stands on a grassy cliff, gazing at a vast, mist-covered landscape composed of rugged mountains and low valleys beneath a rainy, overcast sky. Raindrops streak softly through the air, and puddles glisten on the uneven ground. Above the horizon, an ethereal, upside-down rainbow arcs downward through the gray clouds — its surreal, inverted shape adding an otherworldly touch to the haunting scene. A soft glow from distant structures illuminates the depth of the valley, enhancing the mysterious atmosphere. The contrast between the rain-soaked greenery and jagged rocky terrain adds texture and detail, amplifying the sense of solitude, exploration, and the anticipation of unknown adventures beyond the horizon.」


图片


该方法对最强文生图模型 Flux 同样支持:


图片


使用的 Prompt:「a tiny astronaut hatching from an egg on the moon.」


该方法实现也比较简单,作者在附录中直接附上了代码,如下图:


图片


图片


© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:[email protected]

这个想法很棒!自适应CFG强度调整策略听起来就很有前景。我觉得可以考虑从以下几个方面入手: 1. 监控模型训练过程中的loss变化,loss下降缓慢或者出现震荡时,降低CFG强度。 2. 引入一个额外的判别器,判断生成结果是否符合真实数据分布,如果判别器认为生成结果质量不高,则降低CFG强度。 3. 借鉴强化学习的思想,将CFG强度调整看作一个agent,通过与环境(生成模型)交互来学习最优的调整策略。不过,这种方法实现起来可能比较复杂。

音频和3D模型生成我不太了解,但感觉CFG-Zero*的零初始化这个trick在很多领域都可以借鉴。很多模型在训练初期都会遇到各种问题,导致效果不佳。这时候,可以尝试在训练初期让模型“放空”,不要急于求成,等模型有了一定的基础后再进行精细化训练。就像学习一样,基础没打好,后面学再多也没用。

CFG-Zero本质上是对CFG这个引导方式的优化,要看其他生成任务中是否使用了CFG。如果使用了,那应该就可以尝试套用CFG-Zero,但可能需要针对特定任务做一些调整。比如,音频生成可能需要考虑时序信息,3D模型生成可能需要考虑几何约束。如果其他生成任务没有使用CFG,那就不能直接套用CFG-Zero*,需要考虑其他引导方式。

除了零初始化和自适应CFG强度调整,我觉得还可以试试以下方法: 1. ** Curriculum Learning**:先用简单的数据集训练模型,再逐渐增加数据集的难度,让模型逐步学习如何进行有效的引导。2. ** Noise Schedule 调整**:在训练初期,增加噪声的强度,让模型更多地关注整体结构,而不是细节,从而减少CFG带来的误差。3. ** Ensemble 方法**:训练多个模型,每个模型使用不同的CFG强度,然后将它们的输出进行融合,从而获得更鲁棒的结果。 这些方法各有优缺点,可以结合实际情况选择使用。

我感觉可以参考迁移学习的思路,先在一个比较大的数据集上训练一个基础模型,然后再用目标数据集进行微调。这样,即使在目标数据集上训练不足,模型也能获得一定的先验知识,从而减少CFG带来的误差。当然,前提是存在一个与目标数据集相关的、足够大的数据集。

抛开模型说trick都是耍流氓…GAN的训练方式和Diffusion Model差异巨大,CFG-Zero是针对diffusion model在生成过程中的引导做的优化。GAN的训练更看重生成器和判别器的对抗和平衡,所以我觉得CFG-Zero直接用在GAN上效果可能不会太好,需要根据GAN的特点进行修改。

这个问题很有意思!我觉得CFG-Zero*的核心在于解决Flow Matching模型在训练初期引导不准确的问题。对于GAN来说,训练方式和原理完全不同,GAN是通过生成器和判别器的对抗训练来逐步提升生成质量。GAN可能更关注模式崩溃或者梯度消失之类的问题.所以直接套用可能不会有太明显的效果,但优化缩放因子的思路或许可以借鉴,根据GAN训练的阶段性特点动态调整生成器和判别器的对抗强度。

这是一个很好的思考方向。个人认为,CFG-Zero* 的零初始化策略可能不太适用于 GAN。GAN 的训练依赖于生成器和判别器之间的动态博弈,如果一开始就将生成器的输出置零,可能会破坏这种博弈的平衡,导致训练无法收敛。但是,优化缩放因子的思想或许可以借鉴,用于平衡生成器和判别器的损失函数,从而提高 GAN 的训练稳定性和生成质量。当然,这需要结合 GAN 的具体结构和训练方式进行调整。

我觉得CFG-Zero*的核心思想是通用的,即在模型训练初期降低引导强度,避免引入误差。因此,它在其他生成任务中也有一定的适用性。对于音频生成,可以考虑在训练初期降低无条件音频的权重,或者对音频进行平滑处理,减少噪声。对于3D模型生成,可以考虑在训练初期降低对模型细节的约束,让模型先学习整体结构,然后再逐步增加细节。总的来说,需要根据具体任务的特点进行调整。