File size: 1,492 Bytes
547a95f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | import sys
import torch
import numpy
import scipy.stats
from comfy.samplers import SchedulerHandler, SCHEDULER_HANDLERS, SCHEDULER_NAMES
MIN_FLOAT = -sys.float_info.max
MAX_FLOAT = sys.float_info.max
def beta_57_scheduler(model_sampling, steps, alpha=0.5, beta=0.7):
total_timesteps = (len(model_sampling.sigmas) - 1)
ts = 1 - numpy.linspace(0, 1, steps, endpoint=False)
ts = numpy.rint(scipy.stats.beta.ppf(ts, alpha, beta) * total_timesteps)
sigs = []
last_t = -1
for t in ts:
if t != last_t:
sigs += [float(model_sampling.sigmas[int(t)])]
last_t = t
sigs += [0.0]
return torch.FloatTensor(sigs)
scheduler_name = "beta_57"
if scheduler_name not in SCHEDULER_HANDLERS:
scheduler_handler = SchedulerHandler(handler=beta_57_scheduler, use_ms=True)
SCHEDULER_HANDLERS[scheduler_name] = scheduler_handler
if scheduler_name not in SCHEDULER_NAMES:
SCHEDULER_NAMES.append(scheduler_name)
class StaticFloat:
@classmethod
def INPUT_TYPES(s):
return {
"required": {
"value": ("FLOAT", {"default": 1.0, "min": MIN_FLOAT, "max": MAX_FLOAT, "step": 0.01}),
},
}
RETURN_TYPES = ("FLOAT",)
CATEGORY = "utils/primitive"
FUNCTION = "set_float"
def set_float(self, value: float):
return (value,)
NODE_CLASS_MAPPINGS = {
"StaticFloat": StaticFloat,
}
NODE_DISPLAY_NAME_MAPPINGS = {
"StaticFloat": "Static Float Primitive",
}
|