ComfyUI 换脸教程
本文介绍三种使用 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:有两种模型可以选择:CodeFormer、GFPGAN 。
下载模型后需要放在 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?
汇智网翻译整理,转载请标明出处