首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ComfyUI 换脸工作流

ComfyUI 换脸工作流

原创
作者头像
球球的前端奶茶屋
发布2025-01-21 16:58:25
发布2025-01-21 16:58:25
2K0
举报
文章被收录于专栏:aigcaigc

ComfyUI 换脸工作流

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

ReActor | 快速换脸

Roop

最早期使用的是 Stable Diffusion WebUI 中的 Roop 扩展进行换脸,无需复杂的数据集或训练过程。Roop 利用生成对抗网络(GANs)来生成逼真的面部图像,包含生成器和判别器两个网络,通过对抗过程生成器学习创建逼真的面部图像。然而,Roop 的代码已经停止维护和更新,迎来了升级版的 Reactor,以及可以和 ComfyUI 工作流想搭配。

https://github.com/s0md3v/sd-webui-roop/

Reactor

ReactorRoop 的基础上更新换代,不仅继承了其核心换脸技术,还进行了显著的改进和优化。它提供了更高的换脸质量、更快的处理速度和更广泛的应用场景。基于深度学习算法,Reactor 充分考虑面部结构的复杂性和多样性,确保替换后的面部信息既符合目标人物的面部特征,又与原图中的背景信息保持协调。

  • 高清晰度:提供清晰锐利的面部交换效果,告别模糊图像。
  • 低硬件需求:对CPU友好,无需昂贵的 GPU 即可运行。
  • 兼容性:完美支持 SDXL 和 1.5。
  • 智能识别:自动性别和年龄检测功能,能够精准识别视频中的人物,提高准确性。

https://github.com/Gourieff/ReActor-UI

comfyui-reactor-node

comfyui-reactor-node 是一个基于 ReActor 的,专为 ComfyUI 设计的高效脸部交换扩展节点。它作为一个节点融入 ComfyUI 的可视化工作流中,用户在熟悉的 ComfyUI 节点编辑界面就能轻松调用 Reactor 的换脸功能。

https://github.com/Gourieff/comfyui-reactor-node

换脸工作流

ComfyUI 换脸工作流能够处理图片、视频以及多人换脸任务,可以通过 Set Group Nodes To NeverSet Group Nodes To Always 来忽略或启用该组节点。我一般先启用图片换脸任务查看效果,调整参数达到满意程度后再切换到视频换脸。

图片换脸

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

ReActor 节点

接下来,添加 ReActor Fast Face Swap 节点,并设置基础参数:

  • swap_modelinswapper_128.onnx 模型,即 InsightFace 提供的预训练模型,主要功能是实现图像中的人脸替换。
  • facedetection:选择人脸检测模型,它能够高效地在源图像和输入图像中识别人脸。有多种模型可供选择,支持 resnet50mobile0.25YOLOv5lYOLOv5n。推荐 retinaface_resnet50,其性能较好。

脸部修复

开源的换脸模型 inswapper_128_fp16.onnx,其中 128 表示模型的输入,而 fp16 代表模型参数使用半精度浮点数存储,有助于减少模型文件的大小。不过,这种模型换脸后的图像存在弊端,存在模糊不清的情况。

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

此外,还有两个关键参数可以调整以优化脸部修复效果:

  • face_restore_visibility:控制脸部修复的清晰度。
  • codeformer_weight:调整模型的权重。

工作流

最后,添加 Preview Image 节点来预览和保存效果图,并确保所有节点正确连接,这样初步构建起图片换脸的基本工作流:

多人换脸

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

方法1:N 个 Reactor 节点处理 N 张单图

  • 设置一个 Reactor 节点处理左侧脸部,把 input_faces_indexsource_faces_index 均设为 0
  • 设置另一个 Reactor 节点处理右侧脸部,把 input_faces_index 设为 0source_faces_index 设为 1
  • 以此类推,有 N 个脸部就需配置 NReactor 节点。

方法2: 单个 Reactor 节点处理 1 张合成图

  • 若图像包含 N 个脸部,仅需一个 Reactor 节点即可处理。
  • 例如,要将输入图像中的第二张脸(index=1)与源图像中的第一张脸(index=0)交换,同时将输入图像中的第一张脸(index=0)与源图像中的第二张脸(index=1)交换,只需设置 input_faces_index0,1,而 source_faces_index1,0

视频换脸

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

Load Video

创建一个 Load Video 节点,上传视频并连接视频到图像处理。

  • force_rate:帧率(每秒帧数),默认值 0,表示使用视频的原始帧率。
  • force_size:图像分辨率,默认值 Disabled,表示使用原始分辨率。自定义则设置 Custom WidthCustom Height
  • frame_load_cap:依据毫秒帧加载上限确定最大图像数量。默认值 0,表示加载全部图像。
  • skip_first_frames:跳过的初始帧数。确定从第几帧开始计数,方便用户对视频起始部分进行灵活调整。
  • select_every_nth:选择每隔 n 帧进行处理,如设为 2,则帧率减半。可用于对视频进行抽帧处理。

💡 小 TIPS,为避免使用 Reactor 时因内存不足而导致报错,建议结合使用 skip_first_framesframe_load_cap 分批处理视频。

Video Combine

要将处理后的帧重新组合成视频,需使用 Video Combine 节点。关键参数如下:

  • frame_rate:帧率。例如,若设为25,输出的图像约 200 帧,生成的视频时长约为 8 秒。
  • format:格式。不同格式有不同的选项参数,例如以 video/h264-mp4 为例,可进一步选择:
    • pix_fmt:视频的色彩空间和位深度。可选 yuv420p10le(10位色深)或 yuv420p(8位色深),不同的设置会影响视频的色彩表现和文件大小。
  • crf:恒定速率因子,控制视频质量和文件大小。数值越低,视频质量越高,文件也越大。
  • loop_count:循环次数,需要重复播放的次数。
  • pingpong:正反播,决定是否倒序播放。

小结

通过上述步骤和参数设置,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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ComfyUI 换脸工作流
  • ReActor | 快速换脸
    • Roop
    • Reactor
    • comfyui-reactor-node
  • 换脸工作流
    • 图片换脸
      • ReActor 节点
      • 脸部修复
      • 工作流
    • 多人换脸
      • 方法1:N 个 Reactor 节点处理 N 张单图
      • 方法2: 单个 Reactor 节点处理 1 张合成图
    • 视频换脸
      • Load Video
      • Video Combine
  • 小结
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档