ComfyUI InstantID FaceSwap 插件完全教程
1. 插件简介
插件地址: https://github.com/nosiu/comfyui-instantId-faceswap
这个插件就像是一个超级厉害的"换脸神器"!它能让你把一个人的脸换到另一个人身上,或者根据文字描述生成带有特定人脸的图片。想象一下,你可以把自己的脸换到电影明星身上,或者让AI根据你的描述画出一个带有你朋友脸的卡通人物!
主要功能:
- 换脸:把A的脸换到B的身体上
- 文字生图:输入"一个戴眼镜的男人坐在公园里",AI就能画出带有指定人脸的图片
- 脸部角度调整:可以让脸转向不同方向
- 多种脸部特征点控制:精确控制眼睛、鼻子、嘴巴的位置
注意: 这个插件只能配合SDXL模型使用,就像特定的钥匙只能开特定的锁一样。
2. 如何安装
方法一:直接下载
- 去GitHub下载插件文件
- 把整个文件夹放到
ComfyUI/custom_nodes/目录下 - 打开命令行,进入插件文件夹,输入:
pip install -r requirements.txt
方法二:Git克隆
cd ComfyUI/custom_nodes/
git clone https://github.com/nosiu/comfyui-instantId-faceswap.git
cd comfyui-instantId-faceswap
pip install -r requirements.txt
下载必需文件
你还需要下载一些"大脑文件"让插件能正常工作:
人脸识别文件(放到 ComfyUI/models/insightface/models/antelopev2/):
- 1k3d68.onnx
- 2d106det.onnx
- genderage.onnx
- glintr100.onnx
- scrfd_10g_bnkps.onnx
适配器文件:
- ip-adapter.bin → 放到
ComfyUI/models/ipadapter/ - diffusion_pytorch_model.safetensors 和 config.json → 放到
ComfyUI/models/controlnet/你创建的文件夹/
3. 节点详解
3.1 LoadInsightface 节点 - 人脸识别器加载器
这个节点就像是给AI装上"眼睛",让它能够识别和分析人脸。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 无参数 | 无 | 无 | 无 | 这个节点不需要设置任何参数,点击就能用 | 自动加载InsightFace人脸分析模型 | 直接连接到其他需要人脸识别的节点 |
3.2 LoadInstantIdAdapter 节点 - 换脸适配器加载器
这个节点就像是换脸工具的"核心引擎",负责加载换脸需要的模型文件。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| ipadapter | ipadapter | 文件列表 | ip-adapter.bin | 选择换脸用的适配器文件,就像选择不同的滤镜 | 加载InstantID适配器模型文件 | 从下拉菜单选择你下载的ip-adapter.bin文件 |
3.3 FaceEmbed 节点 - 人脸特征提取器
这个节点就像是"人脸扫描仪",能把一张脸的特征全部记录下来,为后面的换脸做准备。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| insightface | insightface | INSIGHTFACE_APP | 来自LoadInsightface | 人脸识别器,用来分析脸部特征 | InsightFace应用实例 | 连接LoadInsightface节点的输出 |
| face_image | face_image | IMAGE | 人脸图片 | 要提取特征的人脸照片 | 输入的人脸图像 | 连接包含人脸的图片节点 |
| face_embeds | face_embeds | FACE_EMBED | 可选 | 可以添加更多人脸特征,就像混合多个人的脸 | 可选的额外人脸嵌入 | 可以连接其他FaceEmbed节点来混合多张脸 |
3.4 FaceEmbedCombine 节点 - 人脸特征合并器
这个节点就像是"调色盘",把多个人脸的特征混合成一个最终的脸部特征。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| resampler | resampler | RESAMPLER | 来自LoadInstantIdAdapter | 特征处理器,把脸部特征转换成AI能理解的格式 | 重采样器,用于处理人脸嵌入 | 连接LoadInstantIdAdapter节点的第二个输出 |
| face_embeds | face_embeds | FACE_EMBED | 来自FaceEmbed | 要合并的人脸特征数据 | 人脸嵌入向量 | 连接FaceEmbed节点的输出 |
3.5 InstantIdAdapterApply 节点 - 换脸适配器应用器
这个节点就像是"换脸手术刀",把人脸特征应用到AI模型上。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL | SDXL模型 | 要进行换脸的AI绘画模型 | 扩散模型 | 连接你的SDXL模型节点 |
| instantId_adapter | instantId_adapter | INSTANTID_ADAPTER | 来自LoadInstantIdAdapter | 换脸适配器 | InstantID适配器实例 | 连接LoadInstantIdAdapter的第一个输出 |
| face_conditioning | face_conditioning | FACE_CONDITIONING | 来自FaceEmbedCombine | 处理好的人脸特征 | 人脸条件信息 | 连接FaceEmbedCombine的输出 |
| strength | strength | 0-10 | 0.8 | 换脸强度,数值越大换脸效果越明显 | 适配器应用强度 | 0.5-1.0之间效果较好,太高可能失真 |
3.6 ControlNetInstantIdApply 节点 - 控制网络应用器
这个节点就像是"脸部姿势控制器",能让换脸后的人保持原来的表情和角度。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| positive | positive | CONDITIONING | 正面提示词 | 你想要的效果描述 | 正向条件 | 连接正面提示词节点 |
| negative | negative | CONDITIONING | 负面提示词 | 你不想要的效果描述 | 负向条件 | 连接负面提示词节点 |
| face_conditioning | face_conditioning | FACE_CONDITIONING | 来自FaceEmbedCombine | 人脸特征信息 | 人脸条件信息 | 连接FaceEmbedCombine的输出 |
| control_net | control_net | CONTROL_NET | InstantID控制网络 | 控制脸部姿势的网络 | ControlNet模型 | 连接ControlNet加载器 |
| image | image | IMAGE | 控制图像 | 用来控制脸部姿势的参考图 | 控制图像 | 连接包含脸部关键点的图像 |
| strength | strength | 0-10 | 1.0 | 控制强度,决定脸部姿势控制的程度 | ControlNet应用强度 | 0.7-1.0效果较好 |
3.7 InstantIdAndControlnetApply 节点 - 一体化换脸器
这个节点就像是"一键换脸机",把多个步骤合并成一个节点,使用更简单。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL | SDXL模型 | AI绘画模型 | 扩散模型 | 连接SDXL模型 |
| ipadapter_path | ipadapter_path | 文件列表 | ip-adapter.bin | 适配器文件路径 | IP适配器文件路径 | 选择ip-adapter.bin |
| control_net_name | control_net_name | 文件列表 | InstantID控制网络 | 控制网络文件名 | ControlNet模型名称 | 选择InstantID的ControlNet |
| face_embed | face_embed | FACE_EMBED | 来自FaceEmbed | 人脸特征 | 人脸嵌入 | 连接FaceEmbed输出 |
| control_image | control_image | IMAGE | 控制图像 | 脸部姿势控制图 | 控制图像 | 连接脸部关键点图像 |
| adapter_strength | adapter_strength | 0-10 | 0.5 | 适配器强度 | 适配器应用强度 | 0.3-0.8较合适 |
| control_net_strength | control_net_strength | 0-10 | 0.7 | 控制网络强度 | ControlNet强度 | 0.5-1.0较合适 |
| positive | positive | CONDITIONING | 正面提示词 | 想要的效果 | 正向条件 | 连接正面提示词 |
| negative | negative | CONDITIONING | 负面提示词 | 不想要的效果 | 负向条件 | 连接负面提示词 |
3.8 PreprocessImage 节点 - 图像预处理器
这个节点就像是"图片裁剪师",能把图片中需要换脸的部分切出来并调整大小。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | IMAGE | 原始图片 | 要处理的图片 | 输入图像 | 连接包含人脸的图片 |
| mask | mask | MASK | 遮罩 | 标记要换脸区域的黑白图 | 遮罩图像 | 用画笔工具画出要换脸的区域 |
| width | width | 整数 | 1024 | 处理后图片的宽度 | 输出图像宽度 | SDXL建议用1024 |
| height | height | 整数 | 1024 | 处理后图片的高度 | 输出图像高度 | SDXL建议用1024 |
| resize_mode | resize_mode | 选项 | auto | 调整大小的方式 | 缩放模式 | auto会自动计算最佳尺寸 |
| pad | pad | 整数 | 100 | 向外扩展多少像素,给换脸留更多空间 | 填充像素数 | 100-200像素较合适 |
| insightface | insightface | INSIGHTFACE_APP | 可选 | 人脸识别器,用来生成控制图 | InsightFace应用实例 | 连接LoadInsightface节点 |
3.9 PreprocessImageAdvanced 节点 - 高级图像预处理器
这个节点就像是"专业图片裁剪师",提供更精细的控制选项。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | IMAGE | 原始图片 | 要处理的图片 | 输入图像 | 连接包含人脸的图片 |
| mask | mask | MASK | 遮罩 | 标记要换脸区域的黑白图 | 遮罩图像 | 用画笔工具画出要换脸的区域 |
| width | width | 整数 | 1024 | 处理后图片的宽度 | 输出图像宽度 | SDXL建议用1024 |
| height | height | 整数 | 1024 | 处理后图片的高度 | 输出图像高度 | SDXL建议用1024 |
| resize_mode | resize_mode | 选项 | auto | 调整大小的方式 | 缩放模式 | auto/free/scale by width/scale by height |
| upscale_method | upscale_method | 选项 | bilinear | 放大图片的算法 | 上采样方法 | bilinear质量较好 |
| pad_top | pad_top | 整数 | 100 | 向上扩展多少像素 | 顶部填充 | 根据需要调整 |
| pad_right | pad_right | 整数 | 100 | 向右扩展多少像素 | 右侧填充 | 根据需要调整 |
| pad_bottom | pad_bottom | 整数 | 100 | 向下扩展多少像素 | 底部填充 | 根据需要调整 |
| pad_left | pad_left | 整数 | 100 | 向左扩展多少像素 | 左侧填充 | 根据需要调整 |
| insightface | insightface | INSIGHTFACE_APP | 可选 | 人脸识别器 | InsightFace应用实例 | 连接LoadInsightface节点 |
3.10 AngleFromFace 节点 - 人脸角度检测器
这个节点就像是"量角器",能测量人脸需要旋转多少度才能摆正。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| insightface | insightface | INSIGHTFACE_APP | 来自LoadInsightface | 人脸识别器 | InsightFace应用实例 | 连接LoadInsightface节点 |
| image | image | IMAGE | 包含人脸的图片 | 要检测角度的图片 | 输入图像 | 连接人脸图片 |
| mask | mask | MASK | 遮罩 | 标记人脸区域的遮罩 | 遮罩图像 | 画出人脸区域 |
| rotate_mode | rotate_mode | 选项 | any | 旋转模式:none不旋转/loseless只转90度倍数/any任意角度 | 旋转模式 | any能得到最精确角度 |
| pad_top | pad_top | 整数 | 100 | 向上扩展搜索区域 | 顶部填充 | 100像素通常够用 |
| pad_right | pad_right | 整数 | 100 | 向右扩展搜索区域 | 右侧填充 | 100像素通常够用 |
| pad_bottom | pad_bottom | 整数 | 100 | 向下扩展搜索区域 | 底部填充 | 100像素通常够用 |
| pad_left | pad_left | 整数 | 100 | 向左扩展搜索区域 | 左侧填充 | 100像素通常够用 |
3.11 AngleFromKps 节点 - 关键点角度计算器
这个节点就像是"数学计算器",根据脸部关键点计算需要旋转的角度。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| kps_data | kps_data | KPS_DATA | 关键点数据 | 脸部关键点的位置信息 | 关键点数据 | 连接包含关键点的节点 |
| rotate_mode | rotate_mode | 选项 | any | 旋转模式选择 | 旋转模式 | any/loseless/none |
3.12 RotateImage 节点 - 图像旋转器
这个节点就像是"图片转盘",能把图片按指定角度旋转。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | IMAGE | 要旋转的图片 | 输入图像 | 输入图像 | 连接图片节点 |
| angle | angle | 浮点数 | 0.0 | 旋转角度,正数顺时针,负数逆时针 | 旋转角度 | 从角度检测节点获取 |
| counter_clockwise | counter_clockwise | 布尔值 | True | 是否逆时针旋转 | 旋转方向 | True表示逆时针 |
3.13 ComposeRotated 节点 - 旋转合成器
这个节点就像是"图片拼接器",把旋转后的图片重新拼回原来的尺寸。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| original_image | original_image | IMAGE | 原始图片 | 旋转前的图片 | 原始图像 | 连接原始图片 |
| rotated_image | rotated_image | IMAGE | 旋转后图片 | 旋转处理后的图片 | 旋转后图像 | 连接旋转后的图片 |
3.14 KpsDraw 节点 - 关键点绘制器
这个节点就像是"脸部定位器",让你手动标记眼睛、鼻子、嘴巴的位置。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| width | width | 整数 | 1024 | 画布宽度 | 图像宽度 | 根据目标图片设置 |
| height | height | 整数 | 1024 | 画布高度 | 图像高度 | 根据目标图片设置 |
| kps | kps | HIDDEN_STRING_JSON | JSON数据 | 关键点位置数据,通过界面操作设置 | 关键点JSON数据 | 点击"draw kps"按钮手动标记 |
| image_reference | image_reference | IMAGE | 可选 | 参考图片,帮助你更准确地标记位置 | 参考图像 | 连接要换脸的目标图片 |
3.15 Kps3dFromImage 节点 - 3D关键点提取器
这个节点就像是"3D脸部扫描仪",能从照片中提取立体的脸部关键点。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| width | width | 整数 | 1024 | 输出图像宽度 | 图像宽度 | 根据需要设置 |
| height | height | 整数 | 1024 | 输出图像高度 | 图像高度 | 根据需要设置 |
| kps | kps | HIDDEN_STRING_JSON | JSON数据 | 3D关键点数据 | 3D关键点JSON数据 | 点击按钮自动提取 |
| image | image | IMAGE | 可选 | 要提取关键点的人脸图片 | 输入图像 | 连接包含清晰人脸的图片 |
3.16 KpsMaker 节点 - 关键点图像生成器
这个节点就像是"连线画家",把关键点连成线条图,用来控制脸部姿势。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| kps_data | kps_data | KPS_DATA | 关键点数据 | 脸部关键点位置信息 | 关键点数据 | 连接关键点数据节点 |
3.17 Kps2dRandomizer 节点 - 2D关键点随机器
这个节点就像是"随机变化器",能让脸部关键点产生随机变化,增加多样性。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| kps_data | kps_data | KPS_DATA | 关键点数据 | 要随机化的关键点 | 关键点数据 | 连接关键点数据 |
| seed | seed | 整数 | 0 | 随机种子,相同种子产生相同结果 | 随机种子 | 改变数值获得不同效果 |
| angle_min | angle_min | 整数 | 0 | 最小旋转角度 | 最小角度 | -30到30度较合适 |
| angle_max | angle_max | 整数 | 0 | 最大旋转角度 | 最大角度 | -30到30度较合适 |
| scale_min | scale_min | 浮点数 | 1 | 最小缩放比例 | 最小缩放 | 0.8-1.2较合适 |
| scale_max | scale_max | 浮点数 | 1 | 最大缩放比例 | 最大缩放 | 0.8-1.2较合适 |
| translate_x | translate_x | 整数 | 0 | X轴随机移动范围 | X轴平移 | 50-200像素 |
| translate_y | translate_y | 整数 | 0 | Y轴随机移动范围 | Y轴平移 | 50-200像素 |
| border | border | 整数 | 0 | 边界限制,防止关键点跑出图片 | 边界阈值 | 50-100像素 |
3.18 Kps3dRandomizer 节点 - 3D关键点随机器
这个节点就像是"3D魔方",能让脸部在三个方向上随机旋转。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| kps_data_3d | kps_data_3d | KPS_DATA_3D | 3D关键点数据 | 三维关键点信息 | 3D关键点数据 | 连接3D关键点节点 |
| seed | seed | 整数 | 0 | 随机种子 | 随机种子 | 改变获得不同效果 |
| rotate_x | rotate_x | 整数 | 0 | X轴旋转范围(点头摇头) | X轴旋转 | -30到30度 |
| rotate_y | rotate_y | 整数 | 0 | Y轴旋转范围(左右转头) | Y轴旋转 | -30到30度 |
| rotate_z | rotate_z | 整数 | 0 | Z轴旋转范围(歪头) | Z轴旋转 | -15到15度 |
3.19 Kps2dScaleBy 节点 - 关键点按比例缩放器
这个节点就像是"放大镜",能按比例放大或缩小关键点。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| kps_data | kps_data | KPS_DATA | 关键点数据 | 要缩放的关键点 | 关键点数据 | 连接关键点数据 |
| scale | scale | 浮点数 | 1 | 缩放比例,1表示不变,2表示放大一倍 | 缩放因子 | 0.5-2.0范围内 |
3.20 Kps2dScale 节点 - 关键点尺寸调整器
这个节点就像是"尺寸调节器",能把关键点调整到指定的图片尺寸。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| kps_data | kps_data | KPS_DATA | 关键点数据 | 要调整的关键点 | 关键点数据 | 连接关键点数据 |
| width | width | 整数 | 1024 | 目标宽度 | 目标图像宽度 | 根据目标图片设置 |
| height | height | 整数 | 1024 | 目标高度 | 目标图像高度 | 根据目标图片设置 |
3.21 Kps2dRotate 节点 - 关键点旋转器
这个节点就像是"旋转台",能让关键点按指定角度旋转。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| kps_data | kps_data | KPS_DATA | 关键点数据 | 要旋转的关键点 | 关键点数据 | 连接关键点数据 |
| angle | angle | 浮点数 | 0.0 | 旋转角度 | 旋转角度 | -360到360度 |
| counter_clockwise | counter_clockwise | 布尔值 | True | 是否逆时针旋转 | 旋转方向 | True表示逆时针 |
3.22 Kps2dCrop 节点 - 关键点裁剪器
这个节点就像是"裁剪刀",能把关键点裁剪到指定区域。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| kps_data | kps_data | KPS_DATA | 关键点数据 | 要裁剪的关键点 | 关键点数据 | 连接关键点数据 |
| x | x | 整数 | 0 | 裁剪区域左上角X坐标 | X坐标 | 根据需要设置 |
| y | y | 整数 | 0 | 裁剪区域左上角Y坐标 | Y坐标 | 根据需要设置 |
| width | width | 整数 | 1024 | 裁剪区域宽度 | 裁剪宽度 | 根据需要设置 |
| height | height | 整数 | 1024 | 裁剪区域高度 | 裁剪高度 | 根据需要设置 |
3.23 MaskFromKps 节点 - 关键点遮罩生成器
这个节点就像是"自动画笔",能根据关键点位置自动生成遮罩。
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| kps_data | kps_data | KPS_DATA | 关键点数据 | 用来生成遮罩的关键点 | 关键点数据 | 连接关键点数据 |
| grow_by | grow_by | 整数 | 4 | 遮罩扩展倍数,数值越大遮罩越大 | 扩展因子 | 3-6较合适 |
4. 使用技巧和建议
4.1 基础换脸流程
- 准备素材:一张要换脸的目标图片,一张提供脸部特征的参考图片
- 画遮罩:在目标图片上画出要换脸的区域
- 连接节点:按照simple.json工作流连接各个节点
- 调整参数:适配器强度建议0.5-0.8,控制网络强度建议0.7-1.0
4.2 提高效果的技巧
- 遮罩要准确:遮罩范围要包含完整的脸部,但不要过大
- 参考图片要清晰:人脸要正面、清晰、光线充足
- 适当的填充:PreprocessImage的pad参数建议100-200像素
- 多次尝试:不同的strength组合会产生不同效果
4.3 解决常见问题
- "No face detected"错误:扩大遮罩范围或增加pad参数
- 换脸效果不明显:增加adapter_strength参数
- 脸部变形:降低strength参数,检查关键点位置
- 颜色不匹配:在提示词中添加肤色、光线描述
5. 常见问题解答
Q: 为什么提示"No face detected"?
A: 这通常是因为遮罩太小或者人脸角度太偏。试试画大一点的遮罩,或者增加pad参数。
Q: 换脸效果不自然怎么办?
A: 降低strength参数,从0.3开始逐渐增加。同时检查关键点是否准确对应眼睛、鼻子、嘴巴位置。
Q: 可以同时换多张脸吗?
A: 可以!使用FaceEmbed节点的face_embeds参数连接多个人脸,或者参考prompts2img_2faces_enhancement.json工作流。
Q: 生成的图片分辨率太低?
A: 确保使用SDXL模型,PreprocessImage的width和height设置为1024或更高。
Q: 关键点怎么手动调整?
A: 使用KpsDraw节点,点击"draw kps"按钮,在弹出的界面中拖拽关键点到正确位置。
6. 进阶应用
6.1 文字生成人像
使用promp2image.json工作流,你可以输入"一个戴眼镜的男人坐在咖啡厅里"这样的描述,AI就会生成带有指定人脸的图片。
6.2 批量处理
结合ComfyUI的批处理功能,可以一次性处理多张图片,实现批量换脸。
6.3 动画制作
通过调整关键点位置和角度,可以制作简单的人脸动画效果。
6.4 风格转换
结合LoRA和其他ControlNet,可以在换脸的同时改变艺术风格,比如把真人脸换到动漫角色上。