mirror of
https://git.datalinker.icu/comfyanonymous/ComfyUI
synced 2026-09-29 10:07:06 +08:00
Modified ControlNet/T2IAdapter get_control function to receive transformer_options as additional parameter, made the model_options stored in extra_args in inner_sample be a clone of the original model_options instead of same ref
This commit is contained in:
parent
d3229cbba7
commit
fd2d572447
@ -201,10 +201,10 @@ class ControlNet(ControlBase):
|
|||||||
self.strength_type = strength_type
|
self.strength_type = strength_type
|
||||||
self.concat_mask = concat_mask
|
self.concat_mask = concat_mask
|
||||||
|
|
||||||
def get_control(self, x_noisy, t, cond, batched_number):
|
def get_control(self, x_noisy, t, cond, batched_number, transformer_options):
|
||||||
control_prev = None
|
control_prev = None
|
||||||
if self.previous_controlnet is not None:
|
if self.previous_controlnet is not None:
|
||||||
control_prev = self.previous_controlnet.get_control(x_noisy, t, cond, batched_number)
|
control_prev = self.previous_controlnet.get_control(x_noisy, t, cond, batched_number, transformer_options)
|
||||||
|
|
||||||
if self.timestep_range is not None:
|
if self.timestep_range is not None:
|
||||||
if t[0] > self.timestep_range[0] or t[0] < self.timestep_range[1]:
|
if t[0] > self.timestep_range[0] or t[0] < self.timestep_range[1]:
|
||||||
@ -674,10 +674,10 @@ class T2IAdapter(ControlBase):
|
|||||||
height = math.ceil(height / unshuffle_amount) * unshuffle_amount
|
height = math.ceil(height / unshuffle_amount) * unshuffle_amount
|
||||||
return width, height
|
return width, height
|
||||||
|
|
||||||
def get_control(self, x_noisy, t, cond, batched_number):
|
def get_control(self, x_noisy, t, cond, batched_number, transformer_options):
|
||||||
control_prev = None
|
control_prev = None
|
||||||
if self.previous_controlnet is not None:
|
if self.previous_controlnet is not None:
|
||||||
control_prev = self.previous_controlnet.get_control(x_noisy, t, cond, batched_number)
|
control_prev = self.previous_controlnet.get_control(x_noisy, t, cond, batched_number, transformer_options)
|
||||||
|
|
||||||
if self.timestep_range is not None:
|
if self.timestep_range is not None:
|
||||||
if t[0] > self.timestep_range[0] or t[0] < self.timestep_range[1]:
|
if t[0] > self.timestep_range[0] or t[0] < self.timestep_range[1]:
|
||||||
|
|||||||
@ -271,9 +271,6 @@ def outer_calc_cond_batch(model: 'BaseModel', conds: List[List[Dict]], x_in: tor
|
|||||||
c = cond_cat(c)
|
c = cond_cat(c)
|
||||||
timestep_ = torch.cat([timestep] * batch_chunks)
|
timestep_ = torch.cat([timestep] * batch_chunks)
|
||||||
|
|
||||||
if control is not None:
|
|
||||||
c['control'] = control.get_control(input_x, timestep_, c, len(cond_or_uncond))
|
|
||||||
|
|
||||||
transformer_options = {}
|
transformer_options = {}
|
||||||
if 'transformer_options' in model_options:
|
if 'transformer_options' in model_options:
|
||||||
transformer_options = model_options['transformer_options'].copy()
|
transformer_options = model_options['transformer_options'].copy()
|
||||||
@ -295,6 +292,9 @@ def outer_calc_cond_batch(model: 'BaseModel', conds: List[List[Dict]], x_in: tor
|
|||||||
|
|
||||||
c['transformer_options'] = transformer_options
|
c['transformer_options'] = transformer_options
|
||||||
|
|
||||||
|
if control is not None:
|
||||||
|
c['control'] = control.get_control(input_x, timestep_, c, len(cond_or_uncond), transformer_options)
|
||||||
|
|
||||||
if 'model_function_wrapper' in model_options:
|
if 'model_function_wrapper' in model_options:
|
||||||
output = model_options['model_function_wrapper'](model.apply_model, {"input": input_x, "timestep": timestep_, "c": c, "cond_or_uncond": cond_or_uncond}).chunk(batch_chunks)
|
output = model_options['model_function_wrapper'](model.apply_model, {"input": input_x, "timestep": timestep_, "c": c, "cond_or_uncond": cond_or_uncond}).chunk(batch_chunks)
|
||||||
else:
|
else:
|
||||||
@ -769,7 +769,7 @@ class CFGGuider:
|
|||||||
|
|
||||||
self.conds = process_conds(self.inner_model, noise, self.conds, device, latent_image, denoise_mask, seed)
|
self.conds = process_conds(self.inner_model, noise, self.conds, device, latent_image, denoise_mask, seed)
|
||||||
|
|
||||||
extra_args = {"model_options": self.model_options, "seed":seed}
|
extra_args = {"model_options": comfy.model_patcher.create_model_options_clone(self.model_options), "seed": seed}
|
||||||
|
|
||||||
samples = sampler.sample(self, sigmas, extra_args, callback, noise, latent_image, denoise_mask, disable_pbar)
|
samples = sampler.sample(self, sigmas, extra_args, callback, noise, latent_image, denoise_mask, disable_pbar)
|
||||||
return self.inner_model.process_latent_out(samples.to(torch.float32))
|
return self.inner_model.process_latent_out(samples.to(torch.float32))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user