一、为什么需要这类技术
训 LoRA 学一个人脸:要 20-50 张照片 + 几十分钟训练 + 调 prompt 触发。很多场景下成本太高:
- 用户只有 1-3 张自拍,想生成不同场景写真
- 商家想让同一模特穿不同款式,但没时间训 LoRA
- 想把某张艺术作品的风格迁移到新 prompt,不想找 style LoRA
解决方案统称 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 并行。
ComfyUI 安装
- Manager 装
ComfyUI_IPAdapter_plus(cubiq/ComfyUI_IPAdapter_plus) - 模型放
models/ipadapter/:ip-adapter_sdxl.safetensors(通用) /ip-adapter_sdxl_vit-h.safetensors(高精度) /ip-adapter-plus_sdxl_vit-h.safetensors(更强) /ip-adapter-faceid_sdxl.bin(人脸专用) - CLIP Vision 模型放
models/clip_vision/:CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors和CLIP-ViT-bigG-14-laion2B-39B-b160k.safetensors
最小工作流
参数调教
多图参考
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 的空间控制)。
安装
- Manager 装
ComfyUI_InstantID - 模型:
·models/instantid/ip-adapter.bin
·models/controlnet/instantid_controlnet.safetensors
· InsightFace buffalo_l 模型(antelopev2)
工作流
用法特点
- 姿态可选控制:InstantID 内置 ControlNet-like 姿态保留——可以指定"和参考图完全同姿势"或"只保脸不保姿态"
- 适合单图场景:1 张参考图就能达到训 LoRA 10 张的效果
- cfg 要低:InstantID 建议 cfg=4-5(比普通 SDXL 低 1-2),否则脸部会"过锐"
——AI 写真、证件照风格化、个人角色扮演(让用户脸出现在宫崎骏风格场景)。不需要用户上传多张照片,一张即可。这是 2024 年国内 C 端 AI 绘画应用的标配技术。
六、PuLID(2024 下半年超越 InstantID)
PuLID(Pure and Lightning ID Customization)ByteDance 出品——解决 InstantID 的两个痛点:① 脸过"硬"像贴上去的;② prompt 跟随力弱。
技术亮点
- 训练时用"对比学习 + Lightning 蒸馏"一起搞
- 身份像度接近 InstantID,但和 prompt 的配合更自然——"戴草帽的乔布斯"比 InstantID 更像"戴草帽",而不是把帽子浮在脸上
- Flux 版 PuLID(PuLID-Flux):2024 年底发布,把这套技术带到 Flux,是 Flux 上人脸保留事实标准
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。
——换脸技术极易被用来制作深度伪造(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 串联,一个走风格,一个走身份:
也可用 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(衣服参考) | 脸来自用户,衣服来自商品图 |
十一、反模式
- IP-Adapter weight 超过 1.2:模型"复刻"参考图构图,prompt 失效。降到 0.7-0.9。
- SDXL IP-Adapter 配 SD1.5 模型:架构不兼容,必须匹配 base。
- 人脸场景用普通 IP-Adapter(非 FaceID):背景干扰,脸像度差。用 FaceID 或 InstantID。
- InstantID 配 cfg=7:脸部过锐变形。降到 4-5。
- PuLID 用多张参考:PuLID 单张设计,多张反而乱。FaceID 才支持多张。
- ReActor 对低分辨率原图用:贴上去的脸模糊。先 Hi-Res Fix 再 ReActor。
- 没考虑合规:换脸/人脸相关技术,用户知情同意、数据留痕、未成年人保护是硬要求。
- 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。