ComfyUI_fabric 插件保姆级教程
1. 插件简介
插件地址: https://github.com/ssitu/ComfyUI_fabric
ComfyUI_fabric 是一个基于 FABRIC 论文的反馈学习插件,就像给 AI 画师装了一个"学习记忆系统"。这个插件可以让你:
- 教 AI 学习你喜欢的图片风格 - 就像给老师看范例作品,让 AI 模仿
- 告诉 AI 避免你不喜欢的效果 - 就像告诉画师"不要画成这样"
- 通过反复调教让 AI 越来越懂你 - 每次生成都能参考之前的好坏例子
- 精确控制学习的时机和强度 - 可以控制什么时候开始学习,学习多强烈
这个插件特别适合想要训练 AI 生成特定风格图片,或者想要通过正负面例子来引导 AI 创作的朋友。
核心原理: FABRIC 技术就像给 AI 装了一个"参考相册",生成新图片时会参考你提供的"喜欢"和"不喜欢"的例子,从而生成更符合你期望的图片。
2. 如何安装
方法一:通过ComfyUI管理器安装(推荐)
- 打开ComfyUI
- 点击右侧的"Manager"按钮
- 搜索"fabric"
- 找到"ComfyUI_fabric"点击安装
方法二:手动安装
- 打开终端或命令提示符
- 进入你的ComfyUI安装目录
- 运行以下命令:
cd ComfyUI/custom_nodes
git clone https://github.com/ssitu/ComfyUI_fabric.git
重启ComfyUI
安装完成后重启ComfyUI即可使用。
3. 节点详细解析
3.1 FABRIC Patch Model - 基础模型改造节点
这个节点就像一个"模型改装师",把普通的 AI 模型改装成能够学习参考图片的智能模型。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | - | 要改装的AI模型 | 输入的扩散模型 | 连接加载的checkpoint模型 |
| clip | clip | CLIP类型 | - | 文字理解器 | CLIP文本编码器 | 连接CLIP模型用于处理空白提示词 |
| pos_weight | pos_weight | 0.0到1.0 | 0.5 | 好例子的影响强度 | 正向潜在向量权重 | 0.8表示强烈学习好例子,0.2表示轻微参考 |
| neg_weight | neg_weight | 0.0到1.0 | 0.5 | 坏例子的避免强度 | 负向潜在向量权重 | 0.8表示强烈避免坏例子,0.2表示轻微避免 |
| pos_latents | pos_latents | LATENT类型 | 可选 | 好例子图片的内部表示 | 正向参考潜在向量 | 连接你喜欢的图片经过VAE编码后的结果 |
| neg_latents | neg_latents | LATENT类型 | 可选 | 坏例子图片的内部表示 | 负向参考潜在向量 | 连接你不喜欢的图片经过VAE编码后的结果 |
3.2 FABRIC Patch Model (Advanced) - 高级模型改造节点
这个节点是基础改造节点的"专业版",给高级用户更多控制权。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | - | 要改装的AI模型 | 输入的扩散模型 | 连接加载的checkpoint模型 |
| null_pos | null_pos | CONDITIONING类型 | - | 好例子的空白对比基准 | 正向空条件编码 | 连接空白CLIP文本编码的输出 |
| null_neg | null_neg | CONDITIONING类型 | - | 坏例子的空白对比基准 | 负向空条件编码 | 连接空白CLIP文本编码的输出 |
| pos_weight | pos_weight | 0.0到1.0 | 0.5 | 好例子的影响强度 | 正向潜在向量权重 | 控制学习好例子的强度 |
| neg_weight | neg_weight | 0.0到1.0 | 0.5 | 坏例子的避免强度 | 负向潜在向量权重 | 控制避免坏例子的强度 |
| pos_latents | pos_latents | LATENT类型 | 可选 | 好例子图片的内部表示 | 正向参考潜在向量 | 连接你喜欢的图片的潜在表示 |
| neg_latents | neg_latents | LATENT类型 | 可选 | 坏例子图片的内部表示 | 负向参考潜在向量 | 连接你不喜欢的图片的潜在表示 |
3.3 KSampler FABRIC (Simple) - 简单反馈采样器
这个节点就像一个"简化版智能画师",把复杂的参数简化成最容易理解的形式。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | - | AI绘画模型 | 扩散模型输入 | 连接checkpoint模型 |
| seed | seed | 整数 | 随机 | 随机种子 | 随机数生成种子 | 固定数字可重现相同结果 |
| steps | steps | 整数 | 20 | 绘画步数 | 采样迭代步数 | 步数越多质量越好但越慢 |
| cfg | cfg | 小数 | 7.0 | AI听话程度 | 分类器自由引导强度 | 数值越高越严格按提示词画 |
| sampler_name | sampler_name | 采样器选择 | euler | 绘画方法选择 | 采样算法选择 | euler是常用的稳定选择 |
| scheduler | scheduler | 调度器选择 | normal | 绘画节奏控制 | 噪声调度器 | normal是标准节奏 |
| positive | positive | CONDITIONING类型 | - | 正面提示词 | 正向条件编码 | 连接CLIP编码的正面描述 |
| negative | negative | CONDITIONING类型 | - | 负面提示词 | 负向条件编码 | 连接CLIP编码的负面描述 |
| latent_image | latent_image | LATENT类型 | - | 起始画布 | 输入潜在图像 | 连接空白潜在图像或现有图片 |
| clip | clip | CLIP类型 | - | 文字理解器 | CLIP文本编码器 | 用于处理空白条件 |
| pos_weight | pos_weight | 0.0到1.0 | 0.5 | 好例子影响强度 | 正向参考权重 | 控制学习好例子的程度 |
| neg_weight | neg_weight | 0.0到1.0 | 0.5 | 坏例子避免强度 | 负向参考权重 | 控制避免坏例子的程度 |
| feedback_percent | feedback_percent | 0.0到1.0 | 0.8 | 学习阶段占比 | 反馈应用百分比 | 0.8表示前80%的步骤会参考例子 |
| pos_latents | pos_latents | LATENT类型 | 可选 | 好例子图片 | 正向参考潜在向量 | 连接你喜欢的图片 |
| neg_latents | neg_latents | LATENT类型 | 可选 | 坏例子图片 | 负向参考潜在向量 | 连接你不喜欢的图片 |
3.4 KSampler FABRIC - 标准反馈采样器
这个节点是"标准版智能画师",提供完整的控制参数。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | - | AI绘画模型 | 扩散模型输入 | 连接checkpoint模型 |
| seed | seed | 整数 | 随机 | 随机种子 | 随机数生成种子 | 控制随机性 |
| steps | steps | 整数 | 20 | 绘画步数 | 采样迭代步数 | 影响图片质量 |
| cfg | cfg | 小数 | 7.0 | AI听话程度 | 分类器自由引导强度 | 控制提示词遵循度 |
| sampler_name | sampler_name | 采样器选择 | euler | 绘画方法 | 采样算法 | 选择采样策略 |
| scheduler | scheduler | 调度器选择 | normal | 绘画节奏 | 噪声调度器 | 控制去噪过程 |
| positive | positive | CONDITIONING类型 | - | 正面提示词 | 正向条件编码 | 想要的内容描述 |
| negative | negative | CONDITIONING类型 | - | 负面提示词 | 负向条件编码 | 不想要的内容描述 |
| latent_image | latent_image | LATENT类型 | - | 起始画布 | 输入潜在图像 | 绘画的起点 |
| null_pos | null_pos | CONDITIONING类型 | - | 好例子空白基准 | 正向空条件 | 用于计算好例子的对比基准 |
| null_neg | null_neg | CONDITIONING类型 | - | 坏例子空白基准 | 负向空条件 | 用于计算坏例子的对比基准 |
| pos_weight | pos_weight | 0.0到1.0 | 0.5 | 好例子影响强度 | 正向参考权重 | 学习好例子的强度 |
| neg_weight | neg_weight | 0.0到1.0 | 0.5 | 坏例子避免强度 | 负向参考权重 | 避免坏例子的强度 |
| feedback_start | feedback_start | 0到10000 | 0 | 开始学习的步数 | 反馈开始步骤 | 从第几步开始参考例子 |
| feedback_end | feedback_end | 0到10000 | 10000 | 停止学习的步数 | 反馈结束步骤 | 到第几步停止参考例子 |
| pos_latents | pos_latents | LATENT类型 | 可选 | 好例子图片 | 正向参考潜在向量 | 要学习的图片 |
| neg_latents | neg_latents | LATENT类型 | 可选 | 坏例子图片 | 负向参考潜在向量 | 要避免的图片 |
3.5 KSampler FABRIC (Advanced) - 高级反馈采样器
这个节点是"专业版智能画师",提供最完整的高级控制选项。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | - | AI绘画模型 | 扩散模型输入 | 连接checkpoint模型 |
| add_noise | add_noise | enable/disable | enable | 是否添加噪声 | 噪声添加控制 | enable表示从纯噪声开始 |
| noise_seed | noise_seed | 整数 | 随机 | 噪声随机种子 | 噪声生成种子 | 控制噪声的随机性 |
| steps | steps | 整数 | 20 | 总绘画步数 | 采样总步数 | 完整的去噪步骤数 |
| cfg | cfg | 小数 | 7.0 | AI听话程度 | 分类器自由引导强度 | 提示词遵循强度 |
| sampler_name | sampler_name | 采样器选择 | euler | 绘画算法 | 采样器类型 | 选择去噪算法 |
| scheduler | scheduler | 调度器选择 | normal | 绘画节奏 | 噪声调度策略 | 控制去噪时间表 |
| positive | positive | CONDITIONING类型 | - | 正面提示词 | 正向条件编码 | 期望的图像内容 |
| negative | negative | CONDITIONING类型 | - | 负面提示词 | 负向条件编码 | 不期望的图像内容 |
| latent_image | latent_image | LATENT类型 | - | 起始图像 | 输入潜在图像 | 绘画的起始状态 |
| start_at_step | start_at_step | 整数 | 0 | 开始绘画步数 | 采样开始步骤 | 从第几步开始绘画 |
| end_at_step | end_at_step | 整数 | 10000 | 结束绘画步数 | 采样结束步骤 | 在第几步结束绘画 |
| return_with_leftover_noise | return_with_leftover_noise | enable/disable | disable | 是否保留剩余噪声 | 残留噪声返回控制 | enable会保留未完全去除的噪声 |
| null_pos | null_pos | CONDITIONING类型 | - | 好例子空白基准 | 正向空条件编码 | 计算正向参考的基准 |
| null_neg | null_neg | CONDITIONING类型 | - | 坏例子空白基准 | 负向空条件编码 | 计算负向参考的基准 |
| pos_weight | pos_weight | 0.0到1.0 | 0.5 | 好例子影响强度 | 正向参考权重 | 学习好例子的程度 |
| neg_weight | neg_weight | 0.0到1.0 | 0.5 | 坏例子避免强度 | 负向参考权重 | 避免坏例子的程度 |
| feedback_start | feedback_start | 0到10000 | 0 | 反馈开始步数 | 反馈应用开始步骤 | 从哪一步开始参考例子 |
| feedback_end | feedback_end | 0到10000 | 10000 | 反馈结束步数 | 反馈应用结束步骤 | 到哪一步停止参考例子 |
| pos_latents | pos_latents | LATENT类型 | 可选 | 好例子图片 | 正向参考潜在向量 | 要学习模仿的图片 |
| neg_latents | neg_latents | LATENT类型 | 可选 | 坏例子图片 | 负向参考潜在向量 | 要避免模仿的图片 |
3.6 Batch Latents - 图片批量合并节点(在model-patch-node分支中)
这个节点就像一个"图片打包器",可以把多张图片的内部表示合并成一个包,方便一次性处理多个参考例子。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| latent1 | latent1 | LATENT类型 | - | 第一张图片的内部表示 | 第一个潜在向量 | 连接第一张参考图片经过VAE编码的结果 |
| latent2 | latent2 | LATENT类型 | - | 第二张图片的内部表示 | 第二个潜在向量 | 连接第二张参考图片经过VAE编码的结果 |
4. 使用技巧和建议
4.1 新手入门流程
- 准备参考图片 - 收集几张你喜欢的图片作为"好例子",几张不喜欢的作为"坏例子"
- 用VAE编码图片 - 把参考图片通过VAE Encode节点转换成潜在表示
- 从简单节点开始 - 先用"KSampler FABRIC (Simple)"熟悉基本操作
- 调整权重参数 - pos_weight和neg_weight从0.3开始尝试,不要一开始就设太高
4.2 权重设置建议
- pos_weight(好例子权重):
- 0.1-0.3:轻微参考,保持原创性
- 0.4-0.6:中等参考,平衡学习和创新
- 0.7-1.0:强烈学习,可能过度模仿
- neg_weight(坏例子权重):
- 0.1-0.3:轻微避免
- 0.4-0.6:中等避免
- 0.7-1.0:强烈避免,可能过度限制
4.3 反馈时机控制
- feedback_percent(简单版):
- 0.5:前一半步骤参考例子
- 0.8:前80%步骤参考例子(推荐)
- 1.0:全程参考例子
- feedback_start/end(高级版):
- 建议只在前半段步骤使用反馈
- 例如:20步总共,设置start=0, end=10
4.4 图片尺寸注意事项
- 保持尺寸一致 - 输入图片、好例子、坏例子最好是相同尺寸
- 如果尺寸不同 - 插件会自动调整,但可能影响效果
- 建议预处理 - 在像素空间先调整好尺寸再编码
4.5 内存优化建议
- 遇到内存不足时:
- 减少参考图片数量
- 降低图片分辨率
- 使用较小的权重值
- 尝试不同的交叉注意力方法
5. 常见问题解答
Q1: 为什么安装后找不到FABRIC节点?
A: 确保ComfyUI版本兼容,插件在较新版本的ComfyUI上测试。如果还是找不到,尝试重启ComfyUI或检查custom_nodes文件夹中是否正确安装。
Q2: 使用时出现内存不足错误怎么办?
A:
- 减少参考图片的数量
- 降低图片分辨率
- 调低pos_weight和neg_weight值
- 在ComfyUI设置中尝试不同的交叉注意力方法
Q3: 为什么设置了参考图片但效果不明显?
A:
- 检查权重设置是否太低(试试0.5-0.8)
- 确认feedback_percent或feedback_start/end设置正确
- 参考图片可能与目标风格差异太大
- 尝试增加参考图片数量
Q4: 好例子和坏例子应该怎么选择?
A:
- 好例子:选择你希望AI学习的风格、构图、色彩的图片
- 坏例子:选择你明确不想要的效果,比如模糊、变形、不当内容
- 数量平衡:好坏例子数量不需要相等,根据需要调整
Q5: 不同的采样器节点有什么区别?
A:
- Simple:最简单,适合新手,参数少
- 标准版:提供完整控制,适合一般使用
- Advanced:最专业,提供所有高级参数,适合专家
Q6: null_pos和null_neg是什么意思?
A: 这是"空白对比基准",用来计算参考图片的影响。通常连接一个空白的CLIP文本编码(就是什么都不输入的CLIP Text Encode)。
Q7: Batch Latents节点在哪里?
A: 这个节点在model-patch-node分支中,主分支暂时没有。如果需要合并多个潜在向量,可以手动切换分支或使用其他方法。
6. 实际应用案例
6.1 风格学习案例
目标:让AI学会画特定的动漫风格
- 收集5-10张同风格的动漫图片作为好例子
- 收集几张写实照片作为坏例子(如果不想要写实风格)
- 使用KSampler FABRIC (Simple),设置pos_weight=0.6, neg_weight=0.4
- feedback_percent设为0.8
6.2 构图优化案例
目标:避免生成构图混乱的图片
- 收集构图优美的图片作为好例子
- 收集构图混乱、元素重叠的图片作为坏例子
- 使用较高的neg_weight(0.7)来强烈避免坏构图
- pos_weight设为中等(0.5)
6.3 色彩控制案例
目标:生成特定色调的图片
- 收集目标色调的图片作为好例子
- 收集不想要的色调图片作为坏例子
- 在绘画前半段使用反馈(feedback_percent=0.5)
- 后半段让AI自由发挥细节
7. 高级技巧
7.1 多轮反馈训练
- 第一轮:使用基础参考图片生成一批图片
- 从生成结果中挑选好的加入好例子,坏的加入坏例子
- 第二轮:使用更新后的参考集合再次生成
- 重复这个过程,逐步优化效果
7.2 分阶段反馈策略
- 前期(0-30%步骤):强反馈,快速确定大致方向
- 中期(30-70%步骤):中等反馈,平衡学习和创新
- 后期(70-100%步骤):弱反馈或无反馈,让AI自由完善细节
7.3 组合使用技巧
- 可以先用FABRIC Patch Model改造模型
- 然后在普通的KSampler中使用改造后的模型
- 这样可以在不同的工作流中重复使用同一个学习过的模型
8. 总结
ComfyUI_fabric插件是一个强大的反馈学习工具,包含6个功能节点(含分支),让AI能够从正负面例子中学习。通过合理使用这些节点,你可以:
- 训练AI学习特定的艺术风格
- 通过正负面例子引导AI创作方向
- 精确控制学习的时机和强度
- 实现个性化的AI绘画效果
记住,FABRIC技术的核心是"反馈学习",就像教小孩画画一样,需要耐心地提供好坏例子,并适当调整教学强度。从简单的参数开始,逐步探索更高级的功能,你会发现AI绘画的新境界。