3.1 KiB
3.1 KiB
tags
| tags | |
|---|---|
|
Sigma Schedule Interpolated Mean 🎭🅐🅓
Documentation
- Class name:
ADE_SigmaScheduleWeightedAverageInterp - Category:
Animate Diff 🎭🅐🅓/sample settings/sigma schedule - Output node:
False
This node is designed to create a new sigma schedule by interpolating between two given sigma schedules based on a specified weight range and interpolation method. It effectively blends the characteristics of both input schedules into a single, new schedule, allowing for dynamic adjustments in the diffusion process.
Input types
Required
schedule_A- The first sigma schedule to be interpolated.
- Comfy dtype:
SIGMA_SCHEDULE - Python dtype:
SigmaSchedule
schedule_B- The second sigma schedule to be interpolated.
- Comfy dtype:
SIGMA_SCHEDULE - Python dtype:
SigmaSchedule
weight_A_Start- The starting weight for the first sigma schedule in the interpolation.
- Comfy dtype:
FLOAT - Python dtype:
float
weight_A_End- The ending weight for the first sigma schedule in the interpolation.
- Comfy dtype:
FLOAT - Python dtype:
float
interpolation- The method of interpolation to be used for blending the sigma schedules.
- Comfy dtype:
COMBO[STRING] - Python dtype:
InterpolationMethod
Output types
sigma_schedule- Comfy dtype:
SIGMA_SCHEDULE - The resulting sigma schedule after interpolation.
- Python dtype:
SigmaSchedule
- Comfy dtype:
Usage tips
- Infra type:
CPU - Common nodes: unknown
Source code
class InterpolatedWeightedAverageSigmaScheduleNode:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"schedule_A": ("SIGMA_SCHEDULE",),
"schedule_B": ("SIGMA_SCHEDULE",),
"weight_A_Start": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.001}),
"weight_A_End": ("FLOAT", {"default": 0.5, "min": 0.0, "max": 1.0, "step": 0.001}),
"interpolation": (InterpolationMethod._LIST,),
}
}
RETURN_TYPES = ("SIGMA_SCHEDULE",)
CATEGORY = "Animate Diff 🎭🅐🅓/sample settings/sigma schedule"
FUNCTION = "get_sigma_schedule"
def get_sigma_schedule(self, schedule_A: SigmaSchedule, schedule_B: SigmaSchedule,
weight_A_Start: float, weight_A_End: float, interpolation: str):
validate_sigma_schedule_compatibility(schedule_A, schedule_B)
# get reverse weights, since sigmas are currently reversed
weights = InterpolationMethod.get_weights(num_from=weight_A_Start, num_to=weight_A_End,
length=schedule_A.total_sigmas(), method=interpolation, reverse=True)
weights = weights.to(schedule_A.model_sampling.sigmas.dtype).to(schedule_A.model_sampling.sigmas.device)
new_sigmas = schedule_A.model_sampling.sigmas * weights + schedule_B.model_sampling.sigmas * (1.0-weights)
combo_schedule = schedule_A.clone()
combo_schedule.model_sampling.set_sigmas(new_sigmas)
return (combo_schedule,)