市面上存在着众多琳琅满目的软件,它们虽各具特色,却也存在诸多局限性。例如,一些软件换脸效果不稳定容易出现失真或模糊现象;部分则设置了较高的收费门槛;还有些软件生成速度过慢。而现在,通过 ComfyUI 的工作流,我们不仅能够轻松实现高质量的换脸效果,还支持同时处理多张人脸,以及视频的合成处理。更为重要的是,可以根据实际需求灵活调整参数,实现定制化的工作流程。

最早期使用的是 Stable Diffusion WebUI 中的 Roop 扩展进行换脸,无需复杂的数据集或训练过程。Roop 利用生成对抗网络(GANs)来生成逼真的面部图像,包含生成器和判别器两个网络,通过对抗过程生成器学习创建逼真的面部图像。然而,Roop 的代码已经停止维护和更新,迎来了升级版的 Reactor,以及可以和 ComfyUI 工作流想搭配。
https://github.com/s0md3v/sd-webui-roop/
Reactor 在 Roop 的基础上更新换代,不仅继承了其核心换脸技术,还进行了显著的改进和优化。它提供了更高的换脸质量、更快的处理速度和更广泛的应用场景。基于深度学习算法,Reactor 充分考虑面部结构的复杂性和多样性,确保替换后的面部信息既符合目标人物的面部特征,又与原图中的背景信息保持协调。
https://github.com/Gourieff/ReActor-UI
comfyui-reactor-node 是一个基于 ReActor 的,专为 ComfyUI 设计的高效脸部交换扩展节点。它作为一个节点融入 ComfyUI 的可视化工作流中,用户在熟悉的 ComfyUI 节点编辑界面就能轻松调用 Reactor 的换脸功能。
https://github.com/Gourieff/comfyui-reactor-node
ComfyUI 换脸工作流能够处理图片、视频以及多人换脸任务,可以通过 Set Group Nodes To Never 和 Set Group Nodes To Always 来忽略或启用该组节点。我一般先启用图片换脸任务查看效果,调整参数达到满意程度后再切换到视频换脸。

在图片换脸的工作流中,需要 2 个 Load Image 节点来分别上传原图和参考人脸图片。原图是将要被替换面部的图片,而参考人脸则是希望替换上去的面部图像。然后分别连接到 ReActor 节点的 input_image 和 source_image。

接下来,添加 ReActor Fast Face Swap 节点,并设置基础参数:
inswapper_128.onnx 模型,即 InsightFace 提供的预训练模型,主要功能是实现图像中的人脸替换。resnet50、mobile0.25、YOLOv5l 和 YOLOv5n。推荐 retinaface_resnet50,其性能较好。
开源的换脸模型 inswapper_128_fp16.onnx,其中 128 表示模型的输入,而 fp16 代表模型参数使用半精度浮点数存储,有助于减少模型文件的大小。不过,这种模型换脸后的图像存在弊端,存在模糊不清的情况。

为了改善这一问题,使用 face_restore_model 进行脸部修复。有多种模型可以选择,CodeFormer、GFPGAN 和 GPEN 等等。下载模型后,放在 ComfyUI\models\facerestore_models 文件夹下。

此外,还有两个关键参数可以调整以优化脸部修复效果:
最后,添加 Preview Image 节点来预览和保存效果图,并确保所有节点正确连接,这样初步构建起图片换脸的基本工作流:

参数 faces_index 用于指定在图像中存在多个人脸时,选择使用哪个位置的脸部。脸部索引按照从左到右、从上到下的顺序排列,并从 0 开始计数。

input_faces_index 和 source_faces_index 均设为 0。input_faces_index 设为 0,source_faces_index 设为 1。
input_faces_index 为 0,1,而 source_faces_index 为 1,0。
对于视频而言,其核心思路在于对视频中的每一帧都执行相同的换脸操作,并确保视频在换脸后保持连贯性和一致性。

创建一个 Load Video 节点,上传视频并连接视频到图像处理。
0,表示使用视频的原始帧率。Disabled,表示使用原始分辨率。自定义则设置 Custom Width 和 Custom Height。0,表示加载全部图像。n 帧进行处理,如设为 2,则帧率减半。可用于对视频进行抽帧处理。
💡 小 TIPS,为避免使用 Reactor 时因内存不足而导致报错,建议结合使用 skip_first_frames 和 frame_load_cap 分批处理视频。
要将处理后的帧重新组合成视频,需使用 Video Combine 节点。关键参数如下:

通过上述步骤和参数设置,ComfyUI Reactor 节点为我们提供了一个强大而灵活的换脸解决方案。从图片到视频,从单人到多人换脸,我们都可以借助工作流轻松实现效果。完整的工作流已上传 LiblibAI 平台,可在线体验。

https://www.runcomfy.com/comfyui-workflows/comfyui-reactor-workflow-fast-face-swap
https://www.youtube.com/watch?v=PQLttrd-Epc
https://www.runcomfy.com/tutorials/guide-to-using-comfyui-reactor-workflow-for-video
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。