你要给一个活动出 20 张图:同品牌、同情绪、同色板。一周内陆陆续续出完,可能跨两个场景,拼成 contact sheet 一看,简直像 20 个摄影师分别拍的。灯光漂、色温漂、清晰度漂,连构图逻辑都漂。原因很简单:扩散模型没有”持续的风格状态”,每次生成都是从模型里重新采样,所以光靠文字永远不可能两次出一样的观感。
最快的修法: 别再用文字描述风格,改成每次生成都传同一张参考图。Midjourney 里就是固定的 --sref 图片 URL 加固定的 --sw;ComfyUI / Flux 里是 Flux Redux(IP-Adapter 改的名);Gemini 的 Nano Banana 里就是每次请求都附上同一张参考图。再把模型版本锁到一个,最后用一个共用的调色 preset 在后期把残余漂移收掉。光这几步就能搞定大多数批量。剩下的内容是完整的排查思路和高量级方案(训风格 LoRA)。
先定位你属于哪一类
大多数漂移的批量都只命中下面一两条原因。在表里找到你的症状,再跳到对应步骤。
| 你看到的症状 | 大概率原因 | 跳到 |
|---|---|---|
| prompt 里写了”风格一致”,每次出图还是变 | 没传图片参考 | Step 2 |
| 一半图一个样、另一半另一个样 | 中途换了模型或版本 | Step 1 |
| 产品图和生活图互相打架,但各自内部还行 | 不同场景的 prompt 不同 | Step 3 |
| 竖图和方图像两个品牌 | 比例变了,构图和光也变 | Step 3 |
| 风格很接近,但色调在小幅抖 | 模型残余漂移 | Step 5 |
| 只有一两张明显离群 | 后期不均或某张 seed 不好 | Step 6 |
1. 没有传任何风格参考
光靠文字要”风格一致”,跨 seed 必漂。模型对风格词每次解读都略有差异。这是最常见的单一根因。
如何判断:批量都只用文字 prompt?是 = 根因就在这。
2. 不同场景的 prompt 结构本来就不同
产品 hero 和生活方式场景需要的 prompt 不同。prompt 不一样,模型起点就不一样,即使风格修饰相同也会漂。
3. 模型或模型版本漂了
一半在 Midjourney V8.1 上出、一半在老的 --v 7 上。或者一半 FLUX.2 [pro]、一半 [dev]。即便同一家族,版本之间行为也会变。云端模型还会静默更新:Midjourney 在 2026 年 6 月 10 日把默认版本切到 V8.1,所以 5 月开工、6 月收尾的一批,如果你没显式锁版本,就会横跨两个默认。
4. 分辨率和比例不同
竖海报和方形社交卡片,同 prompt 出来风格”看起来”不同,因为模型对不同比例的拟合策略不一样。比例变了,灯光感和景深感也变。
5. 不同 seed 放大 prompt 的微小差异
两条 prompt 只差一个形容词,同 seed 出来也不同。再叠 seed 变化,漂就累积了。
6. 后期处理不均
有些图升采了、有些没;有些调色了、有些没。AI 出图本来一致,后期也会带来漂移。
动手前先确认
- 把风格 brief 写具体。“暖色编辑感、黄金时刻、浅景深、低饱土色板”是具体的;“高级感”不是。
- 选或者出一张 anchor 图作为整组的目标风格基准。
- 把 anchor 的 seed、prompt 模板、模型存下来。
- 确认整批能用同一个模型版本。版本号显式锁住。
需要收集的信息
- anchor 图本身(你的风格北极星)。
- 风格 brief:色板、光向、镜头感、情绪。
- 模型和精确版本。Midjourney 写版本号(如
--v 8.1);SDXL 记 checkpoint 哈希;Flux 写明确变体:FLUX.2[pro]、[flex]、[dev]还是[klein]。 - 这一批要覆盖的所有场景清单,每个场景的目标比例。
一步步修复
按 ROI 排序。Step 1 + Step 2 能解决大多数批量一致性问题。
Step 1:锁模型和版本
整批用同一模型 + 同一版本。把版本号写下来。云端供应商会静默更新,所以记得截一下版本选择器的图。
- Midjourney:每条 prompt 都显式写同一个版本,例如
--v 8.1,不要让它跟着默认走——默认在 2026 年 6 月 10 日已经切到 V8.1。如果你复用的是 2025 年 6 月之前发现的--sref代码,还要用--sv 4锁住风格版本;当前默认是--sv 7,对老代码的解读不一样。 - SDXL:同一个 checkpoint 文件,记哈希,方便日后核对。
- Flux:每条 prompt 同一个 FLUX.2 变体:
[pro]、[flex]、[dev]或[klein]。别混变体,也别把 FLUX.1 和 FLUX.2 混用。 - Nano Banana / Imagen(Gemini):整批用同一个模型(例如 Nano Banana Pro,即 Gemini 3 Pro Image 模型)。
Step 2:每次生成都传风格参考
把”用词描述风格”换成”用图描述风格”,整批每条 prompt 都用同一张参考图。
- Midjourney:加
--sref <anchor URL>并固定--sw。--sw取值 0 到 1000(默认 100),批量的实用甜区大约在 65 到 175。整批用完全相同的 sref URL 或代码。(只有当你还需要同一主体或角色出现在每一帧时,才用--oref <URL> --ow 100;Omni Reference 目前是 V7 功能,且耗 2 倍 GPU。) - SDXL:用 IP-Adapter,风格强度 0.6 到 0.8。整批同一张 anchor。
- Flux:ComfyUI 里用 Flux Redux(Black Forest Labs 把 IP-Adapter 改名为 Redux)。每次渲染同一张 anchor。要在多个变体间保持编辑一致,FLUX.1 Kontext 也很强。
- Nano Banana(Gemini):每次请求都附上同一张参考图。Nano Banana 模型单次请求最多接受 14 张参考图,并能保持风格与最多 5 个人物的一致性,是批量活儿的快捷选项。
Step 3:建一个 prompt 模板,整批都用它
写一条带占位的统一 prompt,每张只填场景相关的部分,其余逐字保持完全一致。
[场景描述], warm editorial photography, golden hour side-light,
shallow depth of field, muted earth palette, slight film grain,
shot on 35mm lens, ar [比例], --sref [anchor URL] --sw 150
如果不同场景确实需要不同 prompt(产品 hero vs 生活方式),就让风格块(场景描述之后的所有内容)保持一致,只改场景和比例。比例一变,灯光感和景深感就变,所以审图要把不同裁切并排看,别单张看。
Step 4:高量级活儿训风格 LoRA
整批 50 张以上、或活动跨好几个月,就训一个风格 LoRA:跨场景大变化下它比 sref 锁得更紧。
- 收 20 到 50 张都明确共享目标风格的图。
- 开训。截至 2026 年 6 月,AI-Toolkit(OstrisAI 出品,带 Web UI)是 FLUX.2
[dev]和[klein]的标准训练器;Kohya SS 仍覆盖 SDXL 和 FLUX.1;也可以在 fal.ai 或 Replicate 上云端训。注意:FLUX.2[pro]和[flex]是闭源权重、不支持 LoRA 训练,所以要针对[dev]或[klein]训。 - 每次生成都挂 LoRA,强度 0.7 到 1.0。
Step 5:后期统一色板
挂了 sref / LoRA 也会有小幅色板漂。每张都过一次色板锁定后期:
- Lightroom 里把调色存成 preset,整批应用。
- Photoshop 里用 Color Lookup 调整图层 + 固定 LUT。
- Davinci Resolve 里搭一组节点,对静帧逐张应用。
这能把模型锁不住的最后 10% 漂移收回来。
Step 6:交付前过一次审
整批按交付尺寸排成 contact sheet,看:
- 色温有没有跳出来的(一张比其他偏暖或偏冷)。
- 清晰度有没有跳出来的(一张明显偏软或偏硬)。
- 构图有没有跳出来的(一张三分法明显不同)。
挑出来要么重出、要么后期修。
怎么确认已经修好
- 按交付尺寸做一张 contact sheet。风格离群点应该一眼可见。
- 用颜色取色器在多张图里采同一处颜色,delta-E 应在小范围内。
- 把 contact sheet 给没参与生成的人看,问他哪张不一样,理论上没有。
- 在实际投放表面(网页 / 印刷 / 社交)上检查整组观感。
长期预防
- 活动级别的活儿,先建 anchor + sref / LoRA,再开始批量出。
- 给项目维护一份 prompt 模板文档。brief 改一次就改文档,不要散着改单条 prompt。
- 显式锁模型版本并记下来(Midjourney
--v、Flux 变体、SDXL checkpoint 哈希)。供应商发了新默认就先回测 anchor,再决定要不要切。 - 整批跑同一套后期 recipe,存成 preset。
- 长跑的活动训一个项目专属 LoRA,长期复用。
常见坑
- 相信 prompt 里写 “consistent style” 就够了。不够。
- 让 Midjourney 跟着默认版本走,结果活动中途被切到 V8.1。
- 一批里混用 FLUX.2 变体(
[pro]vs[dev]),或者把 FLUX.1 和 FLUX.2 混着用。 - 忘了比例本身就影响风格观感。
- 跳过统一后期,直接相信模型输出已经”调过色”。
- 跨好几天出图却没回头核对供应商版本更新。
FAQ
Q:Midjourney 里 --sref 和 --oref 有什么区别?
A:--sref(风格参考)复制的是观感:色彩、灯光、镜头、情绪。--oref(Omni Reference)复制的是某个具体主体,比如角色或产品,把它放进画面。批量锁风格要用 --sref;只有当同一主体也必须出现在每张图里时才加 --oref。截至 2026 年 6 月,Omni Reference 是 V7 功能,且耗时约为普通任务的 2 倍。
Q:--sw 该设多少?
A:--sw 取值 0 到 1000(默认 100)。批量一致性的实用甜区是 65 到 175。只有当风格几乎没生效时才往上调;数值太高会和场景 prompt 打架,结果变得不可预测。
Q:训一个风格 LoRA 需要多少张参考?
A:SDXL 或 FLUX.2 上 20 到 50 张高质量参考足够。质量比数量重要:挑那些明确共享目标风格的图。要针对 FLUX.2 [dev] 或 [klein] 训,因为 [pro] 和 [flex] 不支持 LoRA 训练。
Q:风格参考能跨非常不同的场景(室内产品 vs 室外生活)吗? A:风格能迁过去,主体不行。anchor 决定风格遵循(色彩、灯光、镜头感),但不会逼着主体长成 anchor 的样子。场景差异很大时,训好的 LoRA 比单张 sref 锁得更紧。
Q:sref 已经拉到最大权重,为什么还会漂?
A:--sw 拉满有时会和场景 prompt 打架、两边都垮。降回 100 到 150,并在 prompt 里显式写风格描述,再确认模型版本已锁(复用老 sref 代码的话还要锁 --sv)。