lllyasviel / Fooocus

Focus on prompting and generating
GNU General Public License v3.0
40.32k stars 5.6k forks source link

[Suggestion] - Custom Performance #222

Closed WaGi-Coding closed 8 months ago

WaGi-Coding commented 1 year ago

A Custom Performance setting would be nice. So when you select Custom Radio Button, it will also show a slider for Steps and a slider for the step where to swap refiner.

I do not like the preset ones. Specially since latest commit, you've set speed to 30, switch at 15, before it was 30 switch at 20, and for quality you now do 60, switch at 30, before it was 60, switch at 40.

The current commit settings where they switch at half give me very bad results tho, so beside this suggestion, they should be changed back again imo

lllyasviel commented 1 year ago

The current commit settings where they switch at half give me very bad results tho

do you have examples?

dpmpp's sde part has a momentum vanishing phenomena in the last iterations. theoretically the shift is a corner in a curve so it should try more to avoid the ending parts.

WaGi-Coding commented 1 year ago

I am not at the machine where i tested that. But it were weird results with body shapes when i switched it. Maybe a coincidence ^^ But i then implemented 2 more sliders for total_steps and swap_refiner_at_step which gives me more control. It bugged me i cannot set that simple values in the UI. But it now also works for the API for me as well. I am not sure if i should fork and pull request that change, as it's my first time touching gradio and it might could have been done better.

I also modified the code so i have a progress.png always having the preview and final + then upscaled image in one place as i work for a Streaming project and it makes that easier to add to OBS then. I also do profanity checking with PerspectiveAPI so the chat can request prompts

grafik grafik

lllyasviel commented 1 year ago

if you have images you can show it here.

The number of switching steps inside this sampler is so different from human perception

when you have 10 refiner steps inside a 30 step sampling, you might feel that the refiner is doing 33.33% of the work, but in fact, due to vanishing momentum, the refiner is only having less than 5% of the influence in human perception.

When you have a 15 refiner steps in a 30 step sample, you might feel like the refiner is doing 50% of the work, which seems a little too much, but in fact, due to vanishing momentum, the refiner's influence is around 20% in human perception, so it's actually more well-suited.

Because this scrollbar is so different from human intuition, we won't take further action until we find a better way to explain it.

But if you have any examples that 15 step refiner is causing bad results, please share here

akedia commented 1 year ago

one of the problem the refiner introduce is the dimishing of lora trained concept. Since the last update, the output does not represent lora trained characters and styles

lllyasviel commented 1 year ago

If anyone have examples please share here. The logs are in the output folder and one can find previous results and random seeds.

The LoRA problem seems valid but need examples as evidence.

1.0.39 is tested with about 50 images on my side and it outperforms 1.0.36 in most of these images after I manually check each one and compare.

By the way, if one edited any python files and still want to use run.bat, one can edit run.bat into these lines

.\python_embeded\python.exe -s Fooocus\launch.py
pause
WaGi-Coding commented 1 year ago

Here are some examples

Prompt: Enchanted fairy forest

Steps: 30

No Refiner / No Swapping:

2023-08-21_06-02-50_5691

Refiner Swap at Step 15:

2023-08-21_05-59-11_8418

Refiner Swap at Step 20:

2023-08-21_06-00-10_6059

Refiner Swap at Step 25:

2023-08-21_06-01-47_9584-1

As you can see, 15 is very far away from the non-refined one. Which kinda does not make sense for refine to change that much, as - it should refine, not entirely do something new (refining it into something totally different)

To me, the swap at 20 steps for the 30 total steps is the best deal for a refiner

WaGi-Coding commented 1 year ago

By the way, if one edited any python files and still want to use run.bat, one can edit run.bat into these lines

.\python_embeded\python.exe -s Fooocus\launch.py
pause

But you would need to do this before importing fooocus_version in launch.py:

root = os.path.dirname(os.path.abspath(__file__))
sys.path.append(root)
os.chdir(root)
lllyasviel commented 1 year ago

We reverted to 1.0.36 behaviors https://github.com/lllyasviel/Fooocus/commit/fe16e8f050b86b2580d8c44d87498aee8322c9cb

The 1.0.36 is too perfect and too typical; beating 1.0.36 is just impossible. Probably we will not touch this part again.

MoonRide303 commented 1 year ago

@WaGi-Coding I've left default values for Speed and Quality mode untouched (as in original Fooocus), but also added Custom mode for those who want it (sliders hidden in other modes) - available in Fooocus-MRE: image

mashb1t commented 8 months ago

In newer versions of Fooocus you can now override these settings in Advanced > Advanced > Developer Debug Mode.