58 lines
2.2 KiB
Python
58 lines
2.2 KiB
Python
import torch
|
|
from . import a1111_compat
|
|
import comfy
|
|
|
|
class KSampler_progress(a1111_compat.KSampler_inspire):
|
|
@classmethod
|
|
def INPUT_TYPES(s):
|
|
return {"required":
|
|
{"model": ("MODEL",),
|
|
"seed": ("INT", {"default": 0, "min": 0, "max": 0xffffffffffffffff}),
|
|
"steps": ("INT", {"default": 20, "min": 1, "max": 10000}),
|
|
"cfg": ("FLOAT", {"default": 8.0, "min": 0.0, "max": 100.0}),
|
|
"sampler_name": (comfy.samplers.KSampler.SAMPLERS, ),
|
|
"scheduler": (comfy.samplers.KSampler.SCHEDULERS, ),
|
|
"positive": ("CONDITIONING", ),
|
|
"negative": ("CONDITIONING", ),
|
|
"latent_image": ("LATENT", ),
|
|
"denoise": ("FLOAT", {"default": 1.0, "min": 0.0, "max": 1.0, "step": 0.01}),
|
|
"noise_mode": (["GPU(=A1111)", "CPU"],),
|
|
"interval": ("INT", {"default": 1, "min": 1, "max": 10000}),
|
|
}
|
|
}
|
|
|
|
CATEGORY = "InspirePack/analysis"
|
|
|
|
RETURN_TYPES = ("LATENT", "LATENT")
|
|
RETURN_NAMES = ("latent", "progress_latent")
|
|
|
|
def sample(self, model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, denoise, noise_mode, interval):
|
|
adv_steps = int(steps / denoise)
|
|
|
|
sampler = a1111_compat.KSamplerAdvanced_inspire()
|
|
|
|
result = []
|
|
for i in range(0, adv_steps+1):
|
|
add_noise = i == 0
|
|
return_with_leftover_noise = i != adv_steps
|
|
latent_image = sampler.sample(model, add_noise, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image, i, i+1, noise_mode, return_with_leftover_noise)[0]
|
|
if i % interval == 0 or i == adv_steps:
|
|
result.append(latent_image['samples'])
|
|
|
|
if len(result) > 0:
|
|
result = torch.cat(result)
|
|
result = {'samples': result}
|
|
else:
|
|
result = latent_image
|
|
|
|
return (latent_image, result)
|
|
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"KSamplerProgress //Inspire": KSampler_progress,
|
|
}
|
|
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"KSamplerProgress //Inspire": "KSampler Progress (Inspire)",
|
|
}
|