你上传了一张干净的青绿色陶瓷马克杯照片作为 img2img / 参考输入,写了”同一只马克杯,放在木桌上”。结果出来的是一只棕色马克杯在花岗岩台面上。参考图看起来被瞥了一眼就丢掉了。
最快的修法: 最常见的原因是去噪强度设得太高。在标准 diffusion 管线里,strength=1.0 会加满噪声、完全无视参考(那其实就是文生图),而 strength 接近 0 时参考几乎原封不动。把 img2img 的强度降到 0.5-0.65 重跑。如果你想要的是”同风格、不同主体”而不是”同构图”,那你用错模式了——该用 IP-Adapter 或 Flux Redux,而不是 img2img。
Diffusion 管线里的参考图条件不是 copy 操作,而是对去噪轨迹的一个加权偏置。这个偏置会输给更强的文本提示词、错误的强度设定,或一个根本没有图像编码头接到噪声通道的模型。修复的关键是搞清你在用哪种”参考”模式,以及怎么把它推满。
你属于哪一类?
先看这张表。每一行都指向下面对应的小节。
| 症状 | 可能原因 | 跳转 |
|---|---|---|
| 输出和参考毫无关系 | 强度 / denoise 太高(接近 1.0) | 原因 1 |
| 输出几乎是参考的复制 | 强度 / scale 太低 | 原因 1 |
| 想要”同风格、新主体”却得到”同布局” | 模式选错(风格任务用了 img2img) | 原因 2 |
| 步数拉高了参考影响还是很弱 | IP-Adapter scale / Redux 强度停在默认 | 原因 3 |
| 宽幅 / 竖幅参考里主体不见了 | 毁灭性中心裁切成方形 | 原因 4 |
| 提示词又长又细,参考被无视 | 文本条件淹没了图像 | 原因 5 |
| 参考被接受却毫无效果 | 模型没加载图像条件头 | 原因 6 |
| 只有提示词严格时参考才变弱 | CFG 太高 | 原因 7 |
常见原因
按大致频率排列。
1. 强度 / denoise 太高
在 img2img 里,strength(即”denoising strength”)控制原图保留多少。这个数字直接对应噪声步数:50 步采样时,strength=0.8 会对其中 40 步加噪、再从那里开始去噪,所以参考大部分被覆盖。strength=1.0 时参考被完全替换——这一跑就是纯文生图。0.3 时输出几乎和参考没区别。截至 2026 年 6 月,diffusers 和 ComfyUI 的默认行为仍然如此理解 strength。
如何识别: 输出和参考毫无关系 = 强度太高;输出和参考一模一样 = 强度太低。“看得出是同一个场景、被重新着色”的甜点区通常在 0.5-0.65。
2. 选错条件模式(img2img vs IP-Adapter vs Flux Redux vs ControlNet)
四种不同机制,各家 UI 都叫”参考”:
- img2img: 参考变成起始(部分加噪的)latent。控制构图和大致色彩。
- IP-Adapter: 参考被 CLIP 图像编码器编码,注入到 cross-attention。在语义层面控制风格和内容,构图可以自由变化。
- Flux Redux: Flux 自带的图像提示适配器(ComfyUI 里的
CLIPVisionEncode->StyleModelApply路径)。满强度时它基本无视你的文本、只产出参考的变体;要让提示词回来就把它调弱。 - ControlNet: 参考被预处理(canny 边、深度、姿态)成控制图。只控制结构。
为目标选错模式 = 结果弱。
如何识别: 你想要”同风格、不同主体”却用了 img2img,模式选错了。IP-Adapter(任意模型)或 Flux Redux(Flux 模型)才是做风格的;img2img 是做构图的。
3. IP-Adapter scale / Redux 强度停在软默认值
IP-Adapter 有 scale 参数。按 diffusers 文档,scale=1.0 只用图像提示作条件,scale=0.5 是文本/图像平衡——所以常见默认值 0.5 是故意把参考压住的。0.3 时几乎看不见;0.8-0.9 时主导输出。许多 UI 把这个滑块藏得很深。
Flux Redux 的强度是通过对条件张量降采样来削弱的(例如 Apply Style Model / Advanced Redux Control 的 downsampling_factor,3 大致是”中等”)。如果 Redux 输出太松散,把降采样调小。
如何识别: 去找 image weight / ip_adapter_scale(IP-Adapter)或 downsampling_factor(Redux)。如果 IP-Adapter scale 是 0.5 或未设,调到 0.8。
4. 参考图被毁灭性地缩放 / 裁切
很多管线会把参考裁成 512x512 或 1024x1024 的方形。如果参考是宽幅或竖幅,裁完可能主体都没了。
如何识别: 打开管线实际看到的那张参考(一些 UI 会保存预处理后的图)。如果主体被裁出框,原因就在这。
5. 文本提示词压制了图像提示
模型在文本条件和图像条件之间做平衡。一段很长很具体的文本(photorealistic, 4k, studio lighting, magazine cover, sharp focus, ...)会压过模糊的参考;模型更信任文本。
如何识别: 把文本缩到几个词重跑。参考突然显现 = 文本在淹没它。
6. 模型没有图像条件头
裸 SDXL-base 不能原生接参考图。你需要通过管线走 img2img,或加 IP-Adapter,或把 ControlNet 作为单独模型加载。一些 UI 会静默接受参考,但因为没有头来消费它就丢掉。(IP-Adapter 和 Redux 也是按模型家族区分的:SDXL 的 IP-Adapter 加载不到 Flux 检查点上,反之亦然。)
如何识别: 看 workflow / API 调用有没有加载 ip-adapter-*.safetensors 或 controlnet-*.safetensors,并且和你底模的家族匹配。没有 = 参考进了虚空。
7. CFG 太高在饿死图像条件
多条件设置下,CFG 很高(12+)会放大文本提示词、相应削弱图像提示影响。
如何识别: 把 CFG 降到 5-7 重跑。参考影响变强 = CFG 的问题。
开始前准备
- 搞清楚你在哪种模式:img2img、IP-Adapter、Flux Redux 还是 ControlNet。仔细读 workflow / UI 标签。
- 用你想要的分辨率和宽高比保存参考,让管线自己缩小,不要主动裁切。
- 决定你真正想保留参考的哪一面:构图、风格、结构还是全部。不同模式服务不同目标。
需要收集的信息
- 你上传的参考图文件。
- 强度 / denoise 值(img2img)、scale 值(IP-Adapter)、降采样因子(Redux),或 weight 值(ControlNet)。
- 完整文本提示词。
- 模型名、所有加载的适配器 / ControlNet 文件,以及它们的模型家族。
- CFG 值。
- 输出分辨率和参考分辨率——有没有一个被缩放?
一步步修复
步骤 1:按目标选对模式
| 目标 | 用什么 |
|---|---|
| 同构图,不同细节 | img2img,强度 0.4-0.6 |
| 同风格,不同主体(SDXL/SD) | IP-Adapter,scale 0.7-0.9 |
| 同风格,不同主体(Flux) | Flux Redux,调降采样给提示词留空间 |
| 同姿态 / 结构,其余随便 | ControlNet(pose、depth、canny) |
| 同角色,不同场景 | IP-Adapter Face + ControlNet pose |
选一个,坚持到底。无目的地混用模式通常失败。
步骤 2:系统性扫强度
在强度 0.3、0.5、0.7、0.85、0.95(img2img)或同样的值作 IP-Adapter scale 各生成 1 张,共 5 张。固定 seed,让只有一个变量在动,然后横排对比。
for strength in [0.3, 0.5, 0.7, 0.85, 0.95]:
out = pipe(
prompt=prompt,
image=reference,
strength=strength,
generator=torch.Generator().manual_seed(42),
)
out.images[0].save(f"sweep_{strength}.png")
挑那个既尊重参考又听你提示词的值。
步骤 3:验证参考真的到了模型
API 模式下打印 multipart 上传:
curl -v -X POST $API_URL \
-F "prompt=teal ceramic mug on wooden table" \
-F "image=@reference.png" \
-F "strength=0.6"
确认 image=@reference.png 在请求里。不在 = 字段名错了——有些 API 想要 init_image、reference_image 或 image_prompt。节点式 UI 里,确认参考节点真的连进了采样器,而不是悬空。
步骤 4:缩短文本提示词
把文本砍到只剩下与参考不同的那部分:
之前:photorealistic 4k studio lighting teal ceramic mug on
oak wooden table soft window light shallow depth of
field magazine quality
之后:same mug, on a wooden table
让参考承担风格和灯光;让文本只承担变化。
步骤 5:把 IP-Adapter scale 拉满(或把 Redux 降采样调小)
用 IP-Adapter 时:
ip_adapter_scale = 0.85 # 原来 0.5(平衡默认值)
0.85 时参考的风格和内容主导;1.0 时只用图像作条件。若想要”只迁移风格、保留提示词的布局”,diffusers 文档支持分块缩放——推风格(up block_0)、把布局清零(down block_2):
pipeline.set_ip_adapter_scale({
"up": {"block_0": [0.0, 1.0, 0.0]},
"down": {"block_2": [0.0, 0.0]},
})
用 Flux Redux 时如果它无视你的提示词,就把 downsampling_factor 调大(降采样越多 = 参考越弱、提示词越强)。
步骤 6:预裁参考到匹配宽高比
如果输出是 1024x1024 而参考是 1920x1080,管线要么补黑边要么中心裁切。中心裁切会杀掉宽参考。自己先把参考裁成匹配输出比例:
ffmpeg -i ref.jpg -vf "crop=min(iw\,ih):min(iw\,ih)" ref_square.jpg
或在上传前用无损方式补黑边到方形。
步骤 7:叠 ControlNet 做结构控制
如果目标是”完全相同的构图”,单 img2img 很脆。在上面加 canny 或 depth 的 ControlNet。controlnet_conditioning_scale 从 0.5 起步,向 1.0 调以更严格贴合(超过 1.0 会硬性强制边缘,但牺牲画质):
out = pipe(
prompt=prompt,
image=reference,
strength=0.7,
control_image=canny_of_ref,
controlnet_conditioning_scale=0.8,
)
ControlNet 钉结构;img2img 钉色彩 / 灯光。两者结合可靠保留参考。多参考图的情形参见 AI 图像角色一致性。
如何确认已修复
- 在选好的强度上出 3 张。参考最重要的属性(你要的风格 / 构图 / 主体)应该在 3 张里都看得见。
- 强度降到
0.1确认输出几乎和参考一样。这证明参考已加载。 - 强度升到
0.99确认输出几乎完全偏离。这证明强度控制器响应正常。
如果 0.1 那次看起来不像你的参考,说明参考根本没到模型——先回到步骤 3,再去碰其他旋钮。
长期预防
- 用大字标签标出你 workflow 的条件模式。一周后你会忘了它是哪种模式。
- 把常用场景里有效的强度 / scale 值存为命名预设。
- 参考图保持和输出同宽高比,避免静默裁切。
- 强参考在场时用短文本——让参考承担风格。
- 需要结构和色彩双保留时叠 ControlNet + img2img。
- 让适配器家族和底模匹配(SDXL 适配器配 SDXL,Flux Redux 配 Flux),并在生产里依赖前先用受控提示词测试新版本的 IP-Adapter / ControlNet / Redux。
常见坑
- img2img 用
0.9的强度还指望参考存活。它不会。 - 加载了 IP-Adapter 却忘了设它的 scale。某些 Comfy 节点默认 scale 是
0.0,会静默禁用它。 - 用一长串 200 token 的文本配参考,还纳闷为什么参考被无视。
- 上传竖向参考做横向输出——管线中心裁切,主体被丢。
- 把”参考图”当成一个统一功能。其实有四种不同机制,要选对。
- 把 SDXL 的 IP-Adapter 加载到 Flux 底模上(或反过来)——要么报错要么空操作。
- 在姿态不清晰(衣服厚、被遮挡)的参考上跑 ControlNet 姿态检测。检测器输出乱码,模型跟着乱码跑。
FAQ
Q:img2img 和 IP-Adapter 在风格迁移上有什么不同?
img2img 字面上从参考作为初始 latent 起步,所以输出会被参考形塑。IP-Adapter 通过 CLIP 语义编码参考并偏置生成,所以输出可以构图完全不同但风格匹配。风格迁移用 IP-Adapter(Flux 上用 Flux Redux)更好。
Q:Flux Redux 是什么,什么时候该用它而不是 IP-Adapter?
Redux 是 Flux 自带的图像提示适配器(ComfyUI 里的 CLIPVisionEncode -> StyleModelApply 节点)。当你的底模是 Flux 时用它,因为 SDXL 的 IP-Adapter 加载不到 Flux 上。满强度下 Redux 主要复现参考、无视文本;加大降采样可以给提示词留空间。
Q:我的参考是写实的但输出是插画风。为什么?
文本提示词或 checkpoint 在覆盖参考风格。换写实 checkpoint,缩短提示词,考虑把 IP-Adapter scale 设到 0.85。
Q:能用多张参考图吗?
可以。IP-Adapter Plus、多图 Redux 以及某些 Comfy workflow 都支持。它们会混合,可能不是你要的效果。更稳的做法是一张参考给风格,加上另一张参考的 ControlNet 姿态。
Q:seed 对参考生成有影响吗?
有。同 seed + 同参考 + 同提示词 + 同强度 = 同输出。锁定 seed,这样你才能孤立单次强度或 scale 变化的效果。