diff --git a/webui.py b/webui.py index 278383252b78a2adbf62b4dd82a6796ef44a6d61..d29407bc276ebd481ff7a9b1d10771fb89a1490c 100644 --- a/webui.py +++ b/webui.py @@ -1145,27 +1145,16 @@ class StableDiffusionProcessingImg2Img(StableDiffusionProcessing): self.sampler = samplers_for_img2img[self.sampler_index].constructor() if self.original_mask is not None: - if self.mask_blur > 0: - self.original_mask = self.original_mask.filter(ImageFilter.GaussianBlur(self.mask_blur)).convert('L') - - latmask = self.original_mask.convert('RGB').resize((64, 64)) - latmask = np.moveaxis(np.array(latmask, dtype=np.float), 2, 0) / 255 - latmask = latmask[0] - latmask = np.tile(latmask[None], (4, 1, 1)) - - self.mask = torch.asarray(1.0 - latmask).to(device).type(sd_model.dtype) - self.nmask = torch.asarray(latmask).to(device).type(sd_model.dtype) - + self.original_mask = resize_image(self.resize_mode, self.original_mask, self.width, self.height) self.overlay_images = [] - imgs = [] for img in self.init_images: image = img.convert("RGB") image = resize_image(self.resize_mode, image, self.width, self.height) if self.original_mask is not None: - if self.inpainting_fill == 0: + if self.inpainting_fill != 1: image = fill(image, self.original_mask) image_masked = Image.new('RGBa', (image.width, image.height)) @@ -1194,6 +1183,20 @@ class StableDiffusionProcessingImg2Img(StableDiffusionProcessing): self.init_latent = sd_model.get_first_stage_encoding(sd_model.encode_first_stage(image)) + if self.original_mask is not None: + if self.mask_blur > 0: + self.original_mask = self.original_mask.filter(ImageFilter.GaussianBlur(self.mask_blur)).convert('L') + + latmask = self.original_mask.convert('RGB').resize((self.init_latent.shape[3], self.init_latent.shape[2])) + latmask = np.moveaxis(np.array(latmask, dtype=np.float), 2, 0) / 255 + latmask = latmask[0] + latmask = np.tile(latmask[None], (4, 1, 1)) + + self.mask = torch.asarray(1.0 - latmask).to(device).type(sd_model.dtype) + self.nmask = torch.asarray(latmask).to(device).type(sd_model.dtype) + + + def sample(self, x, conditioning, unconditional_conditioning): t_enc = int(min(self.denoising_strength, 0.999) * self.steps)