fix: clip vision model auto param

Setting to 'auto' works only for InvokeAI config and auto detects the SD model but will override if user explicitly sets it. If auto used with checkpoint models, we raise an error. Checkpoints will always need to set to non-auto.
This commit is contained in:
blessedcoolant 2024-03-29 12:12:16 +05:30
parent cd078b1865
commit 56ed697c23
2 changed files with 17 additions and 10 deletions

View File

@ -65,8 +65,10 @@ class IPAdapterInvocation(BaseInvocation):
ui_order=-1, ui_order=-1,
ui_type=UIType.IPAdapterModel, ui_type=UIType.IPAdapterModel,
) )
clip_vision_model: Literal["ViT-H", "ViT-G"] = InputField( clip_vision_model: Literal["auto", "ViT-H", "ViT-G"] = InputField(
description="CLIP Vision model to use", default="ViT-H", ui_order=2 description="CLIP Vision model to use. Overrides model settings. Mandatory for checkpoint models.",
default="auto",
ui_order=2,
) )
weight: Union[float, List[float]] = InputField( weight: Union[float, List[float]] = InputField(
default=1, description="The weight given to the IP-Adapter", title="Weight" default=1, description="The weight given to the IP-Adapter", title="Weight"
@ -94,9 +96,14 @@ class IPAdapterInvocation(BaseInvocation):
ip_adapter_info = context.models.get_config(self.ip_adapter_model.key) ip_adapter_info = context.models.get_config(self.ip_adapter_model.key)
assert isinstance(ip_adapter_info, (IPAdapterInvokeAIConfig, IPAdapterCheckpointConfig)) assert isinstance(ip_adapter_info, (IPAdapterInvokeAIConfig, IPAdapterCheckpointConfig))
if isinstance(ip_adapter_info, IPAdapterInvokeAIConfig): if self.clip_vision_model == "auto":
image_encoder_model_id = ip_adapter_info.image_encoder_model_id if isinstance(ip_adapter_info, IPAdapterInvokeAIConfig):
image_encoder_model_name = image_encoder_model_id.split("/")[-1].strip() image_encoder_model_id = ip_adapter_info.image_encoder_model_id
image_encoder_model_name = image_encoder_model_id.split("/")[-1].strip()
else:
raise RuntimeError(
"You need to set the appropriate CLIP Vision model for checkpoint IP Adapter models."
)
else: else:
image_encoder_model_name = CLIP_VISION_MODEL_MAP[self.clip_vision_model] image_encoder_model_name = CLIP_VISION_MODEL_MAP[self.clip_vision_model]

File diff suppressed because one or more lines are too long