dvruette / sd-webui-fabric

MIT License
402 stars 23 forks source link

[UX SUGGESTION] Invert "Disable feedback" checkbox to "Enable" #25

Closed h3rmit-git closed 1 year ago

h3rmit-git commented 1 year ago

While working with FABRIC and many other plugins that I have installed, I noticed that FABRIC is the only plugin that is always enabled by default and requires opting-out explicitly. It also seems to inject itself every time, even when disabled, and produces logs. This can be misleading, especially when using several plugins at the same time.

Here is an example, in one out of hundreds of executions where I didn't need to use FABRIC:

2023-08-24 17:04:42,072 - ControlNet - STATUS - Preview Resolution = 51228s/it]
[Tiled Diffusion] ignore tiling when there's only 1 tile or nothing to do :)
[Tiled VAE] warn: VAE is not on GPU, check 'Move VAE to GPU' if possible.
2023-08-24 17:05:36,515 - ControlNet - STATUS - Loading model: control_v11f1p_sd15_depth_fp16 [4b72d323]
2023-08-24 17:05:37,542 - ControlNet - STATUS - Loaded state_dict from [E:\stable-diffusion-webui\models\ControlNet\control_v11f1p_sd15_depth_fp16.safetensors]
2023-08-24 17:05:37,567 - ControlNet - STATUS - Loading config: E:\stable-diffusion-webui\extensions\sd-webui-controlnet\models\control_v11f1p_sd15_depth.yaml
2023-08-24 17:05:56,867 - ControlNet - STATUS - ControlNet model control_v11f1p_sd15_depth_fp16 [4b72d323] loaded.
2023-08-24 17:05:56,996 - ControlNet - STATUS - Loading preprocessor: depth
2023-08-24 17:05:56,996 - ControlNet - STATUS - preprocessor resolution = 512
[FABRIC] Skipping U-Net forward pass patching   <===
100%|██████████████████████████████████████████| 20/20 [03:28<00:00, 10.42s/it]
[Tiled VAE]: input_size: torch.Size([1, 4, 96, 96]), tile_size: 64, padding: 11
[Tiled VAE]: split to 2x2 = 4 tiles. Optimal tile size 64x64, original tile size 64x64
[Tiled VAE]: Fast mode enabled, estimating group norm parameters on 64 x 64 image
[Tiled VAE]: Executing Decoder Task Queue: 100%|█| 492/492 [00:06<00:00, 81.66i
[Tiled VAE]: Done in 9.439s, max VRAM alloc 2006.583 MB
17:09:42 - ReActor - STATUS - Working: source face index [0], target face index [0]
17:10:30 - ReActor - STATUS - Restoring the face with CodeFormer
17:10:34 - ReActor - STATUS - Upscaling with ESRGAN_4x scale = 1.5
[FABRIC] Restoring original U-Net forward pass   <===
Total progress: 20it [04:51, 14.59s/it]
Total progress: 20it [04:51,  9.78s/it]

My suggestion is to:

The justification for this is that the user needs to have a way to turn a plugin off completely, when it's not needed in the generation. And it's more convenient if the way to do so also has the same semantics amongst all plugins (Enable, opt-in).

Thanks in advance!

dvruette commented 1 year ago

I'm open to this and I see the point about logging. Right now, FABRIC is actually "disabled" by default as it only hooks into the forward pass if there are feedback images present.

What I think I'll do: Invert the checkbox to [] Enable like you suggested (for semantic consistency) but have it turned on by default and only log something if it is both enabled and has feedback images present. This way it's still just a one-click operation to enable FABRIC (namely: liking/disliking an image). Lmk what you think.

h3rmit-git commented 1 year ago

Well, all the other plugins that I've installed so far are disabled by default, even when the rest of their configuration suggests the lack of action:

image

In my opinion, FABRIC is one of the many ways to guide the image generation. I just started experimenting with it yesterday and haven't seen its full potential yet, but I guess that in most use cases I'll be generating or editing images that I don't have or don't want to use references/examples for.

I also believe that interference with the generation process and other plugins should be minimized to a bare minimum (zero, if possible) when turned off, as a means to protect from possible incompatibilities with other forms of guidance, or wrong/inconsistent/non-reproducible results.

dvruette commented 1 year ago

I also believe that interference with the generation process and other plugins should be minimized to a bare minimum (zero, if possible) when turned off, as a means to protect from possible incompatibilities with other forms of guidance, or wrong/inconsistent/non-reproducible results.

Yes, this is already the case of course, FABRIC will not hook into the generation process if there is no feedback to apply.

Well, all the other plugins that I've installed so far are disabled by default, even when the rest of their configuration suggests the lack of action

Ok I see, I think it makes sense to follow any conventions there is among plugins.

dvruette commented 1 year ago

I've updated the UI according to your suggestions in the latest version