From 8d2b4e2bf5328546bf3d40fb53840d55076d6cb7 Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Tue, 21 Jan 2025 11:53:47 +1100 Subject: [PATCH] feat(nodes): support FLUX, SD3 in ideal_size --- invokeai/app/invocations/ideal_size.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/invokeai/app/invocations/ideal_size.py b/invokeai/app/invocations/ideal_size.py index 120f8c1ba0..587a17f32d 100644 --- a/invokeai/app/invocations/ideal_size.py +++ b/invokeai/app/invocations/ideal_size.py @@ -21,7 +21,7 @@ class IdealSizeOutput(BaseInvocationOutput): "ideal_size", title="Ideal Size", tags=["latents", "math", "ideal_size"], - version="1.0.3", + version="1.0.4", ) class IdealSizeInvocation(BaseInvocation): """Calculates the ideal size for generation to avoid duplication""" @@ -41,11 +41,16 @@ class IdealSizeInvocation(BaseInvocation): def invoke(self, context: InvocationContext) -> IdealSizeOutput: unet_config = context.models.get_config(self.unet.unet.key) aspect = self.width / self.height - dimension: float = 512 - if unet_config.base == BaseModelType.StableDiffusion2: + + if unet_config.base == BaseModelType.StableDiffusion1: + dimension = 512 + elif unet_config.base == BaseModelType.StableDiffusion2: dimension = 768 - elif unet_config.base == BaseModelType.StableDiffusionXL: + elif unet_config.base in (BaseModelType.StableDiffusionXL, BaseModelType.Flux, BaseModelType.StableDiffusion3): dimension = 1024 + else: + raise ValueError(f"Unsupported model type: {unet_config.base}") + dimension = dimension * self.multiplier min_dimension = math.floor(dimension * 0.5) model_area = dimension * dimension # hardcoded for now since all models are trained on square images