【版权严正声明】
本文系作者 [编程界的小学生] 原创,并拥有完整、独立的著作权。
未经本人 书面授权 ,任何单位、平台或个人, 严禁 以任何形式(包括但不限于转载、复制、摘编、修改、链接、转贴、建立镜像等)使用本文的全部或部分内容。
任何无视本声明的侵权行为,本人将依据《中华人民共和国著作权法》等相关法律法规,采取一切必要的法律手段,追究其侵权责任,要求其 立即停止侵权、赔礼道歉、消除影响,并赔偿因此造成的一切经济损失及维权成本(包括但不限于律师费、诉讼费、公证费等)。
侵权必究,切勿以身试法!
1. 插件简介
插件地址: https://github.com/cubiq/ComfyUI_InstantID
ComfyUI InstantID 是一个超级厉害的人脸替换插件!简单来说,它就像一个"换脸神器",可以把你想要的人脸特征应用到任何图片上。
这个插件能给我们带来什么效果?
想象一下:你有一张自己的照片,想看看自己穿古装、当超级英雄、或者做各种造型的样子,这个插件就能帮你实现!
2. 如何安装
方法一:使用 ComfyUI Manager(推荐)
打开 ComfyUI Manager
搜索 "InstantID"
点击安装
方法二:手动安装
下载插件到 ComfyUI/custom_nodes/ 目录
安装依赖库:insightface、onnxruntime、onnxruntime-gpu
下载模型文件:
人脸分析模型:下载 antelopev2 模型,放到 ComfyUI/models/insightface/models/antelopev2/ 目录
主模型:下载 ip-adapter.bin,放到 ComfyUI/models/instantid/ 目录
控制网络模型:下载 ControlNet 模型,放到 ComfyUI 的 controlnet 目录
重要提醒: 目前只支持 SDXL 模型!
3. 节点详细解析
当前插件包含节点总数:7个 本次输出节点数:7个 剩余未输出节点数:0个
3.1 InstantIDModelLoader 节点 - 模型加载器
这个节点是干嘛的? 就像一个"工具箱管理员",负责把 InstantID 的核心模型加载到内存里,为后续的人脸替换做准备。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
instantid_file | instantid_file | 下拉选择 | ip-adapter.bin | 选择要使用的InstantID模型文件,就像选择不同的"换脸工具" | 指定InstantID模型文件路径,用于加载预训练的人脸特征提取和融合模型 | 从下拉菜单选择你下载的模型文件,通常是 ip-adapter.bin |
3.2 InstantIDFaceAnalysis 节点 - 人脸分析器
这个节点是干嘛的? 就像一个"人脸侦探",专门负责在图片中找到人脸,并分析人脸的各种特征,比如眼睛位置、鼻子形状等。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
provider | provider | CPU/CUDA/ROCM/CoreML | CUDA | 选择用什么硬件来分析人脸,就像选择用"手工"还是"机器"来干活 | 指定推理引擎提供商,决定使用哪种硬件加速 | 有独立显卡选CUDA,苹果电脑选CoreML,其他选CPU |
3.3 FaceKeypointsPreprocessor 节点 - 人脸关键点预处理器
这个节点是干嘛的? 就像一个"人脸地图绘制员",在人脸上标记出重要的点位(比如眼角、嘴角、鼻尖),然后画出连接线,形成一个"人脸骨架图"。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
faceanalysis | faceanalysis | FACEANALYSIS类型 | 连接上面的分析器 | 接收人脸分析器的结果,就像接收"侦探报告" | 输入人脸分析模型实例,用于提取面部关键点 | 连接 InstantIDFaceAnalysis 节点的输出 |
image | image | IMAGE类型 | 输入图片 | 要分析的图片,就像给"地图绘制员"一张照片 | 输入图像张量,用于提取面部关键点坐标 | 连接你要分析的图片,可以是加载的图片或其他节点输出 |
3.4 ApplyInstantID 节点 - 应用InstantID(基础版)
这个节点是干嘛的? 这是整个插件的"核心大脑",把所有准备工作整合起来,执行真正的人脸替换操作。就像一个"换脸魔法师",把参考人脸的特征应用到目标图片上。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
instantid | instantid | INSTANTID类型 | 连接模型加载器 | 接收加载好的InstantID模型,就像接收"魔法工具" | 输入InstantID模型实例,用于人脸特征融合 | 连接 InstantIDModelLoader 节点的输出 |
insightface | insightface | FACEANALYSIS类型 | 连接人脸分析器 | 接收人脸分析器,用来识别和分析人脸 | 输入人脸分析模型,用于提取面部特征向量 | 连接 InstantIDFaceAnalysis 节点的输出 |
control_net | control_net | CONTROL_NET类型 | 连接ControlNet | 接收控制网络,用来控制人脸姿势和表情 | 输入ControlNet模型,用于姿势和结构控制 | 连接加载的InstantID专用ControlNet模型 |
image | image | IMAGE类型 | 参考人脸图片 | 你想要"复制"特征的人脸照片,就像"模板" | 输入参考图像,提供要复制的人脸特征 | 连接包含目标人脸的图片 |
model | model | MODEL类型 | SDXL模型 | 用来生成图片的AI模型,就像"画家" | 输入扩散模型,用于图像生成 | 连接加载的SDXL模型 |
positive | positive | CONDITIONING类型 | 正面提示词 | 你想要的效果描述,就像给"画家"的指令 | 正向条件编码,指导生成期望的内容 | 连接正面提示词编码器的输出 |
negative | negative | CONDITIONING类型 | 负面提示词 | 你不想要的效果描述,就像"禁止事项" | 负向条件编码,避免生成不期望的内容 | 连接负面提示词编码器的输出 |
weight | weight | 0.0-5.0 | 0.8 | 人脸替换的强度,就像"换脸程度"调节器 | InstantID效果的整体权重,控制人脸相似度 | 0.8是平衡值,太高会过度拟合,太低效果不明显 |
start_at | start_at | 0.0-1.0 | 0.0 | 从生成过程的什么时候开始应用效果,就像"开始时机" | 在扩散过程中开始应用InstantID的时间点 | 0.0表示从一开始就应用,1.0表示最后才应用 |
end_at | end_at | 0.0-1.0 | 1.0 | 到生成过程的什么时候停止应用效果,就像"结束时机" | 在扩散过程中停止应用InstantID的时间点 | 1.0表示全程应用,0.5表示中途停止 |
image_kps | image_kps | IMAGE类型(可选) | 可选姿势图 | 控制人脸姿势的图片,就像"姿势模板" | 可选的关键点图像,用于控制面部姿势 | 如果想要特定姿势,连接对应的关键点图像 |
mask | mask | MASK类型(可选) | 可选遮罩 | 控制哪些区域应用效果,就像"涂改液" | 可选的遮罩,限制InstantID效果的应用区域 | 只想改变脸部时使用,保护其他区域不变 |
3.5 ApplyInstantIDAdvanced 节点 - 应用InstantID(高级版)
这个节点是干嘛的? 这是基础版的"升级版本",提供更多精细控制选项。就像从"自动档汽车"升级到"手动档汽车",可以更精确地控制每个细节。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
instantid | instantid | INSTANTID类型 | 连接模型加载器 | 接收加载好的InstantID模型,就像接收"魔法工具" | 输入InstantID模型实例,用于人脸特征融合 | 连接 InstantIDModelLoader 节点的输出 |
insightface | insightface | FACEANALYSIS类型 | 连接人脸分析器 | 接收人脸分析器,用来识别和分析人脸 | 输入人脸分析模型,用于提取面部特征向量 | 连接 InstantIDFaceAnalysis 节点的输出 |
control_net | control_net | CONTROL_NET类型 | 连接ControlNet | 接收控制网络,用来控制人脸姿势和表情 | 输入ControlNet模型,用于姿势和结构控制 | 连接加载的InstantID专用ControlNet模型 |
image | image | IMAGE类型 | 参考人脸图片 | 你想要"复制"特征的人脸照片,就像"模板" | 输入参考图像,提供要复制的人脸特征 | 连接包含目标人脸的图片 |
model | model | MODEL类型 | SDXL模型 | 用来生成图片的AI模型,就像"画家" | 输入扩散模型,用于图像生成 | 连接加载的SDXL模型 |
positive | positive | CONDITIONING类型 | 正面提示词 | 你想要的效果描述,就像给"画家"的指令 | 正向条件编码,指导生成期望的内容 | 连接正面提示词编码器的输出 |
negative | negative | CONDITIONING类型 | 负面提示词 | 你不想要的效果描述,就像"禁止事项" | 负向条件编码,避免生成不期望的内容 | 连接负面提示词编码器的输出 |
ip_weight | ip_weight | 0.0-3.0 | 0.8 | 人脸特征融合的强度,就像"脸部相似度"调节器 | InstantID模型的权重,控制人脸特征的融合强度 | 调高让脸更像参考图,调低让脸更自然 |
cn_strength | cn_strength | 0.0-10.0 | 0.8 | 姿势控制的强度,就像"姿势模仿度"调节器 | ControlNet的强度,控制姿势和结构的约束程度 | 调高让姿势更严格按照参考,调低更自由 |
start_at | start_at | 0.0-1.0 | 0.0 | 从生成过程的什么时候开始应用效果,就像"开始时机" | 在扩散过程中开始应用InstantID的时间点 | 0.0表示从一开始就应用,1.0表示最后才应用 |
end_at | end_at | 0.0-1.0 | 1.0 | 到生成过程的什么时候停止应用效果,就像"结束时机" | 在扩散过程中停止应用InstantID的时间点 | 1.0表示全程应用,0.5表示中途停止 |
noise | noise | 0.0-1.0 | 0.0 | 添加随机性,就像"自然度"调节器 | 向负向嵌入注入噪声的程度,减少过度拟合 | 0.35可以让效果更自然,减少"烧焦"感 |
combine_embeds | combine_embeds | average/norm average/concat | average | 多张脸时的融合方式,就像"混合模式" | 当有多个面部特征时的组合策略 | average最常用,norm average更平衡 |
image_kps | image_kps | IMAGE类型(可选) | 可选姿势图 | 控制人脸姿势的图片,就像"姿势模板" | 可选的关键点图像,用于控制面部姿势 | 如果想要特定姿势,连接对应的关键点图像 |
mask | mask | MASK类型(可选) | 可选遮罩 | 控制哪些区域应用效果,就像"涂改液" | 可选的遮罩,限制InstantID效果的应用区域 | 只想改变脸部时使用,保护其他区域不变 |
3.6 InstantIDAttentionPatch 节点 - InstantID注意力补丁
这个节点是干嘛的? 这是一个"分工专家",只负责处理人脸特征的融合部分,不管姿势控制。就像把"换脸"和"摆姿势"分开处理,让你可以更灵活地组合使用。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
instantid | instantid | INSTANTID类型 | 连接模型加载器 | 接收加载好的InstantID模型,就像接收"魔法工具" | 输入InstantID模型实例,用于人脸特征融合 | 连接 InstantIDModelLoader 节点的输出 |
insightface | insightface | FACEANALYSIS类型 | 连接人脸分析器 | 接收人脸分析器,用来识别和分析人脸 | 输入人脸分析模型,用于提取面部特征向量 | 连接 InstantIDFaceAnalysis 节点的输出 |
image | image | IMAGE类型 | 参考人脸图片 | 你想要"复制"特征的人脸照片,就像"模板" | 输入参考图像,提供要复制的人脸特征 | 连接包含目标人脸的图片 |
model | model | MODEL类型 | SDXL模型 | 用来生成图片的AI模型,就像"画家" | 输入扩散模型,用于图像生成 | 连接加载的SDXL模型 |
weight | weight | -1.0-3.0 | 1.0 | 人脸特征融合的强度,就像"脸部相似度"调节器 | InstantID效果的权重,控制人脸特征的融合强度 | 1.0是标准值,可以为负值产生反向效果 |
start_at | start_at | 0.0-1.0 | 0.0 | 从生成过程的什么时候开始应用效果,就像"开始时机" | 在扩散过程中开始应用InstantID的时间点 | 0.0表示从一开始就应用,1.0表示最后才应用 |
end_at | end_at | 0.0-1.0 | 1.0 | 到生成过程的什么时候停止应用效果,就像"结束时机" | 在扩散过程中停止应用InstantID的时间点 | 1.0表示全程应用,0.5表示中途停止 |
noise | noise | 0.0-1.0 | 0.0 | 添加随机性,就像"自然度"调节器 | 向负向嵌入注入噪声的程度,减少过度拟合 | 0.35可以让效果更自然,减少"烧焦"感 |
mask | mask | MASK类型(可选) | 可选遮罩 | 控制哪些区域应用效果,就像"涂改液" | 可选的遮罩,限制InstantID效果的应用区域 | 只想改变脸部时使用,保护其他区域不变 |
3.7 ApplyInstantIDControlNet 节点 - 应用InstantID控制网络
这个节点是干嘛的? 这是上面"注意力补丁"节点的"搭档",专门负责姿势控制部分。就像一个"姿势指导员",确保生成的人脸有正确的朝向和表情。
参数详解:
参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|
face_embeds | face_embeds | FACE_EMBEDS类型 | 连接注意力补丁输出 | 接收处理好的人脸特征,就像接收"脸部数据包" | 输入人脸嵌入向量,包含条件和非条件嵌入 | 连接 InstantIDAttentionPatch 节点的第二个输出 |
control_net | control_net | CONTROL_NET类型 | 连接ControlNet | 接收控制网络,用来控制人脸姿势和表情 | 输入ControlNet模型,用于姿势和结构控制 | 连接加载的InstantID专用ControlNet模型 |
image_kps | image_kps | IMAGE类型 | 关键点图像 | 人脸关键点图像,就像"姿势蓝图" | 输入面部关键点图像,用于控制面部姿势 | 连接 FaceKeypointsPreprocessor 节点的输出 |
positive | positive | CONDITIONING类型 | 正面提示词 | 你想要的效果描述,就像给"画家"的指令 | 正向条件编码,指导生成期望的内容 | 连接正面提示词编码器的输出 |
negative | negative | CONDITIONING类型 | 负面提示词 | 你不想要的效果描述,就像"禁止事项" | 负向条件编码,避免生成不期望的内容 | 连接负面提示词编码器的输出 |
strength | strength | 0.0-10.0 | 1.0 | 姿势控制的强度,就像"姿势模仿度"调节器 | ControlNet的强度,控制姿势和结构的约束程度 | 调高让姿势更严格按照参考,调低更自由 |
start_at | start_at | 0.0-1.0 | 0.0 | 从生成过程的什么时候开始应用效果,就像"开始时机" | 在扩散过程中开始应用ControlNet的时间点 | 0.0表示从一开始就应用,1.0表示最后才应用 |
end_at | end_at | 0.0-1.0 | 1.0 | 到生成过程的什么时候停止应用效果,就像"结束时机" | 在扩散过程中停止应用ControlNet的时间点 | 1.0表示全程应用,0.5表示中途停止 |
mask | mask | MASK类型(可选) | 可选遮罩 | 控制哪些区域应用效果,就像"涂改液" | 可选的遮罩,限制ControlNet效果的应用区域 | 只想控制特定区域的姿势时使用 |
4. 使用技巧和建议
4.1 基础使用流程
加载模型:先用 InstantIDModelLoader 加载主模型
准备分析器:用 InstantIDFaceAnalysis 创建人脸分析器
选择方案:
简单方案:直接用 ApplyInstantID 节点
高级方案:用 ApplyInstantIDAdvanced 节点获得更多控制
分离方案:用 InstantIDAttentionPatch + ApplyInstantIDControlNet 分别控制
4.2 参数调节技巧
4.3 常见问题解决
5. 常见问题解答
Q: 为什么我的图片没有效果? A: 检查参考图片是否包含清晰的人脸,确保所有模型文件都正确下载和放置。
Q: 生成的图片看起来很"假"? A: 尝试降低weight参数,增加noise参数,或者降低CFG Scale到4-5。
Q: 可以同时使用多个人脸吗? A: 可以,但工作流程会比较复杂,需要使用多个节点组合。
Q: 支持其他模型吗? A: 目前只支持SDXL模型,不支持SD1.5或其他模型。
Q: 如何控制人脸姿势? A: 使用 FaceKeypointsPreprocessor 生成关键点图像,或者提供自定义的姿势参考图。
6. 高级应用技巧
6.1 多人脸处理
当参考图片包含多个人脸时,系统会自动选择最大的人脸。如果需要特定人脸,建议先裁剪图片。
6.2 与其他插件结合
6.3 批量处理
支持批量处理多张图片,但需要注意内存使用量。
6.4 性能优化
使用CUDA加速(如果有独立显卡)
合理设置批次大小
定期清理显存
7. 总结
ComfyUI InstantID 是一个功能强大的人脸替换插件,通过7个不同的节点提供了从简单到复杂的各种使用方案。无论你是想要快速换脸,还是需要精确控制每个细节,都能找到合适的解决方案。
记住关键要点:
降低CFG Scale到4-5
调整分辨率避免水印
合理使用noise参数增加自然度
根据需求选择合适的节点组合
现在就开始你的"换脸"之旅吧!🎭✨