diff --git a/layers.py b/layers.py index 3c9ee2b..61b55a7 100644 --- a/layers.py +++ b/layers.py @@ -227,6 +227,7 @@ def __init__(self, context_dim, hidden_dim, ip_hidden_states=None, ip_scale=None self.ip_hidden_states = ip_hidden_states self.ip_scale = ip_scale self.neg_hidden_states = None + self.in_hidden_states_pos = None # Ensure context_dim matches the dimension of ip_hidden_states self.context_dim = context_dim self.hidden_dim = hidden_dim diff --git a/nodes.py b/nodes.py index 84ffa83..1cffdf6 100644 --- a/nodes.py +++ b/nodes.py @@ -510,6 +510,7 @@ def applymodel(self, model, ip_adapter_flux, image, strength_model): ipad.load_state_dict(block.state_dict()) ipad.to(dtype=torch.bfloat16) ipad.neg_hidden_states = ip_neg_pr + ipad.in_hidden_states_pos = ip_projes npp = DoubleStreamMixerProcessor() npp.add_ipadapter(ipad) ipad_blocks.append(npp) diff --git a/sampling.py b/sampling.py index fb1a58a..0cc85f1 100644 --- a/sampling.py +++ b/sampling.py @@ -40,9 +40,14 @@ def model_forward( controlnet_depth = len(block_controlnet_hidden_states) for index_block, block in enumerate(model.double_blocks): if isinstance(block.processor, DoubleStreamMixerProcessor): - if not neg_mode is None: + if neg_mode: for ip in block.processor.ip_adapters: ip.ip_hidden_states = ip.neg_ip_hidden_states + else: + for ip in block.processor.ip_adapters: + ip.ip_hidden_states = ip.in_hidden_states_pos + img, txt = block(img=img, txt=txt, vec=vec, pe=pe) + img, txt = block(img=img, txt=txt, vec=vec, pe=pe) # controlnet residual @@ -299,7 +304,7 @@ def denoise_controlnet( y=neg_vec, timesteps=t_vec, guidance=guidance_vec, - block_controlnet_hidden_states=[i * controlnet_gs for i in neg_block_res_samples] + block_controlnet_hidden_states=[i * controlnet_gs for i in neg_block_res_samples], neg_mode = True, )