ComfyUI-paint-by-example 插件保姆级教程
1. 插件简介
插件地址:https://github.com/Kangkang625/ComfyUI-paint-by-example
这个插件就像一个神奇的"照片模仿师"!想象一下,你有一张漂亮的风景照,但你想把其中的一棵树换成另一种样子的树。传统方法你可能需要用PS慢慢抠图、调色。但有了这个插件,你只需要:
- 圈出要改的地方(就像用橡皮擦涂掉一样)
- 给它看一张你想要的效果图片(比如你想要的那种树的照片)
- 插件就会自动帮你把新的内容画到原图上,而且画得跟原图风格一模一样!
核心功能:
- 局部图片替换:只改图片的某一部分,其他地方保持不变
- 智能风格匹配:新画的内容会自动匹配原图的光线、色彩、质感
- 简单易用:不需要复杂的文字描述,只需要提供参考图片
2. 如何安装
方法一:ComfyUI Manager安装(推荐)
- 打开ComfyUI
- 点击右下角的"Manager"按钮
- 点击"Install Custom Nodes"
- 搜索"paint-by-example"
- 找到"ComfyUI-paint-by-example"点击安装
- 重启ComfyUI
方法二:手动安装
- 进入你的ComfyUI文件夹
- 找到
custom_nodes文件夹 - 在这个文件夹里打开命令行(终端)
- 输入:
git clone https://github.com/Kangkang625/ComfyUI-paint-by-example - 重启ComfyUI
3. 节点详解
3.1 Paint by Example Pipe(绘画模仿管道)
这个节点就像一个"万能画师",它是整个插件的核心。就像你去找画家帮你改画,你需要告诉画家:原图是什么样、哪里需要改、改成什么样。这个节点就是那个画家。
3.1.1 输入参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
| :— | :— | :— | :— | :— | :— | :— |
| 模型 | model | MODEL | 必填 | 这是"画家的大脑",决定了绘画质量 | 用于图像生成的深度学习模型 | 连接CheckpointLoaderSimple节点的MODEL输出 |
| 正向提示词 | positive | CONDITIONING | 必填 | 告诉画家"我想要什么效果" | 正向条件引导,指定期望的生成内容 | 连接CLIPTextEncode节点,输入如"beautiful landscape" |
| 负向提示词 | negative | CONDITIONING | 必填 | 告诉画家"我不想要什么效果" | 负向条件引导,避免不想要的内容 | 连接CLIPTextEncode节点,输入如"blurry, ugly" |
| 原始图片 | image | IMAGE | 必填 | 要修改的原图 | 输入的原始图像数据 | 连接LoadImage节点或其他图像源 |
| 遮罩图片 | mask | MASK | 必填 | 标记哪些地方要修改(白色=改,黑色=不改) | 二值化遮罩,指定需要修改的区域 | 用MaskEditor节点画出要修改的区域 |
| 参考图片 | reference | IMAGE | 必填 | 你想要的效果长什么样 | 作为绘制参考的示例图像 | 连接LoadImage节点加载参考图片 |
3.1.2 输出参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 输出类型 | 通俗解释 | 专业解释 | 怎么用 |
| :— | :— | :— | :— | :— | :— |
| 管道 | pipe | PIPE | 这是一个"工具箱",包含了后续生成需要的所有工具 | 封装了模型、条件和图像信息的数据结构 | 连接到PaintbyExampleSampler节点 |
3.2 PaintbyExampleSampler(绘画模仿采样器)
这个节点就像"画家的手",它接收前面节点准备好的所有材料,然后开始真正的绘画工作。就像画家拿着画笔在画布上一笔一笔地画出新内容。
3.2.1 输入参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
| :— | :— | :— | :— | :— | :— | :— |
| 管道 | pipe | PIPE | 必填 | 从前面节点传来的"工具箱" | 包含生成所需全部信息的数据结构 | 连接Paint by Example Pipe节点 |
| 采样器 | sampler_name | COMBO | "euler" | 画家的"绘画风格",不同方式画出来效果不同 | 控制图像生成过程的采样算法 | 选择euler、dpm_2、heun等 |
| 调度器 | scheduler | COMBO | "normal" | 画家的"绘画节奏",控制画画的快慢 | 控制去噪过程的调度策略 | 选择normal、karras、exponential等 |
| 绘画步数 | steps | INT | 20 | 画家要画多少遍才完成,步数越多越精细 | 去噪迭代的步数 | 一般15-30步,质量要求高可以用50步 |
| 引导强度 | cfg | FLOAT | 7.0 | 画家有多"听话",数值越大越按你的要求画 | 分类器自由引导强度 | 5.0-15.0,太高容易过度拟合 |
| 随机种子 | seed | INT | 随机 | 每次画画的"起点",相同种子会得到相同结果 | 控制随机性的种子值 | 固定种子可以复现结果 |
| 去噪强度 | denoise | FLOAT | 1.0 | 画家改动的"激进程度",1.0=完全重画,0.5=轻微修改 | 控制对原图修改程度的参数 | 0.6-1.0,数值越小保留原图越多 |
3.2.2 输出参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 输出类型 | 通俗解释 | 专业解释 | 怎么用 |
| :— | :— | :— | :— | :— | :— |
| 图像 | IMAGE | IMAGE | 画家完成的作品 | 生成的最终图像 | 连接SaveImage节点保存结果 |
| 潜在空间 | LATENT | LATENT | 画家的"草稿",可以进一步加工 | 潜在空间表示的图像数据 | 可连接其他节点继续处理 |
3.3 Paint by Example Gen(绘画模仿生成器)
这个节点是一个"简化版画家",它把前面两个节点的功能合并到一起,让你可以一步到位完成绘画。就像找一个全能画家,你只需要提供材料,他就直接给你完成品。
3.3.1 输入参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 参数类型 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
| :— | :— | :— | :— | :— | :— | :— |
| 模型 | model | MODEL | 必填 | 画家的"技能水平" | 用于生成的神经网络模型 | 连接模型加载器 |
| 正向提示词 | positive | CONDITIONING | 必填 | 告诉画家画什么风格 | 正向条件引导 | 输入描述词如"realistic, detailed" |
| 负向提示词 | negative | CONDITIONING | 必填 | 告诉画家避免什么 | 负向条件引导 | 输入如"cartoon, anime" |
| 原始图片 | image | IMAGE | 必填 | 要修改的底图 | 输入的原始图像 | 加载你要修改的图片 |
| 遮罩 | mask | MASK | 必填 | 修改区域标记 | 指定修改区域的遮罩 | 画出要改的地方 |
| 参考图片 | reference | IMAGE | 必填 | 想要的效果样本 | 作为绘制参考的图像 | 提供期望效果的图片 |
| 采样器 | sampler_name | COMBO | "euler" | 绘画算法选择 | 采样算法类型 | 根据效果需求选择 |
| 调度器 | scheduler | COMBO | "normal" | 绘画节奏控制 | 调度策略 | 一般用normal即可 |
| 步数 | steps | INT | 20 | 绘画精细程度 | 迭代步数 | 20-50步之间 |
| 引导强度 | cfg | FLOAT | 7.0 | 遵循指令的程度 | CFG引导强度 | 7.0-12.0效果较好 |
| 种子 | seed | INT | 随机 | 随机起点 | 随机种子 | 可固定获得一致结果 |
| 去噪强度 | denoise | FLOAT | 1.0 | 修改激进程度 | 去噪强度 | 0.7-1.0比较合适 |
3.3.2 输出参数详解
| 参数名 (UI显示) | 参数名 (代码里) | 输出类型 | 通俗解释 | 专业解释 | 怎么用 |
| :— | :— | :— | :— | :— | :— |
| 图像 | IMAGE | IMAGE | 最终完成的图片 | 生成的图像结果 | 连接预览或保存节点 |
4. 使用技巧和建议
4.1 参考图片选择技巧
- 风格匹配:参考图片的风格最好和原图相似,比如都是照片风格或都是画风
- 光线条件:选择光线条件相近的参考图,这样生成的内容会更自然
- 分辨率建议:参考图片不用太大,512x512像素足够
- 内容清晰:确保参考图片中你想要的内容清晰可见
4.2 遮罩制作要点
- 边缘处理:遮罩边缘要平滑,避免锯齿状
- 适当扩展:遮罩区域可以稍微大一点,让AI有更多融合空间
- 避免过小:太小的遮罩区域可能生成效果不佳
- 形状合理:遮罩形状要符合要替换内容的轮廓
4.3 参数调优建议
- CFG值调整:
- 5.0-8.0:较自然的效果
- 8.0-12.0:更强的引导效果
- 12.0+:可能出现过度拟合
- 步数设置:
- 15-25步:快速预览
- 25-40步:平衡质量和速度
- 40+步:追求最高质量
- 去噪强度:
- 0.5-0.7:轻微修改,保留更多原图
- 0.7-0.9:中等修改程度
- 0.9-1.0:大幅修改,几乎重画
4.4 提示词建议
- 正向提示词:描述画面质量和风格,如"high quality, detailed, realistic"
- 负向提示词:避免不想要的效果,如"blurry, low quality, deformed"
- 简洁明了:不需要过于复杂的描述,重点在参考图片
5. 常见问题解答
Q1:生成的图片看起来很假,不自然怎么办?
A1:
- 检查参考图片是否与原图风格匹配
- 降低CFG值(试试6.0-8.0)
- 调整去噪强度到0.7-0.8
- 确保遮罩边缘平滑
Q2:生成速度很慢怎么办?
A2:
- 减少步数到15-20步
- 使用更快的采样器如"euler"
- 检查显卡内存是否足够
- 关闭其他占用GPU的程序
Q3:生成的内容和参考图片差别很大?
A3:
- 提高CFG值到10-12
- 增加步数到30-40
- 检查参考图片质量是否足够好
- 尝试不同的采样器
Q4:报错"模型加载失败"?
A4:
- 确保已安装必要的依赖包
- 检查模型文件是否下载完整
- 尝试重启ComfyUI
- 查看控制台具体错误信息
Q5:内存不足怎么办?
A5:
- 降低输入图片分辨率
- 关闭其他程序释放内存
- 使用--lowvram启动参数
- 考虑升级显卡内存
6. 工作流程建议
6.1 基础工作流程
- LoadImage → 加载原图
- LoadImage → 加载参考图
- MaskEditor → 制作遮罩
- CheckpointLoaderSimple → 加载模型
- CLIPTextEncode → 编码正负提示词
- Paint by Example Gen → 生成图片
- SaveImage → 保存结果
6.2 高级工作流程
- 使用Paint by Example Pipe准备数据
- 使用PaintbyExampleSampler进行采样
- 可以添加UpscaleModelLoader进行放大
- 使用ImageBlend混合多个结果
6.3 批处理工作流程
- 使用LoadImageBatch批量加载图片
- 设置不同的随机种子生成多个版本
- 使用ImageBatch合并结果便于比较
7. 进阶应用场景
7.1 人像修复
- 修复老照片中的缺失部分
- 替换背景元素
- 修改服装颜色或样式
7.2 建筑设计
- 替换建筑外观材质
- 修改景观设计元素
- 调整建筑细节
7.3 艺术创作
- 风格转换实验
- 创意拼贴制作
- 概念设计可视化
7.4 产品设计
- 产品颜色变换
- 材质效果预览
- 环境场景替换
8. 性能优化建议
8.1 硬件要求
- 推荐显卡:RTX 3060 8GB以上
- 最低显卡:GTX 1660 6GB
- 内存要求:16GB以上
- 存储空间:模型文件需要5-10GB
8.2 优化设置
- 启用**--opt-split-attention**减少显存占用
- 使用**--medvram或--lowvram**选项
- 定期清理缓存文件
- 关闭不必要的预览窗口
希望这份教程能帮助你快速上手ComfyUI-paint-by-example插件!记住,AI绘画是一个需要不断尝试和调整的过程,多试几次你就能找到最适合你的参数组合。