""" requests models for v1 endpoints """ from typing import List from fastapi.params import File from fastapi import ( UploadFile, Form ) from fooocusapi.models.common.requests import ( CommonRequest, advanced_params_parser ) from fooocusapi.models.common.base import ( EnhanceCtrlNets, ImagePrompt, ControlNetType, MaskModel, OutpaintExpansion, UpscaleOrVaryMethod, PerformanceSelection ) from fooocusapi.models.common.base import ( style_selection_parser, lora_parser, outpaint_selections_parser, image_prompt_parser, default_loras_json ) from fooocusapi.configs.default import ( default_prompt_negative, default_aspect_ratio, default_base_model_name, default_refiner_model_name, default_refiner_switch, default_cfg_scale, default_styles, ) class ImgUpscaleOrVaryRequest(CommonRequest): """ Request for image upscale or variation Attributes: input_image: Input image uov_method: Upscale or variation method upscale_value: upscale value Functions: as_form: Convert request to form data """ input_image: UploadFile uov_method: UpscaleOrVaryMethod upscale_value: float | None @classmethod def as_form( cls, input_image: UploadFile = Form(description="Init image for upscale or outpaint"), uov_method: UpscaleOrVaryMethod = Form(), upscale_value: float | None = Form(None, description="Upscale custom value, None for default value", ge=1.0, le=5.0), prompt: str = Form(''), negative_prompt: str = Form(default_prompt_negative), style_selections: List[str] = Form(default_styles, description="Fooocus style selections, separated by comma"), performance_selection: PerformanceSelection = Form(PerformanceSelection.speed, description="Performance Selection, one of 'Speed','Quality','Extreme Speed'"), aspect_ratios_selection: str = Form(default_aspect_ratio, description="Aspect Ratios Selection, default 1152*896"), image_number: int = Form(default=1, description="Image number", ge=1, le=32), image_seed: int = Form(default=-1, description="Seed to generate image, -1 for random"), sharpness: float = Form(default=2.0, ge=0.0, le=30.0), guidance_scale: float = Form(default=default_cfg_scale, ge=1.0, le=30.0), base_model_name: str = Form(default_base_model_name, description="checkpoint file name"), refiner_model_name: str = Form(default_refiner_model_name, description="refiner file name"), refiner_switch: float = Form(default=default_refiner_switch, description="Refiner Switch At", ge=0.1, le=1.0), loras: str | None = Form(default=default_loras_json, description='Lora config in JSON. Format as [{"model_name": "sd_xl_offset_example-lora_1.0.safetensors", "weight": 0.5}]'), advanced_params: str | None = Form(default=None, description="Advanced parameters in JSON"), save_meta: bool = Form(default=False, description="Save metadata to image"), meta_scheme: str = Form(default='fooocus', description="Metadata scheme, one of 'fooocus', 'a111'"), save_extension: str = Form(default="png", description="Save extension, png, jpg or webp"), save_name: str = Form(default="", description="Save name, empty for auto generate"), require_base64: bool = Form(default=False, description="Return base64 data of generated image"), read_wildcards_in_order: bool = Form(default=False, description="Read wildcards in order"), async_process: bool = Form(default=False, description="Set to true will run async and return job info for retrieve generation result later"), webhook_url: str = Form(default="", description="Webhook url for generation result"), ): style_selection_arr = style_selection_parser(style_selections) loras_model = lora_parser(loras) advanced_params_obj = advanced_params_parser(advanced_params) return cls( input_image=input_image, uov_method=uov_method, upscale_value=upscale_value, prompt=prompt, negative_prompt=negative_prompt, style_selections=style_selection_arr, performance_selection=performance_selection, aspect_ratios_selection=aspect_ratios_selection, image_number=image_number, image_seed=image_seed, sharpness=sharpness, guidance_scale=guidance_scale, base_model_name=base_model_name, refiner_model_name=refiner_model_name, refiner_switch=refiner_switch, loras=loras_model, advanced_params=advanced_params_obj, save_meta=save_meta, meta_scheme=meta_scheme, save_extension=save_extension, save_name=save_name, require_base64=require_base64, read_wildcards_in_order=read_wildcards_in_order, async_process=async_process, webhook_url=webhook_url) class ImgInpaintOrOutpaintRequest(CommonRequest): """ Image Inpaint or Outpaint Request """ input_image: UploadFile | None input_mask: UploadFile | None inpaint_additional_prompt: str | None outpaint_selections: List[OutpaintExpansion] outpaint_distance_left: int outpaint_distance_right: int outpaint_distance_top: int outpaint_distance_bottom: int @classmethod def as_form( cls, input_image: UploadFile = Form(description="Init image for inpaint or outpaint"), input_mask: UploadFile = Form(File(None), description="Inpaint or outpaint mask"), inpaint_additional_prompt: str | None = Form("", description="Describe what you want to inpaint"), outpaint_selections: List[str] = Form([], description="Outpaint expansion selections, literal 'Left', 'Right', 'Top', 'Bottom' separated by comma"), outpaint_distance_left: int = Form(default=0, description="Set outpaint left distance, -1 for default"), outpaint_distance_right: int = Form(default=0, description="Set outpaint right distance, -1 for default"), outpaint_distance_top: int = Form(default=0, description="Set outpaint top distance, -1 for default"), outpaint_distance_bottom: int = Form(default=0, description="Set outpaint bottom distance, -1 for default"), prompt: str = Form(''), negative_prompt: str = Form(default_prompt_negative), style_selections: List[str] = Form(default_styles, description="Fooocus style selections, separated by comma"), performance_selection: PerformanceSelection = Form(PerformanceSelection.speed, description="Performance Selection, one of 'Speed','Quality','Extreme Speed'"), aspect_ratios_selection: str = Form(default_aspect_ratio, description="Aspect Ratios Selection, default 1152*896"), image_number: int = Form(default=1, description="Image number", ge=1, le=32), image_seed: int = Form(default=-1, description="Seed to generate image, -1 for random"), sharpness: float = Form(default=2.0, ge=0.0, le=30.0), guidance_scale: float = Form(default=default_cfg_scale, ge=1.0, le=30.0), base_model_name: str = Form(default_base_model_name), refiner_model_name: str = Form(default_refiner_model_name), refiner_switch: float = Form(default=default_refiner_switch, description="Refiner Switch At", ge=0.1, le=1.0), loras: str | None = Form(default=default_loras_json, description='Lora config in JSON. Format as [{"model_name": "sd_xl_offset_example-lora_1.0.safetensors", "weight": 0.5}]'), advanced_params: str | None = Form(default=None, description="Advanced parameters in JSON"), save_meta: bool = Form(default=False, description="Save metadata to image"), meta_scheme: str = Form(default='fooocus', description="Metadata scheme, one of 'fooocus', 'a111'"), save_extension: str = Form(default="png", description="Save extension, png, jpg or webp"), save_name: str = Form(default="", description="Save name, empty for auto generate"), require_base64: bool = Form(default=False, description="Return base64 data of generated image"), read_wildcards_in_order: bool = Form(default=False, description="Read wildcards in order"), async_process: bool = Form(default=False, description="Set to true will run async and return job info for retrieve generation result later"), webhook_url: str = Form(default="", description="Webhook url for generation result"), ): if isinstance(input_mask, File): input_mask = None outpaint_selections_arr = outpaint_selections_parser(outpaint_selections) style_selection_arr = style_selection_parser(style_selections) loras_model = lora_parser(loras) advanced_params_obj = advanced_params_parser(advanced_params) return cls( input_image=input_image, input_mask=input_mask, inpaint_additional_prompt=inpaint_additional_prompt, outpaint_selections=outpaint_selections_arr, outpaint_distance_left=outpaint_distance_left, outpaint_distance_right=outpaint_distance_right, outpaint_distance_top=outpaint_distance_top, outpaint_distance_bottom=outpaint_distance_bottom, prompt=prompt, negative_prompt=negative_prompt, style_selections=style_selection_arr, performance_selection=performance_selection, aspect_ratios_selection=aspect_ratios_selection, image_number=image_number, image_seed=image_seed, sharpness=sharpness, guidance_scale=guidance_scale, base_model_name=base_model_name, refiner_model_name=refiner_model_name, refiner_switch=refiner_switch, loras=loras_model, advanced_params=advanced_params_obj, save_meta=save_meta, meta_scheme=meta_scheme, save_extension=save_extension, save_name=save_name, require_base64=require_base64, read_wildcards_in_order=read_wildcards_in_order, async_process=async_process, webhook_url=webhook_url) class ImgPromptRequest(ImgInpaintOrOutpaintRequest): """ Image Prompt Request """ image_prompts: List[ImagePrompt] @classmethod def as_form( cls, input_image: UploadFile = Form(File(None), description="Init image for inpaint or outpaint"), input_mask: UploadFile = Form(File(None), description="Inpaint or outpaint mask"), inpaint_additional_prompt: str | None = Form(default='', description="Describe what you want to inpaint"), outpaint_selections: List[str] = Form([], description="Outpaint expansion selections, literal 'Left', 'Right', 'Top', 'Bottom' separated by comma"), outpaint_distance_left: int = Form(default=0, description="Set outpaint left distance, 0 for default"), outpaint_distance_right: int = Form(default=0, description="Set outpaint right distance, 0 for default"), outpaint_distance_top: int = Form(default=0, description="Set outpaint top distance, 0 for default"), outpaint_distance_bottom: int = Form(default=0, description="Set outpaint bottom distance, 0 for default"), cn_img1: UploadFile = Form(File(None), description="Input image for image prompt"), cn_stop1: float | None = Form( default=None, ge=0, le=1, description="Stop at for image prompt, None for default value"), cn_weight1: float | None = Form( default=None, ge=0, le=2, description="Weight for image prompt, None for default value"), cn_type1: ControlNetType = Form( default=ControlNetType.cn_ip, description="ControlNet type for image prompt"), cn_img2: UploadFile = Form( File(None), description="Input image for image prompt"), cn_stop2: float | None = Form( default=None, ge=0, le=1, description="Stop at for image prompt, None for default value"), cn_weight2: float | None = Form( default=None, ge=0, le=2, description="Weight for image prompt, None for default value"), cn_type2: ControlNetType = Form( default=ControlNetType.cn_ip, description="ControlNet type for image prompt"), cn_img3: UploadFile = Form( File(None), description="Input image for image prompt"), cn_stop3: float | None = Form( default=None, ge=0, le=1, description="Stop at for image prompt, None for default value"), cn_weight3: float | None = Form( default=None, ge=0, le=2, description="Weight for image prompt, None for default value"), cn_type3: ControlNetType = Form( default=ControlNetType.cn_ip, description="ControlNet type for image prompt"), cn_img4: UploadFile = Form( File(None), description="Input image for image prompt"), cn_stop4: float | None = Form( default=None, ge=0, le=1, description="Stop at for image prompt, None for default value"), cn_weight4: float | None = Form( default=None, ge=0, le=2, description="Weight for image prompt, None for default value"), cn_type4: ControlNetType = Form( default=ControlNetType.cn_ip, description="ControlNet type for image prompt"), prompt: str = Form(''), negative_prompt: str = Form(default_prompt_negative), style_selections: List[str] = Form(default_styles, description="Fooocus style selections, separated by comma"), performance_selection: PerformanceSelection = Form(PerformanceSelection.speed), aspect_ratios_selection: str = Form(default_aspect_ratio), image_number: int = Form(default=1, description="Image number", ge=1, le=32), image_seed: int = Form(default=-1, description="Seed to generate image, -1 for random"), sharpness: float = Form(default=2.0, ge=0.0, le=30.0), guidance_scale: float = Form(default=default_cfg_scale, ge=1.0, le=30.0), base_model_name: str = Form(default_base_model_name), refiner_model_name: str = Form(default_refiner_model_name), refiner_switch: float = Form(default=default_refiner_switch, description="Refiner Switch At", ge=0.1, le=1.0), loras: str | None = Form(default=default_loras_json, description='Lora config in JSON. Format as [{"model_name": "sd_xl_offset_example-lora_1.0.safetensors", "weight": 0.5}]'), advanced_params: str | None = Form(default=None, description="Advanced parameters in JSON"), save_meta: bool = Form(default=False, description="Save metadata to image"), meta_scheme: str = Form(default='fooocus', description="Metadata scheme, one of 'fooocus', 'a111'"), save_extension: str = Form(default="png", description="Save extension, png, jpg or webp"), save_name: str = Form(default="", description="Save name, empty for auto generate"), require_base64: bool = Form(default=False, description="Return base64 data of generated image"), read_wildcards_in_order: bool = Form(default=False, description="Read wildcards in order"), async_process: bool = Form(default=False, description="Set to true will run async and return job info for retrieve generation result later"), webhook_url: str = Form(default="", description="Webhook url for generation result"), ): if isinstance(input_image, File): input_image = None if isinstance(input_mask, File): input_mask = None if isinstance(cn_img1, File): cn_img1 = None if isinstance(cn_img2, File): cn_img2 = None if isinstance(cn_img3, File): cn_img3 = None if isinstance(cn_img4, File): cn_img4 = None outpaint_selections_arr = outpaint_selections_parser(outpaint_selections) image_prompt_config = [ (cn_img1, cn_stop1, cn_weight1, cn_type1), (cn_img2, cn_stop2, cn_weight2, cn_type2), (cn_img3, cn_stop3, cn_weight3, cn_type3), (cn_img4, cn_stop4, cn_weight4, cn_type4)] image_prompts = image_prompt_parser(image_prompt_config) style_selection_arr = style_selection_parser(style_selections) loras_model = lora_parser(loras) advanced_params_obj = advanced_params_parser(advanced_params) return cls( input_image=input_image, input_mask=input_mask, inpaint_additional_prompt=inpaint_additional_prompt, outpaint_selections=outpaint_selections_arr, outpaint_distance_left=outpaint_distance_left, outpaint_distance_right=outpaint_distance_right, outpaint_distance_top=outpaint_distance_top, outpaint_distance_bottom=outpaint_distance_bottom, image_prompts=image_prompts, prompt=prompt, negative_prompt=negative_prompt, style_selections=style_selection_arr, performance_selection=performance_selection, aspect_ratios_selection=aspect_ratios_selection, image_number=image_number, image_seed=image_seed, sharpness=sharpness, guidance_scale=guidance_scale, base_model_name=base_model_name, refiner_model_name=refiner_model_name, refiner_switch=refiner_switch, loras=loras_model, advanced_params=advanced_params_obj, save_meta=save_meta, meta_scheme=meta_scheme, save_extension=save_extension, save_name=save_name, require_base64=require_base64, read_wildcards_in_order=read_wildcards_in_order, async_process=async_process, webhook_url=webhook_url) class ImageEnhanceRequest(CommonRequest): """ Image Enhance Request """ enhance_input_image: UploadFile = Form(File(None), description="Input image for enhance") enhance_checkbox: bool = Form(default=True, description="Enhance checkbox") enhance_uov_method: UpscaleOrVaryMethod = Form(default=UpscaleOrVaryMethod.strong_variation, description="Upscale or vary method") enhance_uov_processing_order: str = Form(default="Before First Enhancement", description="Upscale or vary processing order") enhance_uov_prompt_type: str = Form(default="Original Prompts", description="Upscale or vary prompt type") save_final_enhanced_image_only: bool = Form(True, description="Save Final Enhanced Image Only") enhance_ctrlnets: List[EnhanceCtrlNets] @classmethod def as_form( cls, enhance_input_image: UploadFile = Form(File(None), description="Input image for enhance"), enhance_checkbox: bool = Form(default=True, description="Enhance checkbox"), enhance_uov_method: UpscaleOrVaryMethod = Form(default=UpscaleOrVaryMethod.strong_variation, description="Upscale or vary method"), enhance_uov_processing_order: str = Form(default="Before First Enhancement", description="Upscale or vary processing order"), enhance_uov_prompt_type: str = Form(default="Original Prompts", description="Upscale or vary prompt type"), enhance_enabled_1: bool = Form(default=False, description="Enhance checkbox 1"), enhance_mask_dino_prompt_1: str = Form(default="", description="Mask dino prompt"), enhance_prompt_1: str = Form(default="", description="Prompt"), enhance_negative_prompt_1: str = Form(default="", description="Negative prompt"), enhance_mask_model_1: MaskModel = Form(default=MaskModel.sam, description="Mask model"), enhance_mask_cloth_category_1: str = Form(default="full", description="Mask cloth category"), enhance_mask_sam_model_1: str = Form(default="vit_b", description="one of vit_b vit_h vit_l"), enhance_mask_text_threshold_1: float = Form(default=0.25, ge=0, le=1, description="Mask text threshold"), enhance_mask_box_threshold_1: float = Form(default=0.3, ge=0, le=1, description="Mask box threshold"), enhance_mask_sam_max_detections_1: int = Form(default=0, ge=0, le=10, description="Mask sam max detections, Set to 0 to detect all"), enhance_inpaint_disable_initial_latent_1: bool = Form(default=False, description="Inpaint disable initial latent"), enhance_inpaint_engine_1: str = Form(default="v2.6", description="Inpaint engine"), enhance_inpaint_strength_1: float = Form(default=1, ge=0, le=1, description="Inpaint strength"), enhance_inpaint_respective_field_1: float = Form(default=0.618, ge=0, le=1, description="Inpaint respective field"), enhance_inpaint_erode_or_dilate_1: float = Form(default=0, ge=-64, le=64, description="Inpaint erode or dilate"), enhance_mask_invert_1: bool = Form(default=False, description="Inpaint mask invert"), enhance_enabled_2: bool = Form(default=False, description="Enhance checkbox 2"), enhance_mask_dino_prompt_2: str = Form(default="", description="Mask dino prompt"), enhance_prompt_2: str = Form(default="", description="Prompt"), enhance_negative_prompt_2: str = Form(default="", description="Negative prompt"), enhance_mask_model_2: MaskModel = Form(default=MaskModel.sam, description="Mask model"), enhance_mask_cloth_category_2: str = Form(default="full", description="Mask cloth category"), enhance_mask_sam_model_2: str = Form(default="vit_b", description="one of vit_b vit_h vit_l"), enhance_mask_text_threshold_2: float = Form(default=0.25, ge=0, le=1, description="Mask text threshold"), enhance_mask_box_threshold_2: float = Form(default=0.3, ge=0, le=1, description="Mask box threshold"), enhance_mask_sam_max_detections_2: int = Form(default=0, ge=0, le=10, description="Mask sam max detections, Set to 0 to detect all"), enhance_inpaint_disable_initial_latent_2: bool = Form(default=False, description="Inpaint disable initial latent"), enhance_inpaint_engine_2: str = Form(default="v2.6", description="Inpaint engine"), enhance_inpaint_strength_2: float = Form(default=1, ge=0, le=1, description="Inpaint strength"), enhance_inpaint_respective_field_2: float = Form(default=0.618, ge=0, le=1, description="Inpaint respective field"), enhance_inpaint_erode_or_dilate_2: float = Form(default=0, ge=-64, le=64, description="Inpaint erode or dilate"), enhance_mask_invert_2: bool = Form(default=False, description="Inpaint mask invert"), enhance_enabled_3: bool = Form(default=False, description="Enhance checkbox 3"), enhance_mask_dino_prompt_3: str = Form(default="", description="Mask dino prompt"), enhance_prompt_3: str = Form(default="", description="Prompt"), enhance_negative_prompt_3: str = Form(default="", description="Negative prompt"), enhance_mask_model_3: MaskModel = Form(default=MaskModel.sam, description="Mask model"), enhance_mask_cloth_category_3: str = Form(default="full", description="Mask cloth category"), enhance_mask_sam_model_3: str = Form(default="vit_b", description="one of vit_b vit_h vit_l"), enhance_mask_text_threshold_3: float = Form(default=0.25, ge=0, le=1, description="Mask text threshold"), enhance_mask_box_threshold_3: float = Form(default=0.3, ge=0, le=1, description="Mask box threshold"), enhance_mask_sam_max_detections_3: int = Form(default=0, ge=0, le=10, description="Mask sam max detections, Set to 0 to detect all"), enhance_inpaint_disable_initial_latent_3: bool = Form(default=False, description="Inpaint disable initial latent"), enhance_inpaint_engine_3: str = Form(default="v2.6", description="Inpaint engine"), enhance_inpaint_strength_3: float = Form(default=1, ge=0, le=1, description="Inpaint strength"), enhance_inpaint_respective_field_3: float = Form(default=0.618, ge=0, le=1, description="Inpaint respective field"), enhance_inpaint_erode_or_dilate_3: float = Form(default=0, ge=-64, le=64, description="Inpaint erode or dilate"), enhance_mask_invert_3: bool = Form(default=False, description="Inpaint mask invert"), prompt: str = Form(''), negative_prompt: str = Form(default_prompt_negative), style_selections: List[str] = Form(default_styles, description="Fooocus style selections, separated by comma"), performance_selection: PerformanceSelection = Form(PerformanceSelection.speed), aspect_ratios_selection: str = Form(default_aspect_ratio), image_number: int = Form(default=1, description="Image number", ge=1, le=32), image_seed: int = Form(default=-1, description="Seed to generate image, -1 for random"), sharpness: float = Form(default=2.0, ge=0.0, le=30.0), guidance_scale: float = Form(default=default_cfg_scale, ge=1.0, le=30.0), base_model_name: str = Form(default_base_model_name), refiner_model_name: str = Form(default_refiner_model_name), refiner_switch: float = Form(default=default_refiner_switch, description="Refiner Switch At", ge=0.1, le=1.0), loras: str | None = Form(default=default_loras_json, description='Lora config in JSON. Format as [{"model_name": "sd_xl_offset_example-lora_1.0.safetensors", "weight": 0.5}]'), advanced_params: str | None = Form(default=None, description="Advanced parameters in JSON"), save_meta: bool = Form(default=False, description="Save metadata to image"), meta_scheme: str = Form(default='fooocus', description="Metadata scheme, one of 'fooocus', 'a111'"), save_extension: str = Form(default="png", description="Save extension, png, jpg or webp"), save_name: str = Form(default="", description="Save name, empty for auto generate"), require_base64: bool = Form(default=False, description="Return base64 data of generated image"), read_wildcards_in_order: bool = Form(default=False, description="Read wildcards in order"), async_process: bool = Form(default=False, description="Set to true will run async and return job info for retrieve generation result later"), webhook_url: str = Form(default="", description="Webhook url for generation result") ): style_selection_arr = style_selection_parser(style_selections) loras_model = lora_parser(loras) advanced_params_obj = advanced_params_parser(advanced_params) enhance_ctrlnets = [ EnhanceCtrlNets( enhance_enabled=enhance_enabled_1, enhance_mask_dino_prompt=enhance_mask_dino_prompt_1, enhance_prompt=enhance_prompt_1, enhance_negative_prompt=enhance_negative_prompt_1, enhance_mask_model=enhance_mask_model_1, enhance_mask_cloth_category=enhance_mask_cloth_category_1, enhance_mask_sam_model=enhance_mask_sam_model_1, enhance_mask_text_threshold=enhance_mask_text_threshold_1, enhance_mask_box_threshold=enhance_mask_box_threshold_1, enhance_mask_sam_max_detections=enhance_mask_sam_max_detections_1, enhance_inpaint_disable_initial_latent=enhance_inpaint_disable_initial_latent_1, enhance_inpaint_engine=enhance_inpaint_engine_1, enhance_inpaint_strength=enhance_inpaint_strength_1, enhance_inpaint_respective_field=enhance_inpaint_respective_field_1, enhance_inpaint_erode_or_dilate=enhance_inpaint_erode_or_dilate_1, enhance_mask_invert=enhance_mask_invert_1), EnhanceCtrlNets( enhance_enabled=enhance_enabled_2, enhance_mask_dino_prompt=enhance_mask_dino_prompt_2, enhance_prompt=enhance_prompt_2, enhance_negative_prompt=enhance_negative_prompt_2, enhance_mask_model=enhance_mask_model_2, enhance_mask_cloth_category=enhance_mask_cloth_category_2, enhance_mask_sam_model=enhance_mask_sam_model_2, enhance_mask_text_threshold=enhance_mask_text_threshold_2, enhance_mask_box_threshold=enhance_mask_box_threshold_2, enhance_mask_sam_max_detections=enhance_mask_sam_max_detections_2, enhance_inpaint_disable_initial_latent=enhance_inpaint_disable_initial_latent_2, enhance_inpaint_engine=enhance_inpaint_engine_2, enhance_inpaint_strength=enhance_inpaint_strength_2, enhance_inpaint_respective_field=enhance_inpaint_respective_field_2, enhance_inpaint_erode_or_dilate=enhance_inpaint_erode_or_dilate_2, enhance_mask_invert=enhance_mask_invert_2), EnhanceCtrlNets( enhance_enabled=enhance_enabled_3, enhance_mask_dino_prompt=enhance_mask_dino_prompt_3, enhance_prompt=enhance_prompt_3, enhance_negative_prompt=enhance_negative_prompt_3, enhance_mask_model=enhance_mask_model_3, enhance_mask_cloth_category=enhance_mask_cloth_category_3, enhance_mask_sam_model=enhance_mask_sam_model_3, enhance_mask_text_threshold=enhance_mask_text_threshold_3, enhance_mask_box_threshold=enhance_mask_box_threshold_3, enhance_mask_sam_max_detections=enhance_mask_sam_max_detections_3, enhance_inpaint_disable_initial_latent=enhance_inpaint_disable_initial_latent_3, enhance_inpaint_engine=enhance_inpaint_engine_3, enhance_inpaint_strength=enhance_inpaint_strength_3, enhance_inpaint_respective_field=enhance_inpaint_respective_field_3, enhance_inpaint_erode_or_dilate=enhance_inpaint_erode_or_dilate_3, enhance_mask_invert=enhance_mask_invert_3 ), ] return cls( enhance_input_image=enhance_input_image, enhance_checkbox=enhance_checkbox, enhance_uov_method=enhance_uov_method, enhance_uov_processing_order=enhance_uov_processing_order, enhance_uov_prompt_type=enhance_uov_prompt_type, enhance_ctrlnets=enhance_ctrlnets, prompt=prompt, negative_prompt=negative_prompt, style_selections=style_selection_arr, performance_selection=performance_selection, aspect_ratios_selection=aspect_ratios_selection, image_number=image_number, image_seed=image_seed, sharpness=sharpness, guidance_scale=guidance_scale, base_model_name=base_model_name, refiner_model_name=refiner_model_name, refiner_switch=refiner_switch, loras=loras_model, advanced_params=advanced_params_obj, save_meta=save_meta, meta_scheme=meta_scheme, save_extension=save_extension, save_name=save_name, require_base64=require_base64, read_wildcards_in_order=read_wildcards_in_order, async_process=async_process, webhook_url=webhook_url)