Added resizing of controlnet image based on noise latent. Fixes a tensor mismatch issue.

This commit is contained in:
user1 2023-05-06 13:10:56 -07:00 committed by Kent Keirsey
parent 93cd818f6a
commit 5d5cdc7716
2 changed files with 12 additions and 13 deletions

View File

@ -286,6 +286,10 @@ class TextToLatentsInvocation(BaseInvocation):
) )
) )
latents_shape = noise.shape
control_height_resize = latents_shape[2] * 8
control_width_resize = latents_shape[3] * 8
# copied from old backend/txt2img.py # copied from old backend/txt2img.py
# FIXME: still need to test with different widths, heights, devices, dtypes # FIXME: still need to test with different widths, heights, devices, dtypes
# and add in batch_size, num_images_per_prompt? # and add in batch_size, num_images_per_prompt?
@ -295,10 +299,8 @@ class TextToLatentsInvocation(BaseInvocation):
image=control_image, image=control_image,
# do_classifier_free_guidance=do_classifier_free_guidance, # do_classifier_free_guidance=do_classifier_free_guidance,
do_classifier_free_guidance=True, do_classifier_free_guidance=True,
# width=width, width=control_width_resize,
# height=height, height=control_height_resize,
width=512,
height=512,
# batch_size=batch_size * num_images_per_prompt, # batch_size=batch_size * num_images_per_prompt,
# num_images_per_prompt=num_images_per_prompt, # num_images_per_prompt=num_images_per_prompt,
device=control_model.device, device=control_model.device,
@ -311,10 +313,8 @@ class TextToLatentsInvocation(BaseInvocation):
image=image_, image=image_,
# do_classifier_free_guidance=do_classifier_free_guidance, # do_classifier_free_guidance=do_classifier_free_guidance,
do_classifier_free_guidance=True, do_classifier_free_guidance=True,
# width=width, width=control_width_resize,
# height=height, height=control_height_resize,
width=512,
height=512,
# batch_size=batch_size * num_images_per_prompt, # batch_size=batch_size * num_images_per_prompt,
# num_images_per_prompt=num_images_per_prompt, # num_images_per_prompt=num_images_per_prompt,
device=control_model.device, device=control_model.device,
@ -323,10 +323,7 @@ class TextToLatentsInvocation(BaseInvocation):
images.append(image_) images.append(image_)
control_image = images control_image = images
# TODO: Verify the noise is the right size # TODO: Verify the noise is the right size
result_latents, result_attention_map_saver = model.latents_from_embeddings( result_latents, result_attention_map_saver = model.latents_from_embeddings(
latents=torch.zeros_like(noise, dtype=torch_dtype(model.device)), latents=torch.zeros_like(noise, dtype=torch_dtype(model.device)),
noise=noise, noise=noise,

View File

@ -994,14 +994,16 @@ class StableDiffusionGeneratorPipeline(StableDiffusionPipeline):
self, self,
image, image,
# FIXME: need to fix hardwiring of width and height, change to basing on latents dimensions? # FIXME: need to fix hardwiring of width and height, change to basing on latents dimensions?
width=512, # latents,
height=512, width=512, # should be 8 * latent.shape[3]
height=512, # should be 8 * latent height[2]
batch_size=1, batch_size=1,
num_images_per_prompt=1, num_images_per_prompt=1,
device="cuda", device="cuda",
dtype=torch.float16, dtype=torch.float16,
do_classifier_free_guidance=True, do_classifier_free_guidance=True,
): ):
if not isinstance(image, torch.Tensor): if not isinstance(image, torch.Tensor):
if isinstance(image, PIL.Image.Image): if isinstance(image, PIL.Image.Image):
image = [image] image = [image]