| | from enum import IntEnum, Enum |
| |
|
| | disabled = 'Disabled' |
| | enabled = 'Enabled' |
| | subtle_variation = 'Vary (Subtle)' |
| | strong_variation = 'Vary (Strong)' |
| | upscale_15 = 'Upscale (1.5x)' |
| | upscale_2 = 'Upscale (2x)' |
| | upscale_fast = 'Upscale (Fast 2x)' |
| |
|
| | uov_list = [ |
| | disabled, subtle_variation, strong_variation, upscale_15, upscale_2, upscale_fast |
| | ] |
| |
|
| | CIVITAI_NO_KARRAS = ["euler", "euler_ancestral", "heun", "dpm_fast", "dpm_adaptive", "ddim", "uni_pc"] |
| |
|
| | |
| | KSAMPLER = { |
| | "euler": "Euler", |
| | "euler_ancestral": "Euler a", |
| | "heun": "Heun", |
| | "heunpp2": "", |
| | "dpm_2": "DPM2", |
| | "dpm_2_ancestral": "DPM2 a", |
| | "lms": "LMS", |
| | "dpm_fast": "DPM fast", |
| | "dpm_adaptive": "DPM adaptive", |
| | "dpmpp_2s_ancestral": "DPM++ 2S a", |
| | "dpmpp_sde": "DPM++ SDE", |
| | "dpmpp_sde_gpu": "DPM++ SDE", |
| | "dpmpp_2m": "DPM++ 2M", |
| | "dpmpp_2m_sde": "DPM++ 2M SDE", |
| | "dpmpp_2m_sde_gpu": "DPM++ 2M SDE", |
| | "dpmpp_3m_sde": "", |
| | "dpmpp_3m_sde_gpu": "", |
| | "ddpm": "", |
| | "lcm": "LCM", |
| | "tcd": "TCD" |
| | } |
| |
|
| | SAMPLER_EXTRA = { |
| | "ddim": "DDIM", |
| | "uni_pc": "UniPC", |
| | "uni_pc_bh2": "" |
| | } |
| |
|
| | SAMPLERS = KSAMPLER | SAMPLER_EXTRA |
| |
|
| | KSAMPLER_NAMES = list(KSAMPLER.keys()) |
| |
|
| | SCHEDULER_NAMES = ["normal", "karras", "exponential", "sgm_uniform", "simple", "ddim_uniform", "lcm", "turbo", "align_your_steps", "tcd", "edm_playground_v2.5"] |
| | SAMPLER_NAMES = KSAMPLER_NAMES + list(SAMPLER_EXTRA.keys()) |
| |
|
| | sampler_list = SAMPLER_NAMES |
| | scheduler_list = SCHEDULER_NAMES |
| |
|
| | clip_skip_max = 12 |
| |
|
| | default_vae = 'Default (model)' |
| |
|
| | refiner_swap_method = 'joint' |
| |
|
| | cn_ip = "ImagePrompt" |
| | cn_ip_face = "FaceSwap" |
| | cn_canny = "PyraCanny" |
| | cn_cpds = "CPDS" |
| |
|
| | ip_list = [cn_ip, cn_canny, cn_cpds, cn_ip_face] |
| | default_ip = cn_ip |
| |
|
| | default_parameters = { |
| | cn_ip: (0.5, 0.6), cn_ip_face: (0.9, 0.75), cn_canny: (0.5, 1.0), cn_cpds: (0.5, 1.0) |
| | } |
| |
|
| | output_formats = ['png', 'jpeg', 'webp'] |
| |
|
| | inpaint_engine_versions = ['None', 'v1', 'v2.5', 'v2.6'] |
| | inpaint_option_default = 'Inpaint or Outpaint (default)' |
| | inpaint_option_detail = 'Improve Detail (face, hand, eyes, etc.)' |
| | inpaint_option_modify = 'Modify Content (add objects, change background, etc.)' |
| | inpaint_options = [inpaint_option_default, inpaint_option_detail, inpaint_option_modify] |
| |
|
| | desc_type_photo = 'Photograph' |
| | desc_type_anime = 'Art/Anime' |
| |
|
| | sdxl_aspect_ratios = [ |
| | '704*1408', '704*1344', '768*1344', '768*1280', '832*1216', '832*1152', |
| | '896*1152', '896*1088', '960*1088', '960*1024', '1024*1024', '1024*960', |
| | '1088*960', '1088*896', '1152*896', '1152*832', '1216*832', '1280*768', |
| | '1344*768', '1344*704', '1408*704', '1472*704', '1536*640', '1600*640', |
| | '1664*576', '1728*576' |
| | ] |
| |
|
| |
|
| | class MetadataScheme(Enum): |
| | FOOOCUS = 'fooocus' |
| | A1111 = 'a1111' |
| |
|
| |
|
| | metadata_scheme = [ |
| | (f'{MetadataScheme.FOOOCUS.value} (json)', MetadataScheme.FOOOCUS.value), |
| | (f'{MetadataScheme.A1111.value} (plain text)', MetadataScheme.A1111.value), |
| | ] |
| |
|
| | controlnet_image_count = 4 |
| | preparation_step_count = 13 |
| |
|
| |
|
| | class OutputFormat(Enum): |
| | PNG = 'png' |
| | JPEG = 'jpeg' |
| | WEBP = 'webp' |
| |
|
| | @classmethod |
| | def list(cls) -> list: |
| | return list(map(lambda c: c.value, cls)) |
| |
|
| |
|
| | class PerformanceLoRA(Enum): |
| | QUALITY = None |
| | SPEED = None |
| | EXTREME_SPEED = 'sdxl_lcm_lora.safetensors' |
| | LIGHTNING = 'sdxl_lightning_4step_lora.safetensors' |
| | HYPER_SD = 'sdxl_hyper_sd_4step_lora.safetensors' |
| |
|
| |
|
| | class Steps(IntEnum): |
| | QUALITY = 60 |
| | SPEED = 30 |
| | EXTREME_SPEED = 8 |
| | LIGHTNING = 4 |
| | HYPER_SD = 4 |
| |
|
| | @classmethod |
| | def keys(cls) -> list: |
| | return list(map(lambda c: c, Steps.__members__)) |
| |
|
| |
|
| | class StepsUOV(IntEnum): |
| | QUALITY = 36 |
| | SPEED = 18 |
| | EXTREME_SPEED = 8 |
| | LIGHTNING = 4 |
| | HYPER_SD = 4 |
| |
|
| |
|
| | class Performance(Enum): |
| | QUALITY = 'Quality' |
| | SPEED = 'Speed' |
| | EXTREME_SPEED = 'Extreme Speed' |
| | LIGHTNING = 'Lightning' |
| | HYPER_SD = 'Hyper-SD' |
| |
|
| | @classmethod |
| | def list(cls) -> list: |
| | return list(map(lambda c: c.value, cls)) |
| |
|
| | @classmethod |
| | def values(cls) -> list: |
| | return list(map(lambda c: c.value, cls)) |
| |
|
| | @classmethod |
| | def by_steps(cls, steps: int | str): |
| | return cls[Steps(int(steps)).name] |
| |
|
| | @classmethod |
| | def has_restricted_features(cls, x) -> bool: |
| | if isinstance(x, Performance): |
| | x = x.value |
| | return x in [cls.EXTREME_SPEED.value, cls.LIGHTNING.value, cls.HYPER_SD.value] |
| |
|
| | def steps(self) -> int | None: |
| | return Steps[self.name].value if self.name in Steps.__members__ else None |
| |
|
| | def steps_uov(self) -> int | None: |
| | return StepsUOV[self.name].value if self.name in StepsUOV.__members__ else None |
| |
|
| | def lora_filename(self) -> str | None: |
| | return PerformanceLoRA[self.name].value if self.name in PerformanceLoRA.__members__ else None |
| |
|