Giter Site home page Giter Site logo

ecstatica / stable-diffusion-webui Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sygil-dev/sygil-webui

1.0 0.0 0.0 16.58 MB

Stable Diffusion web UI

License: GNU Affero General Public License v3.0

JavaScript 3.56% Python 95.60% CSS 0.84%

stable-diffusion-webui's Introduction

This repo is for development, there may be bugs and new features

Feature request? Use discussions

Questions about Upscalers?

Questions about Optimized mode?

Open In Colab

More documentation about features, troubleshooting, common issues very soon

Want to help with documentation? Documented something? Use Discussions

Features:

  • Gradio GUI: Idiot-proof, fully featured frontend for both txt2img and img2img generation
  • No more manually typing parameters, now all you have to do is write your prompt and adjust sliders
  • ๐Ÿ”ฅ ๐Ÿ”ฅ Optimized support!! ๐Ÿ”ฅ ๐Ÿ”ฅ
  • ๐Ÿ”ฅ NEW! webui.cmd updates with any changes in environment.yaml file so the environment will always be up to date as long as you get the new environment.yaml file ๐Ÿ”ฅ :fire: no need to remove environment, delete src folder and create again, MUCH simpler! ๐Ÿ”ฅ
  • GFPGAN Face Correction ๐Ÿ”ฅ: Download the modelAutomatically correct distorted faces with a built-in GFPGAN option, fixes them in less than half a second
  • RealESRGAN Upscaling ๐Ÿ”ฅ: Download the models Boosts the resolution of images with a built-in RealESRGAN option
  • ๐Ÿ’ป esrgan/gfpgan on cpu support ๐Ÿ’ป
  • Textual inversion ๐Ÿ”ฅ: info - requires enabling, see here, script works as usual without it enabled
  • Advanced img2img editor ๐ŸŽจ ๐Ÿ”ฅ ๐ŸŽจ
  • ๐Ÿ”ฅ๐Ÿ”ฅ Mask and crop ๐Ÿ”ฅ๐Ÿ”ฅ
  • Mask painting (NEW) ๐Ÿ–Œ๏ธ: Powerful tool for re-generating only specific parts of an image you want to change
  • More k_diffusion samplers ๐Ÿ”ฅ๐Ÿ”ฅ : Far greater quality outputs than the default sampler, less distortion and more accurate
  • txt2img samplers: "DDIM", "PLMS", 'k_dpm_2_a', 'k_dpm_2', 'k_euler_a', 'k_euler', 'k_heun', 'k_lms'
  • img2img samplers: "DDIM", 'k_dpm_2_a', 'k_dpm_2', 'k_euler_a', 'k_euler', 'k_heun', 'k_lms'
  • Loopback (NEW) โžฟ: Automatically feed the last generated sample back into img2img
  • Prompt Weighting (NEW) ๐Ÿ‹๏ธ: Adjust the strength of different terms in your prompt
  • ๐Ÿ”ฅ gpu device selectable with --gpu ๐Ÿ”ฅ
  • Memory Monitoring ๐Ÿ”ฅ: Shows Vram usage and generation time after outputting.
  • Word Seeds ๐Ÿ”ฅ: Use words instead of seed numbers
  • CFG: Classifier free guidance scale, a feature for fine-tuning your output
  • Launcher Automatic ๐Ÿ‘‘๐Ÿ”ฅ shortcut to load the model, no more typing in Conda
  • Lighter on Vram: 512x512 img2img & txt2img tested working on 6gb
  • and ????

Stable Diffusion web UI

A browser interface based on Gradio library for Stable Diffusion.

GFPGAN

If you want to use GFPGAN to improve generated faces, you need to install it separately. Download GFPGANv1.3.pth and put it into the /stable-diffusion/src/gfpgan/experiments/pretrained_models directory.

RealESRGAN

Download RealESRGAN_x4plus.pth and RealESRGAN_x4plus_anime_6B.pth. Put them into the stable-diffusion/src/realesrgan/experiments/pretrained_models directory.

Web UI

When launching, you may get a very long warning message related to some weights not being used. You may freely ignore it. After a while, you will get a message like this:

Running on local URL:  http://127.0.0.1:7860/

Open the URL in browser, and you are good to go.

Features

The script creates a web UI for Stable Diffusion's txt2img and img2img scripts. Following are features added that are not in original script.

GFPGAN

Lets you improve faces in pictures using the GFPGAN model. There is a checkbox in every tab to use GFPGAN at 100%, and also a separate tab that just allows you to use GFPGAN on any picture, with a slider that controls how strongthe effect is.

RealESRGAN

Lets you double the resolution of generated images. There is a checkbox in every tab to use RealESRGAN, and you can choose between the regular upscaler and the anime version. There is also a separate tab for using RealESRGAN on any picture.

Sampling method selection

txt2img samplers: "DDIM", "PLMS", 'k_dpm_2_a', 'k_dpm_2', 'k_euler_a', 'k_euler', 'k_heun', 'k_lms' img2img samplers: "DDIM", 'k_dpm_2_a', 'k_dpm_2', 'k_euler_a', 'k_euler', 'k_heun', 'k_lms'

Prompt matrix

Separate multiple prompts using the | character, and the system will produce an image for every combination of them. For example, if you use a busy city street in a modern city|illustration|cinematic lighting prompt, there are four combinations possible (first part of prompt is always kept):

  • a busy city street in a modern city
  • a busy city street in a modern city, illustration
  • a busy city street in a modern city, cinematic lighting
  • a busy city street in a modern city, illustration, cinematic lighting

Four images will be produced, in this order, all with same seed and each with corresponding prompt:

Another example, this time with 5 prompts and 16 variations:

Prompt combinations

If you add '@' symbol at start your prompt and change text like this: @(moba|rpg|rts) character (2d|3d) model it will be produce 3 * 2 combinations or prompt with same seed:

  • moba character 2d model
  • rpg character 2d model
  • rts character 2d model
  • moba character 3d model
  • rpg character 3d model
  • rts character 3d model

If you use this feature, batch count will be ignored, because the number of pictures to produce depends on your prompts, but batch size will still work (generating multiple pictures at the same time for a small speed boost).

Flagging (Broken after UI changed to gradio.Blocks() see Flag button missing from new UI)

Click the Flag button under the output section, and generated images will be saved to log/images directory, and generation parameters will be appended to a csv file log/log.csv in the /sd directory.

but every image is saved, why would I need this?

If you're like me, you experiment a lot with prompts and settings, and only few images are worth saving. You can just save them using right click in browser, but then you won't be able to reproduce them later because you will not know what exact prompt created the image. If you use the flag button, generation paramerters will be written to csv file, and you can easily find parameters for an image by searching for its filename.

Copy-paste generation parameters

A text output provides generation parameters in an easy to copy-paste form for easy sharing.

If you generate multiple pictures, the displayed seed will be the seed of the first one.

Correct seeds for batches

If you use a seed of 1000 to generate two batches of two images each, four generated images will have seeds: 1000, 1001, 1002, 1003. Previous versions of the UI would produce 1000, x, 1001, x, where x is an iamge that can't be generated by any seed.

Resizing

There are three options for resizing input images in img2img mode:

  • Just resize - simply resizes source image to target resolution, resulting in incorrect aspect ratio
  • Crop and resize - resize source image preserving aspect ratio so that entirety of target resolution is occupied by it, and crop parts that stick out
  • Resize and fill - resize source image preserving aspect ratio so that it entirely fits target resolution, and fill empty space by rows/columns from source image

Example:

Loading

Gradio's loading graphic has a very negative effect on the processing speed of the neural network. My RTX 3090 makes images about 10% faster when the tab with gradio is not active. By default, the UI now hides loading progress animation and replaces it with static "Loading..." text, which achieves the same effect. Use the --no-progressbar-hiding commandline option to revert this and show loading animations.

Prompt validation

Stable Diffusion has a limit for input text length. If your prompt is too long, you will get a warning in the text output field, showing which parts of your text were truncated and ignored by the model.

Loopback

A checkbox for img2img allowing to automatically feed output image as input for the next batch. Equivalent to saving output image, and replacing input image with it. Batch count setting controls how many iterations of this you get.

Usually, when doing this, you would choose one of many images for the next iteration yourself, so the usefulness of this feature may be questionable, but I've managed to get some very nice outputs with it that I wasn't abble to get otherwise.

Example: (cherrypicked result; original picture by anon)

stable-diffusion-webui's People

Contributors

hlky avatar automatic1111 avatar eyedeck avatar oldfndm avatar justoxlamon avatar tobbez avatar johannesgaessler avatar altryne avatar jansteffen avatar chanoc1 avatar codedealer avatar devilismyfriend avatar xraxra avatar lex-drl avatar shinkonet avatar hdeezy avatar oobabooga avatar dr3am37 avatar willlllllio avatar oc013 avatar jqubz avatar interficiam avatar bryanlyon avatar anon-hlhl avatar nderscore avatar stevestavropoulos avatar green-s avatar nelsonjchen avatar mchaker avatar bakkot avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.