AI 图像参考图被无视:img2img 失效排查

你上传了 img2img 或风格迁移的参考图,输出却几乎看不出来——强度、模式、模型架构都要看。靠强度扫频和验证参考是否真被读入来定位。

你上传了一张干净的青绿色陶瓷马克杯参考图作为 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-*.safetensorscontrolnet-*.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_imagereference_imageimage_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 锁定变量做对照,孤立强度变化的效果。

相关阅读

标签: #排查 #ai-image #img2img #reference-image #controlnet