|
from enum import Enum |
|
from PIL import Image |
|
from typing import Any, Optional, Union |
|
|
|
from constants import LCM_DEFAULT_MODEL, LCM_DEFAULT_MODEL_OPENVINO |
|
from paths import FastStableDiffusionPaths |
|
from pydantic import BaseModel |
|
|
|
|
|
class LCMLora(BaseModel): |
|
base_model_id: str = "Lykon/dreamshaper-8" |
|
lcm_lora_id: str = "latent-consistency/lcm-lora-sdv1-5" |
|
|
|
|
|
class DiffusionTask(str, Enum): |
|
"""Diffusion task types""" |
|
|
|
text_to_image = "text_to_image" |
|
image_to_image = "image_to_image" |
|
|
|
|
|
class Lora(BaseModel): |
|
models_dir: str = FastStableDiffusionPaths.get_lora_models_path() |
|
path: Optional[Any] = None |
|
weight: Optional[float] = 0.5 |
|
fuse: bool = True |
|
enabled: bool = False |
|
|
|
|
|
class ControlNetSetting(BaseModel): |
|
adapter_path: Optional[str] = None |
|
conditioning_scale: float = 0.5 |
|
enabled: bool = False |
|
_control_image: Image = None |
|
|
|
|
|
class GGUFModel(BaseModel): |
|
gguf_models: str = FastStableDiffusionPaths.get_gguf_models_path() |
|
diffusion_path: Optional[str] = None |
|
clip_path: Optional[str] = None |
|
t5xxl_path: Optional[str] = None |
|
vae_path: Optional[str] = None |
|
|
|
|
|
class LCMDiffusionSetting(BaseModel): |
|
lcm_model_id: str = LCM_DEFAULT_MODEL |
|
openvino_lcm_model_id: str = LCM_DEFAULT_MODEL_OPENVINO |
|
use_offline_model: bool = False |
|
use_lcm_lora: bool = False |
|
lcm_lora: Optional[LCMLora] = LCMLora() |
|
use_tiny_auto_encoder: bool = False |
|
use_openvino: bool = False |
|
prompt: str = "" |
|
negative_prompt: str = "" |
|
init_image: Any = None |
|
strength: Optional[float] = 0.6 |
|
image_height: Optional[int] = 512 |
|
image_width: Optional[int] = 512 |
|
inference_steps: Optional[int] = 1 |
|
guidance_scale: Optional[float] = 1 |
|
clip_skip: Optional[int] = 1 |
|
token_merging: Optional[float] = 0 |
|
number_of_images: Optional[int] = 1 |
|
seed: Optional[int] = 123123 |
|
use_seed: bool = False |
|
use_safety_checker: bool = False |
|
diffusion_task: str = DiffusionTask.text_to_image.value |
|
lora: Optional[Lora] = Lora() |
|
controlnet: Optional[Union[ControlNetSetting, list[ControlNetSetting]]] = None |
|
dirs: dict = { |
|
"controlnet": FastStableDiffusionPaths.get_controlnet_models_path(), |
|
"lora": FastStableDiffusionPaths.get_lora_models_path(), |
|
} |
|
rebuild_pipeline: bool = False |
|
use_gguf_model: bool = False |
|
gguf_model: Optional[GGUFModel] = GGUFModel() |
|
|