diff --git a/fooocus_version.py b/fooocus_version.py index 175d3fed..5637cda9 100644 --- a/fooocus_version.py +++ b/fooocus_version.py @@ -1 +1 @@ -version = '2.1.729' +version = '2.1.730' diff --git a/modules/core.py b/modules/core.py index c58b0fa7..3000f0ae 100644 --- a/modules/core.py +++ b/modules/core.py @@ -218,19 +218,21 @@ def get_previewer(model): def ksampler(model, positive, negative, latent, seed=None, steps=30, cfg=7.0, sampler_name='dpmpp_2m_sde_gpu', scheduler='karras', denoise=1.0, disable_noise=False, start_step=None, last_step=None, force_full_denoise=False, callback_function=None, refiner=None, refiner_switch=-1, - previewer_start=None, previewer_end=None, sigmas=None, noise=None): + previewer_start=None, previewer_end=None, sigmas=None, noise_offset=None): if sigmas is not None: sigmas = sigmas.clone().to(fcbh.model_management.get_torch_device()) latent_image = latent["samples"] - if noise is None: - if disable_noise: - noise = torch.zeros(latent_image.size(), dtype=latent_image.dtype, layout=latent_image.layout, device="cpu") - else: - batch_inds = latent["batch_index"] if "batch_index" in latent else None - noise = fcbh.sample.prepare_noise(latent_image, seed, batch_inds) + if disable_noise: + noise = torch.zeros(latent_image.size(), dtype=latent_image.dtype, layout=latent_image.layout, device="cpu") + else: + batch_inds = latent["batch_index"] if "batch_index" in latent else None + noise = fcbh.sample.prepare_noise(latent_image, seed, batch_inds) + + if isinstance(noise_offset, torch.Tensor): + noise = noise + noise_offset noise_mask = None if "noise_mask" in latent: diff --git a/modules/default_pipeline.py b/modules/default_pipeline.py index fe2754b3..a1e19e3f 100644 --- a/modules/default_pipeline.py +++ b/modules/default_pipeline.py @@ -3,7 +3,6 @@ import os import torch import modules.patch import modules.path -import fcbh.sample import fcbh.model_management import fcbh.latent_formats import modules.inpaint_worker @@ -279,14 +278,6 @@ def vae_parse(latent): return {'samples': result} -@torch.no_grad() -@torch.inference_mode() -def noise_parse(latent: torch.Tensor, seed: int, noise_inds=None, k=0.9): - noise = fcbh.sample.prepare_noise(latent, seed=seed, noise_inds=noise_inds) - offset = torch.mean(latent, dim=1, keepdim=True) - return offset * k + noise - - @torch.no_grad() @torch.inference_mode() def calculate_sigmas_all(sampler, model, scheduler, steps): @@ -477,10 +468,7 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height denoise=denoise)[switch:] * k_sigmas len_sigmas = len(sigmas) - 1 - residual_noise = noise_parse( - modules.patch.eps_record, - seed=image_seed+1, - noise_inds=sampled_latent["batch_index"] if "batch_index" in sampled_latent else None) + noise_offset = torch.mean(modules.patch.eps_record, dim=1, keepdim=True) * 0.9 if modules.inpaint_worker.current_task is not None: modules.inpaint_worker.current_task.swap() @@ -500,7 +488,7 @@ def process_diffusion(positive_cond, negative_cond, steps, switch, width, height previewer_start=switch, previewer_end=steps, sigmas=sigmas, - noise=residual_noise + noise_offset=noise_offset ) target_model = final_refiner_vae