172 lines
4.5 KiB
Python
172 lines
4.5 KiB
Python
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"]
|
|
|
|
# fooocus: a1111 (Civitai)
|
|
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)
|
|
} # stop, weight
|
|
|
|
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
|
|
|
|
|
|
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 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
|