人像一致性:FaceID Plus V2 换脸实操
做系列图最麻烦的不是画质,是"这个人还是不是同一个人"。 纯靠提示词描述长相,十张图能有八个脸。IPAdapter 的 FaceID 分支就是解决这个问题的: 给一张参考照,让它把人脸特征搬进生成过程。
一、需要哪些组件
注意 FaceID 是四件套,少一个都跑不出效果:
| 组件 | 文件 / 名称 | 作用 |
|---|---|---|
| 基础模型 | sd_xl_base_1.0.safetensors | 出图底模 |
| 人脸识别模型 | antelopev2(InsightFace) | 从参考照里提取人脸特征 |
| 视觉编码器 | CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors | 提供整体视觉特征 |
| FaceID 权重 | FACEID PLUS V2 预设 | 把特征注入 UNet,由 IPAdapter 统一加载器自动配 LoRA |
二、节点链路(12 个节点)
LoadImage(参考照) ─→ IPAdapterInsightFaceLoader(antelopev2)
↓
CheckpointLoaderSimple ─→ IPAdapterUnifiedLoaderFaceID(FACEID PLUS V2)
CLIPVisionLoader ──────────────┤
↓
IPAdapterFaceID ──→ KSampler ──→ SaveImage
CLIPTextEncode(正/负) ──┘
EmptyLatentImage(832×1216) ─────┘
三、权重怎么配
| 参数 | 取值 | 说明 |
|---|---|---|
| LoRA 强度 | 0.7 | 在统一加载器里设,太高会让画面变"油腻" |
| weight | 0.8 | 人脸特征的整体权重 |
| weight_faceidv2 | 0.8 | V2 分支单独可调,和上面分开是有意设计 |
| weight_type | linear | 线性衰减 |
| combine_embeds | concat | 拼接嵌入,特征保留更完整 |
| embeds_scaling | V only | 只缩放 value,画面更稳 |
| start_at / end_at | 0.0 / 1.0 | 全程生效 |
| 采样 | 28 步 · CFG 6.0 · euler / normal | SDXL 常规档 |
四、常见问题
1. provider 选 CPU 还是 GPU
工作流里 InsightFace 用的是 CPU。人脸特征提取只跑一次,放 CPU 上省显存、
又不影响出图速度 —— 显存紧张时这是划算的选择。
2. 不像 / 太像导致"塑料脸"
两个方向调:不像就提高 weight(0.8 → 0.9);
像到失真、皮肤发蜡就把 LoRA 强度从 0.7 往回收,或者把 end_at 设到 0.8,
让最后几步采样不再强加人脸特征。
3. 参考照怎么选
- 正脸、光线均匀、分辨率别太小(建议 1024 以上)
- 避免大角度侧脸、强逆光、夸张表情 —— 特征提取对这些很敏感
- 一张好参考照胜过调半天参数
4. 输出尺寸
用的是 832 × 1216 竖幅,适合人像。想要横构图就换成 SDXL 的对齐档位,别用任意数值, 否则容易出双头、肢体错位。
五、用在哪
最典型的场景是系列内容:同一个角色出现在不同场景、 同一个模特换不同服装与背景。先用这套工作流把人固定下来,再去接后面的出图或视频流程。