Chapter 09

IP-Adapter / InstantID / PuLID

"我想让这张图里的人 / 这种风格出现在新图里,但不想训 LoRA"——这是 2024 之后最火的需求。IP-Adapter 系方案用"参考图 embedding"实现零样本风格/身份迁移。

一、为什么需要这类技术

训 LoRA 学一个人脸:要 20-50 张照片 + 几十分钟训练 + 调 prompt 触发。很多场景下成本太高:

解决方案统称 Reference-based Generation(参考图生成)——给模型一张"参考图",让生成的新图"像这张图"但是按新 prompt 的内容。

二、四大方案一表看懂

方案参考目标参考图数量身份像度适配模型
IP-Adapter图像整体(主体/风格/构图)1-4 张SD1.5/SDXL/Flux
IP-Adapter FaceID人脸身份1-4 张中高SD1.5/SDXL
InstantID人脸身份 + 姿态1 张够SDXL
PuLID人脸身份(2024 最强)1 张极高SDXL/Flux
ReActor人脸替换(post-hoc)1 张极高(像素级)任何 Checkpoint

选型短版:风格迁移 → IP-Adapter;人像保真 → PuLID(SDXL/Flux) 或 InstantID(SDXL);已有图后贴脸 → ReActor

三、IP-Adapter 原理与工作流

原理(一句话)

IP-Adapter = 用 CLIP Vision 把参考图编码成"图像 token"→ 注入到交叉注意力层。相当于把一张图"当作一段 prompt"喂给模型,和文字 prompt 并行。

文字 prompt ──▶ CLIP Text Encoder ──▶ text tokens ─┐ ├─▶ U-Net 交叉注意力 参考图 ──▶ CLIP Vision Encoder ──▶ image tokens ──▶ IP-Adapter Proj ──┘ 结果:模型同时"看"prompt 和参考图,生成的图兼具两者特征

ComfyUI 安装

最小工作流

Load Image(参考图) ──▶ IPAdapter Unified Loader │ ▼(MODEL 带 IP-Adapter 侧枝) Load Checkpoint ──▶ IPAdapter ──▶ KSampler ──▶ VAE Decode ──▶ Save │ weight = 0.7 start_at = 0.0 end_at = 0.8 weight_type = "linear"

参数调教

weight
0.0-1.5。0.5-0.8 风格适度参考,1.0+ 强 copy 倾向。超过 1.2 画面开始"复刻"参考图构图,失去 prompt 自由度。
start_at / end_at
0.0-1.0,控制在采样哪段应用 IP-Adapter。风格迁移设 0.0-0.8(后期让模型自由润色),身份保留设 0.0-1.0。
weight_type
"linear"(默认)/"ease in/out"/"weak input"/"strong style transfer" 等预设,后者偏向风格而非身份。

多图参考

IPAdapter 有 IPAdapter Batch 节点支持多张参考图——平均 embedding 后再注入,给模型看一个人的不同角度/不同表情照,能显著提升身份一致性

四、IP-Adapter FaceID(人脸专精)

FaceID 版不用 CLIP Vision,而是用 InsightFace 的人脸 embedding(512 维 identity vector)——对"人脸特征"更准确,不会被背景/衣服干扰。

额外依赖:
  pip install insightface onnxruntime
  下载 InsightFace 模型到 models/insightface/

工作流:
Load Image(人脸照) ──▶ InsightFace(提取人脸 embedding)
                          ↓
IPAdapter FaceID ──▶ KSampler
  weight = 1.0-1.5
  weight_type = "face"

变种:FaceID Plus V2(更强)、FaceID Portrait(专为半身像)——挑一个用即可,别全装重复占显存。

五、InstantID(2024 年人脸迁移神作)

InstantID 是 InstantX 团队 2024 年初推出的"一张图定终身"方案——比 IP-Adapter FaceID 更准,支持姿态控制。技术细节是结合了 InsightFace embedding + IdentityNet(类似 ControlNet 的空间控制)。

安装

工作流

Load Image(人脸照) ──┬──▶ InstantID Face Analysis │ │ │ ├──▶ Face Keypoints(姿态图) │ └──▶ Face Embedding(身份) │ Load Checkpoint ─────▼ ├──▶ Apply InstantID │ ├─ face_embeds + keypoints + prompt │ ├─ weight = 0.8 │ ├─ start_at = 0.0 │ └─ end_at = 1.0 ├─▶ KSampler(steps=30, cfg=5) └─▶ VAE Decode

用法特点

InstantID 的业务爆款场景
——AI 写真、证件照风格化、个人角色扮演(让用户脸出现在宫崎骏风格场景)。不需要用户上传多张照片,一张即可。这是 2024 年国内 C 端 AI 绘画应用的标配技术。

六、PuLID(2024 下半年超越 InstantID)

PuLID(Pure and Lightning ID Customization)ByteDance 出品——解决 InstantID 的两个痛点:① 脸过"硬"像贴上去的;② prompt 跟随力弱。

技术亮点

ComfyUI 工作流

Manager 装:ComfyUI-PuLID-Flux-Enhanced 或 comfyui_pulid_flux_ll

工作流(Flux 版):
Load Diffusion Model(flux1-dev)
  ├──▶ Apply PuLID Flux
  │     ├─ image = 人脸照
  │     ├─ weight = 0.7-1.0
  │     ├─ start_at = 0.0
  │     └─ end_at = 1.0
  ├─▶ CLIP Text Encode
  ├─▶ KSampler(cfg=1, FluxGuidance=3.5)
  └─▶ VAE Decode

七、ReActor(post-hoc 换脸)

前面几种都是"生成时控制身份",ReActor 是生成后换脸——原图已经出好,但脸不像?直接"贴"一张目标脸上去。

Manager 装:comfyui-reactor-node

工作流:
KSampler 生成普通图 ──▶ VAE Decode ──▶ Image A(有脸但不像)
                                          │
Load Image(目标脸照) ──────────▶ ReActor FaceSwap
                                          │
                                          ▼
                                      换脸后的图

原理:用 InsightFace 检测两张图的脸,提取目标脸特征,贴到生成图的脸位置,再局部 refinement。

ReActor 的伦理与法律风险
——换脸技术极易被用来制作深度伪造(deepfake)。ComfyUI 社区为此做了 NSFW 检测(ReActor 自带),但商用/公开产品仍需审慎。欧盟 AI Act、中国《深度合成服务管理规定》都对此有要求——商用前务必合规审核。

八、风格迁移 vs 身份保留:实战选型

风格迁移场景

目标:生成的图"像"参考图的风格(色调/笔触/构图),但内容按 prompt。

推荐:IP-Adapter PLUS
  weight = 0.6
  weight_type = "strong style transfer"
  end_at = 0.8   (后 20% 不控,给模型自由润色)
  prompt = 新内容,不写风格词

人像写真场景

目标:用户传 1-3 张自拍,生成不同场景的人像写真,要像这个用户。

推荐:PuLID(SDXL/Flux) > InstantID(SDXL) > IP-Adapter FaceID
  weight = 0.8-1.0
  start_at = 0.0, end_at = 1.0
  prompt = 场景/服装/氛围描述
  建议 + FaceDetailer 进一步精修

商业模特产品图

目标:同一模特穿不同服装、不同姿势,用于电商页。

推荐组合:InstantID(身份) + OpenPose ControlNet(姿态) + SDXL 服装 LoRA
  InstantID weight = 0.8
  OpenPose 姿态 strength = 1.0
  LoRA strength = 0.7
  prompt:描述服装 + 场景 + 打光

艺术风格学习

目标:模仿某画师风格(构图/笔触/色彩),不是复刻具体内容。

推荐:IP-Adapter PLUS + 多张参考图
  IPAdapter Batch(3-5 张该画师不同作品)
  weight = 0.5
  weight_type = "style transfer"
  end_at = 0.7

九、多参考图联合:风格 × 身份

进阶——两个 IP-Adapter 串联,一个走风格,一个走身份:

Load Checkpoint │ ├──▶ IPAdapter #1(FaceID,参考人脸照)──▶ MODEL' │ └──▶ IPAdapter #2(风格,参考艺术作品)──▶ MODEL'' │ ▼ KSampler 结果:人脸像用户,风格像艺术作品

也可用 PuLID(身份) + IP-Adapter(风格)——2024 年 AI 写真 SaaS 的核心管道。

十、组合 ControlNet 的最佳实践

IP-Adapter / InstantID / PuLID 都可以和 ControlNet 并用:

组合效果
InstantID + OpenPose同脸,指定姿势——最稳的 AI 写真
PuLID + Canny(室内场景)脸不变,场景结构按参考
IP-Adapter(风格) + Depth CN风格迁移时保留 3D 结构
InstantID + IP-Adapter(衣服参考)脸来自用户,衣服来自商品图

十一、反模式

  1. IP-Adapter weight 超过 1.2:模型"复刻"参考图构图,prompt 失效。降到 0.7-0.9。
  2. SDXL IP-Adapter 配 SD1.5 模型:架构不兼容,必须匹配 base。
  3. 人脸场景用普通 IP-Adapter(非 FaceID):背景干扰,脸像度差。用 FaceID 或 InstantID。
  4. InstantID 配 cfg=7:脸部过锐变形。降到 4-5。
  5. PuLID 用多张参考:PuLID 单张设计,多张反而乱。FaceID 才支持多张。
  6. ReActor 对低分辨率原图用:贴上去的脸模糊。先 Hi-Res Fix 再 ReActor。
  7. 没考虑合规:换脸/人脸相关技术,用户知情同意、数据留痕、未成年人保护是硬要求。
  8. IP-Adapter 之后还加 style LoRA:风格信号打架,画面混乱。二选一或大幅降权。

十二、本章小结

记住:
IP-Adapter:万能选手,风格迁移首选,weight 0.6-0.8。
IP-Adapter FaceID / InstantID / PuLID:人脸专精,PuLID > InstantID > FaceID 的顺序是 2025 的事实。
ReActor:生成后换脸,快速但有法律风险,商用慎用。
④ 核心思路都是"用 embedding 把参考图当作额外 prompt 注入"——技术栈相似,应用场景分化。
⑤ 搭配 ControlNet 能解决 95% 的"可控人像生成"需求,不用训 LoRA。