Diffusion 里的 Classifier Guidance(分类器引导)详解

Diffusion 里的 Classifier Guidance(分类器引导)详解

一、核心定位

Classifier Guidance(分类器引导,CG)
扩散反向去噪采样阶段,利用一个预训练冻结的图像分类器,给扩散模型的去噪梯度加「类别方向约束」,让生成画面更贴合指定类别、提升画质与语义可控性;后续衍生出 Classifier-Free Guidance (CFG,无分类器引导),是现在文生图/图生图主流。


二、先回顾扩散基础:普通无引导去噪

扩散反向过程核心是预测噪声 (\varepsilon_\theta(x_t,t)),迭代:
[
x_{t-1} \leftarrow \text{Denoise}(x_t, \varepsilon_\theta(x_t,t))
]
无条件生成,画面内容随机、语义容易模糊、细节差。


三、Classifier Guidance 数学原理

1. 核心思想

把「带噪图 (x_t)」喂给冻结预训练分类器 (p_\phi(c|x_t)),求类别对数概率对 (x_t) 的梯度
[
\nabla_{x_t}\log p_\phi(c\mid x_t)
]
这个梯度指向「让 (x_t) 更像类别 (c)」的方向,叠加到扩散去噪梯度上,强制往目标类收敛。

2. 融合引导公式

带引导的修正噪声预测:
[
\hat\varepsilon(x_t,t,c)
= \varepsilon_\theta(x_t,t)

  • s\cdot \nabla_{x_t}\log p_\phi(c\mid x_t)
    ]
  • (s):引导强度(guidance scale)
    • (s=0):等价无条件扩散生成
    • (s\uparrow):类别贴合度更高、对比度/锐度更强,但过大容易过曝、畸形、色彩失真

3. 直观理解

  • 原生扩散:只负责“去掉噪声”
  • 分类器梯度:负责“纠正内容,往指定猫/狗/飞机类别拽”
    两者结合=画质更清晰、语义更准。

四、完整 Pipeline(训练+采样)

  1. 前置准备
    • 训练好标准扩散去噪模型 (\varepsilon_\theta)
    • 单独训练一个能识别带噪图像的分类器 (p_\phi)(要在不同噪声等级的 (x_t) 上训练,适配扩散时序)
  2. 反向采样每一步
    1. 扩散模型预测原生噪声 (\varepsilon_\theta(x_t,t))
    2. 分类器计算类别梯度 (\nabla\log p_\phi(c|x_t))
    3. 按权重 (s) 融合梯度,修正去噪方向
    4. 更新 (x_{t-1}),迭代直到干净图像

五、优缺点

✅ 优点

  1. 显著降低 FID,提升生成清晰度、语义匹配度
  2. 灵活控制类别生成强度,可控性强
  3. 扩散主干模型不用重新训练,只外挂分类器即可

❌ 致命缺点

  1. 需要额外训练专用带噪分类器,成本高
  2. 推理时每一步都要走分类器+求梯度,速度慢、算力开销大
  3. 只能做「类别条件」,很难扩展到文本prompt多模态引导

六、Classifier Guidance vs Classifier-Free Guidance (CFG)

维度Classifier Guidance (CG)Classifier-Free Guidance (CFG)
外部模型依赖独立冻结分类器无额外外部模型
条件来源图像类别标签模型自身训练混合「有条件/无条件」数据
推理梯度分类器梯度引导同一模型输出做差值放大:
(\varepsilon_{cond} + s(\varepsilon_{cond}-\varepsilon_{uncond}))
多模态适配难适配文本、prompt原生支持文生图、多模态条件(SD/Flux/DiT都用CFG)
速度/成本慢、高成本快、工业主流

现在 Stable Diffusion、DiT、Sora 系列基本都用 CFG,淘汰了原始 Classifier Guidance。


七、关键补充小细节

  1. 分类器必须对不同噪声步 (t) 鲁棒:纯白噪声+弱噪声都能分类,不然梯度不准
  2. 引导强度 (s) 是调参核心:太小没效果,太大结构崩坏
  3. CG 是「外部单模型引导」开山之作,奠定了后续所有放大条件语义的引导范式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值