EcomID vs. Flux PuLID vs. InstantID -> 100%相似度人脸迁移工作流 V2
大家好,今天我们将对比三种AI换脸技术:基于Flux的PuLID、基于SDXL的InstantID以及最近推出的基于SDXL的EcomID。
你可以在这里免费下载这个工作流:https://www.liblib.art/modelinfo/67e6949d10f844c3bc35c15add791aa1
这三种技术各有优势,但都还无法达到100%的人脸相似度。为了追求更真实的效果,我之前开发了一个能够达到接近100%相似度的工作流,并进行了多次优化和增强,特别加入了高清修复的部分。接下来,我将详细讲解每个节点组的功能,帮助大家了解实现高相似度人脸的原理。
本视频对应的视频教程:
https://www.bilibili.com/video/BV1E5DRYSEEq/
工作流概览
首先,我们来看一下这次用来对比三种换脸技术的工作流。大家可以在本文末尾找到下载链接。
基础设置
工作流左边是一些基础设置区域,主要用于:
- 设置图片尺寸
- 选择模型(checkpoint)
- 输入提示词等参数
这些设置通过“Bus Node(节点总线)”和“Anything Everywhere(全局输入)”节点传递到右侧的各个换脸节点组,从而实现参数的集中管理。这种方式可以减少节点之间的连接线,使工作流更加简洁高效。
例如,EcomID和Flux PuLID都需要用到PuLID的Eva Clip模块,这里就通过“Anything Everywhere”节点统一传递,免去了重复连接的麻烦。同时,加载InstantID的节点也通过“Anything Everywhere”传递到右侧供EcomID和InstantID共享。
此外,“Seed Everywhere(全局种子)”节点确保了所有换脸节点组使用相同的种子,以保证对比结果的公平性。
三种换脸技术的节点组
在右侧,我们可以看到三个换脸节点组:
- EcomID – 三个节点组中最复杂的,需要同时加载InstantID和PuLID模块,具有独特的EcomID ControlNet模型。
- InstantID – 相对简单的结构,适合快速换脸。
- PuLID – 基于Flux的实现,结构也相对简单。
每个节点组生成的图片会被拼接在一起,与原始人脸参考图进行对比。我通过“Image Caption(图像字幕)”节点为每张生成图像添加了字幕,注意需要填写ttf格式字体的路径,否则会报错。
效果对比
在对比了多个示例后,我认为InstantID在大部分情况下的相似度最高。不过,具体效果因人而异,有时PuLID或EcomID的效果也很接近原图。
总体而言,换脸技术的优势在于:
- 相较于训练LoRA更加快速便捷
- 可以根据多角度照片生成对应角度的人脸
但缺点是生成的人脸和真实人脸的相似度仍有不足。为此,我开发了一个号称能够实现100%相似度的工作流。经过用户反馈和优化调整,我们现在来深入讲解这个工作流的细节。
完美人脸匹配的逐步工作流解析
现在,我们来详细解读我开发的优化工作流的各个部分,以提高人脸相似度并解决常见问题,如脖颈处的接缝和其他不必要的瑕疵。
1. 初始设置与遮罩
- 上传图片:首先上传参考图像,并填写提示词。
- 人脸分离:使用“PersonMaskUltra(人像遮罩)”节点将人脸部分隔离。默认情况下只遮罩人脸,但如果需要包括头发或其他元素,可以启用额外选项。
- 遮罩细化:打开 Mask Editor(遮罩编辑器),进一步优化人脸周围的遮罩区域。尽量在脸部周围画出较大的区域,避免在 SDXL 填充背景时出现接缝。 提示:避免在遮罩中包含背景的像素。仅保留人脸区域有助于保持细节。
- 遮罩平滑:使用“Mask Smooth(遮罩平滑)”节点来柔化遮罩边缘,以便 SDXL 能够更顺畅地将人脸与背景融合。
2. 使用 SDXL 进行基础构图
- 设置分辨率:在“SDXL Resolution(分辨率)”节点中将画布尺寸设置为 768×1344,适用于全身肖像。后续如有需要可以裁剪。
- 调整人脸位置:使用“ImageBlend(图像混合)”节点控制人脸在图像中的位置、大小和角度。调整 X 和 Y 百分比、缩放比例以及旋转角度,使人脸自然地融入画面。
- 运行 SDXL 进行初步构图:使用 SDXL Lightning(闪电)模型运行工作流,生成基础构图。此时 SDXL 会填充黑色背景区域。 注意:在此阶段可能会出现接缝或其他不完美之处。别担心,我们会在后续步骤中进行修复。
3. 处理常见瑕疵并增强细节
使用 Flux 修复接缝和瑕疵
- 扩展脖颈区域的遮罩:启动右侧的节点组,将遮罩稍微扩展到脖颈区域。调整“expand(扩展)”和“blur_radius(模糊半径)”的设置,以确保脖子周围的接缝包含在内,而不会影响到脸部。
- 使用 Flux 模型清理接缝:使用基于 Flux 的 PixelWave(像素波)模型,并配合 Turbo LoRA(加速 LoRA),这样可以在 8 步内高效处理图像,修复脖颈接缝和其他瑕疵。
额外重绘以进行进一步修复
- 进行第二次重绘:激活另一组节点,进行额外的重绘操作。这一步可以修复残留的瑕疵,比如手部或衣物上的细节失真问题。
- 恢复面部细节:重绘之后,面部细节可能会显得略微模糊。使用专门的节点组恢复面部的精细细节,特别是眼睛、嘴部和皮肤纹理的部分。
4. 最终处理与放大
手部细节优化
- 手部修复:使用专门的节点组增强手部细节。此步骤可以确保手部细节的真实感,甚至可以清晰表现血管等小细节。
高清放大以获得高分辨率效果
- 两阶段放大:为了实现最终的高清效果,先使用 4 倍放大模型处理人脸,然后再缩小一半,从而实现 2 倍的分辨率提升。此方法可以在保持面部特征细节的同时提高清晰度。
- 使用 LoRA 增强纹理和细节:添加一个 LoRA 模型来增强皮肤纹理和清晰度。
- 设置采样器调度器:确保采样器的调度器设置为“exponential(指数)”,以便在放大过程中保持面部特征的一致性。
5. 对比结果
最后,将生成的结果与原始参考图像进行对比。此工作流应该能够生成与原始人脸高度匹配的图像,具备清晰的细节和精致的纹理。如果需要进一步微调,可以考虑在 Photoshop(PS)中进行最后的修饰。
⚡️发电获取此独家工作流:
https://afdian.com/p/e9322ec49d5d11efa28c52540025c377
总结与建议
通过这个高相似度换脸工作流,我们可以实现非常逼真的AI人脸替换效果。脸部、手部以及其他细节都可以达到理想的精细度。如果细节还不够完美,还可以在PS中进行进一步微调和融合。欢迎大家提出反馈和建议,我会根据大家的需求持续优化迭代这个工作流。
感谢大家的关注,期待下次再见!