Handle SD Forge as a special case in denoiser callback

Fix as per muerrilla's recommended: https://github.com/muerrilla/sd-webui-detail-daemon/pull/5#issuecomment-2205588958
This commit is contained in:
LoganBooker
2024-07-04 00:41:46 +10:00
committed by GitHub
parent fa6a0dc9e8
commit fda4a8799c

View File

@@ -152,15 +152,20 @@ class Script(scripts.Script):
def denoiser_callback(self, params):
if self.is_hires:
return
idx = params.denoiser.step
multiplier = 1 - self.schedule[idx]
if self.mode == "cond":
params.sigma[0] *= 1 - self.schedule[idx] * .1
elif self.mode == "uncond":
params.sigma[1 if params.sigma.size(0) > 1 else 0] *= 1 - self.schedule[idx] * -.1
idx = params.denoiser.step
multiplier = self.schedule[idx] * .1
mode = self.mode
if params.sigma.size(0) == 1:
mode = "forge"
if idx == 0:
tqdm.write(f'\033[33mINFO:\033[0m Forge does not support `cond` and `uncond` modes')
if mode == "cond":
params.sigma[0] *= 1 - multiplier
elif mode == "uncond":
params.sigma[1] *= 1 + multiplier
else:
params.sigma *= 1 - self.schedule[idx] * .1 * self.cfg_scale
params.sigma *= 1 - multiplier * self.cfg_scale
def make_schedule(self, steps, start, end, bias, amount, exponent, start_offset, end_offset, fade, smooth):
start = min(start, end)
mid = start + bias * (end - start)