diff --git a/cli/gen-styles.py b/cli/gen-styles.py index 1171265a5..8512f4436 100755 --- a/cli/gen-styles.py +++ b/cli/gen-styles.py @@ -24,7 +24,7 @@ options = { styles = [] -def pil_to_b64(img: Image, size: int, quality: int): +def pil_to_b64(img: Image.Image, size: int, quality: int): img = img.convert('RGB') img = img.resize((size, size)) buffer = io.BytesIO() diff --git a/cli/image-exif.py b/cli/image-exif.py index fc2573220..e63fd9e71 100755 --- a/cli/image-exif.py +++ b/cli/image-exif.py @@ -33,7 +33,7 @@ class Exif: # pylint: disable=single-string-used-for-slots return self.__dict__[attr] return self.exif.get(attr, None) - def load(self, img: Image): + def load(self, img: Image.Image): img.load() # exif may not be ready exif_dict = {} try: diff --git a/cli/process.py b/cli/process.py index dcb4278d9..ef205c141 100644 --- a/cli/process.py +++ b/cli/process.py @@ -35,7 +35,7 @@ class Result(): self.steps = requested -def detect_blur(image: Image): +def detect_blur(image: Image.Image): # based on bw = ImageOps.grayscale(image) cx, cy = image.size[0] // 2, image.size[1] // 2 @@ -49,7 +49,7 @@ def detect_blur(image: Image): return mean -def detect_dynamicrange(image: Image): +def detect_dynamicrange(image: Image.Image): # based on data = np.asarray(image) image = np.float32(data) @@ -68,7 +68,7 @@ def detect_dynamicrange(image: Image): return round(res, 2) -def detect_simmilar(image: Image): +def detect_simmilar(image: Image.Image): img = image.resize((options.process.similarity_size, options.process.similarity_size)) img = ImageOps.grayscale(img) data = np.array(img) diff --git a/modules/control/proc/marigold/__init__.py b/modules/control/proc/marigold/__init__.py index af29be777..3fb7f6f52 100644 --- a/modules/control/proc/marigold/__init__.py +++ b/modules/control/proc/marigold/__init__.py @@ -21,7 +21,7 @@ class MarigoldDetector: def __call__( self, - input_image: Image, + input_image: Image.Image, denoising_steps: int = 10, ensemble_size: int = 10, processing_res: int = 768, diff --git a/modules/control/proc/marigold/marigold_pipeline.py b/modules/control/proc/marigold/marigold_pipeline.py index ac60f833e..768c67684 100644 --- a/modules/control/proc/marigold/marigold_pipeline.py +++ b/modules/control/proc/marigold/marigold_pipeline.py @@ -105,7 +105,7 @@ class MarigoldPipeline(DiffusionPipeline): @torch.no_grad() def __call__( self, - input_image: Image, + input_image: Image.Image, denoising_steps: int = 10, ensemble_size: int = 10, processing_res: int = 768, diff --git a/modules/control/processors.py b/modules/control/processors.py index 7a0f5a1fd..bdf5e53c7 100644 --- a/modules/control/processors.py +++ b/modules/control/processors.py @@ -304,7 +304,7 @@ class Processor: display(e, 'Control Processor load') return f'Processor load filed: {processor_id}' - def __call__(self, image_input: Image, mode: str = 'RGB', width: int = 0, height: int = 0, resize_mode: int = 0, resize_name: str = 'None', scale_tab: int = 1, scale_by: float = 1.0, local_config: dict | None = None): + def __call__(self, image_input: Image.Image, mode: str = 'RGB', width: int = 0, height: int = 0, resize_mode: int = 0, resize_name: str = 'None', scale_tab: int = 1, scale_by: float = 1.0, local_config: dict | None = None): """Run the preprocessor on an input image and return the processed control map. Args: diff --git a/modules/gr_tempdir.py b/modules/gr_tempdir.py index 691933e87..4cbba49c0 100644 --- a/modules/gr_tempdir.py +++ b/modules/gr_tempdir.py @@ -49,7 +49,7 @@ def check_tmp_file(gradio, filename): return ok -def pil_to_temp_file(self, img: Image, dir: str, format="png") -> str: # pylint: disable=redefined-builtin,unused-argument +def pil_to_temp_file(self, img: Image.Image, dir: str, format="png") -> str: # pylint: disable=redefined-builtin,unused-argument """ # original gradio implementation bytes_data = gr.processing_utils.encode_pil_to_bytes(img, format) diff --git a/modules/masking.py b/modules/masking.py index 600ec87f2..9cd70c5a5 100644 --- a/modules/masking.py +++ b/modules/masking.py @@ -257,7 +257,7 @@ def run_segment(input_image: gr.Image, input_mask: np.ndarray): return combined_mask -def run_rembg(input_image: Image, input_mask: np.ndarray): +def run_rembg(input_image: Image.Image, input_mask: np.ndarray): try: import rembg except Exception as e: diff --git a/modules/processing_helpers.py b/modules/processing_helpers.py index f93bcea89..7e4b1a4c6 100644 --- a/modules/processing_helpers.py +++ b/modules/processing_helpers.py @@ -106,7 +106,7 @@ def apply_color_correction(correction, original_image, method='histogram'): return fn(correction, original_image) -def apply_overlay(image: Image, paste_loc, index, overlays): +def apply_overlay(image: Image.Image, paste_loc, index, overlays): if overlays is None or index >= len(overlays): return image debug(f'Apply overlay: image={image} loc={paste_loc} index={index} overlays={overlays}') diff --git a/modules/seedvr/src/utils/color_fix.py b/modules/seedvr/src/utils/color_fix.py index a8b0da509..efe80b67d 100644 --- a/modules/seedvr/src/utils/color_fix.py +++ b/modules/seedvr/src/utils/color_fix.py @@ -5,7 +5,7 @@ from torch.nn import functional as F from ..common.half_precision_fixes import safe_pad_operation, safe_interpolate_operation from torchvision.transforms import ToTensor, ToPILImage -def adain_color_fix(target: Image, source: Image): +def adain_color_fix(target: Image.Image, source: Image.Image): # Convert images to tensors to_tensor = ToTensor() target_tensor = to_tensor(target).unsqueeze(0) @@ -20,7 +20,7 @@ def adain_color_fix(target: Image, source: Image): return result_image -def wavelet_color_fix(target: Image, source: Image): +def wavelet_color_fix(target: Image.Image, source: Image.Image): # Convert images to tensors to_tensor = ToTensor() target_tensor = to_tensor(target).unsqueeze(0) diff --git a/modules/upscaler_algo.py b/modules/upscaler_algo.py index e5df5611e..8b3d54ef9 100644 --- a/modules/upscaler_algo.py +++ b/modules/upscaler_algo.py @@ -13,7 +13,7 @@ class UpscalerDCC(Upscaler): UpscalerData("DCC Interpolation", None, self), ] - def do_upscale(self, img: Image, selected_model=None): + def do_upscale(self, img: Image.Image, selected_model=None): import math import numpy as np from modules.postprocess.dcc import DCC @@ -41,7 +41,7 @@ class UpscalerVIPS(Upscaler): UpscalerData("VIPS MagicKernelSharp 2021", None, self), ] - def do_upscale(self, img: Image, selected_model=None): + def do_upscale(self, img: Image.Image, selected_model=None): if selected_model is None: return img from installer import install @@ -85,7 +85,7 @@ class UpscalerHQX(Upscaler): UpscalerData("HQX Interpolation", None, self), ] - def do_upscale(self, img: Image, selected_model=None): + def do_upscale(self, img: Image.Image, selected_model=None): import numpy as np from modules.postprocess.hqx import hqx t0 = time.time() @@ -106,7 +106,7 @@ class UpscalerICBI(Upscaler): UpscalerData("ICB Interpolation", None, self), ] - def do_upscale(self, img: Image, selected_model=None): + def do_upscale(self, img: Image.Image, selected_model=None): import numpy as np from modules.postprocess.icbi import icbi t0 = time.time() diff --git a/modules/upscaler_simple.py b/modules/upscaler_simple.py index fbef4be6c..1ee384fdf 100644 --- a/modules/upscaler_simple.py +++ b/modules/upscaler_simple.py @@ -31,7 +31,7 @@ class UpscalerResize(Upscaler): UpscalerData("Resize Sharpfin Lanczos3", None, self), ] - def do_upscale(self, img: Image, selected_model=None): + def do_upscale(self, img: Image.Image, selected_model=None): if selected_model is None: return img elif selected_model == "Resize Nearest": @@ -74,7 +74,7 @@ class UpscalerLatent(Upscaler): UpscalerData("Latent Bicubic antialias", None, self), ] - def do_upscale(self, img: Image, selected_model=None): + def do_upscale(self, img: Image.Image, selected_model=None): import torch import torch.nn.functional as F if isinstance(img, torch.Tensor) and (len(img.shape) == 4): diff --git a/modules/upscaler_spandrel.py b/modules/upscaler_spandrel.py index e8f95ec1c..f1974edce 100644 --- a/modules/upscaler_spandrel.py +++ b/modules/upscaler_spandrel.py @@ -37,7 +37,7 @@ class UpscalerSpandrel(Upscaler): log.debug(f'Upscale: name="{self.selected}" input={img.size} output={upscaled.size} time={t1 - t0:.2f}') return upscaled - def do_upscale(self, img: Image, selected_model=None): + def do_upscale(self, img: Image.Image, selected_model=None): from installer import install if selected_model is None: return img diff --git a/modules/upscaler_vae.py b/modules/upscaler_vae.py index 6869535cf..a0318302f 100644 --- a/modules/upscaler_vae.py +++ b/modules/upscaler_vae.py @@ -15,7 +15,7 @@ class UpscalerAsymmetricVAE(Upscaler): UpscalerData("Asymmetric VAE v2", None, self), ] - def do_upscale(self, img: Image, selected_model=None): + def do_upscale(self, img: Image.Image, selected_model=None): if selected_model is None: return img import diffusers @@ -55,7 +55,7 @@ class UpscalerWanUpscale(Upscaler): UpscalerData("WAN Asymmetric Upscale", None, self), ] - def do_upscale(self, img: Image, selected_model=None): + def do_upscale(self, img: Image.Image, selected_model=None): if selected_model is None: return img import torch.nn.functional as FN diff --git a/scripts/daam/trace.py b/scripts/daam/trace.py index 625e3d402..c748826df 100644 --- a/scripts/daam/trace.py +++ b/scripts/daam/trace.py @@ -34,7 +34,7 @@ class DiffusionHeatMapHooker(AggregateHooker): locate_middle = load_heads or save_heads self.locator = UNetCrossAttentionLocator(restrict={0} if low_memory else None, locate_middle_block=locate_middle) self.last_prompt: str = '' - self.last_image: Image = None + self.last_image: Image.Image = None self.time_idx = 0 self._gen_idx = 0