diff --git a/extensions-builtin/forge_preprocessor_inpaint/scripts/preprocessor_inpaint.py b/extensions-builtin/forge_preprocessor_inpaint/scripts/preprocessor_inpaint.py index d91b06a9..6bbc141f 100644 --- a/extensions-builtin/forge_preprocessor_inpaint/scripts/preprocessor_inpaint.py +++ b/extensions-builtin/forge_preprocessor_inpaint/scripts/preprocessor_inpaint.py @@ -56,7 +56,7 @@ class PreprocessorInpaintOnly(PreprocessorInpaint): unet = process.sd_model.forge_objects.unet.clone() def pre_cfg(model, c, uc, x, timestep, model_options): - noisy_latent = latent_image.to(x) + timestep.to(x) * torch.randn_like(latent_image).to(x) + noisy_latent = latent_image.to(x) + timestep[:, None, None, None].to(x) * torch.randn_like(latent_image).to(x) x = x * latent_mask.to(x) + noisy_latent.to(x) * (1.0 - latent_mask.to(x)) return model, c, uc, x, timestep, model_options diff --git a/modules/sd_samplers_cfg_denoiser.py b/modules/sd_samplers_cfg_denoiser.py index a1ae8c3b..b1dca624 100644 --- a/modules/sd_samplers_cfg_denoiser.py +++ b/modules/sd_samplers_cfg_denoiser.py @@ -173,7 +173,7 @@ class CFGDenoiser(torch.nn.Module): uncond = prompt_parser.reconstruct_cond_batch(uncond, self.step) if self.mask is not None: - noisy_initial_latent = self.init_latent + sigma * torch.randn_like(self.init_latent).to(self.init_latent) + noisy_initial_latent = self.init_latent + sigma[:, None, None, None] * torch.randn_like(self.init_latent).to(self.init_latent) x = x * self.nmask + noisy_initial_latent * self.mask denoiser_params = CFGDenoiserParams(x, image_cond, sigma, state.sampling_step, state.sampling_steps, cond, uncond, self)