mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
Fix wrong conditioning used (#3595)
As it said in comment to this branch we want to use conditioning run: ```python if cfg_injection: # only applying ControlNet to conditional instead of in unconditioned ``` But in code used unconditioning embeddings(`conditioning_data.unconditioned_embeddings`). Later in code confirms that we want to run conditioning generation by comment and tensor concatenation order(as all code expect to get [uc, c] tensor): ```python if cfg_injection: # Inferred ControlNet only for the conditional batch. # To apply the output of ControlNet to both the unconditional and conditional batches, # add 0 to the unconditional batch to keep it unchanged. down_samples = [torch.cat([torch.zeros_like(d), d]) for d in down_samples] mid_sample = torch.cat([torch.zeros_like(mid_sample), mid_sample]) ```
This commit is contained in:
commit
8fc0ce7e38
@ -631,7 +631,7 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline):
|
||||
control_latent_input = torch.cat([unet_latent_input] * 2)
|
||||
|
||||
if cfg_injection: # only applying ControlNet to conditional instead of in unconditioned
|
||||
encoder_hidden_states = torch.cat([conditioning_data.unconditioned_embeddings])
|
||||
encoder_hidden_states = conditioning_data.text_embeddings
|
||||
else:
|
||||
encoder_hidden_states = torch.cat([conditioning_data.unconditioned_embeddings,
|
||||
conditioning_data.text_embeddings])
|
||||
|
Loading…
Reference in New Issue
Block a user