关于 Wan2.1-Fun-Control

Wan2.1-Fun-Control 是阿里团队推出的开源视频生成与控制项目,通过引入创新性的控制代码(Control Codes)机制,结合深度学习和多模态条件输入,能够生成高质量且符合预设控制条件的视频。该项目专注于通过多模态控制条件实现对生成视频内容的精准引导。 目前 Fun Control 模型支持多种控制条件,包括 Canny(线稿)Depth(深度)OpenPose(人体姿势)MLSD(几何边缘) 等,同时支持使用 轨迹控制。 模型还支持多分辨率视频预测,分辨率可选 512、768 和 1024,帧率为每秒 16 帧,最长可生成 81 帧(约 5 秒)的视频。 模型版本方面:
  • 1.3B 轻量版:适合本地部署和快速推理,对显存要求较低
  • 14B 高性能版:模型体积达 32GB+,效果更优但 需高显存支持
下面是相关代码仓库的示例 目前 ComfyUI 已原生支持了 Wan2.1 Fun Control 模型 ,在开始本篇教程前,请更新你的 ComfyUI 保证你的版本在这个提交版本之后 在本篇指南中我们将提供两个工作流:
  • 仅使用原生的 Comfy Core 节点的工作流
  • 使用自定义节点的工作流
如果在加载下面的工作流文件时,你发现存在节点缺失,可能是因为以下情况:
  1. 你使用的 ComfyUI 版本不是最新的开发(nightly)版本。
  2. 你使用的 ComfyUI 版本是稳定(release)版本或桌面版(desktop)版本(不包含最新的功能更新)。
  3. 你使用的 ComfyUI 版本是最新的 commit 版本,但在启动过程中部分节点导入失败了。
请先确保你已经成功更新 ComfyUI 到最新的开发(nightly)版本, 请查看:如何更新 ComfyUI 部分了解如何更新 ComfyUI。
由于目前原生节点在视频支持方面有所欠缺,完全使用原生节点的工作流是为了能保证在使用过程中用户不需要安装自定义节点就可以完成对应的工作流, 但在视频相关的生成中,我们发现现阶段很难在不使用自定义节点的情况下同时提供良好的使用体验,所以在本篇指南中我们提供了两个版本的工作流。

相关模型安装

这些模型你仅需要安装一次,另外在对应的工作流图片中也包含了模型下载信息,你可以选择你喜欢的方式下载模型。 下面的模型你可以在 Wan_2.1_ComfyUI_repackagedWan2.1-Fun 找到 点击对应链接进行下载,如果你之前使用过 Wan 相关的工作流,那么你仅需要下载 Diffusino models Diffusion models 选择 1.3B 或 14B, 14B 的文件体积更大(32GB)但是对于运行显存要求也较高, Text encoders 选择下面两个模型中的一个,fp16 精度体积较大对性能要求高 VAE CLIP Vision 文件保存位置
📂 ComfyUI/
├── 📂 models/
│   ├── 📂 diffusion_models/
│   │   └── wan2.1_fun_control_1.3B_bf16.safetensors
│   ├── 📂 text_encoders/
│   │   └─── umt5_xxl_fp8_e4m3fn_scaled.safetensors
│   └── 📂 vae/
│   │   └── wan_2.1_vae.safetensors
│   └── 📂 clip_vision/
│       └──  clip_vision_h.safetensors                 

ComfyUI 原生工作流

在此工作流中,我们使用转换成 WebP 格式的视频,这是因为目前Load Image 节点还不支持 mp4 格式的视频,另外我们使用 Canny Edge 来对原始的视频进行图像的预处理, 由于经常有用户在安装自定义节点过程中遇到安装失败和环境的问题,所以这一版本的工作流完全使用原生节点来实现,来优先保证体验。 感谢我们强大的 ComfyUI 作者们,他们带来了功能丰富的相关节点,如果你需要直接查看相关版本直接查看使用自定义节点的工作流

1. 工作流相关文件下载

1.1 工作流文件

下载下面的图片,并拖入 ComfyUI 中以加载对应的工作流 Wan2.1 Fun Control 原生工作流

1.2 输入图片及视频下载

请下载下面的图片及视频,我们将作为输入。 输入参考图片 输入参考视频

2. 按步骤完成工作流

Wan2.1 Fun Control 工作流步骤
  1. 确保 Load Diffusion Model 节点加载了 wan2.1_fun_control_1.3B_bf16.safetensors
  2. 确保 Load CLIP 节点加载了 umt5_xxl_fp8_e4m3fn_scaled.safetensors
  3. 确保 Load VAE 节点加载了 wan_2.1_vae.safetensors
  4. 确保 Load CLIP Vision 节点加载了 clip_vision_h.safetensors
  5. Load Image 节点(已被重命名为Start_image) 上传起始帧
  6. 在第二个 Load Image 节点上传用于控制视频。注意: 目前这个节点还不支持 mp4 只能使用 Webp 视频
  7. (可选)修改 Prompt 使用中英文都可以
  8. (可选)在 WanFunControlToVideo 修改对应视频的尺寸,不要使用过大的尺寸
  9. 点击 Run 按钮,或者使用快捷键 Ctrl(cmd) + Enter(回车) 来执行视频生成

3. 使用说明

  • 由于我们需要和控制视频一致的帧数输入到 WanFunControlToVideo 节点,如果对应的帧数数值大于实际的控制视频帧数,将会导致多余的帧不符合控制条件的画面出现,这个问题我们将在使用自定义节点的工作流中解决
  • 使用类似 ComfyUI-comfyui_controlnet_aux 来实现更丰富的控制

使用自定义节点的工作流

我们将需要安装下面两个自定义节点: 你可以使用 ComfyUI Manager 安装缺失节点的功能或者参照对应自定义节点包的安装说明来完成对应节点的安装

1. 工作流相关文件下载

1.1 工作流文件

下载下面的图片,并拖入 ComfyUI 中以加载对应的工作流 工作流文件
由于视频文件体积较大,你也可以点击这里下载 Json 格式的工作流文件。

1.2 输入图片及视频下载

请下载下面的图片及视频,我们将会用于输入 输入参考图片

2. 按步骤完成工作流

Wan2.1 Fun Control 使用自定义节点的工作流步骤
模型部分基本是一致的,如果你已经体验过仅使用原生节点的工作流,你可以直接上传对应的图片然后运行即可
  1. 确保 Load Diffusion Model 节点加载了 wan2.1_fun_control_1.3B_bf16.safetensors
  2. 确保 Load CLIP 节点加载了 umt5_xxl_fp8_e4m3fn_scaled.safetensors
  3. 确保 Load VAE 节点加载了 wan_2.1_vae.safetensors
  4. 确保 Load CLIP Vision 节点加载了 clip_vision_h.safetensors
  5. Load Image 节点上传起始帧
  6. Load Video(Upload) 自定义节点上传 mp4 格式视频,请注意对应工作流有对默认的 frame_load_cap进行了调整
  7. DWPose Estimator 处针对当前图像仅使用了 detect_face 的选项
  8. (可选)修改 Prompt 使用中英文都可以
  9. (可选)在 WanFunControlToVideo 修改对应视频的尺寸,不要使用过大的尺寸
  10. 点击 Run 按钮,或者使用快捷键 Ctrl(cmd) + Enter(回车) 来执行视频生成

3. 工作流说明

感谢 ComfyUI 社区作者带来的自定义节点包
  • 在这个示例中使用了 Load Video(Upload) 来实现对 mp4 视频的支持
  • Load Video(Upload) 中获取到的 video_info 我们得以对输出的视频保持同样的 fps
  • 你可以替换 DWPose EstimatorComfyUI-comfyui_controlnet_aux 节点包中的其它预处理器

使用技巧

Apply Multi Control Videos
  • 一个有用的技巧是,你可以结合多种图像预处理技术,然后使用 Image Blend 节点来实现同时应用多种控制方法的目的。
  • 你可以使用 ComfyUI-VideoHelperSuiteVideo Combine 节点来实现将对应视频存储为 mp4 格式
  • 我们使用 SaveAnimatedWEBP 是因为我们目前并不支持在 mp4 中嵌入工作流信息, 而且有些自定义节点可能没有考虑工作流嵌入,为了在视频中保存工作流,所以我们选择 SaveAnimatedWEBP 节点。
  • 不要设置过大的画面尺寸,这可能导致采样过程非常耗时,可以试着先生成小尺寸的图片然后再进行采样放大
  • 发挥你的想象力,在这个工作流基础上加上一些文生图或者其它类型的工作流,实现直接从文本到视频生成风格转换
  • WanFunControlToVideo 节点中,control_video 不是必须的,所以有时候你可以不使用控制视频,先生成特别小尺寸的视频比如 320x320,然后使用再把它们作为控制视频输入来获得确定的结果

其它 Wan2.1 Fun Control 或者视频相关自定义节点