Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix images do not match / Coordinate 'right' is less than 'left' #15534

Merged
merged 3 commits into from
Apr 21, 2024

Conversation

storyicon
Copy link
Contributor

Description

I provide the webui as a cloud-based service to a large number of users, and I have been encountering this error frequently:

    Traceback (most recent call last):
      File "/data/app/aigc-worker/models/dev/webui-1.8.0/modules/call_queue.py", line 57, in f
        res = list(func(*args, **kwargs))
      File "/data/app/aigc-worker/models/dev/webui-1.8.0/modules/call_queue.py", line 36, in f
        res = func(*args, **kwargs)
      File "/data/app/aigc-worker/models/dev/webui-1.8.0/modules/img2img.py", line 235, in img2img
        processed = process_images(p)
      File "/data/app/aigc-worker/models/dev/webui-1.8.0/modules/processing.py", line 785, in process_images
        res = process_images_inner(p)
      File "/data/app/aigc-worker/models/dev/webui-1.8.0/modules/processing.py", line 855, in process_images_inner
        p.init(p.all_prompts, p.all_seeds, p.all_subseeds)
      File "/data/app/aigc-worker/models/dev/webui-1.8.0/modules/processing.py", line 1590, in init
        image_masked.paste(image.convert("RGBA").convert("RGBa"), mask=ImageOps.invert(self.mask_for_overlay.convert('L')))
      File "/root/miniconda3/envs/webui/lib/python3.10/site-packages/PIL/Image.py", line 1732, in paste
        self.im.paste(im, box, mask.im)
    ValueError: images do not match

(aka: Coordinate 'right' is less than 'left')

After parameter localization, I found two ways to reproduce the issue.

Reproduction Path 1

  • Select img2img/Inpaint Upload
  • Upload the image and mask separately, with the mask size being different from the image
  • Select only masked in the inpaint area
  • Click generate

Reproduction Path 2

  • Use img2img / inpaint, upload the image and randomly paint a mask
  • Change the resize to width or height, making it different from the uploaded image size
  • Select only masked in the inpaint area
  • In the script below, select SD upscale with the default 2x scaling
  • Click generate

The specific code is located here code

class StableDiffusionProcessingImg2Img(StableDiffusionProcessing):
    ...
    def init(self, all_prompts, all_seeds, all_subseeds):
            ...
            if self.inpaint_full_res:
                self.mask_for_overlay = image_mask
                mask = image_mask.convert('L')
                crop_region = masking.get_crop_region(mask, self.inpaint_full_res_padding)
                crop_region = masking.expand_crop_region(crop_region, self.width, self.height, mask.width, mask.height)
                x1, y1, x2, y2 = crop_region

                mask = mask.crop(crop_region)
                image_mask = images.resize_image(2, mask, self.width, self.height)
                self.paste_to = (x1, y1, x2-x1, y2-y1)
            ...

Here, the self.mask_for_overlay is not resized to the size of self.width and self.height, leading to the following exception:

class StableDiffusionProcessingImg2Img(StableDiffusionProcessing):
    ...
    def init(self, all_prompts, all_seeds, all_subseeds):
            ...
            if image_mask is not None:
                image_masked = Image.new('RGBa', (image.width, image.height))
                image_masked.paste(image.convert("RGBA").convert("RGBa"), mask=ImageOps.invert(self.mask_for_overlay.convert('L')))
            ...

These users, when using the img2img/Inpaint Upload mode, have a slight difference in the size of init_img_inpaint and init_mask_inpaint, only a few percentage points. I guess they used some non-standard extensions or created the mask in a third-party tool, resulting in a slight difference in the size of init_mask_inpaint and init_img_inpaint.

Originally, I attributed this issue to user input errors, but recently, more and more users have reported this problem. Now I think it is a sufficient optimization item to improve the user experience of webui.

This change should be harmless, and the implementation of get_crop_region may indeed contain some typos.

This should be the same issue as described in #14331

Checklist:

@storyicon storyicon changed the title Fix masking Fix images do not match / Coordinate 'right' is less than 'left' Apr 16, 2024
Comment on lines 12 to 13
x1 = y1 = 0
x2, y2 = mask_img.size
Copy link
Collaborator

@w-e-w w-e-w Apr 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some context

I specifically keep odd behavior exactly the same as before
even though it would cause an error if the box is not found in paint pipeline

in a way this function is a method of detecting if there's any non 0 (black) pixel in a image
the reason being that this function is also used by extensions
so it is possible that the extension is expecting the value to be invalid region (x1 > x2, y1> y2) as an indication that the image is all 0 and perform different actions based on it the this result

my priority at that point was compatibility, even though I don't know if any extension is relying on this behavior

if we want to play it safe it is better that in only masked inpaint mask region pipeline add a chack of invalid regions as opposed to changing the behavior of the function

but when performing only masked inpaint mask region, if you supply a mask is complete black, it essentially means that nothing needs to be changed, so functionally it doesn't matter if it errors or not
that's why I didn't add the check back then

Copy link
Contributor Author

@storyicon storyicon Apr 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had noticed this work (#14709) of yours when I submitted this PR but hadn't thought of it as a compatibility consideration, thanks for the tip, it's really interesting and I'll edit the submission here.

@storyicon
Copy link
Contributor Author

some changes have been committed.

@w-e-w
Copy link
Collaborator

w-e-w commented Apr 20, 2024

@AUTOMATIC1111 AUTOMATIC1111 changed the base branch from master to dev April 21, 2024 04:06
@AUTOMATIC1111 AUTOMATIC1111 merged commit 449bc7b into AUTOMATIC1111:dev Apr 21, 2024
3 of 4 checks passed
@w-e-w w-e-w mentioned this pull request Apr 21, 2024
4 tasks
IllusiveMan196 added a commit to IllusiveMan196/stable-diffusion-webui-directml that referenced this pull request May 10, 2024
commit 88c1224
Author: Seunghoon Lee <[email protected]>
Date:   Thu May 9 01:49:45 2024 +0900

    [DirectML] Fix samplers.

commit e2cbdab
Author: Seunghoon Lee <[email protected]>
Date:   Mon May 6 10:27:49 2024 +0900

    Fix bug.

commit 9514d91
Author: Seunghoon Lee <[email protected]>
Date:   Sun May 5 23:29:44 2024 +0900

    Fix ONNX/Olive.

commit 7fd77f2
Author: Seunghoon Lee <[email protected]>
Date:   Sun May 5 22:45:46 2024 +0900

    Fix ONNX/Olive generation.

commit 216340d
Author: Seunghoon Lee <[email protected]>
Date:   Sun May 5 20:10:54 2024 +0900

    Fix bug.

commit a92b859
Author: Seunghoon Lee <[email protected]>
Date:   Sun May 5 19:56:08 2024 +0900

    Support olive-ai 0.5.x.

commit 674c5ca
Author: Seunghoon Lee <[email protected]>
Date:   Tue Apr 30 16:12:53 2024 +0900

    Fix.

commit 89e60b8
Author: Seunghoon Lee <[email protected]>
Date:   Tue Apr 30 13:38:44 2024 +0900

    Rewrite ZLUDA installer.

commit 65588fc
Author: Seunghoon Lee <[email protected]>
Date:   Mon Apr 29 23:02:11 2024 +0900

    Fix.

commit 5d11e9c
Author: Seunghoon Lee <[email protected]>
Date:   Mon Apr 29 22:55:17 2024 +0900

    Bump ZLUDA.

commit 620b78c
Author: Seunghoon Lee <[email protected]>
Date:   Mon Apr 29 22:50:42 2024 +0900

    Improve ZLUDA installation.

commit 6130ef9
Merge: b7c5e60 1c0a0c4
Author: Seunghoon Lee <[email protected]>
Date:   Tue Apr 23 19:48:08 2024 +0900

    Merge remote-tracking branch 'upstream/master'

commit 1c0a0c4
Merge: e2b177c 7dfe959
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 18:00:36 2024 +0300

    Merge branch 'dev'

commit 7dfe959
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 18:00:23 2024 +0300

    update changelog

commit 8f64dad
Merge: e2b177c 821adc3
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 17:57:39 2024 +0300

    Merge pull request AUTOMATIC1111#15594 from AUTOMATIC1111/fix-get_crop_region_v2

    fix get_crop_region_v2

commit 821adc3
Author: w-e-w <[email protected]>
Date:   Mon Apr 22 23:03:27 2024 +0900

    fix get_crop_region_v2

    Co-Authored-By: Dowon <[email protected]>

commit e2b177c
Merge: e84703b e837124
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 12:26:24 2024 +0300

    Merge branch 'dev'

commit e837124
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 12:26:05 2024 +0300

    changelog

commit 3fdc3cf
Merge: 61f6479 e9809de
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 12:24:06 2024 +0300

    Merge pull request AUTOMATIC1111#15591 from AUTOMATIC1111/restore-1.8.0-style-naming-of-scripts

    Restore 1.8.0 style naming of scripts

commit e9809de
Author: w-e-w <[email protected]>
Date:   Mon Apr 22 18:21:48 2024 +0900

    restore 1.8.0-style naming of scripts

commit 61f6479
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 12:19:30 2024 +0300

    restore 1.8.0-style naming of scripts

commit e84703b
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 11:59:54 2024 +0300

    update changelog

commit e4aa0c3
Merge: a183ea4 6c7c176
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 11:50:34 2024 +0300

    Merge pull request AUTOMATIC1111#15587 from AUTOMATIC1111/fix-mistake-in-#15583

    fix mistake in AUTOMATIC1111#15583

commit a183ea4
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 22 11:49:55 2024 +0300

    undo adding scripts to sys.modules

commit 6c7c176
Author: w-e-w <[email protected]>
Date:   Mon Apr 22 00:10:49 2024 +0900

    fix mistake in AUTOMATIC1111#15583

commit e6a8d0b
Merge: d1998d7 db263df
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 18:06:40 2024 +0300

    Merge pull request AUTOMATIC1111#15583 from AUTOMATIC1111/get_crop_region_v2

    get_crop_region_v2

commit db263df
Author: w-e-w <[email protected]>
Date:   Sun Apr 21 19:34:11 2024 +0900

    get_crop_region_v2

commit d1998d7
Merge: c0eaeb1 8e1c356
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:43:19 2024 +0300

    Merge pull request AUTOMATIC1111#15531 from thatfuckingbird/fix-mistyped-function-name

    fix typo in function call (eror -> error)

commit c0eaeb1
Merge: 9bcfb92 a95326b
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:42:57 2024 +0300

    Merge pull request AUTOMATIC1111#15532 from huchenlei/fix_module

    Fix cls.__module__ value in extension script

commit 9bcfb92
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:41:28 2024 +0300

    rename logging from textual inversion to not confuse it with global logging module

commit d74fc56
Merge: a44ed23 63fd38a
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:23:38 2024 +0300

    Merge pull request AUTOMATIC1111#15547 from AUTOMATIC1111/numpy-DeprecationWarning-product---prod

    numpy DeprecationWarning product -> prod

commit a44ed23
Merge: daae178 9d4fdc4
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:22:58 2024 +0300

    Merge pull request AUTOMATIC1111#15555 from light-and-ray/fix_x1_upscalers

    fix x1 upscalers

commit daae178
Merge: ce19a7b 909c3df
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:22:30 2024 +0300

    Merge pull request AUTOMATIC1111#15560 from AUTOMATIC1111/api-downscale

    Remove API upscaling factor limits

commit ce19a7b
Merge: 8d6e72d 50190ca
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:22:04 2024 +0300

    Merge pull request AUTOMATIC1111#15544 from cabelo/master

    Compatibility with Debian 11, Fedora 34+ and openSUSE 15.4+

commit 8d6e72d
Merge: 6f4f6bf ba2a737
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:21:21 2024 +0300

    Merge pull request AUTOMATIC1111#15561 from speculativemoonstone/fix-launch-git-directories

    Allow webui.sh to be runnable from arbitrary directories containing a .git file

commit 6f4f6bf
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:18:58 2024 +0300

    add more info to the error message for AUTOMATIC1111#15567

commit 367b823
Merge: c8ac42a d212fb5
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:09:27 2024 +0300

    Merge pull request AUTOMATIC1111#15567 from AUTOMATIC1111/no-image-data-blocks-debug

    Hide 'No Image data blocks found.' message

commit c8ac42a
Merge: 449bc7b bba306d
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:07:58 2024 +0300

    Merge pull request AUTOMATIC1111#15533 from travisg/callback-fix

    fix: remove_callbacks_for_function should also remove from the ordered map

commit 449bc7b
Merge: 3810413 71314e4
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:06:45 2024 +0300

    Merge pull request AUTOMATIC1111#15534 from storyicon/fix-masking

    Fix images do not match / Coordinate 'right' is less than 'left'

commit 3810413
Merge: f8f5d6c b5b1487
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 07:00:28 2024 +0300

    Merge pull request AUTOMATIC1111#15581 from AUTOMATIC1111/FilenameGenerator-sampler-scheduler

    FilenameGenerator Sampler Scheduler

commit f8f5d6c
Merge: cde35be 5cb567c
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 06:59:56 2024 +0300

    Merge pull request AUTOMATIC1111#15577 from AUTOMATIC1111/api-get-schedulers

    Add schedulers API endpoint

commit cde35be
Merge: ff6f468 49fee7c
Author: AUTOMATIC1111 <[email protected]>
Date:   Sun Apr 21 06:59:38 2024 +0300

    Merge pull request AUTOMATIC1111#15582 from kaanyalova/avif-support

    Add avif support

commit 49fee7c
Author: kaanyalova <[email protected]>
Date:   Sat Apr 20 23:18:54 2024 +0300

    Add avif support

commit b5b1487
Author: w-e-w <[email protected]>
Date:   Sun Apr 21 02:26:50 2024 +0900

    FilenameGenerator Sampler Scheduler

commit 5cb567c
Author: missionfloyd <[email protected]>
Date:   Fri Apr 19 20:29:22 2024 -0600

    Add schedulers API endpoint

commit d212fb5
Author: missionfloyd <[email protected]>
Date:   Thu Apr 18 20:56:51 2024 -0600

    Hide 'No Image data blocks found.' message

commit b7c5e60
Author: Seunghoon Lee <[email protected]>
Date:   Fri Apr 19 10:09:47 2024 +0900

    Fix lshqqytiger#449.

commit 71314e4
Author: storyicon <[email protected]>
Date:   Thu Apr 18 11:59:25 2024 +0000

    feat:compatible with inconsistent/empty mask

    Signed-off-by: storyicon <[email protected]>

commit ba2a737
Author: Speculative Moonstone <[email protected]>
Date:   Thu Apr 18 04:25:32 2024 +0000

    Allow webui.sh to be runnable from directories containing a .git file

commit 909c3df
Author: missionfloyd <[email protected]>
Date:   Wed Apr 17 21:20:03 2024 -0600

    Remove API upscaling factor limits

commit 9d4fdc4
Author: Andray <[email protected]>
Date:   Thu Apr 18 01:53:23 2024 +0400

    fix x1 upscalers

commit 63fd38a
Author: w-e-w <[email protected]>
Date:   Wed Apr 17 15:44:49 2024 +0900

    numpy DeprecationWarning product -> prod

commit 50190ca
Author: Alessandro de Oliveira Faria (A.K.A. CABELO) <[email protected]>
Date:   Wed Apr 17 00:01:56 2024 -0300

    Compatibility with Debian 11, Fedora 34+ and openSUSE 15.4+

commit 0980fdf
Author: storyicon <[email protected]>
Date:   Tue Apr 16 07:35:33 2024 +0000

    fix: images do not match

    Signed-off-by: storyicon <[email protected]>

commit bba306d
Author: Travis Geiselbrecht <[email protected]>
Date:   Mon Apr 15 21:10:11 2024 -0700

    fix: remove callbacks properly in remove_callbacks_for_function()

    Like remove_current_script_callback just before, also remove from the
    ordered_callbacks_map to keep the callback map and ordered callback map
    in sync.

commit a95326b
Author: huchenlei <[email protected]>
Date:   Mon Apr 15 22:34:01 2024 -0400

    nit

commit 0f82948
Author: huchenlei <[email protected]>
Date:   Mon Apr 15 22:14:19 2024 -0400

    Fix cls.__module__

commit 8e1c356
Author: thatfuckingbird <[email protected]>
Date:   Mon Apr 15 21:17:24 2024 +0200

    fix typo in function call (eror -> error)

commit ff6f468
Merge: 3fadb4f adadb4e
Author: AUTOMATIC1111 <[email protected]>
Date:   Sat Apr 13 06:38:58 2024 +0300

    Merge branch 'master' into dev

commit 3fadb4f
Merge: ac8ffb3 592e40e
Author: AUTOMATIC1111 <[email protected]>
Date:   Thu Apr 11 19:33:55 2024 +0300

    Merge pull request AUTOMATIC1111#15492 from w-e-w/update-restricted_opts

    update restricted_opts

commit 592e40e
Author: w-e-w <[email protected]>
Date:   Thu Apr 11 22:51:29 2024 +0900

    update restricted_opts

commit 4068429
Author: storyicon <[email protected]>
Date:   Wed Apr 10 10:53:25 2024 +0000

    fix: Coordinate 'right' is less than 'left'

    Signed-off-by: storyicon <[email protected]>

commit ac8ffb3
Merge: a976f4d ef83f68
Author: AUTOMATIC1111 <[email protected]>
Date:   Tue Apr 9 16:00:56 2024 +0300

    Merge pull request AUTOMATIC1111#15470 from AUTOMATIC1111/read-infotext-Script-not-found

    error handling paste_field callables

commit ef83f68
Author: w-e-w <[email protected]>
Date:   Tue Apr 9 21:28:44 2024 +0900

    catch exception for all paste_fields callable

commit 600f339
Author: w-e-w <[email protected]>
Date:   Tue Apr 9 20:59:04 2024 +0900

    Warning when Script is not found

commit a976f4d
Merge: c48b6bf e3aabe6
Author: AUTOMATIC1111 <[email protected]>
Date:   Tue Apr 9 12:05:02 2024 +0300

    Merge pull request AUTOMATIC1111#15460 from AUTOMATIC1111/create_infotext-index-and-callable

    create_infotext allow index and callable, re-work Hires prompt infotext

commit c48b6bf
Merge: d9708c9 2580235
Author: AUTOMATIC1111 <[email protected]>
Date:   Tue Apr 9 11:00:30 2024 +0300

    Merge pull request AUTOMATIC1111#15465 from jordenyt/fix-extras-api-upscale-enabled

    Fix extra-single-image API not doing upscale failed

commit 2580235
Author: Jorden Tse <[email protected]>
Date:   Tue Apr 9 11:13:47 2024 +0800

    Fix extra-single-image API not doing upscale failed

commit d9708c9
Author: AUTOMATIC1111 <[email protected]>
Date:   Mon Apr 8 16:15:25 2024 +0300

    fix limited file write (thanks, Sylwia)

commit e3aabe6
Author: w-e-w <[email protected]>
Date:   Mon Apr 8 19:48:38 2024 +0900

    add documentation for create_infotext

commit 1e1176b
Author: w-e-w <[email protected]>
Date:   Mon Apr 8 18:18:33 2024 +0900

    non-serializable as None

commit 219e644
Author: w-e-w <[email protected]>
Date:   Mon Apr 8 01:41:52 2024 +0900

    re-work extra_generation_params for Hires prompt

commit 47ed9b2
Author: w-e-w <[email protected]>
Date:   Mon Apr 8 01:39:31 2024 +0900

    allow list or callables in generation_params

commit 6efdfe3
Author: w-e-w <[email protected]>
Date:   Sun Apr 7 22:58:12 2024 +0900

    if use use_main_prompt index = 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants