乐于分享
好东西不私藏

ComfyUI 插件之 for 循环插件(使用 for 循环简化官方版 InfiniteTalk 无限时长工作流)

ComfyUI 插件之 for 循环插件(使用 for 循环简化官方版 InfiniteTalk 无限时长工作流)

ComfyUI 插件之 for 循环插件(使用 for 循环简化官方版 InfiniteTalk 无限时长工作流)

适用场景

后面我们会基于各个场景介绍一些有用的 ComfyUI 插件,本节来看 for 循环插件。

for 循环插件功能适用于 将重复性的子工作流/子图/分组通过循环模式合多为一,从而进行工作流简化

例如,在 最强开源数字人框架 InfiniteTalk 官方版与 KJ 版孰强孰弱(视频质量/显存占用/生成速度)中介绍了 ComfyUI 官方提供的工作流,如果需要做的视频大于 3s,则需要通过视频延展的方式进行操作(简称 列火车)。每一个延展的分组可以支持 3s 的视频,那么做一个 120s 的视频,则需要设计 1个基础采样 + 39 个视频延展分组每一个延展分组都需要做以下的重复操作:

  1. 1. 圈选整个 Video Extend 分组 => ctrl+c => ctril+shift+v(会将连线一起复制)
  2. 2. 修复两个连接(人工):将上一个 Video Extend 分组中的 Batch Images 节点的 IMAGE 输出分别连到下一个 Video Extend 分组中的 WanInfiniteTalkToVideo 节点的 previous_frames 和 Batch Images 节点的 image1 上,如下:

在这样的操作下,工作流会非常庞大,且工作流的搭建会耗时耗力。如果使用 for 循环插件,则仅需要搭建 1个基础采样 + 1 个视频延展分组,将后者纳入循环节点中,循环次数设置为 39 即可。

列火车 的模式在 ComfyUI 中出现的还比较多,比如 官方版的 Wan2.2_Animate 工作流(见 视频人物替换与角色动画模型 Wan2.2_Animate),官方版的 wan2.2_s2v 工作流(见 最强开源数字人框架 InfiniteTalk 与 Wan2.2_S2V / Sonic 孰强孰弱(视频质量/显存占用/生成速度/功能的丰富性/音频时长自动匹配能力)),Stable-Video-Infinity 无限视频工作流。均可以考虑通过循环来实现。

插件安装

使用 ComfyUI-Manager 安装插件 https://github.com/yolain/ComfyUI-Easy-Use,之后重启 ComfyUI。

工作流

我们使用 for 循环简化官方版 InfiniteTalk 无限时长工作流。优化后的工作流如下:

核心原理

核心是两个循环节点:循环开始节点 For Loop Start 和循环结束节点 For Loop End

For Loop Start 核心输入输出:

  1. 1. initial_value1:每一次循环过程输入到循环中的值,例如,第一次循环输入的是基础采样后的 VAE Decode 后的结果;第二次循环输入的是第一个视频扩展分组中的 Batch Images 的输出
  2. 2. index:当前循环到第几次了,从0开始,0表示第一次循环,1表示第二次循环,以此类推
  3. 3. value1:值与 initial_value1 相同
  4. 4. total:循环次数,例如需要做一个 120s 的视频,则此处需要设置为 39

For Loop End 核心输入输出:

  1. 1. initial_value1:接收本次循环的输出值,并送入下一次循环的 initial_value1 中(即 For Loop Start 的 initial_value1)。例如,将第一个视频扩展分组中的 Batch Images 的输出输入到该值,在第二个循环中,将该值输入给了 For Loop Start 的 initial_value1
  2. 2. value1:所有循环结束的最终结果

来看下 InfiniteTalk 循环工作流的循环原理。

  • • 第一次循环将基础采样后的 VAE Decode 后的结果输入到 For Loop Start 的 initial_value1,之后 initial_value1 (value1 与 initial_value1等同)输入到两个地方:
    • • a. 连接到视频扩展分组的起点(即 “WanInfiniteTalkToVideo” 的 previous_frames 输入)上,进行循环体操作(类似“首尾帧相连”)
    • • b. 连接到 Batch Images 节点的输入 image1 上,每次视频扩展分组的结果会连到 Batch Images 节点的输入 image2 上,该节点将整体拼接的结果输出给下一次循环的 initial_value1通过该节点可以将每次循环的输出进行拼接,最终输出完整视频
  • • 循环结束后,将完整的结果通过 For Loop End 的 value1 输入到 Create Video 节点,进行最终视频的创建
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » ComfyUI 插件之 for 循环插件(使用 for 循环简化官方版 InfiniteTalk 无限时长工作流)

评论 抢沙发

3 + 2 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮