你上传了一张干净的青绿色陶瓷马克杯参考图作为 img2img / 参考输入。你写了”同一只马克杯,放在木桌上”。出来的是一只棕色马克杯在花岗岩台面上。参考图看起来被瞥了一眼就丢掉了。Diffusion 管线里的参考图条件不是 copy 操作——而是一个对去噪轨迹的加权偏置,这个偏置会输给更强的文本提示词、过低的强度设定,或一个根本没有图像编码头接到噪声通道的模型。靠搞清你在用哪种”参考”模式、以及如何把它推满,就能修。
常见原因
按大致频率。
1. 强度 / denoise 太高
在 img2img 里,“strength”或”denoising strength”控制原图保留多少。0.85+ 时模型摧毁参考,等于做文生图。0.3 时输出几乎和参考一样没区别。
如何识别:输出和参考毫无关系 = 强度太高。输出和参考一模一样 = 强度太低。
2. 选错了条件模式(img2img vs IP-Adapter vs ControlNet)
参考图有三种不同的用法,UI 都叫”参考”:
- img2img:参考是起始噪声;控制构图和大致色彩。
- IP-Adapter:参考被 CLIP 图像编码器编码;语义层面控制风格和内容。
- ControlNet:参考被预处理(canny 边、深度、姿态);控制结构。
为目标选错模式 = 结果弱。
如何识别:你想要”同风格不同主体”却用了 img2img,模式选错了。IP-Adapter 才是做风格的;img2img 是做构图的。
3. IP-Adapter 权重停在默认 0.5
IP-Adapter 有权重参数。0.5(常见默认值)参考图影响中等;0.3 几乎看不见;0.9 主导输出。许多 UI 把这个滑块藏得很深。
如何识别:找”image weight”或”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 会静默接受参考但因为模型没有头来处理它就丢掉。
如何识别:看 workflow / API 调用有没有加载 ip-adapter-*.safetensors 或 controlnet-*.safetensors。没有 = 参考进了虚空。
7. CFG 太高在饿死图像条件
多条件设置下,CFG 很高(12+)会放大文本条件并相应削弱图像条件影响。
如何识别:把 CFG 降到 5-7 重跑。参考影响变强 = CFG 的问题。
开始前准备
- 搞清楚你在哪种模式:img2img、IP-Adapter 还是 ControlNet。仔细读 workflow / UI 标签。
- 用你想要的分辨率和宽高比保存参考——让管线自己缩小,不要主动裁切。
- 决定你真正想保留参考的哪一面:构图、风格、结构或全部。不同模式服务不同目标。
需要收集的信息
- 参考图文件(你上传的那张)。
- 强度 / denoise 值(img2img),或 scale 值(IP-Adapter),或 weight 值(ControlNet)。
- 完整文本提示词。
- 模型名和所有加载的适配器 / ControlNet 文件。
- CFG 值。
- 输出分辨率和参考分辨率——有没有一个被缩放?
一步步修复
步骤 1:按目标选对模式
| 目标 | 用什么 |
|---|---|
| 同构图,不同细节 | img2img,强度 0.4-0.6 |
| 同风格,不同主体 | IP-Adapter,scale 0.7-0.9 |
| 同姿态 / 结构,其余随便 | ControlNet(pose、depth、canny) |
| 同角色,不同场景 | IP-Adapter Face + ControlNet pose |
选一个,承诺它。无目的地混用模式通常失败。
步骤 2:系统性扫强度
在强度 0.3、0.5、0.7、0.85、0.95(img2img)或 scale 0.3、0.5、0.7、0.85、0.95(IP-Adapter)生成 5 张图。看横排。
for strength in [0.3, 0.5, 0.7, 0.85, 0.95]:
out = pipe(
prompt=prompt,
image=reference,
strength=strength,
seed=42,
)
out.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。
步骤 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 拉满
用 IP-Adapter 时:
ip_adapter_scale = 0.85 # 原来 0.5
0.85 时参考的风格和内容主导。0.95 时输出几乎是参考的重新着色。
步骤 6:预裁参考到匹配宽高比
如果输出是 1024x1024 而参考是 1920x1080,管线要么补黑边要么中心裁切。中心裁切会杀掉宽参考。自己先把参考裁成匹配输出比例:
ffmpeg -i ref.jpg -vf "crop=min(iw\,ih):min(iw\,ih)" ref_square.jpg
或在上传前用无损方式补黑边到方形。
步骤 7:叠 ControlNet 做结构控制
如果目标是”完全相同的构图”,单 img2img 很脆。在上面加 canny 或 depth 的 ControlNet:
out = pipe(
prompt=prompt,
image=reference,
strength=0.7,
controlnet_conditioning_image=canny_of_ref,
controlnet_conditioning_scale=0.8,
)
ControlNet 钉结构;img2img 钉色彩 / 灯光。两者结合可靠保留参考。多参考图的情形参见 AI 图像角色一致性。
验证
- 在选好的强度上出 3 张。参考最重要的属性(你要的风格 / 构图 / 主体)应该在 3 张里都看得见。
- 强度降到 0.1 确认输出几乎和参考一样。证明参考已加载。
- 强度升到 0.99 确认输出几乎完全偏离。证明强度控制器响应正常。
长期预防
- 用大字标签标出你的 workflow 的条件模式。一周后的你会忘。
- 把常用场景的强度 / scale 值存为命名预设。
- 参考图保持和输出同宽高比避免静默裁切。
- 强参考在场时用短文本——让参考承担风格。
- 需要结构和色彩双保留时叠 ControlNet + img2img。
- 在生产里依赖前先用受控提示词测试新版本 IP-Adapter 或 ControlNet。
常见坑
- img2img 用 0.9 的强度还指望参考存活。它不会。
- 加载 IP-Adapter 却忘了设它的 scale 参数。某些 Comfy 节点默认是 0.0。
- 用一长串 200 token 的文本配参考还纳闷为什么参考被无视。
- 上传竖向参考做横向输出——管线中心裁切,主体被丢。
- 以为 UI 里”参考图”是一个统一功能——其实是三种不同机制;要选对。
- 在姿态不清晰(衣服厚、被遮挡)的参考上用 ControlNet 姿态检测。检测器输出乱码,模型跟着乱码跑。
FAQ
Q:img2img 和 IP-Adapter 在风格迁移上有什么不同?
img2img 字面上从参考作为噪声起步——输出会被参考形塑。IP-Adapter 通过 CLIP 语义编码参考并偏置生成——输出可以构图完全不同但风格匹配。风格迁移用 IP-Adapter 更好。
Q:我的参考是写实的但输出是插画风。为什么?
文本提示词或 checkpoint 在覆盖参考风格。换写实 checkpoint,缩短提示词,考虑 IP-Adapter scale 0.85。
Q:能用多张参考图吗?
可以——IP-Adapter Plus 和某些 Comfy workflow 支持。它们会混合,可能不是你要的效果。更稳的做法是一张参考给风格 + 另一张参考的 ControlNet 姿态。
Q:seed 对参考生成有影响吗?
有。同 seed + 同参考 + 同提示词 + 同强度 = 同输出。用 seed 锁定变量做对照,孤立强度变化的效果。