ComfyUI 换脸教程

TOOL Nov 11, 2024

本文介绍三种使用 ComfyUI 进行换脸的方法:使用ReActor插件、使用IPAdapter插件和IPAdapter InPainting。

1、ReActor

第一种方法是使用 ReActor 插件,使用这种方法实现的效果如下:

设置工作流很简单,首先需要安装 ReActor 插件

1.1 添加 ReActor 节点

首先加载我们的默认工作流,然后在空白处双击进入 ReActor,然后添加 ReActor Fast Face Swap 节点,接下来将此节点的输入图片链接到 VAE Decode 的图片。

1.2 添加其他 Loader 节点

添加一个 Load Image 节点,选择要换脸的图片,并将其连接到 ReActor 节点的输入面。最后添加一个save image节点,并把它和ReActor节点的图片连接起来,最终的工作流程如下:

最后,ReActor Fast Face Swap上有几个需要注意的参数:

  • Swap model:不能更换,用默认的就行。
  • Face detection:检测人脸的方法,你可以根据自己的实际情况选择,不过我一般选择第一种。
  • Face restore model:有两种模型可以选择:CodeFormerGFPGAN

下载模型后需要放在 ComfyUI\models\facerestore_models文件夹下,我一般选择第二种。

其余的参数都比较容易理解,可以根据自己的需求进行调整。

2、IPAdapter

第二种方法实现了和Face Swap类似的效果,但是也可以让AI生成与某张脸一致的图片。结果大概是这样的:

不过,相比于第一种方法,这种方法以原图为输入,让AI生成与某张脸一致的图片。这样做有两个好处:

  • 不仅适用于人类,动物脸也可以。
  • ReActor方法更侧重于换脸,对头发的处理稍弱,以上面爱因斯坦的照片为例,你会发现IPAdapter生成的图片更像原发。

为了达到这个效果,我建议使用ComfyUI IPAdapter Plus插件

注意,安装插件后,不能马上使用:

  • 需要在 ComfyUI/models/目录下创建一个名为 ipadapter的文件夹,然后下载相应的IPAdapter模型并放在这个文件夹中。
  • 除了IPAdapter模型,还需要下载图像编码器并放在 ComfyUI/models/clip_vision/目录中。

完成这两个步骤后,才能使用这个插件。另外,根据我的测试,我推荐以下组合,更多组合可以查看ComfyUI IPAdapter Plus的ReadMe文档

SD版本 检查点 IPAdapter模型 图像编码器
SD 1.5 realisticVisionV51_v51VAE ip-adapter-full-face_sd15 ViT-H
SD XL Juggernaut XL ip-adapter-plus-face_sdxl_vit-h ViT-H

下载完相应的模型后,就可以构建我们的工作流程了。

2.1 添加Apply IPAdapter节点

先加载我们默认的工作流程,然后在空白处双击输入Apply IPAdapter,然后将其添加到工作流程中。然后你可以将权重调整到小于0.8。然后可以根据实际输出调整噪声,可以将其最小化到0.01。

2.2 添加其他加载器节点

然后按顺序添加:

  • 加载图像节点:选择你想要AI生成的图片。这里要注意的是,由于图片会经过CLIP模型编码,编码器会把图片resize成224x224,并且裁剪到中间,所以你导入的图片中人脸要居中,而且图片最好是正方形,不然最后生成的效果会不好。
  • Load CLIP Version节点:选择ViT-H模型。
  • Load IPAdapter Model节点:根据你Checkpoint中加载的模型选择对应的IPAdapter模型。最后把这三个节点依次连接到Apply IPAdapter节点上。

2.3 设置KSampler节点

最后设置KSampler节点:

  • 步骤通常比平常多10步以上,比如你平常取25步,这里就需要35步。
  • CFG建议设置小一点,最终的工作流程如下:

另外我再教大家一个技巧,你可以尝试在Workflow中添加多个Apply IPAdapter节点,并将它们连接到不同的KSampler节点上。这样就可以使用不同的模型来生成图片了。下面的工作流添加了 SDXL 和 SD 1.5 的 Checkpoint,因此你可以在一个工作流下看到两个模型的结果:

3、IPAdapter Inpainting

第二种方法每次运行时都会生成新的图片,因此无法像第一种方法那样通过导入第二张图片来实现换脸。

第三种方法可以解决这个问题。我们仍然要使用 IPAdapter,但除此之外,我们将使用 Inpainting 功能。这样,我们可以用图片 B 替换图片 A 的某个部分。例如,我们可以用第二张图片替换第一张图片中的猫脸,最终生成一只宇航员柯基犬:

Workflow 的构建相当简单。你可以在 Upscale 工作流中添加一个 IPAdapter。最终的工作流程如下:


原文链接:How to swap faces using ComfyUI?

汇智网翻译整理,转载请标明出处

Tags