ComfyUI-EbSynth 插件完全教程
1. 插件简介
插件地址: https://github.com/FuouM/ComfyUI-EbSynth
这个插件就像是一个神奇的"画风转换器"!它能让你把一张图片的风格(比如油画风格、卡通风格)完美地转移到另一张图片或者整个视频上。
想象一下,你有一张美丽的风景照片,还有一张梵高的星空画作。这个插件就能让你的风景照片变成梵高风格的星空画!不仅如此,它还能处理视频,让整个视频都变成你想要的艺术风格。
能给我们带来什么效果:
- 把普通照片变成艺术画作风格
- 让视频保持一致的艺术风格
- 创造出独特的视觉效果
- 制作风格化的动画视频
2. 如何安装
方法一:使用ComfyUI管理器(推荐)
- 打开ComfyUI
- 点击"Manager"按钮
- 搜索"EbSynth"
- 点击安装
方法二:手动安装
- 打开终端或命令行
- 进入ComfyUI的custom_nodes文件夹
- 运行以下命令:
git clone --recurse-submodules https://github.com/FuouM/ComfyUI-EbSynth.git
cd ComfyUI-EbSynth
pip install -r requirements.txt
3. 节点详细解析
3.1 ES Guides 7 节点
这个节点就像一个"参考图片收集器"。当你想要更精确地控制风格转换时,可以提供多组参考图片,告诉系统"这里应该像这样,那里应该像那样"。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 源图片0 | src_img_0 | IMAGE | 必填 | 第一组参考的原始图片,就像告诉系统"这是原来的样子" | 作为引导的源图像,用于建立对应关系 | 比如一张普通的人脸照片 |
| 目标图片0 | tgt_img_0 | IMAGE | 必填 | 第一组参考的目标图片,就像告诉系统"我想要变成这样" | 对应的目标风格图像 | 比如一张卡通风格的人脸 |
| 权重0 | weight_0 | 1.0 | 1.0 | 这组参考图片的重要程度,就像调节音量大小 | 该引导对的影响权重 | 设置为2.0表示这组参考很重要 |
| 源图片1 | src_img_1 | IMAGE | 可选 | 第二组参考的原始图片 | 第二个引导对的源图像 | 比如一张普通的建筑照片 |
| 目标图片1 | tgt_img_1 | IMAGE | 可选 | 第二组参考的目标图片 | 第二个引导对的目标图像 | 比如一张水彩风格的建筑 |
| 权重1 | weight_1 | 1.0 | 1.0 | 第二组参考图片的重要程度 | 第二个引导对的影响权重 | 根据需要调整重要性 |
| 源图片2 | src_img_2 | IMAGE | 可选 | 第三组参考的原始图片 | 第三个引导对的源图像 | 继续添加更多参考 |
| 目标图片2 | tgt_img_2 | IMAGE | 可选 | 第三组参考的目标图片 | 第三个引导对的目标图像 | 提供更多风格参考 |
| 权重2 | weight_2 | 1.0 | 1.0 | 第三组参考图片的重要程度 | 第三个引导对的影响权重 | 平衡各组参考的影响 |
| 源图片3 | src_img_3 | IMAGE | 可选 | 第四组参考的原始图片 | 第四个引导对的源图像 | 更精细的控制 |
| 目标图片3 | tgt_img_3 | IMAGE | 可选 | 第四组参考的目标图片 | 第四个引导对的目标图像 | 更多样的风格指导 |
| 权重3 | weight_3 | 1.0 | 1.0 | 第四组参考图片的重要程度 | 第四个引导对的影响权重 | 调节影响强度 |
| 源图片4 | src_img_4 | IMAGE | 可选 | 第五组参考的原始图片 | 第五个引导对的源图像 | 进一步细化控制 |
| 目标图片4 | tgt_img_4 | IMAGE | 可选 | 第五组参考的目标图片 | 第五个引导对的目标图像 | 更丰富的风格参考 |
| 权重4 | weight_4 | 1.0 | 1.0 | 第五组参考图片的重要程度 | 第五个引导对的影响权重 | 平衡多组参考 |
| 源图片5 | src_img_5 | IMAGE | 可选 | 第六组参考的原始图片 | 第六个引导对的源图像 | 最大化控制精度 |
| 目标图片5 | tgt_img_5 | IMAGE | 可选 | 第六组参考的目标图片 | 第六个引导对的目标图像 | 完善风格指导 |
| 权重5 | weight_5 | 1.0 | 1.0 | 第六组参考图片的重要程度 | 第六个引导对的影响权重 | 最终权重调节 |
| 源图片6 | src_img_6 | IMAGE | 可选 | 第七组参考的原始图片 | 第七个引导对的源图像 | 极致精细控制 |
| 目标图片6 | tgt_img_6 | IMAGE | 可选 | 第七组参考的目标图片 | 第七个引导对的目标图像 | 最后的风格参考 |
| 权重6 | weight_6 | 1.0 | 1.0 | 第七组参考图片的重要程度 | 第七个引导对的影响权重 | 完美平衡所有参考 |
3.2 ES Translate 节点
这个节点就像一个"单张图片的魔法师"。它能把一张图片的风格完美地转移到另一张图片上,就像给照片换了一套"衣服"。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 风格图片 | style_image | IMAGE | 必填 | 你想要模仿的风格图片,就像一个"样板" | 提供风格参考的图像 | 比如一张油画作品 |
| 源图片 | source_image | IMAGE | 必填 | 原始图片,就像"模特" | 需要进行风格转换的原图 | 比如一张普通的风景照 |
| 目标图片 | target_image | IMAGE | 必填 | 要转换成的目标图片,通常和源图片一样 | 作为转换目标的图像 | 通常就是源图片本身 |
| 权重 | weight | 0.1-∞ | 0.9 | 风格转换的强度,就像调节"浓度" | 风格转换的影响强度 | 0.5表示淡一点,1.5表示浓一点 |
| 统一性 | uniformity | 500-15000 | 3500 | 让转换后的图片看起来更协调,就像"磨皮" | 控制结果的平滑度和一致性 | 数值越高越平滑,但可能丢失细节 |
| 补丁大小 | patch_size | 3,5,7... | 5 | 处理图片时每次看多大一块,就像"放大镜的大小" | 匹配时使用的图像块大小 | 5表示5x5像素的小块 |
| 金字塔层数 | pyramid_levels | 1-∞ | 6 | 从粗到细处理的层数,就像"先画轮廓再填细节" | 多尺度处理的层数 | 6层表示从很粗糙到很精细 |
| 搜索投票次数 | search_vote_iters | 1-∞ | 12 | 寻找最佳匹配的尝试次数,就像"货比三家" | 搜索最佳匹配的迭代次数 | 次数越多结果越好但越慢 |
| 补丁匹配次数 | patch_match_iters | 1-∞ | 6 | 精细匹配的次数,就像"精雕细琢" | 补丁匹配算法的迭代次数 | 更多次数带来更好的匹配 |
| 额外3x3处理 | extra_pass_3x3 | True/False | True | 最后再用小刷子精修一遍,就像"最后润色" | 是否进行额外的3x3精细处理 | 开启能让结果更精细 |
| 源图片组 | src_imgs | IMAGE | 可选 | 来自ES Guides 7的源图片组 | 额外的引导源图像批次 | 配合ES Guides 7使用 |
| 目标图片组 | tgt_imgs | IMAGE | 可选 | 来自ES Guides 7的目标图片组 | 额外的引导目标图像批次 | 配合ES Guides 7使用 |
| 权重组 | wgts | STRING | 可选 | 来自ES Guides 7的权重信息 | 引导权重的字符串表示 | 自动从ES Guides 7获取 |
3.3 ES Video Transfer 节点
这个节点就像一个"视频风格化大师"。它能让整个视频都变成你想要的艺术风格,而且保持前后一致,不会出现闪烁。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 源视频 | source_video | IMAGE | 必填 | 要转换风格的原始视频,就像"原材料" | 需要进行风格转换的视频帧序列 | 一段普通的视频片段 |
| 风格图片 | style_images | IMAGE | 必填 | 风格参考图片,就像"样板间" | 提供风格参考的图像集合 | 几张艺术画作 |
| 风格索引 | style_idxes | STRING | "0" | 告诉系统哪些帧用哪个风格,就像"时间表" | 指定风格图像对应的帧索引 | "0_10_20"表示第0、10、20帧 |
| 边缘方法 | edge_method | 选择项 | Classic | 检测图片边缘的方法,就像"描边工具" | 边缘检测算法的选择 | Classic平衡好,PAGE更精细但慢 |
| 流模型 | flow_model | 选择项 | sintel | 追踪物体运动的方法,就像"跟踪器" | 光流估计模型的选择 | sintel适合大多数情况 |
| 单向模式 | only_mode | 选择项 | none | 只处理一个方向还是双向,就像"单行道或双行道" | 处理模式的选择 | none表示双向处理 |
| 使用遮罩 | do_mask | True/False | False | 是否只处理图片的某些区域,就像"蒙版" | 是否应用遮罩处理 | True时需要提供遮罩图 |
| 预遮罩 | pre_mask | True/False | False | 在处理前还是处理后应用遮罩,就像"先化妆还是后化妆" | 遮罩应用的时机 | 预遮罩更精确但更慢 |
| 羽化 | feather | 0-∞ | 5 | 遮罩边缘的柔化程度,就像"模糊边界" | 遮罩边缘的羽化像素数 | 数值越大边缘越柔和 |
| 风格权重 | style_weight | 0.1-∞ | 6.0 | 风格转换的强度,就像"浓度调节" | 风格转换的影响强度 | 数值越大风格越明显 |
| 边缘权重 | edge_weight | 0.1-∞ | 1.0 | 边缘信息的重要程度,就像"轮廓清晰度" | 边缘引导的权重 | 数值越大轮廓越清晰 |
| 扭曲权重 | warp_weight | 0.1-∞ | 0.5 | 运动补偿的强度,就像"防抖强度" | 光流扭曲的权重 | 数值越大运动补偿越强 |
| 位置权重 | pos_weight | 0.1-∞ | 2.0 | 位置信息的重要程度,就像"定位精度" | 位置引导的权重 | 数值越大位置越准确 |
| 统一性 | uniformity | 500-15000 | 3500 | 让结果更协调,就像"整体和谐度" | 控制结果的平滑度和一致性 | 数值越高越平滑 |
| 补丁大小 | patch_size | 3,5,7... | 5 | 处理时每次看多大一块,就像"放大镜大小" | 匹配时使用的图像块大小 | 5表示5x5像素块 |
| 金字塔层数 | pyramid_levels | 1-∞ | 6 | 从粗到细的处理层数,就像"分层处理" | 多尺度处理的层数 | 6层从粗糙到精细 |
| 搜索投票次数 | search_vote_iters | 1-∞ | 12 | 寻找最佳匹配的次数,就像"反复比较" | 搜索最佳匹配的迭代次数 | 次数越多质量越好 |
| 补丁匹配次数 | patch_match_iters | 1-∞ | 6 | 精细匹配的次数,就像"精雕细琢" | 补丁匹配的迭代次数 | 更多次数更精细 |
| 额外3x3处理 | extra_pass_3x3 | True/False | True | 最后精修,就像"最后润色" | 是否进行额外的3x3处理 | 开启获得更好效果 |
| GPU直方图混合 | use_gpu_hist_blend | True/False | False | 用显卡加速混合,就像"涡轮增压" | 是否使用GPU加速直方图混合 | 有好显卡时开启 |
| 使用LSQR | use_lsqr | True/False | True | 使用特殊算法优化,就像"智能模式" | 是否使用LSQR求解器 | 通常保持开启 |
| 泊松GPU | use_poisson_cupy | True/False | False | 用显卡加速泊松混合,就像"专业加速" | 是否使用GPU加速泊松混合 | 有好显卡时开启 |
| 泊松最大迭代 | poisson_maxiter | 0-∞ | 0 | 泊松处理的最大次数,就像"最大努力次数" | 泊松求解的最大迭代次数 | 0表示自动,大于0表示限制次数 |
| 源遮罩 | source_mask | IMAGE | 可选 | 指定处理区域的遮罩图,就像"模板" | 用于指定处理区域的遮罩 | 黑白图片,白色区域被处理 |
3.4 ES Video Transfer Extra 节点
这个节点是"视频风格化专家版",比普通版本更强大,有更多高级选项和更好的效果。
参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| 源视频 | source_video | IMAGE | 必填 | 要转换风格的原始视频,就像"原材料" | 需要进行风格转换的视频帧序列 | 一段普通的视频片段 |
| 风格图片 | style_images | IMAGE | 必填 | 风格参考图片,就像"样板间" | 提供风格参考的图像集合 | 几张艺术画作 |
| 风格索引 | style_idxes | STRING | "0" | 告诉系统哪些帧用哪个风格,就像"时间表" | 指定风格图像对应的帧索引 | "0_10_20"表示第0、10、20帧 |
| 边缘方法 | edge_method | 选择项 | Classic | 检测图片边缘的方法,就像"描边工具" | 边缘检测算法的选择 | Classic平衡,PAGE精细,PST结构好 |
| 流架构 | flow_arch | 选择项 | RAFT | 运动追踪的技术类型,就像"跟踪技术" | 光流估计的架构选择 | RAFT通用,EF_RAFT高效,FLOW_DIFF先进 |
| 流模型 | flow_model | 选择项 | sintel | 具体的运动追踪模型,就像"跟踪器型号" | 光流模型的具体选择 | 根据架构选择对应模型 |
| 单向模式 | only_mode | 选择项 | none | 只处理一个方向还是双向,就像"单行道或双行道" | 处理模式的选择 | none表示双向处理 |
| 返回流 | return_flow | True/False | False | 是否输出运动信息,就像"显示轨迹" | 是否返回光流可视化结果 | True时可以看到运动轨迹 |
| 使用遮罩 | do_mask | True/False | False | 是否只处理图片的某些区域,就像"蒙版" | 是否应用遮罩处理 | True时需要提供遮罩图 |
| 预遮罩 | pre_mask | True/False | False | 在处理前还是处理后应用遮罩,就像"先化妆还是后化妆" | 遮罩应用的时机 | 预遮罩更精确但更慢 |
| 羽化 | feather | 0-∞ | 5 | 遮罩边缘的柔化程度,就像"模糊边界" | 遮罩边缘的羽化像素数 | 数值越大边缘越柔和 |
| 风格权重 | style_weight | 0.1-∞ | 6.0 | 风格转换的强度,就像"浓度调节" | 风格转换的影响强度 | 数值越大风格越明显 |
| 边缘权重 | edge_weight | 0.1-∞ | 1.0 | 边缘信息的重要程度,就像"轮廓清晰度" | 边缘引导的权重 | 数值越大轮廓越清晰 |
| 扭曲权重 | warp_weight | 0.1-∞ | 0.5 | 运动补偿的强度,就像"防抖强度" | 光流扭曲的权重 | 数值越大运动补偿越强 |
| 位置权重 | pos_weight | 0.1-∞ | 2.0 | 位置信息的重要程度,就像"定位精度" | 位置引导的权重 | 数值越大位置越准确 |
| 统一性 | uniformity | 500-15000 | 3500 | 让结果更协调,就像"整体和谐度" | 控制结果的平滑度和一致性 | 数值越高越平滑 |
| 补丁大小 | patch_size | 3,5,7... | 5 | 处理时每次看多大一块,就像"放大镜大小" | 匹配时使用的图像块大小 | 5表示5x5像素块 |
| 金字塔层数 | pyramid_levels | 1-∞ | 6 | 从粗到细的处理层数,就像"分层处理" | 多尺度处理的层数 | 6层从粗糙到精细 |
| 搜索投票次数 | search_vote_iters | 1-∞ | 12 | 寻找最佳匹配的次数,就像"反复比较" | 搜索最佳匹配的迭代次数 | 次数越多质量越好 |
| 补丁匹配次数 | patch_match_iters | 1-∞ | 6 | 精细匹配的次数,就像"精雕细琢" | 补丁匹配的迭代次数 | 更多次数更精细 |
| 额外3x3处理 | extra_pass_3x3 | True/False | True | 最后精修,就像"最后润色" | 是否进行额外的3x3处理 | 开启获得更好效果 |
| GPU直方图混合 | use_gpu_hist_blend | True/False | False | 用显卡加速混合,就像"涡轮增压" | 是否使用GPU加速直方图混合 | 有好显卡时开启 |
| 使用LSQR | use_lsqr | True/False | True | 使用特殊算法优化,就像"智能模式" | 是否使用LSQR求解器 | 通常保持开启 |
| 泊松GPU | use_poisson_cupy | True/False | False | 用显卡加速泊松混合,就像"专业加速" | 是否使用GPU加速泊松混合 | 有好显卡时开启 |
| 泊松最大迭代 | poisson_maxiter | 0-∞ | 0 | 泊松处理的最大次数,就像"最大努力次数" | 泊松求解的最大迭代次数 | 0表示自动,大于0表示限制次数 |
| 源遮罩 | source_mask | IMAGE | 可选 | 指定处理区域的遮罩图,就像"模板" | 用于指定处理区域的遮罩 | 黑白图片,白色区域被处理 |
| 源边缘 | source_edge | IMAGE | 可选 | 自定义的边缘信息,就像"手绘轮廓" | 自定义的边缘引导图像 | 可以用其他工具预处理的边缘图 |
4. 使用技巧和建议
4.1 新手入门建议
- 从ES Translate开始:先用单张图片练手,熟悉各个参数的作用
- 使用默认参数:刚开始不要改太多参数,先用默认值看效果
- 选择合适的风格图:风格图的质量直接影响最终效果
4.2 参数调节技巧
-
uniformity(统一性):
- 想要更平滑的效果:调高到5000-8000
- 想要保留更多细节:调低到2000-3000
-
style_weight(风格权重):
- 风格太淡:调高到8-10
- 风格太浓:调低到3-5
-
edge_weight(边缘权重):
- 轮廓不清晰:调高到1.5-2.0
- 轮廓太硬:调低到0.5-0.8
4.3 视频处理建议
-
风格索引设置:
- 短视频(30帧以内):每10帧设一个风格帧,如"0_10_20"
- 长视频:每20-30帧设一个风格帧
-
性能优化:
- 有好显卡:开启use_gpu_hist_blend和use_poisson_cupy
- 电脑配置一般:关闭GPU加速,降低pyramid_levels到4-5
4.4 质量提升技巧
- 使用ES Guides 7:为重要区域提供额外的参考图片
- 边缘方法选择:
- 追求速度:选择Classic
- 追求质量:选择PAGE(但会很慢)
- 平衡选择:选择PST
5. 常见问题解答
Q1:为什么处理速度很慢?
A: 这是正常现象,EbSynth算法本身就比较耗时。可以尝试:
- 降低pyramid_levels(金字塔层数)
- 减少search_vote_iters(搜索投票次数)
- 使用较小的图片尺寸
Q2:结果图片出现奇怪的色块或扭曲?
A: 可能的原因和解决方法:
- uniformity设置太低:调高到4000以上
- 风格图和源图差异太大:选择更相似的风格图
- patch_size太大:改为3或5
Q3:视频处理后出现闪烁?
A: 这通常是风格帧设置不当:
- 增加风格帧的数量
- 确保风格索引按升序排列
- 检查only_mode设置,建议用"none"
Q4:遮罩功能怎么用?
A: 遮罩是黑白图片:
- 白色区域:会被处理
- 黑色区域:保持原样
- 灰色区域:部分处理
Q5:GPU加速选项不起作用?
A: 需要安装额外的库:
pip install cupy-cuda11x # 根据你的CUDA版本选择
6. 工作流程示例
6.1 单张图片风格转换
- 加载ES Translate节点
- 连接风格图片、源图片、目标图片
- 调整weight参数控制风格强度
- 运行查看效果
6.2 视频风格转换
- 加载ES Video Transfer节点
- 准备视频帧序列和风格图片
- 设置style_idxes,如"0_15_30"
- 根据需要调整各种权重参数
- 运行处理(耐心等待)
6.3 高级精确控制
- 使用ES Guides 7准备多组参考图片
- 连接到ES Translate的可选输入
- 为重要区域提供精确的风格指导
- 调整各组的权重平衡影响
7. 总结
ComfyUI-EbSynth是一个功能强大的风格转换插件,虽然处理速度较慢,但效果非常出色。通过合理的参数设置和耐心的调试,你可以创造出令人惊艳的艺术作品。
记住最重要的几点:
- 从简单开始,逐步掌握各个参数
- 选择合适的风格参考图片
- 耐心等待处理完成
- 多尝试不同的参数组合
希望这个教程能帮助你快速上手这个神奇的插件!