ComfyUI_restart_sampling 重启采样插件完全教程
1. 插件简介
插件地址: https://github.com/ssitu/ComfyUI_restart_sampling
这个插件是基于论文《Restart Sampling for Improving Generative Processes》开发的,简单来说就是让你的图片生成过程变得更聪明。
想象一下,平时我们生成图片就像画画一样,从粗糙的草图一步步细化到最终成品。而这个重启采样插件就像是给你一个"重来"的机会 - 在某些关键步骤,它会故意加一点"噪音"(就像把画面弄模糊一点),然后重新开始细化,这样反复几次,最终得到的图片质量会更好。
能带来什么效果:
- 图片细节更丰富
- 减少生成过程中的错误累积
- 在某些情况下能得到更好的图片质量
- 特别适合需要高质量输出的场景
2. 如何安装
方法一:通过 ComfyUI Manager 安装(推荐)
- 打开 ComfyUI Manager
- 搜索 "restart sampling"
- 点击安装即可
方法二:手动安装
- 打开终端/命令提示符
- 进入 ComfyUI 的 custom_nodes 文件夹
- 执行命令:
git clone https://github.com/ssitu/ComfyUI_restart_sampling
- 重启 ComfyUI
安装成功后,你可以在节点菜单的 sampling(采样)分类下找到这些新节点。
3. 节点详细解析
3.1 KSampler With Restarts (Simple) 节点
这个节点是干嘛的?
这是最简单的重启采样节点,就像是普通采样器的"升级版"。它会在生成过程中的特定时机进行"重启",让图片质量更好。适合新手使用,因为参数相对简单。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 必填 | 这是你要用的AI模型,就像选择不同的画家 | 指定用于生成的扩散模型 | 连接你加载的模型节点 |
| seed | seed | 0-18446744073709551615 | 随机或固定值 | 这是随机种子,就像掷骰子的结果,相同种子会得到相似图片 | 控制随机数生成的种子值 | 想要可重复结果就用固定值,如12345 |
| steps | steps | 1-10000 | 20-50 | 这是生成步数,就像画画的笔画数,越多越精细但也越慢 | 扩散过程的总步数 | 一般用20-30步就够了,质量要求高可以用50步 |
| cfg | cfg | 0.0-100.0 | 7.0-8.0 | 这控制AI听你话的程度,数值越高越严格按提示词生成 | Classifier-Free Guidance强度 | 7-8比较平衡,太高会过度拟合提示词 |
| sampler_name | sampler_name | 支持的采样器列表 | euler、heun | 这是采样方法,就像不同的绘画技法 | 指定使用的采样算法 | euler适合大多数情况,heun质量更高但较慢 |
| scheduler | scheduler | 支持的调度器列表 | karras | 这控制每一步的"力度",就像控制画笔的轻重 | 噪声调度策略 | karras是论文推荐的,效果比较好 |
| positive | positive | CONDITIONING类型 | 必填 | 这是正面提示词,告诉AI你想要什么 | 正向条件引导 | 连接你的正面提示词编码节点 |
| negative | negative | CONDITIONING类型 | 必填 | 这是负面提示词,告诉AI你不想要什么 | 负向条件引导 | 连接你的负面提示词编码节点 |
| latent_image | latent_image | LATENT类型 | 必填 | 这是初始的"画布",就像空白纸张 | 输入的潜在空间图像 | 通常连接Empty Latent Image节点 |
| denoise | denoise | 0.0-1.0 | 1.0 | 这控制去噪强度,1.0是完全去噪,0.5是半去噪 | 去噪程度控制 | 1.0用于从头生成,0.7-0.8用于图生图 |
| segments | segments | 字符串 | "default" | 这定义重启的时机和次数,就像设定"重画"的节点 | 重启段配置字符串 | 新手直接用"default",高级用户可以自定义 |
3.2 KSampler With Restarts 节点
这个节点是干嘛的?
这是标准版的重启采样节点,比简单版多了一个重启调度器的选择。它让你可以分别控制正常生成和重启阶段使用不同的"节奏",就像可以在不同阶段使用不同的绘画技法。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 必填 | 这是你要用的AI模型,就像选择不同的画家 | 指定用于生成的扩散模型 | 连接你加载的模型节点 |
| seed | seed | 0-18446744073709551615 | 随机或固定值 | 这是随机种子,就像掷骰子的结果,相同种子会得到相似图片 | 控制随机数生成的种子值 | 想要可重复结果就用固定值,如12345 |
| steps | steps | 1-10000 | 20-50 | 这是生成步数,就像画画的笔画数,越多越精细但也越慢 | 扩散过程的总步数 | 一般用20-30步就够了,质量要求高可以用50步 |
| cfg | cfg | 0.0-100.0 | 7.0-8.0 | 这控制AI听你话的程度,数值越高越严格按提示词生成 | Classifier-Free Guidance强度 | 7-8比较平衡,太高会过度拟合提示词 |
| sampler_name | sampler_name | 支持的采样器列表 | euler、heun | 这是采样方法,就像不同的绘画技法 | 指定使用的采样算法 | euler适合大多数情况,heun质量更高但较慢 |
| scheduler | scheduler | 支持的调度器列表 | normal、karras | 这控制正常生成阶段每一步的"力度" | 主要采样过程的噪声调度策略 | normal是标准选择,karras在某些情况下效果更好 |
| positive | positive | CONDITIONING类型 | 必填 | 这是正面提示词,告诉AI你想要什么 | 正向条件引导 | 连接你的正面提示词编码节点 |
| negative | negative | CONDITIONING类型 | 必填 | 这是负面提示词,告诉AI你不想要什么 | 负向条件引导 | 连接你的负面提示词编码节点 |
| latent_image | latent_image | LATENT类型 | 必填 | 这是初始的"画布",就像空白纸张 | 输入的潜在空间图像 | 通常连接Empty Latent Image节点 |
| denoise | denoise | 0.0-1.0 | 1.0 | 这控制去噪强度,1.0是完全去噪,0.5是半去噪 | 去噪程度控制 | 1.0用于从头生成,0.7-0.8用于图生图 |
| segments | segments | 字符串 | "[3,2,0.06,0.30],[3,1,0.30,0.59]" | 这定义重启的时机和次数,就像设定"重画"的节点 | 重启段配置字符串 | 默认值适合大多数情况,格式:[重启次数,重复次数,最小值,最大值] |
| restart_scheduler | restart_scheduler | 支持的重启调度器列表 | karras | 这控制重启阶段每一步的"力度" | 重启段专用的噪声调度策略 | karras是论文推荐的重启调度器 |
| chunked_mode | chunked_mode | True/False | True | 这控制是否分块处理,开启后效率更高 | 是否启用分块采样模式 | True可以提高某些采样器的准确性 |
3.3 KSampler With Restarts (Advanced) 节点
这个节点是干嘛的?
这是高级版的重启采样节点,提供了更多精细控制选项。就像专业画家的工具箱,可以控制从哪一步开始画,在哪一步结束,是否保留"草稿"等等。适合有经验的用户使用。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 必填 | 这是你要用的AI模型,就像选择不同的画家 | 指定用于生成的扩散模型 | 连接你加载的模型节点 |
| add_noise | add_noise | enable/disable | enable | 这控制是否添加初始噪音,就像决定是否从空白画布开始 | 是否在采样开始时添加噪声 | enable用于正常生成,disable用于继续已有图片 |
| noise_seed | noise_seed | 0-18446744073709551615 | 随机或固定值 | 这是噪音种子,控制初始"乱涂"的样子 | 噪声生成的随机种子 | 固定值可以得到一致的初始噪声 |
| steps | steps | 1-10000 | 20-50 | 这是生成步数,就像画画的笔画数,越多越精细但也越慢 | 扩散过程的总步数 | 一般用20-30步就够了,质量要求高可以用50步 |
| cfg | cfg | 0.0-100.0 | 7.0-8.0 | 这控制AI听你话的程度,数值越高越严格按提示词生成 | Classifier-Free Guidance强度 | 7-8比较平衡,太高会过度拟合提示词 |
| sampler_name | sampler_name | 支持的采样器列表 | euler、heun | 这是采样方法,就像不同的绘画技法 | 指定使用的采样算法 | euler适合大多数情况,heun质量更高但较慢 |
| scheduler | scheduler | 支持的调度器列表 | normal、karras | 这控制正常生成阶段每一步的"力度" | 主要采样过程的噪声调度策略 | normal是标准选择,karras在某些情况下效果更好 |
| positive | positive | CONDITIONING类型 | 必填 | 这是正面提示词,告诉AI你想要什么 | 正向条件引导 | 连接你的正面提示词编码节点 |
| negative | negative | CONDITIONING类型 | 必填 | 这是负面提示词,告诉AI你不想要什么 | 负向条件引导 | 连接你的负面提示词编码节点 |
| latent_image | latent_image | LATENT类型 | 必填 | 这是初始的"画布",就像空白纸张 | 输入的潜在空间图像 | 通常连接Empty Latent Image节点 |
| start_at_step | start_at_step | 0-10000 | 0 | 这控制从第几步开始生成,就像跳过前面的草稿阶段 | 开始采样的步数 | 0是从头开始,10表示跳过前10步 |
| end_at_step | end_at_step | 0-10000 | 10000 | 这控制在第几步结束,就像提前停笔 | 结束采样的步数 | 10000表示不提前结束,20表示只做20步 |
| return_with_leftover_noise | return_with_leftover_noise | disable/enable | disable | 这控制是否保留最后的"草稿感",就像是否完全完成作品 | 是否返回带有剩余噪声的结果 | disable得到完全清晰的图,enable保留一些"未完成"感 |
| segments | segments | 字符串 | "[3,2,0.06,0.30],[3,1,0.30,0.59]" | 这定义重启的时机和次数,就像设定"重画"的节点 | 重启段配置字符串 | 默认值适合大多数情况,格式:[重启次数,重复次数,最小值,最大值] |
| restart_scheduler | restart_scheduler | 支持的重启调度器列表 | karras | 这控制重启阶段每一步的"力度" | 重启段专用的噪声调度策略 | karras是论文推荐的重启调度器 |
| chunked_mode | chunked_mode | True/False | True | 这控制是否分块处理,开启后效率更高 | 是否启用分块采样模式 | True可以提高某些采样器的准确性 |
3.4 KSampler With Restarts (Custom) 节点
这个节点是干嘛的?
这是自定义版的重启采样节点,最大的特点是可以接受外部的采样器输入。就像是一个"万能接口",可以配合其他自定义采样器使用,给高级用户最大的灵活性。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 必填 | 这是你要用的AI模型,就像选择不同的画家 | 指定用于生成的扩散模型 | 连接你加载的模型节点 |
| add_noise | add_noise | enable/disable | enable | 这控制是否添加初始噪音,就像决定是否从空白画布开始 | 是否在采样开始时添加噪声 | enable用于正常生成,disable用于继续已有图片 |
| noise_seed | noise_seed | 0-18446744073709551615 | 随机或固定值 | 这是噪音种子,控制初始"乱涂"的样子 | 噪声生成的随机种子 | 固定值可以得到一致的初始噪声 |
| steps | steps | 1-10000 | 20-50 | 这是生成步数,就像画画的笔画数,越多越精细但也越慢 | 扩散过程的总步数 | 一般用20-30步就够了,质量要求高可以用50步 |
| cfg | cfg | 0.0-100.0 | 7.0-8.0 | 这控制AI听你话的程度,数值越高越严格按提示词生成 | Classifier-Free Guidance强度 | 7-8比较平衡,太高会过度拟合提示词 |
| sampler | sampler | SAMPLER类型 | 必填 | 这是外部采样器输入,就像选择特殊的画笔 | 自定义采样器对象 | 连接其他采样器节点,如KSamplerSelect |
| scheduler | scheduler | 支持的调度器列表 | normal、karras | 这控制正常生成阶段每一步的"力度" | 主要采样过程的噪声调度策略 | normal是标准选择,karras在某些情况下效果更好 |
| positive | positive | CONDITIONING类型 | 必填 | 这是正面提示词,告诉AI你想要什么 | 正向条件引导 | 连接你的正面提示词编码节点 |
| negative | negative | CONDITIONING类型 | 必填 | 这是负面提示词,告诉AI你不想要什么 | 负向条件引导 | 连接你的负面提示词编码节点 |
| latent_image | latent_image | LATENT类型 | 必填 | 这是初始的"画布",就像空白纸张 | 输入的潜在空间图像 | 通常连接Empty Latent Image节点 |
| start_at_step | start_at_step | 0-10000 | 0 | 这控制从第几步开始生成,就像跳过前面的草稿阶段 | 开始采样的步数 | 0是从头开始,10表示跳过前10步 |
| end_at_step | end_at_step | 0-10000 | 10000 | 这控制在第几步结束,就像提前停笔 | 结束采样的步数 | 10000表示不提前结束,20表示只做20步 |
| return_with_leftover_noise | return_with_leftover_noise | disable/enable | disable | 这控制是否保留最后的"草稿感",就像是否完全完成作品 | 是否返回带有剩余噪声的结果 | disable得到完全清晰的图,enable保留一些"未完成"感 |
| segments | segments | 字符串 | "[3,2,0.06,0.30],[3,1,0.30,0.59]" | 这定义重启的时机和次数,就像设定"重画"的节点 | 重启段配置字符串 | 默认值适合大多数情况,格式:[重启次数,重复次数,最小值,最大值] |
| restart_scheduler | restart_scheduler | 支持的重启调度器列表 | karras | 这控制重启阶段每一步的"力度" | 重启段专用的噪声调度策略 | karras是论文推荐的重启调度器 |
| chunked_mode | chunked_mode | True/False | True | 这控制是否分块处理,开启后效率更高 | 是否启用分块采样模式 | True可以提高某些采样器的准确性 |
3.5 RestartScheduler 节点
这个节点是干嘛的?
这是重启调度器节点,专门用于自定义采样流程。它就像一个"时间表制定者",负责安排整个生成过程的节奏,包括什么时候重启、重启多少次等。通常和RestartSampler节点配合使用。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| model | model | MODEL类型 | 必填 | 这是你要用的AI模型,就像选择不同的画家 | 指定用于生成的扩散模型 | 连接你加载的模型节点 |
| steps | steps | 1-10000 | 20-50 | 这是生成步数,就像画画的笔画数,越多越精细但也越慢 | 扩散过程的总步数 | 一般用20-30步就够了,质量要求高可以用50步 |
| scheduler | scheduler | 支持的调度器列表 | normal、karras | 这控制正常生成阶段每一步的"力度" | 主要采样过程的噪声调度策略 | normal是标准选择,karras在某些情况下效果更好 |
| segments | segments | 字符串 | "[3,2,0.06,0.30],[3,1,0.30,0.59]" | 这定义重启的时机和次数,就像设定"重画"的节点 | 重启段配置字符串 | 默认值适合大多数情况,格式:[重启次数,重复次数,最小值,最大值] |
| restart_scheduler | restart_scheduler | 支持的重启调度器列表 | karras | 这控制重启阶段每一步的"力度" | 重启段专用的噪声调度策略 | karras是论文推荐的重启调度器 |
| denoise | denoise | 0.0-1.0 | 1.0 | 这控制去噪强度,1.0是完全去噪,0.5是半去噪 | 去噪程度控制 | 1.0用于从头生成,0.7-0.8用于图生图 |
| start_at_step | start_at_step | 0-10000 | 0 | 这控制从第几步开始生成,就像跳过前面的草稿阶段 | 开始采样的步数 | 0是从头开始,10表示跳过前10步 |
| end_at_step | end_at_step | 0-10000 | 10000 | 这控制在第几步结束,就像提前停笔 | 结束采样的步数 | 10000表示不提前结束,20表示只做20步 |
| sigmas_opt | sigmas_opt | SIGMAS类型(可选) | 可不连接 | 这是可选的自定义时间表,就像提供现成的"作画计划" | 可选的自定义sigma序列 | 不连接就用默认计划,连接了就用你提供的计划 |
3.6 RestartSampler 节点
这个节点是干嘛的?
这是重启采样器节点,专门用于自定义采样流程。它就像一个"智能画笔",可以接收其他采样器并给它们加上重启功能。必须和RestartScheduler节点配合使用才能发挥作用。
参数详解:
| 参数名 (UI显示) | 参数名 (代码里) | 参数值 | 建议值 | 通俗解释 (能干嘛的) | 专业解释 | 怎么用/举个例子 |
|---|---|---|---|---|---|---|
| sampler | sampler | SAMPLER类型 | 必填 | 这是要包装的采样器,就像选择基础画笔 | 需要添加重启功能的基础采样器 | 连接KSamplerSelect或其他采样器节点 |
| chunked_mode | chunked_mode | True/False | True | 这控制是否分块处理,开启后效率更高 | 是否启用分块采样模式 | True可以提高某些采样器的准确性 |
4. 使用技巧和建议
4.1 新手推荐设置
- 节点选择: 优先使用 "KSampler With Restarts (Simple)"
- segments参数: 直接用 "default"
- 采样器: 选择 "euler" 或 "heun"
- 调度器: 选择 "karras"
- 步数: 20-30步足够
4.2 进阶用户设置
- 节点选择: 使用 "KSampler With Restarts" 或 "Advanced" 版本
- 自定义segments: 可以尝试
[4,1,0.1,0.5],[2,2,0.01,0.1]这样的配置 - chunked_mode: 建议保持开启,除非遇到兼容性问题
4.3 segments参数详解
segments参数的格式是:[N_restart, K, t_min, t_max]
- N_restart: 重启次数(包括原始的1次)
- K: 每个重启段重复多少次
- t_min: 重启的最小噪声值
- t_max: 重启的最大噪声值
预设值说明:
"default":使用默认设置[3,2,0.06,0.30],[3,1,0.30,0.59]"a1111":模拟A1111 WebUI的重启采样行为
4.4 性能优化建议
- chunked_mode开启: 可以提高效率,特别是对于某些采样器
- 合理选择步数: 不要盲目增加步数,20-30步通常就够了
- 避免过度重启: 太多重启段会显著增加生成时间
5. 常见问题解答
Q1:为什么我的生成时间变长了?
A: 重启采样会增加额外的步数。比如默认设置会增加约 (3-1)*2 + (3-1)*1 = 6 个额外步数。这是正常现象,质量提升需要付出时间成本。
Q2:所有采样器都支持重启采样吗?
A: 不是的。以下采样器不支持:
- uni_pc、uni_pc_bh2
- dpmpp_sde、dpmpp_sde_gpu
- dpmpp_2m_sde、dpmpp_2m_sde_gpu
- dpmpp_3m_sde、dpmpp_3m_sde_gpu
- dpm_fast、dpm_adaptive
Q3:重启采样适合什么场景?
A: 特别适合:
- 需要高质量输出的场景
- 复杂构图的生成
- 细节丰富的图像
- 对生成质量要求高于生成速度的情况
Q4:segments参数怎么自定义?
A: 格式:[重启次数, 重复次数, 最小值, 最大值]
- 数值可以是正数(sigma值)
- 负数(时间步,如-500)
- 百分比(如"25%",注意要加引号)
Q5:出现错误"invalid segments"怎么办?
A: 通常是segments参数设置不当导致的:
- 检查t_min是否小于t_max
- 确保数值范围合理
- 尝试使用"default"先测试
Q6:如何开启详细日志?
A: 设置环境变量 COMFYUI_VERBOSE_RESTART_SAMPLING=1,重启采样会在控制台输出详细的步骤信息。
6. 高级应用
6.1 配合其他插件使用
重启采样可以和大多数其他ComfyUI插件配合使用,比如:
- ControlNet插件
- LoRA插件
- 各种后处理插件
6.2 自定义采样流程
使用RestartScheduler和RestartSampler节点可以构建完全自定义的采样流程:
- RestartScheduler生成时间表
- RestartSampler包装你选择的采样器
- 配合SamplerCustom节点使用
6.3 批量处理优化
对于批量生成,建议:
- 使用相同的segments设置以保持一致性
- 合理设置chunked_mode以平衡速度和质量
- 考虑使用较少的重启段以提高效率
7. 总结
ComfyUI重启采样插件是一个强大的工具,可以显著提升图像生成质量。虽然会增加一些生成时间,但在追求高质量输出时是非常值得的。
选择建议:
- 新手: 使用Simple版本,参数用默认值
- 进阶用户: 使用标准版本,尝试自定义segments
- 高级用户: 使用Advanced或Custom版本,配合自定义采样流程
记住,重启采样不是万能的,它更适合那些对质量要求高、愿意花费更多时间的场景。在日常快速出图时,传统采样器可能更合适。
希望这个教程能帮助你更好地理解和使用ComfyUI重启采样插件!