画面跟提示词差很远时,先不要整段重写提示词,也不要凭感觉把引导系数往上拉。更稳的处理方式是把文字和参数拆开:同一条提示词、同一个种子先确认出图能不能复现,再逐段增删描述,最后才单独调整引导系数和步数。每一轮只改一个变量,才能判断偏离到底来自描述没写清,还是参数把描述压掉了。
判断顺序建议是:可复现 → 分段定位 → 参数定位。先用固定种子和不变参数跑三遍,如果画面差异明显,说明当前配置自身就不稳定,此时做任何提示词对比都不可信;确认稳定后,把提示词拆成主体、风格、画质三段逐段增删,看画面丢的是哪一层;最后只动引导系数与步数、调度器,观察主体还原、色彩和噪点的走向。每一档取值的好坏都要结合所用模型版本、调度器和分辨率确认,不要跨环境直接套用。
用同一条提示词和固定种子跑三遍,先排除随机性
这一步的目的不是出好图,而是先确认“同样的输入会不会得到同样的输出”。如果同一组参数下三次结果的主体位置、数量和构图都不一样,那么后面所有提示词对比都会混入随机因素,无法比较。
操作上把下面这些项全部固定住再跑:种子填成一个具体整数(例如 123456789),批量设为 1,随机种子递增或随机提示词这类开关关掉,分辨率、步数、引导系数、调度器保持默认不动。连续跑三次,文件名按 run1/run2/run3 存。
# 三张图跑完后,先比像素再比肉眼看
compare -metric AE run1.png run2.png null: 2>&1
compare -metric AE run1.png run3.png null: 2>&1
sha256sum run1.png run2.png run3.png
差异度量结果为 0 表示像素完全一致;不为 0 时先看差异集中在哪:如果只是细小噪点或纹理抖动,通常可以接受;如果主体轮廓、数量、构图都变了,就要先排查种子是否真的生效、是否有随机裁剪或随机强度之类的选项在起作用。
| 批次 | seed | steps | 引导系数 | 分辨率 | 调度器 | 与 run1 的像素差异 | 主体是否一致 |
|---|---|---|---|---|---|---|---|
| run1 | 123456789 | 28 | 3.5 | 1024x1024 | 按默认 | 基线 | 是 |
| run2 | 123456789 | 28 | 3.5 | 1024x1024 | 按默认 | 待填 | 待填 |
| run3 | 123456789 | 28 | 3.5 | 1024x1024 | 按默认 | 待填 | 待填 |
这张表填完之后才进入下一步。三行差异都很小,说明基线可用;差异很大,先把随机性来源排查清楚。
把提示词拆成主体、风格、画质三段,逐段增删
整段提示词不好排查,是因为你无法知道模型在哪一层走偏了。拆成三段后,每次只保留一段或多加一段,画面丢的是主体、色调还是细节就一目了然。下面是一个可以直接套用的分段写法,把英文描述换成你自己的内容即可。
主体: a matte white ceramic mug, straight-on view, on a wooden desk, empty background
风格: natural window light, calm muted tones, 50mm lens
画质: sharp focus, fine surface texture
排除项: blurry, text, watermark, extra objects
测试顺序建议是:只放主体段跑一次 → 加风格段跑一次 → 再加画质段跑一次 → 最后加排除项。四张图用同一种子和同参数,放在一起看。
- 只放主体段时主体仍然缺失或多出无关物体:问题在主体描述本身,需要写清数量、朝向、背景是否为空白,而不是继续加形容词。
- 加风格段后主体被光影或色调压掉:风格词强度过头,先把光线、色调拆开分次加,观察是哪一类词在抢权重。
- 加画质段后出现纹理堆叠、边缘过硬或整体发灰:画质词过多,建议减到一两个最关键的。
- 加排除项后画面反而出现被排除的物体:部分前端没有独立负面词通道,排除词写进正向提示词时会被当作内容理解,需要结合当前界面确认,改成描述目标状态更稳。
| 段落组合 | 主体是否齐全 | 风格是否偏移 | 画面问题 |
|---|---|---|---|
| 仅主体 | 待记录 | 待记录 | 待记录 |
| 主体+风格 | 待记录 | 待记录 | 待记录 |
| 主体+风格+画质 | 待记录 | 待记录 | 待记录 |
| 四段全上 | 待记录 | 待记录 | 待记录 |
只动引导系数,观察画面是否发灰或过曝
确认提示词分段没问题后,再回到参数。引导系数控制模型多大程度上贴着提示词走,通常系数偏低,画面更自由,容易偏离描述;系数偏高,更贴近描述,但也更容易出现对比过强、色彩饱和、局部过曝或细节发硬。这个方向在不同实现上表现会有差异,需要自己看。
先查一下当前页面或接口的默认值,再以默认值为中心向两侧取档。常见可试档位如下,具体范围以你所用版本为准。
| 引导系数 | 主体是否完整还原 | 色彩饱和度 | 是否发灰或过曝 | 边缘与细节 | 备注 |
|---|---|---|---|---|---|
| 1.0 | 待记录 | 待记录 | 待记录 | 待记录 | 接近弱引导,画面自由度高 |
| 2.0 | 待记录 | 待记录 | 待记录 | 待记录 | |
| 3.0 | 待记录 | 待记录 | 待记录 | 待记录 | |
| 3.5 | 待记录 | 待记录 | 待记录 | 待记录 | 常见默认区间附近 |
| 4.5 | 待记录 | 待记录 | 待记录 | 待记录 | |
| 6.0 | 待记录 | 待记录 | 待记录 | 待记录 | |
| 8.0 | 待记录 | 待记录 | 待记录 | 待记录 | 高引导,易过曝 |
一个可验证的细节:如果改动引导系数后出图完全没有任何变化,说明当前用的可能是固定引导的蒸馏版本,或参数没有真正传进去。此时继续调这个数值没有意义,应回到提示词分段上找原因。
在同一张图上对比不同步数与调度器组合
提示词已经写清楚、引导系数也调到了一个不跑偏的档位,画面仍然不到位,多半是采样阶段没收敛。此时固定提示词、种子和引导系数,先扫步数,再换调度器。
- 固定调度器默认值,步数依次试 20、28、36、50,看主体轮廓在第几档稳定下来。
- 选一个主体稳定、噪点可接受的步数,再换调度器,例如 euler + simple、euler_a + normal、dpmpp_2m + karras,可用列表以你所在界面为准。
- 如果某个调度器在低步数下更完整,记录这一组,不要只记步数。
结果对比建议直接把同尺寸图片拼成一张,避免在多个标签页之间来回切换看走眼。
# 同提示词、同种子,四档步数拼成一行
montage -tile 4x1 -geometry +4+4 s20.png s28.png s36.png s50.png steps.png
# 同一步数下不同调度器拼成 2x2
montage -tile 2x2 -geometry +4+4 euler.png euler_a.png dpmpp2m.png uni.png sched.png
| steps | 调度器 | 主体完整度 | 纹理细节 | 噪点或伪影 | 与目标差距 |
|---|---|---|---|---|---|
| 20 | 按默认 | 待记录 | 待记录 | 待记录 | 待记录 |
| 28 | 按默认 | 待记录 | 待记录 | 待记录 | 待记录 |
| 36 | 按默认 | 待记录 | 待记录 | 待记录 | 待记录 |
| 50 | 按默认 | 待记录 | 待记录 | 待记录 | 待记录 |
| 36 | 备选调度器 | 待记录 | 待记录 | 待记录 | 待记录 |
通常步数增加会先改善再趋于平稳,超过某个点后继续加步数收益变小,甚至纹理堆叠。调度器对色彩和细节风格的影响往往比小幅加步数更明显,建议把调度器名称一起写进记录,而不是只写“36 步效果较好”。
把确认有效的写法和参数固化成可复用模板
一轮对比做下来,有效的结论通常是“某段提示词 + 某个参数区间”,而不是某个单点。把这些存成文件,下次出图直接从模板起步,能少走很多弯路。下面是一份通用 YAML 骨架,字段名可以按你的工具改。
scene: 商品静物白底主图
model_note: FLUX 3 Image Klein(版本以本机加载的为准)
prompt:
subject: "matte white ceramic mug, straight-on view, empty background"
style: "natural window light, calm muted tones"
quality: "sharp focus, fine surface texture"
negative: "blurry, text, watermark, extra objects"
params:
seed: 123456789
steps: [28, 36]
guidance: [3.0, 3.5, 4.5]
scheduler: ["euler/simple", "dpmpp_2m/karras"]
resolution: "1024x1024"
verified:
baseline: "固定种子三连跑画面一致"
note: "换模型版本、换分辨率或换调度器后,需重跑第一小节的固定种子验证"
使用规则建议写进同一个文件:每次新增有效组合就补一条场景记录,注明提示词版本和参数区间;换模型版本、换分辨率或升级前端之后,先重跑一次固定种子三连跑,确认基线仍然稳定,再套用旧模板。这样模板本身也会随着环境变化被修正,而不是越用越偏。