「图太糊了,把 CFG 调高点」——这句话在社区里流传很广,但它经常把问题弄得更糟。要理解为什么,得先知道 CFG 到底在算什么。
CFG 的数学含义
Classifier-Free Guidance 做的是两次预测的线性组合:
最终预测 = 无条件预测 + CFG × (条件预测 − 无条件预测)
无条件预测是「不看提示词时模型想画什么」,条件预测是「看着提示词时模型想画什么」。两者相减得到的是「提示词带来的方向」。CFG 就是这个方向的放大倍数。
所以 CFG 不是「服从度开关」,而是方向放大器的增益。增益调太大,信号会削顶。
CFG 过高的三个症状
- 过饱和:颜色艳得不自然,像被拉过对比度。
- 边缘发硬:物体轮廓像抠图贴上去的,缺少过渡。
- 细节崩坏:放大看,纹理变成重复的噪点或色块。
这三件事是同一个原因:条件方向被放大到超出模型训练时见过的范围,输出进入它没学过的区域。
CFG 过低的两个症状
- 不听话:写了「红色外套」,出来是灰的。
- 构图松散:主体偏移、残缺、比例失调。
低 CFG 相当于让模型多自由发挥。它可能出很自然的图,但那不一定是你想要的图。
所以区间在哪
| CFG | 表现 | 适合 |
|---|---|---|
| 1–3 | 几乎无视提示词 | 基本不用 |
| 4–6 | 宽松、自然、易偏离 | 艺术化、氛围优先 |
| 7–9 | 平衡 | 绝大多数场景 |
| 10–12 | 开始过饱和 | 需要强约束时短时使用 |
| 13+ | 崩坏 | 不建议 |
还要注意不同模型的耐受度不一样。SDXL 系通常对高 CFG 更敏感,7 就已经很紧;部分二次元向的底座能扛到 9–10。
负面提示词不是万能挡板
负面提示词的作用是「把画面往远离这些概念的方向推」。它和正向提示词共用同一个条件空间,所以:
- 它能削弱模型本来想画的东西。
- 它不能阻止模型从没打算画的东西。
举例:提示词里写了「人群」,负面里写「多人」,这两个是直接冲突的,结果通常是画面里人变少但不为零。而如果你没提「人群」,负面写「多人」也不会让背景自动变干净——因为模型本来就没打算画人。
这解释了为什么「堆一长串负面提示词」常常无效:大部分词对应的东西,模型压根没生成。
真正有用的负面提示词长什么样
只写三类:
- 结构性缺陷:
extra fingers, deformed hands, bad anatomy, watermark, text - 画质缺陷:
blurry, jpeg artifacts, lowres - 你不想要的画风:
3d render, cartoon(只在确实冲突时写)
其余一大串「ugly, bad, worst quality」之类的词,作用接近于零——它们没有具体的视觉指向,模型无法把它们对应到某种可去除的特征。
按症状倒推,而不是凭感觉调
| 症状 | 先查什么 | 再查什么 |
|---|---|---|
| 画面糊、结构没定型 | 步数是否低于 15 | denoise 是否不是 1.0 |
| 过饱和、边缘发硬 | CFG 是否超过 11 | 画质词是否堆太多 |
| 完全不听话 | CFG 是否低于 5 | 提示词是否超过 token 窗口被截断 |
| 手部畸形 | 分辨率是否远超训练分辨率 | 是否缺 hand 相关负面词 |
| 整体发灰 | VAE 是否缺失或不匹配 | — |
最后一行值得单独说:发灰几乎永远不是 CFG 的问题。它看起来像对比度不足,实际是潜空间解码时色彩空间没对上。调 CFG 到 15 也不会好,只会让它灰得发艳。
一个可复现的调参流程
- 固定种子。
- CFG 取 7,出基准图。
- 只改 CFG 到 5,出图。对比:服从度降了多少,自然度升了多少。
- 只改 CFG 到 10,出图。对比:是否开始过饱和。
- 在 5–10 之间定一个点,然后锁定,不再动它。
CFG 定下来之后,剩下的问题才轮到提示词和模型。反过来做,你永远不知道是哪个变量在起作用。
评论 0