From 50ac3fdd2a79a6f8d1a106878f30c45aa3e2c9e8 Mon Sep 17 00:00:00 2001 From: whning Date: Fri, 19 Jun 2026 14:35:57 +0800 Subject: [PATCH] =?UTF-8?q?Fix=20#13425:=20rescale=5Fnoise=5Fcfg=20?= =?UTF-8?q?=E9=99=A4=E9=9B=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- b/src/diffusers/guiders/guider_utils.py | 8 ++++++++ src/diffusers/guiders/guider_utils.py | 2 ++ 2 files changed, 10 insertions(+) create mode 100644 b/src/diffusers/guiders/guider_utils.py diff --git a/b/src/diffusers/guiders/guider_utils.py b/b/src/diffusers/guiders/guider_utils.py new file mode 100644 index 000000000000..36affd1088af --- /dev/null +++ b/b/src/diffusers/guiders/guider_utils.py @@ -0,0 +1,8 @@ + """ + 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) + # Avoid division by zero when std_cfg is zero, which can produce NaN/Inf in noise predictions + std_cfg = std_cfg.clamp(min=1e-8) + # rescale the results from guidance (fixes overexposure) + noise_pred_rescaled = noise_cfg * (std_text / std_cfg) + # mix with the original results from guidance by factor guidance_rescale to avoid "plain looking" images diff --git a/src/diffusers/guiders/guider_utils.py b/src/diffusers/guiders/guider_utils.py index 7be68424c345..e1fa3a844f6c 100644 --- a/src/diffusers/guiders/guider_utils.py +++ b/src/diffusers/guiders/guider_utils.py @@ -389,6 +389,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) + # Avoid division by zero when std_cfg is zero, which can produce NaN/Inf in noise predictions + std_cfg = std_cfg.clamp(min=1e-8) # rescale the results from guidance (fixes overexposure) noise_pred_rescaled = noise_cfg * (std_text / std_cfg) # mix with the original results from guidance by factor guidance_rescale to avoid "plain looking" images