切换主题

ComfyUI 人物一致性:InstantID、FaceID 与 ReActor 怎么选

Easton editorial illustration: one gender-neutral faceted 3D avatar face token inside a dark rounded ComfyUI-style node canvas

"cubiq 的 ComfyUI_InstantID README 记录了 SDXL 范围、antelopev2 与模型目录、CFG 和关键点控制等当前使用要求。"

一张授权模特的正脸照片,你想生成同一个人物在不同场景下的多张图。或者你已经有一张生成好的海报,只想把脸换成指定的原创虚拟角色。这两种需求对应的技术路线完全不同:前者在生成期注入身份特征,后者在后处理阶段换脸。

ComfyUI 里常见的三套方案是 InstantID、IPAdapter FaceID 和 ReActor。它们名字相似,定位却完全不同。InstantID 的 ComfyUI 节点面向 SDXL,依赖较多;FaceID 可覆盖 SD1.5 和 SDXL,模型和 LoRA 需要配对;ReActor 是后处理换脸,不参与生成过程。

选型时先看需求发生在生成期还是后处理阶段,再核对模型依赖、调参方向、常见报错和素材许可边界。

一、三路线定位表:生成期身份保持 vs 后处理换脸

先回答一个问题:你想从零生成同一个人物的多张图,还是已经有了一张成品图只想换脸?这个判断会直接决定你该用哪条路线。

路线定位适用场景输入模型限制依赖复杂度
InstantID生成期身份保持从零生成同一张脸的多张图单张参考脸图ComfyUI_InstantID 当前面向 SDXL高(InsightFace + onnxruntime + antelopev2 + ControlNet + InstantID 主模型)
IPAdapter FaceID生成期身份保持从零生成同一张脸的多张图单张或多张参考脸图SD1.5 + SDXL中(InsightFace + FaceID 模型 + 对应 LoRA)
ReActor后处理换脸已有生成图,只替换脸原图 + 目标脸图不依赖生成底模版本相关(0.7 alpha 新核心不再强制 InsightFace,但模型和许可仍需核查)

选型判断

  • 想从零生成同一个人的多张图 → InstantID 或 FaceID
  • 已有成品图,只想换脸 → ReActor
  • 只有一张参考脸图 → 三者都能处理,但 InstantID 和 FaceID 更适合生成期控制
  • 想换脸且保持成品图的姿势和构图 → ReActor 更直接

许可边界前置提醒

InstantID 和 FaceID 通常依赖 InsightFace 提取人脸特征。InsightFace 代码采用 MIT 许可,但其训练数据与基于这些数据训练的模型默认仅供非商业研究;FaceID 模型卡也明确将相应模型限定为研究用途。ReActor 标注为 SFW-friendly 并带有 nudity detector,其 README 同样要求用户负责任使用。

商业或公开发布前,需要分别核查肖像授权、模型权重许可和平台规则。本文只讨论授权或自有素材、原创角色和内部测试场景。

二、InstantID:面向 SDXL 的生成期身份保持

2.1 安装与模型路径

InstantID 的依赖比 FaceID 和 ReActor 都多。装完节点后,模型路径最容易出错。

安装步骤:

# 1. 克隆节点
cd ComfyUI/custom_nodes
git clone https://github.com/cubiq/ComfyUI_InstantID.git

# 2. 安装依赖
pip install insightface onnxruntime onnxruntime-gpu

InsightFace 1.0 的默认 Python 包已经不再编译可选的 C++/Cython face3d 扩展,降低了本地编译要求。若旧环境或旧教程仍触发编译错误,优先确认实际版本并使用独立虚拟环境,不要先假定当前版本必需 Visual Studio C++ Build Tools。

模型目标路径来源
antelopev2ComfyUI/models/insightface/models/antelopev2InsightFace 模型
InstantID 主模型ComfyUI/models/instantidInstantX Hugging Face
InstantID ControlNetComfyUI/models/controlnetInstantX Hugging Face

ComfyUI_InstantID 当前 README 写明该节点只用于 SDXL。如果工作流基于 SD1.5,需要转向 FaceID。

ComfyUI_InstantID 仓库自 2025-04-14 起处于 maintenance only 状态。重要修复仍可能合并,但维护者不再承诺持续开发,安装前应核对当前 README。

2.2 工作流与调参

基本工作流:

  1. 加载 SDXL checkpoint
  2. 连接 Apply InstantID 节点,输入一张正脸参考图
  3. 把 InstantID 模型与 ControlNet 条件接入采样链路
  4. 生成图像

参考图的质量直接影响最终相似度。正脸、清晰、无遮挡、光照均匀的图片效果通常更稳。侧脸、小脸、糊脸或遮挡严重的图片可能检测失败或相似度偏低。

现象调节方向
相似度不够逐步提高 InstantID 模型或 ControlNet 权重
过饱和或文字控制弱先降低 InstantID 模型权重,再比较基准图
CFG 过高按节点 README 降到约 4-5,或使用 RescaleCFG

InstantID 上游实现的主路径不支持多人参考,只使用最大脸的关键点。ComfyUI_InstantID 另有较复杂且更慢的 Multi-ID 示例工作流,不能把它当成简单稳定的多人主线。

进阶节点功能:

  • Advanced InstantID:可以分别调 InstantID 模型与 ControlNet 的权重
  • Noise injection:用于减轻画面过度灼烧并微调相似度
  • image_kps 输入:传入另一张图片的关键点来改变姿势,减少参考图姿势被带入结果

姿势控制如果想更精确,可以配合 ControlNet OpenPose。

三、IPAdapter FaceID:SD1.5 与 SDXL 的生成期身份保持

FaceID 是 IPAdapter 家族的人脸特例,用 face recognition embedding 替代普通 CLIP image embedding,并可配合 LoRA 增强身份一致性。

3.1 安装与模型配对

先在 ComfyUI 的 Python 环境安装依赖:

pip install insightface

FaceID 模型放到 ComfyUI/models/ipadapter,对应 LoRA 放到 ComfyUI/models/loras。Unified Loader FaceID 依赖官方文件名自动配对,名称错误会导致自动加载失败。

FaceID 模型对应 LoRA路径
ip-adapter-faceid_sd15.binip-adapter-faceid_sd15_lora.safetensorsmodels/ipadapter + models/loras
ip-adapter-faceid-plusv2_sd15.binip-adapter-faceid-plusv2_sd15_lora.safetensors同上
ip-adapter-faceid_sdxl.binip-adapter-faceid_sdxl_lora.safetensors同上
ip-adapter-faceid-plusv2_sdxl.binip-adapter-faceid-plusv2_sdxl_lora.safetensors同上

具体模型清单和命名可能随节点更新变化。安装前检查 ComfyUI_IPAdapter_plus 的 README,确保模型与 LoRA 按底模和版本一一对应。漏掉或配错 LoRA 会明显削弱身份一致性。

版本差异:

  • PlusV2:同时使用人脸 ID embedding 与可调的 CLIP 图像 embedding,可以改变 face structure 权重
  • Portrait:面向人像生成,不需要 LoRA 或 ControlNet,可接受多张人脸图增强相似度
  • SDXL FaceID 与 PlusV2-SDXL:模型卡将其标记为 experimental,不要当作绝对稳定方案

ComfyUI_IPAdapter_plus 仓库同样自 2025-04-14 起处于 maintenance only 状态。

3.2 工作流与调参

FaceID 的权重不必从 1.0 起步。过高的身份权重可能让生成结果更像参考图,同时削弱文字 Prompt 的控制力。

调参方向:

  • weight 可从 0.8 左右建立基准,相似度不足时再逐步提高
  • 需要更贴近 Prompt 时,可以在 IPAdapter Advanced 里调整 weight type 或降低权重
  • PlusV2 还可单独调整 face structure 相关权重

FaceID 与 InstantID 都在生成期提供身份条件,但 FaceID 可覆盖 SD1.5 和 SDXL,而当前 ComfyUI_InstantID 节点面向 SDXL。显存占用会随底模、分辨率、显卡和节点版本变化,不宜用一个固定数字概括。

四、ReActor:后处理换脸的 SFW 方案

ReActor 的定位和前两条路线不同:它不参与扩散生成过程,而是在已经生成或已有的图片上做换脸。

4.1 安装与依赖变化

ReActor 0.7.0 alpha 的新核心声明不再要求 InsightFace 与 C++ Build Tools。不过,当前 README 的模型表和许可段落仍列出 buffalo_linswapper_128.onnx 等模型,具体安装与授权判断必须按当前版本复核。

模型当前 README 路径
buffalo_lComfyUI/models/insightface/models/buffalo_l
inswapper_128ComfyUI/models/insightface
reswapperComfyUI/models/reswapper
hyperswapComfyUI/models/hyperswap
Face Restore 模型ComfyUI/models/facerestore_models

旧教程常把 InsightFace 和 C++ Build Tools 视为固定前置条件。遇到冲突时先确认 ReActor 版本,再按该版本 README 安装,不要混用旧教程的依赖步骤。

ReActor 带有 nudity detector,README 要求真实人脸使用应取得相关人员同意并在公开发布时明确披露合成性质。buffalo_linswapper_128 等模型的商业许可还需要单独确认。

4.2 工作流

基本换脸步骤:

  1. 把待处理图片接到 input_image,把已授权的参考脸接到 source_image
  2. 用 ReActorSetWeight 从保守强度开始测试
  3. 可选:用 Face Similarity 检查换脸后的相似度
  4. 可选:用 Face Restoration 修复边缘和细节
  5. 可选:保存 face model,后续直接加载同一张脸的 embedding
功能说明
ReActorSetWeight在 0%-100% 范围内按节点步进调整换脸强度;过强可能产生塑料感或边缘不自然
Face Similarity对换脸结果做相似度检查
Face Restoration修复换脸后的边缘和细节,强度过高也可能带来塑料感
Face Model保存或加载人脸 embedding,用于复用同一张脸

ReActor 不负责重新生成原图的构图、服装和姿势。如果目标是保留成品图整体内容、只处理脸部区域,它比 InstantID 和 FaceID 更直接。

五、参考图质量判断与常见排障

5.1 参考图质量判断清单

参考图质量往往比继续堆权重更重要。一张正脸、清晰、无遮挡、光照均匀的图片,通常更容易得到稳定结果。侧脸、糊脸、小脸或遮挡严重的图片,即使调高权重也很难完全补救。

优先级排序:

  1. 正脸 > 侧脸或斜脸
  2. 清晰 > 模糊
  3. 无遮挡 > 眼镜、口罩或刘海遮挡
  4. 光照均匀 > 强阴影或逆光

这个判断适用于 InstantID、FaceID 和 ReActor 的参考脸图。检测失败时先裁切人脸或更换参考图,不要直接把所有权重拉满。

5.2 常见故障排查表

问题可能原因解决方向
模型找不到(antelopev2 / buffalo_l / InstantID 主模型)路径错误或模型未下载按所用节点当前 README 检查 models/insightface/modelsmodels/instantid 等目录
检测失败(no face detected)侧脸、小脸、模糊或遮挡换正面、清晰、无遮挡的参考图,必要时先裁切脸部
脸像了但姿势或表情被带跑人脸条件也带入了部分结构特征用 ControlNet 控制姿势,或改用 ReActor 处理已有成品图
相似度不高FaceID 漏了配套 LoRA、权重不合适或参考图质量低检查模型与 LoRA 配对,从 0.8 左右建立基准,再逐项调整
边缘不自然或塑料感ReActor 换脸或 Face Restoration 强度过高调低换脸与修复强度,检查目标脸尺寸、角度和光照
依赖安装报错混用了旧教程、旧节点和当前 Python 环境先确认节点与 InsightFace 版本,再使用独立环境按当前 README 安装

判断顺序:

  • 检测失败 → 先看参考图质量
  • 相似度不够 → 先检查模型、LoRA 配对和路径
  • 姿势漂移 → 区分生成期身份注入还是后处理换脸,再补 ControlNet 或改路线

六、与 ControlNet、Kontext、LoRA 的组合边界

固定脸不等于固定姿势、身体、服装和构图。InstantID 与 FaceID 注入身份条件时,参考图的姿势、表情或发型也可能影响结果。

核心组合建议:

  • InstantID 或 FaceID + ControlNet OpenPose → 人脸条件负责身份,ControlNet 负责身体与姿势
  • FaceID + 普通 IPAdapter → FaceID 锁定人脸,普通 IPAdapter 控制风格或构图,两路权重都应从保守值开始
  • ReActor + 高清修复 → 先生成目标图,再换脸,最后按需使用 face restore 或局部 inpaint
  • Kontext → 适合在同一张输入图上修改背景、服装或场景,但不是专用人脸身份锁定方案
  • LoRA → 适合长期复用原创角色或品牌虚拟人,需要数据集与训练流程

姿势必须精确时,可以用 ControlNet OpenPose 传入目标姿势图,让 InstantID 或 FaceID 负责脸,ControlNet 负责身体和姿势。如果只是保留成品图构图并替换脸部,ReActor 更直接。

相关文章:

七、合规与许可边界

许可和素材来源是红线。技术上能运行,不等于素材、模型和发布方式都获得授权。

InsightFace 代码与模型许可要分开

InsightFace 代码采用 MIT 许可,允许学术和商业使用。但其训练数据和基于这些数据训练的预训练模型默认仅供非商业研究。InsightFace 当前 README 还分别给出了 inswapper 系列与开源人脸识别模型的许可联系渠道。

FaceID 模型卡也明确写明,因为依赖 InsightFace 预训练模型,IP-Adapter-FaceID 仅为研究用途。不要把节点代码许可证等同于模型权重的商业许可。

ReActor 的责任与披露

ReActor 当前版本标注 SFW-friendly 并带有 nudity detector。其 README 要求用户遵守当地法律,真实人脸应取得当事人同意,公开发布时应明确披露内容经过人脸替换或 AI 合成。

素材来源限制

本文只讨论以下场景:

  • 已取得肖像与使用授权的模特照片
  • 自己拍摄且有权处理的个人素材
  • 不对应真实人物的原创虚拟角色
  • 不对外发布的合规内部测试

商业或公开发布前,必须分别核查肖像授权、模型许可范围和平台规则。无法确认其中任何一项时,不要发布或商用。

总结与下一步

核心判断很简单:

  • 生成期身份保持 → InstantID(当前 ComfyUI 节点面向 SDXL)或 FaceID(SD1.5 + SDXL)
  • 后处理换脸 → ReActor
  • 参考图质量、模型路径和版本配对优先于盲目提高权重
  • 代码许可证不等于预训练模型可商用,真实人脸还需要肖像授权

InstantID 适合 SDXL 工作流,依赖较多但可以分别控制人脸身份与关键点条件。FaceID 支持更多底模,但模型和 LoRA 必须正确配对。ReActor 不参与扩散生成,适合在已有图片上处理脸部。

下一步可以继续阅读:

选择并调通 ComfyUI 人物一致性工作流

先按生成阶段选路线,再检查参考图、模型目录和版本配对,最后一次只调整一个权重。

  1. 1

    步骤 1: 确认任务发生在哪个阶段

    需要从一张脸生成新图时选择 InstantID 或 IPAdapter FaceID;已有图片只替换脸部时选择 ReActor。
  2. 2

    步骤 2: 准备合格且已授权的参考图

    优先使用正面、清晰、无遮挡、光照均匀且脸部区域足够大的图片,并确认肖像与素材使用权限。
  3. 3

    步骤 3: 按路线安装模型和依赖

    InstantID 检查 antelopev2、InstantID 主模型与 ControlNet;FaceID 检查 insightface、FaceID 模型与配套 LoRA;ReActor 按当前版本 README 安装。
  4. 4

    步骤 4: 建立基准结果

    先用默认或保守权重生成一张基准图,不要同时修改姿势、表情、发型、底模和多个身份权重。
  5. 5

    步骤 5: 按现象逐项调整

    相似度不足时提高身份权重或检查模型配对;文字控制变弱时降低 Adapter 权重;塑料脸时降低换脸与修复强度。
  6. 6

    步骤 6: 补充姿势或长期角色控制

    姿势需要精确约束时叠加 ControlNet;长期复用原创角色时评估训练 LoRA,不要把所有控制任务都交给人脸参考图。

常见问题

ComfyUI 固定同一个人应该用 InstantID 还是 ReActor?
从一张脸生成新图时优先用 InstantID 或 IPAdapter FaceID;图片已经生成好、只想替换脸部时再用 ReActor。
IPAdapter FaceID 为什么还要 LoRA?
FaceID 用人脸识别 embedding 提供身份条件,多数 FaceID 模型还需要对应 LoRA 增强身份一致性。模型和 LoRA 必须按底模与版本正确配对。
InstantID 在 ComfyUI 里只支持 SDXL 吗?
cubiq/ComfyUI_InstantID 当前 README 写明该节点只用于 SDXL,并需要 antelopev2、InstantID 主模型和 ControlNet 模型。其他实现或后续版本应以各自说明为准。
ReActor 0.7 还需要 InsightFace 和 C++ Build Tools 吗?
ReActor 0.7 alpha 的新核心声明不再要求 InsightFace 与 C++ Build Tools,但当前模型清单和许可说明仍涉及 buffalo_l、inswapper_128 等模型。安装与商用判断都应复核当前 README。
ComfyUI 换脸可以商用吗?
不能只看节点代码许可证。还要确认人像授权、使用场景、平台规则,以及 InsightFace、inswapper 和 FaceID 等预训练模型的许可;不确定时不要用于商业发布。
为什么换脸后脸部像塑料?
常见原因是换脸或 face restoration 强度过高、目标脸太小,或参考脸与目标图角度和光照不匹配。先降低修复强度,并换用更清晰、角度更接近的授权参考图。

13 分钟阅读 · 发布于: 2026年8月21日 · 修改于: 2026年8月21日

评论

使用 GitHub 账号登录后即可评论

Easton BlogEaston Blog