mirror of
https://github.com/Bing-su/adetailer.git
synced 2026-01-27 03:39:54 +00:00
177 lines
6.3 KiB
Python
177 lines
6.3 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
if TYPE_CHECKING:
|
|
from dataclasses import dataclass, field
|
|
from typing import Any, Callable
|
|
|
|
import numpy as np
|
|
import torch
|
|
from PIL import Image
|
|
|
|
def _image():
|
|
return Image.new("L", (512, 512))
|
|
|
|
@dataclass
|
|
class StableDiffusionProcessing:
|
|
sd_model: torch.nn.Module = field(default_factory=lambda: torch.nn.Linear(1, 1))
|
|
outpath_samples: str = ""
|
|
outpath_grids: str = ""
|
|
prompt: str = ""
|
|
prompt_for_display: str = ""
|
|
negative_prompt: str = ""
|
|
styles: list[str] = field(default_factory=list)
|
|
seed: int = -1
|
|
subseed: int = -1
|
|
subseed_strength: float = 0.0
|
|
seed_resize_from_h: int = -1
|
|
seed_resize_from_w: int = -1
|
|
sampler_name: str | None = None
|
|
batch_size: int = 1
|
|
n_iter: int = 1
|
|
steps: int = 50
|
|
cfg_scale: float = 7.0
|
|
width: int = 512
|
|
height: int = 512
|
|
restore_faces: bool = False
|
|
tiling: bool = False
|
|
do_not_save_samples: bool = False
|
|
do_not_save_grid: bool = False
|
|
extra_generation_params: dict[str, Any] = field(default_factory=dict)
|
|
overlay_images: list[Image.Image] = field(default_factory=list)
|
|
eta: float = 0.0
|
|
do_not_reload_embeddings: bool = False
|
|
paste_to: tuple[int | float, ...] = (0, 0, 0, 0)
|
|
color_corrections: list[np.ndarray] = field(default_factory=list)
|
|
denoising_strength: float = 0.0
|
|
sampler_noise_scheduler_override: Callable | None = None
|
|
ddim_discretize: str = ""
|
|
s_min_uncond: float = 0.0
|
|
s_churn: float = 0.0
|
|
s_tmin: float = 0.0
|
|
s_tmax: float = 0.0
|
|
s_noise: float = 0.0
|
|
override_settings: dict[str, Any] = field(default_factory=dict)
|
|
override_settings_restore_afterwards: bool = False
|
|
is_using_inpainting_conditioning: bool = False
|
|
disable_extra_networks: bool = False
|
|
scripts: Any = None
|
|
script_args: list[Any] = field(default_factory=list)
|
|
all_prompts: list[str] = field(default_factory=list)
|
|
all_negative_prompts: list[str] = field(default_factory=list)
|
|
all_seeds: list[int] = field(default_factory=list)
|
|
all_subseeds: list[int] = field(default_factory=list)
|
|
iteration: int = 1
|
|
is_hr_pass: bool = False
|
|
|
|
def close(self) -> None:
|
|
pass
|
|
|
|
@dataclass
|
|
class StableDiffusionProcessingTxt2Img(StableDiffusionProcessing):
|
|
sampler: Callable | None = None
|
|
enable_hr: bool = False
|
|
denoising_strength: float = 0.75
|
|
hr_scale: float = 2.0
|
|
hr_upscaler: str = ""
|
|
hr_second_pass_steps: int = 0
|
|
hr_resize_x: int = 0
|
|
hr_resize_y: int = 0
|
|
hr_upscale_to_x: int = 0
|
|
hr_upscale_to_y: int = 0
|
|
width: int = 512
|
|
height: int = 512
|
|
truncate_x: int = 512
|
|
truncate_y: int = 512
|
|
applied_old_hires_behavior_to: tuple[int, int] = (512, 512)
|
|
|
|
@dataclass
|
|
class StableDiffusionProcessingImg2Img(StableDiffusionProcessing):
|
|
sampler: Callable | None = None
|
|
init_images: list[Image.Image] = field(default_factory=list)
|
|
resize_mode: int = 0
|
|
denoising_strength: float = 0.75
|
|
image_cfg_scale: float | None = None
|
|
init_latent: torch.Tensor | None = None
|
|
image_mask: Image.Image = field(default_factory=_image)
|
|
latent_mask: Image.Image = field(default_factory=_image)
|
|
mask_for_overlay: Image.Image = field(default_factory=_image)
|
|
mask_blur: int = 4
|
|
inpainting_fill: int = 0
|
|
inpaint_full_res: bool = True
|
|
inpaint_full_res_padding: int = 0
|
|
inpainting_mask_invert: int | bool = 0
|
|
initial_noise_multiplier: float = 1.0
|
|
mask: torch.Tensor | None = None
|
|
nmask: torch.Tensor | None = None
|
|
image_conditioning: torch.Tensor | None = None
|
|
|
|
@dataclass
|
|
class Processed:
|
|
images: list[Image.Image] = field(default_factory=list)
|
|
prompt: list[str] = field(default_factory=list)
|
|
negative_prompt: list[str] = field(default_factory=list)
|
|
seed: list[int] = field(default_factory=list)
|
|
subseed: list[int] = field(default_factory=list)
|
|
subseed_strength: float = 0.0
|
|
info: str = ""
|
|
comments: str = ""
|
|
width: int = 512
|
|
height: int = 512
|
|
sampler_name: str = ""
|
|
cfg_scale: float = 7.0
|
|
image_cfg_scale: float | None = None
|
|
steps: int = 50
|
|
batch_size: int = 1
|
|
restore_faces: bool = False
|
|
face_restoration_model: str | None = None
|
|
sd_model_hash: str = ""
|
|
seed_resize_from_w: int = -1
|
|
seed_resize_from_h: int = -1
|
|
denoising_strength: float = 0.0
|
|
extra_generation_params: dict[str, Any] = field(default_factory=dict)
|
|
index_of_first_image: int = 0
|
|
styles: list[str] = field(default_factory=list)
|
|
job_timestamp: str = ""
|
|
clip_skip: int = 1
|
|
eta: float = 0.0
|
|
ddim_discretize: str = ""
|
|
s_churn: float = 0.0
|
|
s_tmin: float = 0.0
|
|
s_tmax: float = 0.0
|
|
s_noise: float = 0.0
|
|
sampler_noise_scheduler_override: Callable | None = None
|
|
is_using_inpainting_conditioning: bool = False
|
|
all_prompts: list[str] = field(default_factory=list)
|
|
all_negative_prompts: list[str] = field(default_factory=list)
|
|
all_seeds: list[int] = field(default_factory=list)
|
|
all_subseeds: list[int] = field(default_factory=list)
|
|
infotexts: list[str] = field(default_factory=list)
|
|
|
|
def create_infotext(
|
|
p: StableDiffusionProcessingTxt2Img | StableDiffusionProcessingImg2Img,
|
|
all_prompts: list[str],
|
|
all_seeds: list[int],
|
|
all_subseeds: list[int],
|
|
comments: Any,
|
|
iteration: int = 0,
|
|
position_in_batch: int = 0,
|
|
) -> str:
|
|
pass
|
|
|
|
def process_images(
|
|
p: StableDiffusionProcessingTxt2Img | StableDiffusionProcessingImg2Img,
|
|
) -> Processed:
|
|
pass
|
|
|
|
else:
|
|
from modules.processing import (
|
|
Processed,
|
|
StableDiffusionProcessing,
|
|
StableDiffusionProcessingImg2Img,
|
|
StableDiffusionProcessingTxt2Img,
|
|
create_infotext,
|
|
process_images,
|
|
)
|