-
Notifications
You must be signed in to change notification settings - Fork 27.3k
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
[Bug]: Inpainting mask is sometimes ignored #10643
Comments
…reaking inpainting, so that it behaves like plain img2img)
…oise Fix for #10643 (Inpainting mask sometimes not working)
Fixed in #10644 |
It's not fixed. If you don't reset the paintbrush between edits, it will also alter unmasked portions of the image. |
Is it the same as #8288? |
It could be. You can test the fix, which is on the dev branch |
OK I confirm that it is not fixed, the problem remains with the latest |
…reaking inpainting, so that it behaves like plain img2img)
* repair file paste for Firefox from AUTOMATIC1111#10615 remove animation when pasting files into prompt rework two dragdrop js files into one * Upgrade Gradio, remove docs URL hack * fix error in dragdrop logic * Add custom karras scheduler * remove debug print * `modules/api/api.py`: disable `timeout_keep_alive` * Add dropdown for scheduler type * Change karras to kdiffusion * Replace karras by k_diffusion, fix gen info * only add metadata when k_sched is actually been used * remove not related code * Avoid loop import * Minor naming fixes * Add error information for recursion error * use sigma_max/min in model if sigma_max/min is 0 * Revert AUTOMATIC1111#10586 * Fix for AUTOMATIC1111#10643 (pixel noise in webui inpainting canvas breaking inpainting, so that it behaves like plain img2img) * Better hint for user Co-authored-by: catboxanon <122327233+catboxanon@users.noreply.github.com> * Add hint for custom k_diffusion scheduler * Use settings instead of main interface * Use better way to impl * Fix xyz * Subject:. Improvements to handle VAE filenames in generated image filenames Body:. 1) Added new line 24 to import sd_vae module. 2) Added new method get_vae_filename at lines 340-349 to obtain the VAE filename to be used for image generation and further process it to extract only the filename by splitting it with a dot symbol. 3) Added a new lambda function 'vae_filename' at line 373 to handle VAE filenames. Reason:. A function was needed to get the VAE filename and handle it in the program. Test:. We tested whether we could use this new functionality to get the expected file names. The correct behaviour was confirmed for the following commonly distributed VAE files. vae-ft-mse-840000-ema-pruned.safetensors -> vae-ft-mse-840000-ema-pruned anything-v4.0.vae.pt -> anything-v4.0 ruff response:. There were no problems with the code I added. There was a minor configuration error in a line I did not modify, but I did not modify it as it was not relevant to this modification. Logged. images.py:426:56: F841 [*] Local variable `_` is assigned to but never used images.py:432:43: F841 [*] Local variable `_` is assigned to but never used Impact:. This change makes it easier to retrieve the VAE filename used for image generation and use it in the programme. * Use type to determine if it is enable * fix bad styling for thumbs view in extra networks AUTOMATIC1111#10639 * possible fix for empty list of optimizations AUTOMATIC1111#10605 * Fix ruff error * Use automatic instead of None/default * improvements See: AUTOMATIC1111#10649 (comment) * use Schedule instead of Sched * Changed 'images.zip' to generation by pattern * Optimize tooltip checks * Instead of traversing tens of thousands of text nodes, only look at elements and their children * Debounce the checks to happen only every one second * Restore support for dropdown tooltips * Add support for tooltips on dropdown options * Cleaner image metadata read * Just use console.error, it's in all browsers * Merge executeCallbacks and runCallback, simplify + optimize * Document on* handlers (for extension authors' sake) * Add onAfterUiUpdate callback * Use onAfterUiUpdate where possible * Remove try/except in img metadata read * Small fixes to prepare_tcmalloc for Debian/Ubuntu compatibility - /usr/sbin (where ldconfig is usually located) is not typically on users' PATHs by default, so we set that variable before trying to run ldconfig. - The libtcmalloc library is called libtcmalloc_minimal on Debian/Ubuntu systems. We now check whether libtcmalloc_minimal exists when running prepare_tcmalloc. * change to AMD only if NVIDIA is not presented * Update webui.sh * Remove exit() from select_checkpoint() Raising a FileNotFoundError instead. * Show full traceback in get_sd_model() to reveal if an error is caused by an extension * custom unet support * fix serving images that have already been saved without temp files function that broke after updating gradio * updates for the noise schedule settings * Ability to zoom and move the canvas * Formatted Prettier added fullscreen mode canvas expansion function * Improve reset zoom when toggle tabs * add quoting for infotext values that have a colon in them * Mark caption_image_overlay's textfont as deprecated; fix AUTOMATIC1111#10778 * Sort requirements files * Upgrade xformers * Synchronize requirements/requirements_versions * Remove deps not listed in _versions from requirements * Omit versions when they don't match _versions * fix "hires. fix" prompt/neg sharing same labels as txt2img_prompt/negative_prompt * typo vidocard -> videocard * Corrected the code according to Code style * changed the document to gradioApp() * Round down scale destination dimensions to nearest multiple of 8 * Refactor EmbeddingDatabase.register_embedding() to allow unregistering * fix xyz clip * Upgrade transformers Refs AUTOMATIC1111#9035 (comment) * fix disable png info * clarify issue template * Only poll gamepads while connected * Update imageviewerGamepad.js * Patch GitPython to not use leaky persistent processes * Add & use modules.errors.print_error where currently printing exception info by hand * Revert "fix xyz clip" This reverts commit edd766e. * fix get_conds_with_caching() * improve filename matching for mask we should not rely that mask filename will be of the same extension as the image filename so better pattern matching is added * add scale_by to batch processing * ruffed * Moved the script to the extension build-in * Added VAE listing to web API. * Fix s_min_uncond default type int * Move gamepaddisconnected listener * Vendor in the single module used from taming_transformers; remove taming_transformers dependency (and fix the two ruff complaints) * a small fix for very wide images, because of the scroll bar was the wrong zoom * Frontend: only look at top-level tabs, not nested tabs Refs adieyal/sd-dynamic-prompts#459 (comment) * Fix typo in `--update-check` help message Change `chck` to `check` * rename print_error to report, use it with together with package name * change UI reorder setting to multiselect * add an option to show selected setting in main txt2img/img2img UI split some code from ui.py into ui_settings.py ui_gradio_edxtensions.py add before_process callback for scripts add ability for alwayson scripts to specify section and let user reorder those sections * fix [Bug]: LoRA don't apply on dropdown list sd_lora AUTOMATIC1111#10880 * Fixed the problem with sticking to the mouse, created a tooltip * use ui_reorder_list rather than ui_reorder for UI reorder option to make the program not break when reverting to old version * fix 10896 pnginfo parameters * remove redundant * assign devices.dtype early because it's needed before the model is loaded * revert default cross attention optimization to Doggettx make --disable-opt-split-attention command line option work again * add hiding and a colspans to startup profile table * add subdir support for images, masks and output; search mask only in subdir * fallback to original file retrieving; skip img if mask not found usage of `shared.walk_files` breaks controlnet extension images are processed in different order which leads to unmatched img file used for img2img and img file used for controlnet (if no folder is specified for control net or the same as img2img input dir used for it) * revert the erroneous change for model setting added in df02498 * Added the ability to configure hotkeys via webui Now you can configure the hotkeys directly through the settings JS and Python scripts are tested and code style compliant * Added a hotkey repeat check to avoid bugs * Support dynamic sort of extra networks * lint fixes * Cross attention optimization Cross attention optimization cross attention optimization * remove redundant call list_optimizers() * remove redundant * Simplify a bunch of `len(x) > 0`/`len(x) == 0` style expressions * fallback version info form CHANGELOG.md * Made tooltip optional. You can disable it in the settings. Enabled by default * Added support for workarounds on external GPU. lspci detects VGA for main/integrated videocards and Display for external videocards. This commit should apply workarounds on computers with more than one GPU. Useful for most laptops using weak iGPU and good dGPU. Signed-off-by: Pablo Cholaky <waltercool@slash.cl> * Apply suggestions from code review Co-authored-by: Aarni Koskela <akx@iki.fi> * Added the ability to swap the zoom hotkeys and resize the brush * small ui fix In the error the user will see R instead of KeyR * Update modules/launch_utils.py Co-authored-by: Aarni Koskela <akx@iki.fi> * fallback version info form CHANGELOG.md * a yet another method to restart webui * Added sysinfo tab to settings * lint * Round upscaled dimensions only when not divisible by 8 * Use a more concise calculation for dest dims * Fix missing ext_filter kwarg * Made the applyZoomAndPan function global for other extensions * torch.cuda.is_available() check for SdOptimizationXformers * fix conds caching with extra network * simplify self.extra_network_data * remove redone compare * Fixed the redmask bug * Made a function applyZoomAndPan isolated each instance Isolated each instance of applyZoomAndPan, now if you add another element to the page, they will work correctly * Fixed visual bugs * Correct definition zoom level I changed the regular expression and now I always have to select scale from style.transfo * Update ui_tempdir.py Make override function have the same input parameters with original function * infer styles from prompts, and an option to control the behavior * add whitelist for environment in the report add extra link to view the report instead of downloading it * fix the broken line for AUTOMATIC1111#10990 * fix for conds of second hires fox pass being calculated using first pass's networks, and add an option to revert to old behavior * prevent calculating cons for second pass of hires fix when they are the same as for the first pass * Add endpoint to get latent_upscale_modes for hires fix * Zoom and Pan: move helpers into its namespace to avoid littering global scope * Zoom and Pan: use elementIDs from closure scope * Zoom and Pan: simplify getElements (it's not actually async) * Zoom and Pan: use for instead of forEach * Zoom and Pan: simplify waitForOpts * revert the message to how it was * rework-disable-autolaunch * Restart: only do restart if running via the wrapper script * restore old disable --autolaunch * SD_WEBUI_RESTARTING * print error and continue print error and continue * Forcing Torch Version to 1.13.1 for Navi and Renoir GPUs * Fix error in webui.sh * Force python1 for Navi1 only, use python_cmd for python * Check python version for Navi 1 only * Write "RX 5000 Series" instead of "Navi" in err * link footer API to Wiki when API is not active * Skip force pyton and pytorch ver if TORCH_COMMAND already set * Fix upcast attention dtype error. Without this fix, enabling the "Upcast cross attention layer to float32" option while also using `--opt-sdp-attention` breaks generation with an error: ``` File "/ext3/automatic1111/stable-diffusion-webui/modules/sd_hijack_optimizations.py", line 612, in sdp_attnblock_forward out = torch.nn.functional.scaled_dot_product_attention(q, k, v, dropout_p=0.0, is_causal=False) RuntimeError: Expected query, key, and value to have the same dtype, but got query.dtype: float key.dtype: float and value.dtype: c10::Half instead. ``` The fix is to make sure to upcast the value tensor too. * persistent conds cache Update shared.py * Generate Forever during generation Generate Forever during generation * Split mask blur into X and Y components Prequisite to fixing Outpainting MK2 mask blur bug. * Split Outpainting MK2 mask blur into X and Y components Fixes unexpected noise in non-outpainted borders when using MK2 script. * Don't die when a LoRA is a broken symlink Fixes AUTOMATIC1111#11098 * linter * add changelog for 1.4.0 * fixed typos * Improved error output, improved settings menu * remove console.log * Use os.makedirs(..., exist_ok=True) * Reworked the disabling of functions, refactored part of the code * Formatting code with Prettier * Fix Typo of hints.js * Strip whitespaces from URL and dirname prior to extension installation This avoid some cryptic errors brought by accidental spaces around urls * add missing infotext entry for the pad cond/uncond option --------- Signed-off-by: Pablo Cholaky <waltercool@slash.cl> Co-authored-by: AUTOMATIC1111 <16777216c@gmail.com> Co-authored-by: Aarni Koskela <akx@iki.fi> Co-authored-by: Kohaku-Blueleaf <59680068+KohakuBlueleaf@users.noreply.github.com> Co-authored-by: Monty Anderson <work@montyanderson.net> Co-authored-by: catboxanon <122327233+catboxanon@users.noreply.github.com> Co-authored-by: ArthurHeitmann <37270165+ArthurHeitmann@users.noreply.github.com> Co-authored-by: fumitaka.yano <fumitaka.yano@mixi.co.jp> Co-authored-by: strelokhalfer <strelokhalfer@gmail.com> Co-authored-by: kernelmethod <17100608+kernelmethod@users.noreply.github.com> Co-authored-by: Roman Beltiukov <maybe.hello.world@gmail.com> Co-authored-by: linkoid <36754150+linkoid@users.noreply.github.com> Co-authored-by: Danil Boldyrev <daswerq123@gmail.com> Co-authored-by: Sakura-Luna <53183413+Sakura-Luna@users.noreply.github.com> Co-authored-by: nyqui <67160376+nyqui@users.noreply.github.com> Co-authored-by: yoinked <pepe.dannyboy@gmail.com> Co-authored-by: ramyma <ramy.mahmoudi@gmail.com> Co-authored-by: klimaleksus <klimaleksus@gmail.com> Co-authored-by: w-e-w <40751091+w-e-w@users.noreply.github.com> Co-authored-by: missionfloyd <missionfloyd@users.noreply.github.com> Co-authored-by: Artem Kotov <breengles@gmail.com> Co-authored-by: James <james@JAMES-PC.localhost> Co-authored-by: David Chuang <dc1770712@gmail.com> Co-authored-by: Will Frey <jfrey89@gmail.com> Co-authored-by: Pablo Cholaky <waltercool@slash.cl> Co-authored-by: Chanchana Sornsoontorn <off9955555@gmail.com> Co-authored-by: Vivek K. Vasishtha <vivekkumar.be01@gmail.com> Co-authored-by: Vesnica <Vesnica@users.noreply.github.com> Co-authored-by: DGdev91 <iperpido91@gmail.com> Co-authored-by: Alexander Ljungberg <aljungberg@wireload.net> Co-authored-by: Splendide Imaginarius <119545140+Splendide-Imaginarius@users.noreply.github.com> Co-authored-by: arch-fan <juanserracines@gmail.com> Co-authored-by: zhtttylz <hualong.z@hotmail.com> Co-authored-by: Jabasukuriputo Wang <wfjsw@users.noreply.github.com>
So I looked further into the issue #8288 It turns out that the inverted alpha channel of the image is also used as the inpainting mask. In that case, removing the transparency would be the quick fix here. Technically this is intentional, as described here. The question is if this is what is supposed to happen, when both an alpha mask exists and a mask is drawn in the UI. |
I can confirm that in imgtoimg -> "inpaint sketch" mode, the "inpaint area" setting seem to be ignored sometimes when switching the base image. Idk precisely how to reproduce it, but it's kind of annoying. |
Is there an existing issue for this?
What happened?
When painting a mask in inpaint mode, the mask is completely ignored, as if everything was painted, and behaves as if in normal img2img mode. Happens in Chrome but not in (chromium) Edge.
TLDR; Inpainting doesn't work at all
Potential fix and exactly what goes wrong at the end at "Additional information".
Steps to reproduce the problem
What should have happened?
Only the painted area should change.
Commit where the problem happens
v1.2.1 89f9faa
What platforms do you use to access the UI ?
Windows
What browsers do you use to access the UI ?
Google Chrome
Command Line Arguments
List of extensions
sd-dynamic-prompts
stable-diffusion-webui-images-browser
Console logs
Additional information
In short
Black pixels on HTML canvas aren't actually black and change each time when painting. Since they aren't 100% black the backend treats them as white, and as a result the entire mask as white.
Fix
At img2img.py line 98 change
to
This will 100% make sure that only the painted area is masked and no noise is included. Only potential issue is, if there's a plan to have partial transparency painting in the UI.
In more detail
For some reason in my chrome there is some noise in the HTML canvas element. As a result supposedly black pixels aren't actually black. Each time you draw on the canvas, the noise changes slightly.
In the img2img.py in line 98
the
alpha_mask
has the mode'1'
(black or white pixels, 0 or 255) andmask
will have the mode'L'
(grayscale, 0 - 255). However theImageChops.lighter
operation will automatically convertmask
to also be'1'
. This will turn any pixels that aren't 100% black to white. In my case no single mask pixel is 100% black. So the entire mask turns white.To prevent this from happening the
mask
has to be manually converted to mode'1'
beforehand.I think this is a chrome and not a gradio issue. So waiting for any kind of fix will take a long time.
I will soon open a PR for the issue with the above fix.
The text was updated successfully, but these errors were encountered: