From b923f8be788e638c03887676048957642ad7d2af Mon Sep 17 00:00:00 2001 From: lllyasviel Date: Mon, 29 Jan 2024 18:50:36 -0800 Subject: [PATCH] handle inpaint --- .../sd_forge_controlnet/scripts/controlnet.py | 9 +++++---- modules_forge/supported_preprocessor.py | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/extensions-builtin/sd_forge_controlnet/scripts/controlnet.py b/extensions-builtin/sd_forge_controlnet/scripts/controlnet.py index b4ed4db8..66163924 100644 --- a/extensions-builtin/sd_forge_controlnet/scripts/controlnet.py +++ b/extensions-builtin/sd_forge_controlnet/scripts/controlnet.py @@ -269,6 +269,7 @@ class ControlNetForForgeOfficial(scripts.Script): unit: external_code.ControlNetUnit, input_image: np.ndarray, resize_mode: external_code.ResizeMode, + preprocessor ) -> np.ndarray: """ Crop ControlNet input image based on A1111 inpaint mask given. @@ -290,7 +291,7 @@ class ControlNetForForgeOfficial(scripts.Script): a1111_mask_image is not None ) if ( - 'reference' not in unit.module + preprocessor.corp_image_with_a1111_mask_when_in_img2img_inpaint_tab and is_only_masked_inpaint and (is_upscale_script or unit.inpaint_crop_input_image) ): @@ -408,7 +409,9 @@ class ControlNetForForgeOfficial(scripts.Script): input_image, resize_mode = self.choose_input_image(p, unit) assert isinstance(input_image, np.ndarray), 'Invalid input image!' - input_image = self.try_crop_image_with_a1111_mask(p, unit, input_image, resize_mode) + preprocessor = global_state.get_preprocessor(unit.module) + + input_image = self.try_crop_image_with_a1111_mask(p, unit, input_image, resize_mode, preprocessor) input_image = np.ascontiguousarray(input_image.copy()).copy() # safe numpy if unit.pixel_perfect: @@ -424,8 +427,6 @@ class ControlNetForForgeOfficial(scripts.Script): logger.info(f"Using preprocessor: {unit.module}") logger.info(f'preprocessor resolution = {unit.processor_res}') - preprocessor = global_state.get_preprocessor(unit.module) - preprocessor_output = preprocessor( input_image=input_image, resolution=unit.processor_res, diff --git a/modules_forge/supported_preprocessor.py b/modules_forge/supported_preprocessor.py index 5b6b28e5..7724f16d 100644 --- a/modules_forge/supported_preprocessor.py +++ b/modules_forge/supported_preprocessor.py @@ -27,6 +27,7 @@ class Preprocessor: self.show_control_mode = True self.do_not_need_model = False self.sorting_priority = 0.0 # higher goes to top in the list + self.corp_image_with_a1111_mask_when_in_img2img_inpaint_tab = True def setup_model_patcher(self, model, load_device=None, offload_device=None, dtype=torch.float32, **kwargs): if load_device is None: