ComfyUI_FaceShaper 插件完全教程
1. 插件简介
插件原地址: https://github.com/fssorc/ComfyUI_FaceShaper
这个插件就像一个专业的"脸型整容师",能够在换脸之前先调整脸型,让换脸效果更自然!想象一下,你要把一个圆脸的人换成瓜子脸的人,如果直接换脸,五官是换了但脸型还是圆的,看起来就很奇怪。这个插件就像一个会"液化"的魔法师,能先把脸型调整成目标的样子,再进行换脸。
主要功能:
- 脸型匹配调整,就像用美图秀秀的液化功能但更智能
- 支持多种脸部检测方式(就像有好几种不同的"眼镜"来看脸)
- 自动裁剪和对齐脸部区域
- 生成脸部遮罩,保护不需要处理的区域
- 显示脸部关键点,让你看到"机器眼中的脸"
能带来什么效果:
- 换脸前先调整脸型,让换脸结果更自然
- 解决大脸换小脸、圆脸换瓜子脸等问题
- 提供精确的脸部定位和分析
- 让AI换脸工具的效果大幅提升
2. 如何安装
方法一:手动下载安装
- 打开你的 ComfyUI 安装文件夹
- 找到
custom_nodes文件夹 - 在这个文件夹里打开命令行工具
- 输入命令:
git clone https://github.com/fssorc/ComfyUI_FaceShaper.git - 进入插件文件夹:
cd ComfyUI_FaceShaper - 安装依赖:
pip install -r requirements.txt - 重启 ComfyUI
方法二:ComfyUI Manager 安装
- 在 ComfyUI 界面找到 Manager 按钮
- 搜索 "FaceShaper"
- 点击安装
- 重启 ComfyUI
必须下载的模型文件
重要: 这些文件必须下载,否则插件无法工作!
- 从 https://huggingface.co/Kijai/LivePortrait_safetensors/tree/main 下载:
landmark.onnx放到models/liveportrait/文件夹landmark_model.pth放到models/liveportrait/文件夹
可选的检测工具(三选一或全装)
选项1:InsightFace(推荐,但仅限非商业用途)
pip install insightface
下载 https://github.com/deepinsight/insightface/releases/download/v0.7/buffalo_l.zip
解压到 ComfyUI/models/insightface/buffalo_l/
选项2:MediaPipe(免费商用)
pip install mediapipe
选项3:Face-Alignment(免费商用)
会自动下载需要的文件到系统缓存目录
3. 节点详细解析
3.1 FaceShaperModels 节点 - 老式脸部检测器(已过时)
这个节点就像一个老式的脸部识别器,只能用DLib库来检测脸部。现在基本不用了,但为了兼容老工作流还保留着。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 检测类型 | DetectType | 数字选择 | 68 | 就像选择用多少个点来描述一张脸,点越多越精确但速度越慢 | 选择面部关键点检测的数量 | 68个点适合大多数情况,81个点更精确,5个点最快 |
3.2 FaceShaper 节点 - 老式脸型匹配器(已过时)
这个节点是第一代的脸型匹配工具,就像一个会拉伸橡皮泥的机器,能把一张脸拉成另一张脸的形状。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 分析模型 | analysis_models | 模型对象 | - | 就像选择哪个"眼镜"来看脸,不同的模型有不同的识别能力 | 用于面部分析的预训练模型 | 连接FaceShaperModels节点的输出 |
| 源图片 | imageFrom | 图片 | - | 要被改变脸型的原始照片,就像整容前的照片 | 需要进行脸型调整的源图像 | 连接Load Image节点 |
| 目标图片 | imageTo | 图片 | - | 脸型的参考照片,就像整容的目标样子 | 作为脸型参考的目标图像 | 连接另一个Load Image节点 |
| 关键点类型 | landmarkType | 选择 | ALL | 就像选择用脸上的哪些点来做参考,ALL是用所有点,OUTLINE只用轮廓 | 选择用于匹配的面部关键点类型 | ALL更精确,OUTLINE更快 |
| 对齐类型 | AlignType | 选择 | Landmarks | 就像选择按什么方式来拉伸脸型,Width按宽度,Height按高度,Landmarks按关键点 | 选择脸型对齐的方式 | Landmarks效果最自然 |
3.3 FaceShaperLoadInsightFaceCropper 节点 - InsightFace检测器加载器
这个节点就像一个专门的"脸部扫描仪"加载器,用来启动InsightFace这个强大的脸部识别工具。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 运行设备 | onnx_device | 选择 | CUDA | 就像选择用电脑的哪个部件来干活,CUDA用显卡最快,CPU用处理器较慢 | 选择模型运行的硬件设备 | 有显卡选CUDA,没显卡选CPU |
| 保持模型加载 | keep_model_loaded | 开关 | True | 就像选择用完工具后是收起来还是放在桌上,True是放桌上下次用更快 | 是否在内存中保持模型加载状态 | True节省加载时间,False节省内存 |
| 检测阈值 | detection_threshold | 小数 | 0.5 | 就像调节"眼镜"的敏感度,数字越小越容易发现脸,但也容易误判 | 面部检测的置信度阈值 | 0.5是平衡值,检测困难时可降到0.3 |
3.4 FaceShaperLoadMediaPipeCropper 节点 - MediaPipe检测器加载器
这个节点就像另一种"脸部扫描仪"加载器,用来启动Google的MediaPipe脸部识别工具,比InsightFace稍弱但免费商用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 关键点检测设备 | landmarkrunner_onnx_device | 选择 | CPU | 就像选择用哪个部件来找脸上的关键点,CPU在Windows上更稳定 | 关键点检测模型的运行设备 | Windows建议用CPU,Linux可用CUDA |
| 保持模型加载 | keep_model_loaded | 开关 | True | 就像选择用完工具后是否收起来,True是放桌上方便下次用 | 是否在内存中保持模型加载状态 | True提高效率,False节省内存 |
3.5 FaceAlignmentCropper 节点 - FaceAlignment检测器加载器
这个节点是第三种"脸部扫描仪"加载器,用来启动Face-Alignment工具,功能全面且免费商用。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 脸部检测器 | face_detector | 选择 | blazeface_back_camera | 就像选择用哪种"放大镜"来找脸,不同的有不同的特长 | 选择面部检测算法 | blazeface_back_camera适合大多数情况 |
| 关键点检测设备 | landmarkrunner_device | 选择 | torch_gpu | 就像选择用哪个部件来找关键点,torch_gpu用显卡最快 | 关键点检测的运行设备 | 有显卡选torch_gpu,没显卡选CPU |
| 脸部检测设备 | face_detector_device | 选择 | cuda | 就像选择用哪个部件来找脸,cuda用显卡最快 | 面部检测的运行设备 | 有显卡选cuda,没显卡选cpu |
| 脸部检测精度 | face_detector_dtype | 选择 | fp16 | 就像选择计算的精确程度,fp16速度快占用少,fp32更精确但慢 | 面部检测的数值精度 | fp16是平衡选择,fp32更精确 |
| 保持模型加载 | keep_model_loaded | 开关 | True | 就像选择用完工具后是否收起来 | 是否在内存中保持模型加载状态 | True提高效率,False节省内存 |
3.6 FaceShaperCropper 节点 - 脸部裁剪大师
这个节点就像一个会自动裁剪照片的智能剪刀,能从大照片中精确地切出脸部区域,并且摆正角度。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 裁剪器 | cropper | 裁剪器对象 | - | 就像选择用哪把"剪刀"来裁剪,不同的剪刀有不同的特长 | 面部裁剪和检测工具 | 连接上面任一检测器加载器的输出 |
| 源图片 | source_image | 图片 | - | 要被裁剪的原始照片,就像一张大合影要裁出单人照 | 需要进行面部裁剪的源图像 | 连接Load Image节点 |
| 裁剪尺寸 | dsize | 数字 | 512 | 就像选择裁剪出来的照片有多大,512是512x512像素的正方形 | 裁剪后图像的尺寸 | 512适合大多数情况,高质量可用1024 |
| 缩放比例 | scale | 小数 | 2.3 | 就像调节"取景框"的大小,数字越大包含的背景越多 | 面部区域的缩放倍数 | 2.3包含完整脸部,可调到1.8-3.0 |
| 水平偏移 | vx_ratio | 小数 | 0.0 | 就像调节"取景框"左右位置,负数向左,正数向右 | 水平方向的偏移比例 | 0.0居中,可调-0.5到0.5 |
| 垂直偏移 | vy_ratio | 小数 | -0.125 | 就像调节"取景框"上下位置,负数向上,正数向下 | 垂直方向的偏移比例 | -0.125稍微向上,可调-0.5到0.5 |
| 脸部索引 | face_index | 数字 | 0 | 就像选择照片中的第几张脸,0是第一张,1是第二张 | 选择处理的面部索引 | 多人照片时用来选择特定的脸 |
| 脸部排序 | face_index_order | 选择 | large-small | 就像选择按什么顺序给脸编号,large-small是从大到小 | 面部检测结果的排序方式 | large-small最常用,left-right按位置 |
| 旋转对齐 | rotate | 开关 | True | 就像选择是否要把歪着的脸摆正,True会自动摆正 | 是否进行面部旋转对齐 | True让脸部更正,False保持原角度 |
3.7 FaceShaperShowLandMarks 节点 - 关键点显示器
这个节点就像一个会在脸上画点的画家,能把机器"看到"的脸部关键点显示出来,让你知道AI是怎么理解这张脸的。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 裁剪信息 | crop_info | 信息对象 | - | 就像一份"脸部档案",记录了脸在哪里、有多大等信息 | 包含面部检测和裁剪信息的数据结构 | 连接FaceShaperCropper节点的crop_info输出 |
| 关键点连线 | landmark_lines | 开关 | False | 就像选择是只画点还是把点连成线,True会画出脸部轮廓线 | 是否在关键点之间绘制连接线 | True显示脸部结构,False只显示点 |
| 写点编号 | writeIndexOnKeyPoints | 开关 | False | 就像选择是否在每个点旁边写上编号,True会显示点的序号 | 是否在关键点旁显示索引编号 | True用于调试,False更美观 |
| 字体大小 | fontSize | 小数 | 0.25 | 就像调节编号字体的大小,数字越大字越大 | 关键点编号的字体大小 | 0.25适中,可调0.1-1.0 |
| 重新缩放尺寸 | rescaleCroppedImg | 数字 | 512 | 就像选择显示图片的大小,数字越大图片越清晰但占用越多 | 裁剪图像的显示尺寸 | 512平衡,1024更清晰 |
| 裁剪图片 | croppedImg | 图片 | 可选 | 裁剪出来的脸部图片,就像单人照 | 经过裁剪的面部图像 | 连接FaceShaperCropper的cropped_image输出 |
| 源图片 | sourceImg | 图片 | 可选 | 原始的完整照片,就像大合影 | 原始的完整图像 | 连接Load Image节点 |
3.8 FaceShaperComposite 节点 - 图片合成大师
这个节点就像一个会PS的高手,能把处理过的脸部图片无缝地贴回到原始照片上,就像从来没有动过一样。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 源图片 | source_image | 图片 | - | 原始的完整照片,就像要贴回去的背景 | 作为背景的原始图像 | 连接Load Image节点 |
| 裁剪图片 | cropped_image | 图片 | - | 处理过的脸部图片,就像要贴上去的贴纸 | 经过处理的面部图像 | 连接处理后的脸部图片 |
| 裁剪信息 | crop_info | 信息对象 | - | 记录脸部位置的"地图",告诉系统贴到哪里 | 包含裁剪和变换信息的数据 | 连接FaceShaperCropper的crop_info输出 |
| 遮罩 | mask | 遮罩 | 可选 | 就像一个模板,决定哪些地方要贴哪些地方不贴 | 用于控制合成区域的遮罩 | 可连接FaceShaperFaceMask节点 |
3.9 FaceShaperMatchV2 节点 - 新版脸型匹配器
这个节点是升级版的脸型匹配工具,就像一个更智能的"液化大师",能更精确地调整脸型。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 源图片 | source_image | 图片 | - | 要被改变脸型的照片,就像整容前的照片 | 需要进行脸型调整的源图像 | 连接Load Image节点 |
| 源裁剪信息 | source_crop_info | 信息对象 | - | 源图片的脸部"档案",记录脸部信息 | 源图像的面部检测和裁剪信息 | 连接源图片的FaceShaperCropper输出 |
| 目标裁剪信息 | target_crop_info | 信息对象 | - | 目标脸型的"档案",作为参考标准 | 目标图像的面部检测和裁剪信息 | 连接目标图片的FaceShaperCropper输出 |
| 关键点类型 | landmarkType | 选择 | ALL | 选择用脸上的哪些点来做参考,ALL用所有点更精确 | 选择用于匹配的面部关键点类型 | ALL更精确,OUTLINE更快 |
| 对齐类型 | AlignType | 选择 | Landmarks | 选择按什么方式来调整脸型,Landmarks最自然 | 选择脸型对齐的方式 | Landmarks效果最好,JawLine适合大小脸差异 |
3.10 FaceShaperFaceMask 节点 - 脸部遮罩生成器
这个节点就像一个会做面具的工匠,能根据脸部轮廓自动生成遮罩,保护不需要处理的区域。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 裁剪信息 | crop_info | 信息对象 | - | 脸部的"档案"信息,用来知道脸在哪里 | 包含面部检测信息的数据结构 | 连接FaceShaperCropper的crop_info输出 |
| 遮罩尺寸 | MaskSize | 选择 | Source | 选择遮罩是按原图尺寸还是裁剪图尺寸,Source是原图大小 | 遮罩生成的尺寸基准 | Source用于合成,Crop用于单独处理 |
| 扩展大小 | grow | 数字 | 0 | 就像调节面具的大小,正数让面具变大,负数让面具变小 | 遮罩边缘的扩展或收缩像素数 | 0不变,10扩大,-10缩小 |
| 渐变扩展 | grow_tapered | 开关 | False | 选择扩展时是否要渐变效果,True会让边缘更柔和 | 扩展时是否使用渐变效果 | True边缘更自然,False边缘更锐利 |
| 模糊程度 | blur | 数字 | 13 | 就像调节面具边缘的柔和程度,数字越大边缘越模糊 | 遮罩边缘的模糊半径 | 13适中,可调1-50 |
4. 使用技巧和建议
4.1 检测工具选择建议
- InsightFace: 效果最好,但仅限非商业用途,需要显卡
- MediaPipe: 免费商用,CPU友好,Windows上建议用CPU模式
- Face-Alignment: 功能全面,免费商用,显卡加速效果好
4.2 脸型匹配技巧
- Width/Height对齐: 适合脸型比例差异不大的情况
- Landmarks对齐: 效果最自然,适合大多数情况
- JawLine对齐: 专门解决大脸换小脸的问题
4.3 参数调优建议
- 检测阈值: 检测困难时降低到0.3-0.4
- 缩放比例: 脸部被截断时增加到2.5-3.0
- 偏移调整: 脸部位置不正时微调vx_ratio和vy_ratio
4.4 工作流程建议
- V2推荐流程: 加载检测器 → 裁剪脸部 → 脸型匹配 → 换脸处理 → 合成回原图
- 简单流程: 直接用FaceShaper节点(老版本)
- 调试流程: 使用ShowLandMarks节点查看检测效果
5. 常见问题解答
Q1: 检测不到脸部怎么办?
A:
- 降低detection_threshold到0.3
- 尝试不同的检测器(InsightFace效果最好)
- 确保图片中脸部清晰可见
- 检查图片分辨率不要太低
Q2: 脸型匹配效果不好怎么办?
A:
- 尝试不同的AlignType,Landmarks通常效果最好
- 确保两张图片的脸部都能正确检测
- 调整scale参数,确保脸部完整
- 使用V2版本的MatchV2节点
Q3: 合成后有明显接缝怎么办?
A:
- 使用FaceShaperFaceMask生成更好的遮罩
- 增加遮罩的blur值让边缘更柔和
- 调整grow参数扩大遮罩范围
Q4: 显存不足怎么办?
A:
- 使用CPU模式而不是CUDA
- 降低图片分辨率
- 设置keep_model_loaded为False
- 使用MediaPipe代替InsightFace
Q5: 处理速度太慢怎么办?
A:
- 使用显卡加速(CUDA模式)
- 降低图片分辨率到512或更小
- 使用fp16精度而不是fp32
- 选择更快的检测器
Q6: 倾斜的脸处理不好怎么办?
A:
- 确保rotate参数设为True
- 使用V2版本的工作流
- 尝试不同的face_detector类型
6. 高级使用技巧
6.1 批量处理优化
- 设置keep_model_loaded为True避免重复加载
- 使用相同的检测器处理多张图片
- 合理安排显存使用,避免同时加载多个模型
6.2 质量优化
- 使用高分辨率图片(至少512x512)
- 确保脸部占图片的合适比例
- 选择合适的scale值包含完整脸部
6.3 特殊情况处理
- 多人照片: 使用face_index选择特定的脸
- 侧脸处理: 调整vx_ratio和vy_ratio参数
- 大小脸差异: 使用JawLine对齐类型
6.4 与其他节点配合
- 换脸节点: 在FaceShaper处理后使用InstantID等
- 图像增强: 合成后可使用超分辨率节点
- 批处理: 配合批处理节点处理视频帧
7. 故障排除指南
7.1 安装问题
- 依赖安装失败: 使用conda环境或虚拟环境
- 模型下载失败: 手动下载模型文件到指定目录
- 权限问题: 确保有写入models文件夹的权限
7.2 运行时错误
- CUDA错误: 检查显卡驱动和CUDA版本
- 内存不足: 降低图片分辨率或使用CPU模式
- 模型加载失败: 检查模型文件路径和完整性
7.3 效果问题
- 检测不准确: 尝试不同的检测器和参数
- 变形过度: 调整对齐类型和参数
- 合成不自然: 优化遮罩参数和模糊设置
8. 总结
ComfyUI_FaceShaper 插件是一个功能强大的脸型调整工具,特别适合:
- 需要高质量换脸效果的用户
- 处理脸型差异较大的换脸任务
- 对换脸效果有高要求的专业用户
- 需要批量处理脸部图像的场景
核心价值:
- 智能脸型匹配: 解决换脸中的脸型不匹配问题
- 多种检测方案: 适应不同的使用需求和授权要求
- 精确控制: 提供丰富的参数调节选项
- 无缝集成: 与其他ComfyUI节点完美配合
通过本教程,你应该已经掌握了:
- 10个核心节点的详细使用方法
- 不同检测工具的选择和配置
- 各种参数的调优技巧
- 常见问题的解决方案
记住,这个插件的核心就是"先调脸型,再换脸",让AI换脸的效果更加自然逼真!