rescale: fast path, rename param

This commit is contained in:
Gaeros
2024-03-12 15:51:44 +01:00
parent 29599d7f89
commit d3bd3bda48
+11 -8
View File
@@ -335,20 +335,20 @@ class ScaledGuidancePredictor(NoisePredictor):
"min": 0.0,
"max": 100.0,
}),
"rescale": ("FLOAT", {
"default": 0.0,
"step": 0.1,
"min": 0.0,
"max": 100.0,
"rescale_multiplier": ("FLOAT", {
"default": 0.0,
"min": 0.0,
"max": 1.0,
"step": 0.01
}),
}
}
def __init__(self, guidance, baseline, guidance_scale, rescale):
def __init__(self, guidance, baseline, guidance_scale, rescale_multiplier):
self.lhs = guidance
self.rhs = baseline
self.scale = guidance_scale
self.rescale = rescale
self.rescale_multiplier = rescale_multiplier
def get_conds(self):
return self.merge_conds(self.lhs.get_conds(), self.rhs.get_conds())
@@ -363,13 +363,16 @@ class ScaledGuidancePredictor(NoisePredictor):
lhs = self.lhs.predict_noise(x, sigma, model, conds, model_options, seed)
rhs = self.rhs.predict_noise(x, sigma, model, conds, model_options, seed)
if self.rescale_multiplier <= 0.0:
return lhs * self.scale + rhs
sigma = sigma.view(sigma.shape[:1] + (1,) * (lhs.ndim - 1))
x_scaled = x * (1. / (sigma.square() + 1.0))
x_cfg = x_scaled - rhs - self.scale * lhs
ro_pos = torch.std(x_scaled - (lhs + rhs), dim=(1, 2, 3), keepdim=True)
ro_cfg = torch.std(x_cfg, dim=(1, 2, 3), keepdim=True)
x_rescaled = x_cfg * (ro_pos / ro_cfg)
x_final = torch.lerp(x_cfg, x_rescaled, self.rescale)
x_final = torch.lerp(x_cfg, x_rescaled, self.rescale_multiplier)
return x_scaled - x_final