diff --git a/modules/infotext_utils.py b/modules/infotext_utils.py index a938aa2a7..e04a7bee9 100644 --- a/modules/infotext_utils.py +++ b/modules/infotext_utils.py @@ -359,6 +359,9 @@ Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 965400086, Size: 512x512, Model if "Emphasis" not in res: res["Emphasis"] = "Original" + if "Refiner switch by sampling steps" not in res: + res["Refiner switch by sampling steps"] = False + infotext_versions.backcompat(res) for key in skip_fields: diff --git a/modules/infotext_versions.py b/modules/infotext_versions.py index 23b45c3f9..b5552a312 100644 --- a/modules/infotext_versions.py +++ b/modules/infotext_versions.py @@ -5,6 +5,7 @@ import re v160 = version.parse("1.6.0") v170_tsnr = version.parse("v1.7.0-225") +v180 = version.parse("1.8.0") def parse_version(text): @@ -40,3 +41,5 @@ def backcompat(d): if ver < v170_tsnr: d["Downcast alphas_cumprod"] = True + if ver < v180 and d.get('Refiner'): + d["Refiner switch by sampling steps"] = True diff --git a/modules/sd_samplers_common.py b/modules/sd_samplers_common.py index 045b9e2fe..6df423912 100644 --- a/modules/sd_samplers_common.py +++ b/modules/sd_samplers_common.py @@ -155,14 +155,16 @@ def replace_torchsde_browinan(): replace_torchsde_browinan() -def apply_refiner(cfg_denoiser, sigma): - if opts.refiner_switch_by_sample_steps: +def apply_refiner(cfg_denoiser, sigma=None): + if opts.refiner_switch_by_sample_steps or not sigma: completed_ratio = cfg_denoiser.step / cfg_denoiser.total_steps + cfg_denoiser.p.extra_generation_params["Refiner switch by sampling steps"] = True + else: # torch.max(sigma) only to handle rare case where we might have different sigmas in the same batch try: timestep = torch.argmin(torch.abs(cfg_denoiser.inner_model.sigmas - torch.max(sigma))) - except AttributeError: # for samplers that dont use sigmas (DDIM) sigma is actually the timestep + except AttributeError: # for samplers that don't use sigmas (DDIM) sigma is actually the timestep timestep = torch.max(sigma).to(dtype=int) completed_ratio = (999 - timestep) / 1000