ArtCraft 出图风格反复跑偏,比较常见的原因不是模型本身不稳定,而是文本提示和图像参考挤在同一个输入口,改一处另一处跟着变,事后说不清是哪一步起的作用。可行的做法是先把这两类输入拆成两个可以单独调整的位置,再按“固定一侧、只动另一侧”的顺序各跑一次,用固定随机种子做对照,把模糊的“风格不对”收敛到具体某一侧。下面给出的是通用接入骨架,节点名和字段名需要替换成你工作流里的实际名称。
风格漂移多数不是随机性造成的,而是文本提示与图像参考共用一个输入口、彼此牵制。建议把两者拆成两个独立输入位置,先固定参考图只改文本跑一次,再固定文本只换参考图跑一次,用固定种子记录差异点,最后把能复现的组合固化成配置骨架。一次只动一处,是这套排查站得住的前提;如果节点本身不支持分开输入,需要先改造工作流,或者用权重字段把两侧影响隔开,具体效果要结合你的节点实现确认。
在工作流里标出文本提示和图像参考各自的输入位置
先不要把注意力放在出图结果上,先看输入。打开工作流,把当前节点连接关系画出来,重点确认:文本描述和图像参考是否接到了同一个输入口。很多工作流的写法是“提示词节点 → 采样器”,参考图另走一路但权重和提示词合并计算,这种结构下你改文本时参考图的影响范围也在变,归因就断了。
[Prompt_Text] ──┐
├──> [Sampler / Generator] ──> [Save_Image]
[Ref_Image] ────┘
把每个输入口的字段名和当前填的内容列出来,哪怕只是清单形式。字段名要抄准确,后面写配置骨架和看日志都靠它。
- 文本输入口:字段名通常为
positive_prompt/negative_prompt/prompt_weight,当前填的是完整风格描述。 - 图像参考口:字段名通常为
reference_image/image_input/image_weight,当前填的是哪一张参考图。 - 采样参数:
seed、steps、cfg、denoise。这几个字段在做对照时必须锁死,否则两次出图的差异不来自你想验证的那一侧。
如果发现文本和图像参考确实走同一个输入口,先把这一层拆开:给参考图单独一个加载节点、单独一个权重字段,再接线到采样器。改造前后各跑一次,确认输出没有明显异常,再进入下一步。
只改文本提示、图像参考保持不变跑一次
这一轮的目标是看清文本一侧对画面风格的实际影响范围。参考图、seed、steps、cfg 全部不动,只改文本。
# 第一轮:只改文本
positive_prompt: "城市夜景,霓虹灯,电影感,冷色调"
→ positive_prompt: "城市夜景,霓虹灯,电影感,暖色调,黄昏余光"
reference_image: 不变(同一张图,同一路径)
seed / steps / cfg: 不变
改动前后的文本对照建议写成一行一行的差异,只记实际改掉的词,不要把整段提示词重抄一遍。输出图的差异点也按固定几项记录:整体色调、光影方向、材质质感、构图是否移动、主体细节是否变化。这几项里,文本提示通常主要影响色调和质感,构图一般不因文本描述大幅移动——如果构图也明显变了,说明文本权重或者 cfg 偏高,需要回头确认。
记录形式可以是:改动词、观察到变化项、变化是否明显。不要把“感觉更好看了”写进记录,那没法用于下一次复现。
只换图像参考、文本提示保持不变跑一次
这一轮把变量翻过来:文本提示完全不动,只换参考图,同样保持 seed、steps、cfg 不变。
先描述两张参考图的差异,差异要具体:色调是偏冷还是偏暖、构图是中心主体还是大面积留白、质感是照片感还是插画感、画面里有哪些稳定出现的元素。描述完再去看出图,把输出图对应的变化点一一对上。
- 如果换参考图后构图和整体色调跟着走,说明参考图这一侧对风格的控制力更强,调风格优先动参考图。
- 如果换了两张差异很大的参考图、出图几乎没变,说明参考图的权重偏低,或者参考图没有被有效接入采样,需要检查连线与权重字段。
- 如果只有局部材质变了、整体不动,说明参考图当前只影响细节层面,不适合用来做整体风格迁移。
这一轮同样要记录改动前后的参考图路径,不然几天后回来看不出换了哪张。
把两次结果并排比对,判定漂移主要来自哪一侧
两轮跑完,把手上的两份记录并排放。重点不是“哪张好看”,而是“哪一侧的改动能稳定地带来同一类变化”。
| 变化侧 | 画面变化项 | 是否可重复出现 |
|---|---|---|
| 只改文本 | 色调偏移、质感变化 | 换 seed 再跑仍出现 → 可重复 |
| 只改文本 | 构图位移 | 偶发 → 可能是权重或 cfg 干扰 |
| 只换参考图 | 构图、主色调跟随参考图 | 换 seed 再跑仍出现 → 可重复 |
| 只换参考图 | 出图几乎无变化 | 稳定无变化 → 参考图未生效 |
“是否可重复出现”这一列需要额外验证一次:换一个 seed,其他参数不动,再跑同样的两轮,看同一类变化是否还在。只出现一次的差异不要写进结论,优先当成噪声处理。
把稳定下来的组合写成一份可复用的工作流配置骨架
判定完来源,就把当前这一组能稳定复现的文本 + 参考图 + 采样参数固化成配置文件,下一次直接载入,而不是重新手调。节点名和参数字段用占位符,替换成你工作流里的实际名称即可。
workflow:
nodes:
- name: "<TEXT_INPUT_NODE>"
type: "prompt"
params:
positive: "<YOUR_STYLE_PROMPT>"
negative: "<YOUR_NEGATIVE_PROMPT>"
weight: <PROMPT_WEIGHT>
- name: "<IMAGE_REF_NODE>"
type: "image_load"
params:
path: "<REF_IMAGE_PATH>"
weight: <IMAGE_WEIGHT>
- name: "<SAMPLER_NODE>"
type: "sampler"
params:
seed: <FIXED_SEED>
steps: <STEPS>
cfg: <CFG>
denoise: <DENOISE>
links:
- "<TEXT_INPUT_NODE> -> <SAMPLER_NODE>"
- "<IMAGE_REF_NODE> -> <SAMPLER_NODE>"
验证方式很直接:用同一份配置连跑两次,seed 和全部参数保持一致,对比两次输出。如果两次出图的色调、构图、主体位置基本一致,说明这份配置是稳定的;如果两次仍明显不同,先检查 seed 是否真的被固定、参考图路径是否指向同一张图,再看节点里有没有随机开关。需要说明的是,不同版本或不同节点实现下,同样的配置结果可能不完全一样,换环境后建议重新跑一次这个验证,再决定是否长期复用。