zero01101 / openOutpaint

local offline javascript and html canvas outpainting gizmo for stable diffusion webUI API 🐠
MIT License
507 stars 44 forks source link

Better first use experience #125

Closed patrickas closed 1 year ago

patrickas commented 1 year ago

I was reading new users' reddit posts and noticed some are complaining from the same things I had when I first used it. Something that I think can be fixed with two changes to the UX The complaints are along the lines of : "when i use it, it doesn't seem to match the image that i'm extending, it just makes a whole new image"

This is because the default value of Overmask px is 0 I am not sure if some people prefer the default to be zero but I personally always change it to something like 20 first thing when I load the interface. I think a default that is different than zero is much better.

The second reason is that the currently set model in the automatic1111 ui is not an inpainting model so maybe also openOutpaint could look in the list and select an inpainting model by defalt if there is one, or at least issue a warning that the currently selected model is not an inpainting model which will cause more seams and less than ideal results. This can be done by just checking if the model's name contains the word inpainting which should cover most of the cases.

What do you guys think? I feel those two minor changes will give a much better first time impression for new users.

seijihariki commented 1 year ago

We can try looking for a model with "inpainting" in its name, but from what I know, there is no way to differentiate inpainting models from normal models.

On the 'overmask config', we can do that.

@zero01101 what do you think about this change?

zero01101 commented 1 year ago

yeah, i was honestly trying to think of a way to make it a bit more obvious that non-inpainting models just... won't work lol... and like i don't believe any of the API endpoints return any information about how many unet channels the currently loaded model has either...

i'm of course all for a higher default value for overmask; i'm weirdly attached to that silly little function <3

patrickas commented 1 year ago

For whatever it is worth it, looking at the name of the file is how auto1111 webui knows it is an inpainting model and should be treated as such .... The function that detects this is here https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/master/modules/sd_hijack_inpainting.py#L322

seijihariki commented 1 year ago

Well, if that is good enough for webui we can assume it is for us now! :)

seijihariki commented 1 year ago

Will add a dialog asking if the user wants to change to an inpainting model on first run.

zero01101 commented 1 year ago

For whatever it is worth it, looking at the name of the file is how auto1111 webui knows it is an inpainting model and should be treated as such ....

lmao are you serious
see i was digging around extras.py in the model merging logic where it's comparing checkpoint dimensions and assumed surely that's how other models would be verified

https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/4af3ca5393151d61363c30eef4965e694eeac15e/modules/extras.py#L297-L304

seijihariki commented 1 year ago

Partially done; overmask px now 20px by default.

seijihariki commented 1 year ago

@patrickas Could you give the compact-checkboxes branch a look? It now asks for inpainting model changes on first run.

patrickas commented 1 year ago

Perfect, this is exactly what I had in mind! I think first time users will get much better results now.

And thanks for all the great work!