CharacterFaceSwap 插件保姆级教程
1. 插件简介
插件地址: https://github.com/ArtBot2023/CharacterFaceSwap
这个插件就像一个超级厉害的"换脸神器"!它专门用来把你喜欢的动漫角色、游戏人物或者任何虚拟角色的脸,完美地换到真人照片上。想象一下,你可以把自己变成你最爱的动漫角色,或者让朋友的照片变成游戏里的英雄!
能带来什么效果:
- 把真人照片的脸换成动漫角色的脸
- 保持原照片的姿势和背景不变
- 换脸效果自然,没有明显的拼接痕迹
- 支持各种风格:写实、动漫、游戏角色等
2. 如何安装
方法一:使用 ComfyUI Manager(推荐)
- 打开你的 ComfyUI
- 找到 ComfyUI Manager(管理器)
- 搜索 "Character Face Swap"
- 点击安装就完成了!
方法二:手动安装
- 打开终端或命令行
- 进入你的 ComfyUI 安装目录下的 custom_nodes 文件夹
- 运行以下命令:
git clone https://github.com/ArtBot2023/CharacterFaceSwap.git
cd CharacterFaceSwap
python install.py
注意: 你还需要下载 ControlNet 的 ip2p 模型,放到 ComfyUI/models/controlnet 文件夹里。
3. 节点详细解析
3.1 Generation Parameter Input 节点(生成参数输入器)
这个节点就像一个"设置面板",用来调整 AI 生成图片时的各种参数。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| seed | seed | 0-18446744073709551615 | 随机或固定值 | 就像抽奖的号码,同样的号码会生成同样的图片 | 随机种子,控制生成结果的随机性 | 想要重复生成同一张图就用相同数字,想要不同效果就换数字 |
| image_width | image_width | 0-1024,步长8 | 512 | 生成图片的宽度,就像调整画布大小 | 输出图像的像素宽度 | 想要宽一点的图就调大,比如768 |
| image_height | image_height | 0-1024,步长8 | 512 | 生成图片的高度,就像调整画布大小 | 输出图像的像素高度 | 想要高一点的图就调大,比如768 |
| steps | steps | 0-200 | 20 | AI 思考的次数,次数越多越精细但越慢 | 扩散模型的采样步数 | 质量要求高就用30-50,快速预览用10-20 |
| cfg | cfg | 0.0-30.0,步长0.5 | 7.0 | 听话程度,数值越高越严格按照你的描述生成 | 分类器自由引导强度 | 想要更贴近描述就调到8-12,太高会过度 |
| sampler_name | sampler_name | 多种采样器选择 | dpmpp_2m | 就像不同的画笔,每种有不同的绘画风格 | 扩散采样算法类型 | dpmpp_2m 质量好,euler 速度快 |
| scheduler | scheduler | 多种调度器选择 | karras | 控制 AI 每一步怎么画,就像绘画的节奏 | 噪声调度策略 | karras 效果稳定,normal 也不错 |
| denoise | denoise | 0-1 | 1 | 去噪强度,1是完全重新画,0是几乎不改变 | 去噪强度系数 | 想大改就用0.8-1.0,微调就用0.3-0.6 |
3.2 Generation Parameter Output 节点(生成参数输出器)
这个节点就像一个"参数分发器",把上面设置好的参数分别输出给其他节点使用。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| parameters | parameters | PARAMETERS类型 | 来自输入节点 | 接收打包好的参数包,就像收快递 | 参数字典对象 | 连接到 Parameter Input 节点的输出 |
3.3 Load RetinaFace 节点(加载人脸检测模型)
这个节点就像一个"人脸识别专家",专门用来在照片里找到人脸的位置。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 无输入参数 | 无 | 无 | 无 | 这个节点不需要设置,直接用就行 | 自动加载预训练的人脸检测模型 | 直接放到工作流里,会自动下载和加载模型 |
3.4 Crop Face 节点(裁剪人脸)
这个节点就像一个"智能剪刀",能自动找到照片里的人脸并把它剪下来。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | RETINAFACE类型 | 来自Load RetinaFace | 人脸检测的"眼睛",用来找人脸 | 人脸检测模型实例 | 连接Load RetinaFace节点的输出 |
| image | image | IMAGE类型 | 输入图片 | 要处理的照片,就像给剪刀一张纸 | 输入的图像张量 | 连接你要处理的图片节点 |
| confidence | confidence | 0-1 | 0.8 | 确信度,越高越严格,只认很明显的人脸 | 人脸检测的置信度阈值 | 检测不到人脸就调低到0.5,误检太多就调高到0.9 |
| margin | margin | 整数 | 32 | 裁剪时多留的边缘,就像剪纸时多留点边 | 人脸边界框的扩展像素数 | 想要更多背景就调大到50,只要脸部就调小到10 |
3.5 Uncrop Face 节点(还原人脸)
这个节点就像一个"拼图高手",把处理好的人脸贴回到原来的照片上。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | IMAGE类型 | 原始图片 | 原来的完整照片,就像拼图的底板 | 原始完整图像 | 连接最开始的原图 |
| bbox | bbox | BBOX类型 | 来自Crop Face | 人脸在原图中的位置信息,就像地址 | 边界框坐标信息 | 连接Crop Face节点的bbox输出 |
| face | face | IMAGE类型 | 处理后的人脸 | 换好的新人脸,就像新的拼图块 | 处理后的人脸图像 | 连接处理完成的人脸图片 |
| mask | mask | MASK类型 | 人脸遮罩 | 告诉电脑哪里是脸,就像模板 | 人脸区域的二值掩码 | 连接人脸分割节点的输出 |
3.6 Load BiseNet 节点(加载人脸分割模型)
这个节点就像一个"人脸解剖专家",能把人脸的各个部位(眼睛、鼻子、嘴巴等)精确地分开。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 无输入参数 | 无 | 无 | 无 | 这个节点不需要设置,直接用就行 | 自动加载预训练的人脸分割模型 | 直接放到工作流里,会自动下载和加载模型 |
3.7 Segment Face 节点(分割人脸)
这个节点就像一个"精密手术刀",能把人脸的每个部位都精确地标记出来。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | BISENET类型 | 来自Load BiseNet | 人脸分割的"手术刀",用来切分人脸 | 人脸分割模型实例 | 连接Load BiseNet节点的输出 |
| image | image | IMAGE类型 | 人脸图片 | 要分割的人脸照片 | 输入的人脸图像 | 连接裁剪出来的人脸图片 |
| expand | expand | 整数,最小0 | 0 | 扩展范围,让分割区域稍微大一点 | 形态学膨胀操作的核大小 | 想要更大的脸部区域就调到5-10 |
| include_hair | include_hair | enable/disable | disable | 是否包含头发,就像选择要不要连头发一起换 | 是否在分割中包含头发区域 | 想要连头发一起换就选enable |
| include_neck | include_neck | enable/disable | disable | 是否包含脖子,就像选择要不要连脖子一起换 | 是否在分割中包含颈部区域 | 想要连脖子一起换就选enable |
3.8 Image Full BBox 节点(获取图片完整边界)
这个节点就像一个"测量尺",告诉电脑整张图片的大小范围。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| image | image | IMAGE类型 | 任意图片 | 要测量的图片,就像要量尺寸的物品 | 输入图像 | 连接任何你想知道尺寸的图片 |
3.9 Color Blend 节点(颜色混合)
这个节点就像一个"调色师",能把两张图片的颜色巧妙地混合在一起,让换脸效果更自然。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| blend_image | blend_image | IMAGE类型 | 新人脸图片 | 要混合进去的图片,就像调色的颜料 | 混合源图像 | 连接生成的新人脸 |
| base_image | base_image | IMAGE类型 | 原人脸图片 | 底色图片,就像画布的底色 | 基础图像 | 连接原来的人脸 |
| mode | mode | Hue/Saturation/Color/Luminosity | Color | 混合方式,就像不同的调色方法 | 颜色混合模式 | Color模式保持亮度,Hue只改色调 |
3.10 Exclude Facial Feature 节点(排除面部特征)
这个节点就像一个"橡皮擦",能把人脸上不想要的部分擦掉,比如只保留头发。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| face | face | IMAGE类型 | 人脸图片 | 要处理的人脸,就像要修改的照片 | 输入的人脸图像 | 连接需要处理的人脸图片 |
| model | model | BISENET类型 | 来自Load BiseNet | 识别面部特征的"眼睛" | 人脸分割模型 | 连接Load BiseNet节点 |
| image | image | IMAGE类型 | 原图片 | 原始图片,用来替换被擦掉的部分 | 原始图像用于替换 | 连接原始的完整图片 |
| expand | expand | 整数,最小0 | 0 | 扩展擦除范围,让边缘更自然 | 形态学膨胀核大小 | 想要更大的擦除范围就调到3-8 |
3.11 Mask Contour 节点(遮罩轮廓)
这个节点就像一个"描边笔",能找到遮罩的边缘线条,用来做更精细的处理。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| mask | mask | MASK类型 | 任意遮罩 | 要找边缘的遮罩,就像要描边的图形 | 输入的二值掩码 | 连接任何遮罩输出 |
4. 使用技巧和建议
4.1 基础使用流程
- 准备素材:一张要换脸的照片 + 目标角色的参考图
- 检测人脸:Load RetinaFace → Crop Face
- 生成新脸:使用 AI 模型生成目标角色的脸
- 精细处理:Load BiseNet → Segment Face 进行精确分割
- 颜色调整:Color Blend 让颜色更自然
- 最终合成:Uncrop Face 把新脸贴回原图
4.2 参数调优建议
- confidence 太低:会检测到很多不是人脸的区域
- confidence 太高:可能检测不到侧脸或模糊的脸
- margin 太小:裁剪的脸可能不完整
- margin 太大:会包含太多背景,影响处理效果
- expand 参数:用来让分割边缘更自然,避免硬边
4.3 常见组合用法
- 基础换脸:RetinaFace + Crop + 生成 + Uncrop
- 精细换脸:加上 BiseNet + Segment Face
- 颜色匹配:再加上 Color Blend
- 细节优化:使用 Exclude Facial Feature 保留原图细节
5. 常见问题解答
Q1: 检测不到人脸怎么办?
A: 降低 confidence 参数到 0.5 或更低,确保照片中的人脸清晰可见。
Q2: 换脸后颜色不匹配怎么办?
A: 使用 Color Blend 节点,选择 "Color" 模式来匹配颜色。
Q3: 边缘有明显的拼接痕迹?
A: 增加 margin 参数,使用 Segment Face 进行精确分割,调整 expand 参数让边缘更自然。
Q4: 生成的脸部不够像目标角色?
A: 这需要在 AI 生成部分使用更好的提示词和模型,不是插件本身的问题。
Q5: 处理速度很慢?
A: 降低图片分辨率,减少 steps 参数,使用更快的采样器如 "euler"。
6. 高级技巧
6.1 批量处理
- 可以使用相同的参数设置处理多张照片
- Generation Parameter Input/Output 节点方便参数复用
6.2 精细控制
- 使用 include_hair 和 include_neck 参数控制换脸范围
- Exclude Facial Feature 可以保留原图的某些特征
6.3 后期优化
- 使用 Mask Contour 找到精确边缘进行手动调整
- Color Blend 的不同模式适合不同的颜色匹配需求
7. 总结
CharacterFaceSwap 插件提供了完整的人脸替换工作流,从人脸检测到最终合成,每个步骤都有对应的节点。通过合理组合这11个节点,你可以实现高质量的角色换脸效果。记住,好的效果需要耐心调参和多次尝试!
最重要的提醒:请合理使用这个工具,尊重他人肖像权,不要用于不当用途。