From 4bca85eb0dd641c53fc4e1d2d2d178cb342cfa79 Mon Sep 17 00:00:00 2001 From: Akash Santra Date: Mon, 6 Apr 2026 21:05:59 +0530 Subject: [PATCH 1/2] Fix division by zero in rescale_noise_cfg causing NaNs --- src/diffusers/guiders/guider_utils.py | 3 ++- .../pipeline_stable_diffusion.py | 3 ++- .../pipeline_stable_diffusion_xl.py | 3 ++- test.png | Bin 0 -> 2300 bytes 4 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 test.png diff --git a/src/diffusers/guiders/guider_utils.py b/src/diffusers/guiders/guider_utils.py index 7be68424c345..a7392184fff5 100644 --- a/src/diffusers/guiders/guider_utils.py +++ b/src/diffusers/guiders/guider_utils.py @@ -390,7 +390,8 @@ def rescale_noise_cfg(noise_cfg, noise_pred_text, guidance_rescale=0.0): std_text = noise_pred_text.std(dim=list(range(1, noise_pred_text.ndim)), keepdim=True) std_cfg = noise_cfg.std(dim=list(range(1, noise_cfg.ndim)), keepdim=True) # rescale the results from guidance (fixes overexposure) - noise_pred_rescaled = noise_cfg * (std_text / std_cfg) + eps = 1e-6 + noise_pred_rescaled = noise_cfg * (std_text / (std_cfg + eps)) # mix with the original results from guidance by factor guidance_rescale to avoid "plain looking" images noise_cfg = guidance_rescale * noise_pred_rescaled + (1 - guidance_rescale) * noise_cfg return noise_cfg diff --git a/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py b/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py index 42d62f53a20a..a3b45d36c005 100644 --- a/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py +++ b/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion.py @@ -86,7 +86,8 @@ def rescale_noise_cfg(noise_cfg, noise_pred_text, guidance_rescale=0.0): std_text = noise_pred_text.std(dim=list(range(1, noise_pred_text.ndim)), keepdim=True) std_cfg = noise_cfg.std(dim=list(range(1, noise_cfg.ndim)), keepdim=True) # rescale the results from guidance (fixes overexposure) - noise_pred_rescaled = noise_cfg * (std_text / std_cfg) + eps = 1e-6 + noise_pred_rescaled = noise_cfg * (std_text / (std_cfg + eps)) # mix with the original results from guidance by factor guidance_rescale to avoid "plain looking" images noise_cfg = guidance_rescale * noise_pred_rescaled + (1 - guidance_rescale) * noise_cfg return noise_cfg diff --git a/src/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py b/src/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py index 2f6b105702e8..4280d216e384 100644 --- a/src/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py +++ b/src/diffusers/pipelines/stable_diffusion_xl/pipeline_stable_diffusion_xl.py @@ -101,7 +101,8 @@ def rescale_noise_cfg(noise_cfg, noise_pred_text, guidance_rescale=0.0): std_text = noise_pred_text.std(dim=list(range(1, noise_pred_text.ndim)), keepdim=True) std_cfg = noise_cfg.std(dim=list(range(1, noise_cfg.ndim)), keepdim=True) # rescale the results from guidance (fixes overexposure) - noise_pred_rescaled = noise_cfg * (std_text / std_cfg) + eps = 1e-6 + noise_pred_rescaled = noise_cfg * (std_text / (std_cfg + eps)) # mix with the original results from guidance by factor guidance_rescale to avoid "plain looking" images noise_cfg = guidance_rescale * noise_pred_rescaled + (1 - guidance_rescale) * noise_cfg return noise_cfg diff --git a/test.png b/test.png new file mode 100644 index 0000000000000000000000000000000000000000..030c4403cc9bde229b5cbf127e6324623ccc97dd GIT binary patch literal 2300 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 Wj*?T5^-6940000 Date: Mon, 6 Apr 2026 21:08:12 +0530 Subject: [PATCH 2/2] Remove unintended test.png file --- test.png | Bin 2300 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test.png diff --git a/test.png b/test.png deleted file mode 100644 index 030c4403cc9bde229b5cbf127e6324623ccc97dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2300 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 Wj*?T5^-6940000