Large Language Models
Mike Slinn

Stable Diffusion WebUI by AUTOMATIC1111

Published 2024-01-18.
Time to read: 6 minutes.

This page is part of the llm collection.

stable-diffusion-webui is a powerful and user-hostile user interface for Stable Diffusion by AUTOMATIC1111 that requires a determinated effort to master. It has a comprehensive wiki. Documentation is fragmented, and the state of the art is moving very quickly, so by the time you get up to speed, everything has changed and you must start the learning process over again.

The previous article, Image Generation With Stable Diffusion, discussed what Stable Diffusion is, defined terminology, and gave an overview. The next article, ComfyUI, discusses the next-generation user interface for Stable Diffusion.

Installation

You can skip this section if you intend to run Stable Diffusion from an online service.

The README provides installation instructions for Windows and Apple Silicon. Because I normally work with Linux, and WSL, but not Mac, this section provides installation instructions for native Ubuntu and Ubuntu on WSL. Perhaps Mac users might find some of my comments helpful. I found that the installation instructions were chaotic and badly done.

Stable Diffusion and various useful other puzzle pieces are automatically installed along with stable-diffusion-webui.

Shell
$ yes | sudo apt install git python3 python3-venv libgl1 libglib2.0-0

Google-perftools includes TCMalloc, a fast C/C++ memory allocator. The stable-diffusion-webui uses TCMalloc when available. You should install it:

Shell
$ yes | sudo apt install google-perftools

Clone the git repository and move into it.

Shell
$ git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
$ cd stable-diffusion-webui

You should use a Python virtual environment to hold the proper version of the many Python packages that Stable Diffusion requires. This prevents dependency collisions with other programs. I wrote an article about how to do that.

I discovered that the stable-diffusion-webui scripts are hard-coded to look for a virtual environment called venv. Create a Python virtual environment called venv within the stable-diffusion-webui directory and activate it like this:

Shell
$ python3 -m venv venv
$ source venv/bin/activate

Run webui.sh. This script clones several git repositories into the stable-diffusion-webui/repositories subdirectory, including:

The script eventually calls launch.py, which runs stable-diffusion-webui. While it is nice to see the program run, we are not done with configuration, so we'll have to stop stable-diffusion-webui, set a configuration parameter, then relaunch.

Shell
$ bash webui.sh
################################################################
Install script for stable-diffusion + Web UI
Tested on Debian 11 (Bullseye), Fedora 34+ and openSUSE Leap 15.4 or newer.
################################################################

################################################################
Running on mslinn user
################################################################

################################################################
Clone stable-diffusion-webui
################################################################
Cloning into 'stable-diffusion-webui'...
remote: Enumerating objects: 30495, done.
remote: Total 30495 (delta 0), reused 0 (delta 0), pack-reused 30495
Receiving objects: 100% (30495/30495), 33.36 MiB | 6.79 MiB/s, done.
Resolving deltas: 100% (21359/21359), done.

################################################################
python venv already activate or run without venv: /mnt/f/work/llm/stable/venv
################################################################

################################################################
Launching launch.py...
################################################################
Python 3.8.5 (default, Sep  4 2020, 07:30:14)
[GCC 7.3.0]
Version: v1.7.0
Commit hash: cf2772fab0af5573da775e7437e6acdca424f26e
Installing clip
Installing open_clip
Cloning Stable Diffusion into /mnt/f/work/llm/stable/stable-diffusion-webui/repositories/stable-diffusion-stability-ai...
Cloning into '/mnt/f/work/llm/stable/stable-diffusion-webui/repositories/stable-diffusion-stability-ai'...
remote: Compressing objects: 100% (311/311), done.
remote: Total 580 (delta 279), reused 452 (delta 248), pack-reused 0
Receiving objects: 100% (580/580), 73.44 MiB | 6.84 MiB/s, done.
Resolving deltas: 100% (279/279), done.
Updating files: 100% (135/135), done.
Cloning Stable Diffusion XL into /mnt/f/work/llm/stable/stable-diffusion-webui/repositories/generative-models...
Cloning into '/mnt/f/work/llm/stable/stable-diffusion-webui/repositories/generative-models'...
remote: Enumerating objects: 860, done.
remote: Counting objects: 100% (513/513), done.
remote: Compressing objects: 100% (246/246), done.
remote: Total 860 (delta 365), reused 306 (delta 263), pack-reused 347
Receiving objects: 100% (860/860), 42.67 MiB | 7.36 MiB/s, done.
Resolving deltas: 100% (436/436), done.
Cloning K-diffusion into /mnt/f/work/llm/stable/stable-diffusion-webui/repositories/k-diffusion...
Cloning into '/mnt/f/work/llm/stable/stable-diffusion-webui/repositories/k-diffusion'...
remote: Enumerating objects: 1329, done.
remote: Counting objects: 100% (611/611), done.
remote: Compressing objects: 100% (81/81), done.
remote: Total 1329 (delta 568), reused 538 (delta 530), pack-reused 718
Receiving objects: 100% (1329/1329), 239.04 KiB | 1.07 MiB/s, done.
Resolving deltas: 100% (931/931), done.
Cloning CodeFormer into /mnt/f/work/llm/stable/stable-diffusion-webui/repositories/CodeFormer...
Cloning into '/mnt/f/work/llm/stable/stable-diffusion-webui/repositories/CodeFormer'...
remote: Enumerating objects: 594, done.
remote: Counting objects: 100% (245/245), done.
remote: Compressing objects: 100% (88/88), done.
remote: Total 594 (delta 175), reused 173 (delta 157), pack-reused 349
Receiving objects: 100% (594/594), 17.31 MiB | 2.92 MiB/s, done.
Resolving deltas: 100% (286/286), done.
Cloning BLIP into /mnt/f/work/llm/stable/stable-diffusion-webui/repositories/BLIP...
Cloning into '/mnt/f/work/llm/stable/stable-diffusion-webui/repositories/BLIP'...
remote: Enumerating objects: 277, done.
remote: Counting objects: 100% (165/165), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 277 (delta 137), reused 136 (delta 135), pack-reused 112
Receiving objects: 100% (277/277), 7.03 MiB | 3.12 MiB/s, done.
Resolving deltas: 100% (152/152), done.
Installing requirements for CodeFormer
Installing requirements
Launching Web UI with arguments:
no module 'xformers'. Processing without...
no module 'xformers'. Processing without...
No module 'xformers'. Proceeding without it.
Style database not found: /mnt/f/work/llm/stable/stable-diffusion-webui/styles.csv
Downloading: "https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors" to /mnt/f/work/llm/stable/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors

100%|██████████████████████████████████████████████████████| 3.97G/3.97G [00:42<00:00, 101MB/s]
Calculating sha256 for /mnt/f/work/llm/stable/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors: Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.
6ce0161689b3853acaa03779ec93eafe75a02f4ced659bee03f50797806fa2fa
Loading weights [6ce0161689] from /mnt/f/work/llm/stable/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors
Creating model from config: /mnt/f/work/llm/stable/stable-diffusion-webui/configs/v1-inference.yaml
vocab.json: 100%|███████████████████████████████████████████████████████████████| 961k/961k [00:00<00:00, 21.9MB/s]
merges.txt: 100%|███████████████████████████████████████████████████████████████| 525k/525k [00:00<00:00, 117MB/s]
special_tokens_map.json: 100%|█████████████████████████████████████████████████████████████| 389/389 [00:00<00:00, 4.56MB/s]
tokenizer_config.json: 100%|█████████████████████████████████████████████████████████████| 905/905 [00:00<00:00, 10.8MB/s]
config.json: 100%|██████████████████████████████████████████████████████████████| 4.52k/4.52k [00:00<00:00, 37.5MB/s]
Applying attention optimization: Doggettx... done.
Running on local URL:  http://127.0.0.1:7860
Model loaded in 32.9s (calculate hash: 9.7s, load weights from disk: 0.9s, create model: 0.7s, apply weights to model: 20.7s, calculate empty prompt: 0.5s).

The installation script launched the Stable Diffusion web user interface. There was no “Installation Successful” message. Instead, there was no output after a while and I could see that CPU usage dropped.

In another console, I listed the PIP dependencies of stable-diffusion-webui:

Shell
$ source venv/bin/activate
$ pip list Package Version ---------------------------- -------------------- absl-py 2.1.0 accelerate 0.21.0 addict 2.4.0 aenum 3.1.15 aiofiles 23.2.1 aiohttp 3.9.1 aiosignal 1.3.1 aliyun-python-sdk-core 2.14.0 aliyun-python-sdk-kms 2.16.2 altair 5.2.0 antlr4-python3-runtime 4.9.3 anyio 3.7.1 astunparse 1.6.3 attrs 23.2.0 audioread 3.0.1 av 11.0.0 basicsr 1.4.2 beautifulsoup4 4.12.3 blendmodes 2022 cachetools 5.3.2 certifi 2023.7.22 cffi 1.16.0 chardet 5.2.0 charset-normalizer 3.3.2 clean-fid 0.1.35 click 8.1.7 clip 1.0 cmake 3.28.1 coloredlogs 15.0.1 colorlog 6.8.0 contourpy 1.2.0 controlnet-aux 0.0.6 crcmod 1.7 cryptography 41.0.7 cssselect2 0.7.0 cycler 0.12.1 datasets 2.13.0 decorator 5.1.1 deprecation 2.1.0 diffusers 0.25.1 dill 0.3.6 edge-tts 6.1.9 einops 0.4.1 embreex 2.17.7.post4 face-alignment 1.3.5 facexlib 0.3.0 fastapi 0.94.0 ffmpy 0.3.1 filelock 3.13.1 filterpy 1.4.5 flatbuffers 23.5.26 fonttools 4.47.2 frozenlist 1.4.1 fsspec 2023.9.2 ftfy 6.1.3 future 0.18.3 fvcore 0.1.5.post20221221 gast 0.5.4 gdown 4.7.3 gfpgan 1.3.8 gitdb 4.0.11 GitPython 3.1.32 google-auth 2.26.2 google-auth-oauthlib 1.2.0 google-pasta 0.2.0 gradio 3.41.2 gradio_client 0.5.0 grpcio 1.60.0 h11 0.12.0 h5py 3.10.0 handrefinerportable 2024.1.18.0 httpcore 0.15.0 httpx 0.24.1 huggingface-hub 0.20.2 humanfriendly 10.0 idna 3.6 imageio 2.33.1 imageio-ffmpeg 0.4.9 importlib-metadata 7.0.1 importlib-resources 6.1.1 inflection 0.5.1 invisible-watermark 0.2.0 iopath 0.1.9 Jinja2 3.1.3 jmespath 0.10.0 joblib 1.3.2 jsonmerge 1.8.0 jsonschema 4.21.0 jsonschema-specifications 2023.12.1 keras 2.15.0 kiwisolver 1.4.5 kornia 0.6.7 lark 1.1.2 lazy_loader 0.3 libclang 16.0.6 librosa 0.8.0 lightning-utilities 0.10.1 lit 17.0.6 llvmlite 0.41.1 lmdb 1.4.1 lpips 0.1.4 lxml 5.1.0 mapbox-earcut 1.0.1 Markdown 3.5.2 markdown-it-py 3.0.0 MarkupSafe 2.1.3 matplotlib 3.8.2 mdurl 0.1.2 mediapipe 0.10.9 ml-dtypes 0.2.0 mmcv-full 1.7.0 mmdet 2.26.0 modelscope 1.9.3 mpmath 1.3.0 multidict 6.0.4 multiprocess 0.70.14 networkx 3.2.1 numba 0.58.1 numpy 1.23.5 nvidia-ml-py 12.535.133 nvitop 1.3.0 oauthlib 3.2.2 omegaconf 2.2.3 onnx 1.15.0 onnxruntime 1.16.3 open-clip-torch 2.20.0 opencv-contrib-python 4.9.0.80 opencv-python 4.9.0.80 opencv-python-headless 4.8.1.78 opt-einsum 3.3.0 orjson 3.9.12 oss2 2.18.4 packaging 23.2 pandas 2.1.4 piexif 1.1.3 Pillow 9.5.0 pip 23.2 platformdirs 4.1.0 pooch 1.8.0 portalocker 2.8.2 protobuf 4.23.4 psutil 5.9.5 py-cpuinfo 9.0.0 pyarrow 14.0.2 pyarrow-hotfix 0.6 pyasn1 0.5.1 pyasn1-modules 0.3.0 pycocotools 2.0.7 pycollada 0.8 pycparser 2.21 pycryptodome 3.20.0 pydantic 1.10.14 pydub 0.25.1 Pygments 2.17.2 PyMatting 1.1.12 pyparsing 3.1.1 PySocks 1.7.1 python-dateutil 2.8.2 python-multipart 0.0.6 python-slugify 8.0.1 pytorch-lightning 1.9.4 pytz 2023.3.post1 PyWavelets 1.5.0 PyYAML 6.0.1 realesrgan 0.3.0 referencing 0.32.1 regex 2023.12.25 rembg 2.0.50 reportlab 4.0.9 requests 2.31.0 requests-oauthlib 1.3.1 resampy 0.4.2 resize-right 0.0.2 rich 13.7.0 rpds-py 0.17.1 rsa 4.9 Rtree 1.2.0 safetensors 0.3.1 scikit-image 0.21.0 scikit-learn 1.4.0 scipy 1.11.4 seaborn 0.13.1 segment-anything 1.0 semantic-version 2.10.0 sentencepiece 0.1.99 setuptools 68.1.2 shapely 2.0.2 simplejson 3.19.2 six 1.16.0 slugify 0.0.1 smmap 5.0.1 sniffio 1.3.0 sortedcontainers 2.4.0 sounddevice 0.4.6 soundfile 0.12.1 soupsieve 2.5 starlette 0.26.1 supervision 0.17.1 svg.path 6.3 svglib 1.5.1 sympy 1.12 tabulate 0.9.0 tb-nightly 2.16.0a20240119 tensorboard 2.15.1 tensorboard-data-server 0.7.2 tensorflow-cpu 2.15.0.post1 tensorflow-estimator 2.15.0 tensorflow-io-gcs-filesystem 0.35.0 termcolor 2.4.0 terminaltables 3.1.10 text-unidecode 1.3 tf_keras-nightly 2.16.0.dev2024011910 thop 0.1.1.post2209072238 threadpoolctl 3.2.0 tifffile 2023.12.9 timm 0.9.2 tinycss2 1.2.1 tokenizers 0.13.3 tomesd 0.1.3 tomli 2.0.1 toolz 0.12.0 torch 2.0.1+cu118 torchdiffeq 0.2.3 torchmetrics 1.3.0.post0 torchsde 0.2.6 torchvision 0.15.2+cu118 tqdm 4.66.1 trampoline 0.1.2 transformers 4.30.2 trimesh 4.0.10 triton 2.0.0 typing_extensions 4.9.0 tzdata 2023.4 ultralytics 8.1.3 urllib3 2.1.0 uvicorn 0.26.0 vhacdx 0.0.5 wcwidth 0.2.13 webencodings 0.5.1 websockets 11.0.3 Werkzeug 3.0.1 wheel 0.42.0 wrapt 1.14.1 xxhash 3.4.1 yacs 0.1.8 yapf 0.40.2 yarl 1.9.4 zipp 3.17.0

You can ensure that the Python virtual environment will be activated each time you run stable-diffusion-webui by modifying webui-user.sh, which was installed when you cloned the repository. This is how the file looks by default; every line is commented out:

webui-user.sh
  1: #!/bin/bash
  2: #########################################################
  3: # Uncomment and change the variables below to your need:#
  4: #########################################################
5: # Install directory without trailing slash 6: #install_dir="/home/$(whoami)" 7: 8: # Name of the subdirectory 9: #clone_dir="stable-diffusion-webui" 10: 11: # Commandline arguments for webui.py, for example: export COMMANDLINE_ARGS="--medvram --opt-split-attention" 12: #export COMMANDLINE_ARGS="" 13: 14: # python3 executable 15: #python_cmd="python3" 16: 17: # git executable 18: #export GIT="git" 19: 20: # python3 venv without trailing slash (defaults to ${install_dir}/${clone_dir}/venv) 21: #venv_dir="venv" 22: 23: # script to launch to start the app 24: #export LAUNCH_SCRIPT="launch.py" 25: 26: # install command for torch 27: #export TORCH_COMMAND="pip install torch==1.12.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113" 28: 29: # Requirements file to use for stable-diffusion-webui 30: #export REQS_FILE="requirements_versions.txt" 31: 32: # Fixed git repos 33: #export K_DIFFUSION_PACKAGE="" 34: #export GFPGAN_PACKAGE="" 35: 36: # Fixed git commits 37: #export STABLE_DIFFUSION_COMMIT_HASH="" 38: #export CODEFORMER_COMMIT_HASH="" 39: #export BLIP_COMMIT_HASH="" 40: 41: # Uncomment to enable accelerated launch 42: #export ACCELERATE="True" 43: 44: # Uncomment to disable TCMalloc 45: #export NO_TCMALLOC="True" 46: 47: ###########################################

Modify line 21 above by uncommenting it and providing the name of the directory for the Python virtual environment. This is what it looks like for me:

Shell
# python3 venv without trailing slash (defaults to ${install_dir}/${clone_dir}/venv)
venv_dir="venv"

I found that I had to install one dependency manually:

Shell
$ pip install insightface

With the above done, the Stable Diffusion models stored in stable-diffusion-webui/models/Stable-diffusion, like v1-5-pruned-emaonly.safetensors, are now accessible to ComfyUI.

Models

To install the above models in AUTOMATIC1111, put the base and the refiner models in stable-diffusion-webui/models/Stable-diffusion.

Launch

Press Ctrl-C in the console that is running Stable Diffusion. This time the settings in webui-user.sh should be active.

You have two choices for launching Stable Diffusion:

  1. Run the installer, webui.sh, each time you want to run Stable Diffusion. This has the benefit of ensuring you have the latest version of all dependencies, at the expense of a long startup, and the potential for problems.
  2. Activate the Python virtual environment and then run launch.py. This is the fastest way to run Stable Diffusion. The current directory must be the directory containing launch.py, or it will fail with a lot of error messages. This does not completely suppress all checks for dependencies.
    Shell
    $ source venv/bin/activate
    $ python launch.py Python 3.11.5 (main, Sep 11 2023, 13:54:46) [GCC 11.2.0] Version: v1.7.0 Commit hash: cf2772fab0af5573da775e7437e6acdca424f26e Collecting protobuf<=3.9999,>=3.20 Using cached protobuf-3.20.3-py2.py3-none-any.whl (162 kB) Installing collected packages: protobuf Attempting uninstall: protobuf Found existing installation: protobuf 4.23.4 Uninstalling protobuf-4.23.4: Successfully uninstalled protobuf-4.23.4 Successfully installed protobuf-3.20.3 Installing requirements for diffusers is_installed check for tensorflow-cpu failed as 'spec is None' Installing requirements for easyphoto-webui Installing requirements for tensorflow Launching Web UI with arguments: 2024-01-21 12:15:04.591410: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations. To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags. no module 'xformers'. Processing without... no module 'xformers'. Processing without... No module 'xformers'. Proceeding without it. Style database not found: /mnt/f/work/llm/stable-diffusion/stable-diffusion-webui/styles.csv [-] ADetailer initialized. version: 24.1.1, num models: 9 2024-01-21 12:15:15,008 - modelscope - INFO - PyTorch version 2.1.2+cu121 Found. 2024-01-21 12:15:15,016 - modelscope - INFO - TensorFlow version 2.15.0.post1 Found. 2024-01-21 12:15:15,016 - modelscope - INFO - Loading ast index from /home/mslinn/.cache/modelscope/ast_indexer 2024-01-21 12:15:15,031 - modelscope - INFO - Loading done! Current index file version is 1.9.3, with md5 21e6e6c8a076123c373accfeb616f75f and a total number of 943 components indexed [sd-webui-breadcrumbs v0.8.0] Loading settings UI... [sd-webui-breadcrumbs v0.8.0] Finished. ControlNet preprocessor location: /mnt/f/work/llm/stable-diffusion/stable-diffusion-webui/extensions/sd-webui-controlnet/annotator/downloads 2024-01-21 12:15:16,825 - ControlNet - INFO - ControlNet v1.1.432 2024-01-21 12:15:17,134 - ControlNet - INFO - ControlNet v1.1.432 Loading weights [6ce0161689] from /mnt/f/work/llm/stable-diffusion/stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors Running on local URL: http://127.0.0.1:7860
    To create a public link, set `share=True` in `launch()`. Applying attention optimization: Doggettx... done. Model loaded in 25.5s (load weights from disk: 1.5s, create model: 0.3s, apply weights to model: 23.3s, load textual inversion embeddings: 0.2s, calculate empty prompt: 0.1s).

Working with Stable Diffusion

Once the installation process completed, I pointed my web browser at localhost:7860 and saw from the small orange rotating icon that it was slowly building a checkpoint. That completed after a few minutes.

Img2img is table stakes for generative AI, and the next YouTube video does an excellent job of teaching it.

I wonder if ControlNet works similarly in stable-diffusion-webui as in ComfyUI?

Prompts and Images

I typed “a baby's arm holding an apple” into the Prompt area and after a few seconds, the following image appeared:

It works quite well, without any censorship.

However, to generate the desired image, prompt creation can be quite involved. Often the generated image is strange, unnatural or even disgusting. Here is an example of a woman with 2 heads, from ameets21 on huggingface.co:

The effects of prompt changes are statistical; therefore you have to generate many results from a prompt to be able to tell if it had a statistically significant effect. I think that people make changes to their prompt to beg stable diffusion for what they want ("award winning" being a particularly humorous example) and then after generating only a few results, if the randomized results happen to correlate with what they think they were accomplishing, they retain the prompt believing it was the cause. When in fact 99% of the time it was just the seed plus random effects from the prompt change.

I have a script that tries to fix hands in some generated art. It uses clipseg to create a mask around hands and then runs a loop generating new inpainted versions of the input image. I do not believe that I can influence how well it draws hands; I can simply have it generate a ton of variants and weed through them to find the best random result.

I added negative prompting influenced by the O.P.'s comment: "poorly drawn hands, poorly rendered hands, bad composition, mutated body parts, disfigured, bad anatomy, deformed body features, deformed hands".

This had basically zero effect on the quality of hand generation. Sure it made every seed produce a different result, but they were no better or worse than without that text included. I also tried the stable diffusion 1.5 model and the 1.5 inpainting model. The inpainting model was horrendous, mostly producing complete garbage, but once out of about 20 tries it produced a nearly perfect hand. That was unexpected, and I think just random chance. I think that the reason that the inpainting model did so poorly is because the original image was generated with a different checkpoint and the inpainting checkpoint wanted to see "very different things" than the original checkpoint would have seen.

... Negative prompts definitely have value; but I don't think that the model "understands" what people think it does. "Deformed hands" means nothing to the model. It just pushes things in a random direction.

Positive Prompts

Adding (parentheses) around selected text for emphasis can help. ((Nested parentheses)) are more emphatic. (((Triple-nested parentheses))) might yield diminishing results.

Example: rule of thirds, golden ratio, (smile)

Negative Prompts

Common negative prompts.

Clip Interrogator

Clip Interrogator analyses an image and generates prompt text based on that image. It uses the prompt in Stable Diffusion to generate a set of 4 images. You can put the best image back into Clip Interrogator, iteratively.

Stable Diffusion Prism

I intend to look into this: sd-prism

Finetuned Diffusion

I intend to look into this: finetuned_diffusion

Extensions

You can browse and install extensions by visiting the Extensions tab, then opening the Available subtab. This URL will be displayed: raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json. Click on the orange Load from: button to load information about the available extensions. Each extension has a Install button on the right.

Dependencies are not automatically installed. For example, sd-webui-lama-cleaner-masked-content, and several other extensions, require sd-webui-controlnet. You must notice the dependency in the comments, and install both, or sd-webui-lama-cleaner-masked-content will fail.

The extensions can be sorted by age, alphabetically, when updated, when released, and by the number of stars. Sorting by stars quickly reveals the most popular extensions. Here are a few:

  1. SadTalker - animates still images based on audio input. It syncs facial movements and expressions in an image to match the spoken words in an audio clip, effectively bringing the image to life.
  2. FaceChain - a deep-learning toolchain for generating your Digital-Twin. With a minimum of 1 portrait-photo, you can create a Digital-Twin of your own and start generating personal portraits in different settings
  3. sd-webui-agentattention.git - speeds up image generation with improved image quality using Agent Attention.
  4. sd-webui-breadcrumbs - adds a breadcrumb trail to the Quicksettings menu.
  5. sd-webui-controlnet - controls image generation in Stable Diffusion by adding extra conditions.
  6. sd-webui-lama-cleaner-masked-content -
  7. sd-webui-replacer - automates objects masking by detection prompt, using sd-webui-segment-anything, and img2img inpainting in one easy-to-use tab. It also useful for batch inpaint, and inpaint in video with stable diffusion.
  8. sd-webui-segment-anything -
  9. EasyPhoto - provides easy photo generation with an online-trained LoRA model that guarantees high-quality output images closely relevant to the input.
  10. !After Detailer - Automatic detection, masking and inpainting tool for details
  11. stable-diffusion-webui-rembg - Removes backgrounds from pictures..

    After an extension is installed the model is scanned, which might take several minutes.

    LoRA Models

    LoRA (Low-Rank Adaptation) models is a training technique for fine-tuning Stable Diffusion models. LoRA offers a good trade-off between file size and training requirements.

    LoRA models must be used with model checkpoint files. LoRA modifies styles by applying small changes to the accompanying model file.

    civitai.com hosts a large collection of LoRA models. Apply the LORA filter to see only LoRA models.

    The Lora tab of the stable-diffusion-webui showed me that I should store LoRA models in /mnt/f/work/llm/stable/stable-diffusion-webui/models/LyCORIS.

    Laura Carnevali made a good video explanation of LoRA:



* indicates a required field.

Please select the following to receive Mike Slinn’s newsletter:

You can unsubscribe at any time by clicking the link in the footer of emails.

Mike Slinn uses Mailchimp as his marketing platform. By clicking below to subscribe, you acknowledge that your information will be transferred to Mailchimp for processing. Learn more about Mailchimp’s privacy practices.