74 lines
3.5 KiB
Markdown
74 lines
3.5 KiB
Markdown
# Documentation
|
|
- Class name: IterativeMixingSchedulerAdvanced
|
|
- Category: sampling/custom_sampling/schedulers
|
|
- Output node: False
|
|
- Repo Ref: https://github.com/ttulttul/ComfyUI-Iterative-Mixer
|
|
|
|
IterativeMixingSchedulerAdvanced节点旨在为迭代采样过程生成一系列噪声水平,即sigmas。它根据去噪参数智能调整采样步骤,确保输出精细调整到所需的噪声减少水平。该节点在控制高级迭代采样技术的采样计划中发挥关键作用,有助于提高采样过程的整体质量和效率。
|
|
|
|
# Input types
|
|
## Required
|
|
- model
|
|
- 模型参数对节点的操作至关重要,因为它定义了将要应用调度器的生成模型。它直接影响生成的sigmas的质量和类型,这对于采样过程至关重要。
|
|
- Comfy dtype: MODEL
|
|
- Python dtype: comfy.model_management.Model
|
|
- scheduler
|
|
- 调度器参数决定了采样过程中将使用的调度策略。它是计算sigmas的关键因素,因此影响迭代采样的整体性能。
|
|
- Comfy dtype: SCHEDULER_NAMES
|
|
- Python dtype: str
|
|
- steps
|
|
- steps参数指定了采样过程中要进行的迭代次数或步骤数。它是控制采样计划持续时间和粒度的重要因素。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- start_at_step
|
|
- start_at_step参数允许自定义采样计划的起始点。它可以用来跳过初始步骤或在过程的特定点开始采样。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- end_at_step
|
|
- end_at_step参数定义了采样计划的终点。它可以用来限制执行的步骤数,在预定点停止采样过程。
|
|
- Comfy dtype: INT
|
|
- Python dtype: int
|
|
- denoise
|
|
- denoise参数在采样过程中调整噪声减少的水平。它是确定最终输出质量的关键因素,通过控制去噪步骤的强度来实现。
|
|
- Comfy dtype: FLOAT
|
|
- Python dtype: float
|
|
|
|
# Output types
|
|
- sigmas
|
|
- sigmas输出代表了节点生成的噪声水平序列。这些值在迭代采样过程中起着指导作用,引导模型产生更高质量的输出。
|
|
- Comfy dtype: SIGMAS
|
|
- Python dtype: torch.Tensor
|
|
|
|
# Usage tips
|
|
- Infra type: CPU
|
|
|
|
# Source code
|
|
```
|
|
class IterativeMixingSchedulerAdvanced:
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {'required': {'model': ('MODEL',), 'scheduler': (comfy.samplers.SCHEDULER_NAMES,), 'steps': ('INT', {'default': 20, 'min': 1, 'max': 10000}), 'start_at_step': ('INT', {'default': 0, 'min': 0, 'max': 10000}), 'end_at_step': ('INT', {'default': 10000, 'min': 0, 'max': 10000}), 'denoise': ('FLOAT', {'default': 1.0, 'min': 0.0, 'max': 1.0, 'step': 0.01})}}
|
|
RETURN_TYPES = ('SIGMAS',)
|
|
CATEGORY = 'sampling/custom_sampling/schedulers'
|
|
FUNCTION = 'get_sigmas'
|
|
|
|
@torch.no_grad()
|
|
def get_sigmas(self, model, scheduler, steps, start_at_step, end_at_step, denoise):
|
|
sigmas = None
|
|
cs = comfy.samplers.calculate_sigmas_scheduler
|
|
if denoise is None or denoise > 0.9999:
|
|
sigmas = cs(model.model, scheduler, steps).cpu()
|
|
else:
|
|
new_steps = int(steps / denoise)
|
|
sigmas = cs(model.model, scheduler, new_steps).cpu()
|
|
sigmas = sigmas[-(steps + 1):]
|
|
if end_at_step is not None and end_at_step < len(sigmas) - 1:
|
|
sigmas = sigmas[:end_at_step + 1]
|
|
if start_at_step is not None:
|
|
if start_at_step < len(sigmas) - 1:
|
|
sigmas = sigmas[start_at_step:]
|
|
else:
|
|
return torch.Tensor([])
|
|
return (sigmas,)
|
|
``` |