correct noise sigmas

This commit is contained in:
lvmin 2023-10-14 20:05:32 -07:00
parent 138d461982
commit 4b6082bca9
2 changed files with 13 additions and 5 deletions

View File

@ -1 +1 @@
version = '2.1.66' version = '2.1.67'

View File

@ -471,8 +471,8 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height
denoise=denoise)[switch:] denoise=denoise)[switch:]
k1 = target_model.model.latent_format.scale_factor k1 = target_model.model.latent_format.scale_factor
k2 = final_unet.model.latent_format.scale_factor k2 = final_unet.model.latent_format.scale_factor
k = float(k1) / float(k2) k_sigmas = float(k1) / float(k2)
sigmas = sigmas * k sigmas = sigmas * k_sigmas
len_sigmas = len(sigmas) - 1 len_sigmas = len(sigmas) - 1
last_step, last_clean_latent, last_noisy_latent = sample_hijack.history_record[-1] last_step, last_clean_latent, last_noisy_latent = sample_hijack.history_record[-1]
@ -481,6 +481,14 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height
last_noise = last_noisy_latent - last_clean_latent last_noise = last_noisy_latent - last_clean_latent
last_noise = last_noise / last_noise.std() last_noise = last_noise / last_noise.std()
noise_mean = torch.mean(last_noise, dim=1, keepdim=True).repeat(1, 4, 1, 1) / k_sigmas
refiner_noise = torch.normal(
mean=noise_mean,
std=torch.ones_like(noise_mean),
generator=torch.manual_seed(image_seed+1) # Avoid artifacts
).to(last_noise)
sampled_latent = {'samples': last_clean_latent} sampled_latent = {'samples': last_clean_latent}
sampled_latent = vae_parse(sampled_latent) sampled_latent = vae_parse(sampled_latent)
@ -493,7 +501,7 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height
negative=clip_separate(negative_cond, target_model=target_model.model, target_clip=final_clip), negative=clip_separate(negative_cond, target_model=target_model.model, target_clip=final_clip),
latent=sampled_latent, latent=sampled_latent,
steps=len_sigmas, start_step=0, last_step=len_sigmas, disable_noise=False, force_full_denoise=True, steps=len_sigmas, start_step=0, last_step=len_sigmas, disable_noise=False, force_full_denoise=True,
seed=image_seed+1, # Avoid artifacts seed=image_seed+2, # Avoid artifacts
denoise=denoise, denoise=denoise,
callback_function=callback, callback_function=callback,
cfg=cfg_scale, cfg=cfg_scale,
@ -502,7 +510,7 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height
previewer_start=switch, previewer_start=switch,
previewer_end=steps, previewer_end=steps,
sigmas=sigmas, sigmas=sigmas,
noise=last_noise noise=refiner_noise
) )
if modules.inpaint_worker.current_task is not None: if modules.inpaint_worker.current_task is not None: