Invert the start and end percentages in the code.
This doesn't affect how percentages behave in the frontend but breaks things if you relied on them in the backend. percent_to_sigma goes from 0 to 1.0 instead of 1.0 to 0 for less confusion. Make percent 0 return an extremely large sigma and percent 1.0 return a zero one to fix imprecision.
This commit is contained in:
parent
7114cfec0e
commit
dcec1047e6
|
@ -33,7 +33,7 @@ class ControlBase:
|
|||
self.cond_hint_original = None
|
||||
self.cond_hint = None
|
||||
self.strength = 1.0
|
||||
self.timestep_percent_range = (1.0, 0.0)
|
||||
self.timestep_percent_range = (0.0, 1.0)
|
||||
self.timestep_range = None
|
||||
|
||||
if device is None:
|
||||
|
@ -42,7 +42,7 @@ class ControlBase:
|
|||
self.previous_controlnet = None
|
||||
self.global_average_pooling = False
|
||||
|
||||
def set_cond_hint(self, cond_hint, strength=1.0, timestep_percent_range=(1.0, 0.0)):
|
||||
def set_cond_hint(self, cond_hint, strength=1.0, timestep_percent_range=(0.0, 1.0)):
|
||||
self.cond_hint_original = cond_hint
|
||||
self.strength = strength
|
||||
self.timestep_percent_range = timestep_percent_range
|
||||
|
|
|
@ -76,5 +76,10 @@ class ModelSamplingDiscrete(torch.nn.Module):
|
|||
return log_sigma.exp()
|
||||
|
||||
def percent_to_sigma(self, percent):
|
||||
if percent <= 0.0:
|
||||
return torch.tensor(999999999.9)
|
||||
if percent >= 1.0:
|
||||
return torch.tensor(0.0)
|
||||
percent = 1.0 - percent
|
||||
return self.sigma(torch.tensor(percent * 999.0))
|
||||
|
||||
|
|
|
@ -220,6 +220,8 @@ def sampling_function(model, x, timestep, uncond, cond, cond_scale, model_option
|
|||
transformer_options["patches"] = patches
|
||||
|
||||
transformer_options["cond_or_uncond"] = cond_or_uncond[:]
|
||||
transformer_options["sigmas"] = timestep
|
||||
|
||||
c['transformer_options'] = transformer_options
|
||||
|
||||
if 'model_function_wrapper' in model_options:
|
||||
|
|
|
@ -66,6 +66,11 @@ class ModelSamplingDiscreteLCM(torch.nn.Module):
|
|||
return log_sigma.exp()
|
||||
|
||||
def percent_to_sigma(self, percent):
|
||||
if percent <= 0.0:
|
||||
return torch.tensor(999999999.9)
|
||||
if percent >= 1.0:
|
||||
return torch.tensor(0.0)
|
||||
percent = 1.0 - percent
|
||||
return self.sigma(torch.tensor(percent * 999.0))
|
||||
|
||||
|
||||
|
|
6
nodes.py
6
nodes.py
|
@ -248,8 +248,8 @@ class ConditioningSetTimestepRange:
|
|||
c = []
|
||||
for t in conditioning:
|
||||
d = t[1].copy()
|
||||
d['start_percent'] = 1.0 - start
|
||||
d['end_percent'] = 1.0 - end
|
||||
d['start_percent'] = start
|
||||
d['end_percent'] = end
|
||||
n = [t[0], d]
|
||||
c.append(n)
|
||||
return (c, )
|
||||
|
@ -685,7 +685,7 @@ class ControlNetApplyAdvanced:
|
|||
if prev_cnet in cnets:
|
||||
c_net = cnets[prev_cnet]
|
||||
else:
|
||||
c_net = control_net.copy().set_cond_hint(control_hint, strength, (1.0 - start_percent, 1.0 - end_percent))
|
||||
c_net = control_net.copy().set_cond_hint(control_hint, strength, (start_percent, end_percent))
|
||||
c_net.set_previous_controlnet(prev_cnet)
|
||||
cnets[prev_cnet] = c_net
|
||||
|
||||
|
|
Loading…
Reference in New Issue