This version of Stable Diffusion features a slick WebGUI, an interactive command-line script that combines text2img and img2img functionality in a "dream bot" style interface, and multiple features and other enhancements. For more info, see the website link below.
Go to file
damian0815 f73d5a647d Final WebUI build for Release 2.1
- squashed commit of 52 commits from PR #1327

don't log base64 progress images

Fresh Build For WebUI

[WebUI] Loopback Default False

Fixes bugs/styling

- Fixes missing web app state on new version:
Adds stateReconciler to redux-persist.

When we add more values to the state and then release the update app, they will be automatically merged in.

Reseting web UI will be needed far less.
7159ec

- Fixes console z-index
- Moves reset web UI button to visible area

Decreases gallery width on inpainting

Increases workarea split padding to 1rem

Adds missing tooltips to site header

Changes inpainting controls settings to hover

Fixes hotkeys and settings buttons not working

Improves bounding box interactions

- Bounding box can now be moved by dragging any of its edges
- Bounding box does not affect drawing if already drawing a stroke
- Can lock bounding box to draw directly on the bounding box edges
- Removes spacebar-hold behaviour due to technical issues

Fixes silent crash when init image too large

To send the mask to the server, the UI rendered the mask onto the init image and sent the whole image. The mask was then cropped by the server.

If the image was too large, the app silently failed. Maybe it exceeds the websocket size limit.

Fixed by cropping the mask in the UI layer, sending only bounding-box-sized mask image data.

Disabled bounding box settings when locked

Styles image uploader

Builds fresh bundle

Improves bounding box interaction

Added spacebar-hold-to-transform back.

Address bounding box feedback

- Adds back toggle to hide bounding box
- Box quick toggle = q, normal toggle = shift + q
- Styles canvas alert icons

Adds hints when unable to invoke

- Popover on Invoke button indicates why exactly it is disabled, e.g. prompt is empty, something else is processing, etc.
- There may be more than one reason; all are displayed.

Fix Inpainting Alerts Styling

Preventing unnecessary re-renders across the app

Code Split Inpaint Options

Isolate features to their own components so they dont re-render the other stuff each time.

[TESTING] Remove  global isReady checking

I dont believe this is need at all because the isready state is constantly updated when needed and tracked real time in the Redux store. This causes massive re-renders. @psychedelicious If this is absolutely essential for a reason that I do not see, please hit me up on Discord.

Fresh Bundle

Fix Bounding Box Settings re-rendering on brush stroke

[Code Splitting] Bounding Box Options

Isolated all bounding box components to trigger unnecessary re-renders. Still need to fix  bounding box  triggering re-renders on the control panel inside the canvas itself. But the options panel should be a good to go with this change.

Inpainting Controls Code Spitting and Performance

Codesplit the entirety of the inpainting controls. Created new selectors for each and every component to ensure there are no unnecessary re-renders. App feels a lot smoother.

Fixes rerenders on ClearBrushHistory

Fixes crash when requesting post-generation upscale/face restoration

- Moves the inpainting paste to before the postprocessing.

Removes unused isReady state

Changes Report Bug icon to a bug

Restores shift+q bounding box shortcut

Adds alert for bounding box size to status icons

Adds asCheckbox to IAIIconButton

Rough draft of this. Not happy with the styling but it's clearer than having them look just like buttons.

Fixes crash related to old value of progress_latents in state

Styling changes and settings modal minor refactor

Fixes: uploaded JPG images not loading

Reworks CurrentImageButtons.tsx

- Change all icons to FA iconset for consistency
- Refactors IAIIconButton, IAIButton, IAIPopover to handle ref forwarding
- Redesigns buttons into group

Only generate 1 iteration when seed fixed & variations disabled

Fixes progress images select

Fixes edge case: upload over gets stuck while alt tabbing

- Press esc to close it now

Fixes display progress images select typing

Fixes current image button rerenders

Adds min width to ImageUploader

Makes fast-latents in progress default

Update Icon Button Checkbox Style Styling

Fixes next/prev image buttons

Refactor canvas buttons + more

Add Save Intermediates Step Count

For accurate mode only.

Co-Authored-By: Richard Macarthy <richardmacarthy@protonmail.com>

Restores "initial image" text

Address feedback

- moves mask clear button
- fixes intermediates
- shrinks inpainting icons by 10%

Fix Loopback Styling

Adds escape hotkey to close floating panels

Readd Hotkey for Dual Display

Updated Current Image Button Styling
2022-11-02 17:01:02 -04:00
.dev_scripts Replace --full_precision with --precision that works even if not specified 2022-09-20 17:08:00 -04:00
.github disable checks with sd-V1.4 model... 2022-10-31 21:35:33 -04:00
assets add missing image needed by nsfw filter 2022-10-25 00:39:00 -04:00
backend Final WebUI build for Release 2.1 2022-11-02 17:01:02 -04:00
configs fix models example weights for sd-v1.4 2022-10-31 21:35:09 -04:00
data stable diffusion 2022-08-10 16:30:49 +02:00
docker-build update entrypoint 2022-10-27 17:06:50 -04:00
docs add damian0815 to contributors list 2022-11-01 22:38:16 -04:00
frontend Final WebUI build for Release 2.1 2022-11-02 17:01:02 -04:00
installer more bug fixes to install scripts 2022-11-02 15:26:02 -04:00
ldm Update outcrop.py 2022-11-02 16:33:35 -04:00
models/ldm/stable-diffusion-v1 documentation and usability fixes 2022-10-29 10:37:38 -04:00
notebooks add a strength value to inpaint_replace 2022-10-16 10:06:47 -04:00
scripts more bug fixes to install scripts 2022-11-02 15:26:02 -04:00
server Generalize facetool strength argument 2022-10-14 00:03:06 -04:00
static Generalize facetool strength argument 2022-10-14 00:03:06 -04:00
tests add tests/validate_pr_prompt.txt 2022-10-28 13:47:45 -04:00
.dockerignore add .dockerignore to repo-root 2022-10-27 17:06:50 -04:00
.gitattributes Update .gitattributes 2022-08-29 16:58:41 -05:00
.gitignore preload_models.py script downloads the weight files 2022-10-29 01:02:45 -04:00
.gitmodules remove src directory, which is gumming up conda installs; addresses issue #77 2022-08-25 10:43:05 -04:00
.prettierrc.yaml change printWidth for markdown files to 80 2022-09-17 02:23:00 +02:00
environment-linux-aarch64.yml more bug fixes to install scripts 2022-11-02 15:26:02 -04:00
environment-mac.yml more bug fixes to install scripts 2022-11-02 15:26:02 -04:00
environment.yml remove antlr4 from requirements 2022-11-02 16:35:14 -04:00
invoke.bat Open the developer console on windows, and print some debugging info 2022-10-29 23:26:21 +05:30
invoke.sh Script to create the installer zips 2022-10-29 23:40:03 +05:30
LICENSE Update license again 2022-10-14 16:40:35 -04:00
LICENSE-ModelWeights.txt added assertion checks for out-of-bound arguments; added various copyright and license agreement files 2022-08-24 09:22:27 -04:00
main.py fix a number of bugs in textual inversion 2022-10-21 16:35:35 +02:00
mkdocs.yml more updates to many docs, including: 2022-10-11 21:41:52 -04:00
pyproject.toml.hide Fix Mac Issue #723 2022-09-21 13:42:47 -04:00
README.md Fix typo in docs: s/Formally/Formerly 2022-10-20 02:44:16 -04:00
requirements-lin-AMD.txt TOIL(pip): Refactor pip requirements across the board (#531) 2022-09-14 07:01:58 -04:00
requirements-lin-win-colab-CUDA.txt TOIL(pip): Refactor pip requirements across the board (#531) 2022-09-14 07:01:58 -04:00
requirements-linux-arm64.txt add support for safety checker (NSFW filter) 2022-10-23 22:26:18 -04:00
requirements-mac-MPS-CPU.txt Install older version of torch and matching torchvision, fix pytorch-lightning=1.7.7 2022-11-02 14:49:36 -04:00
requirements-mkdocs.txt update requirements-mkdocs.txt 2022-09-19 08:38:46 +02:00
requirements.txt more bug fixes to install scripts 2022-11-02 15:26:02 -04:00
setup.py update requirements to address #1149 2022-10-18 16:28:58 -04:00
shell.nix nix: add shell.nix file 2022-10-25 07:08:31 -04:00
Stable_Diffusion_v1_Model_Card.md stable diffusion 2022-08-10 16:30:49 +02:00
update.bat more bug fixes to install scripts 2022-11-02 15:26:02 -04:00
update.sh more bug fixes to install scripts 2022-11-02 15:26:02 -04:00

InvokeAI: A Stable Diffusion Toolkit

Formerly known as lstein/stable-diffusion

project logo

discord badge

latest release badge github stars badge github forks badge

CI checks on main badge CI checks on dev badge latest commit to dev badge

github open issues badge github open prs badge

This is a fork of CompVis/stable-diffusion, the open source text-to-image generator. It provides a streamlined process with various new features and options to aid the image generation process. It runs on Windows, Mac and Linux machines, with GPU cards with as little as 4 GB of RAM. It provides both a polished Web interface (see below), and an easy-to-use command-line interface.

Quick links: [Discord Server] [Documentation and Tutorials] [Code and Downloads] [Bug Reports] [Discussion, Ideas & Q&A]

Note: This fork is rapidly evolving. Please use the Issues tab to report bugs and make feature requests. Be sure to use the provided templates. They will help aid diagnose issues faster.

Table of Contents

  1. Installation
  2. Hardware Requirements
  3. Features
  4. Latest Changes
  5. Troubleshooting
  6. Contributing
  7. Contributors
  8. Support
  9. Further Reading

Installation

This fork is supported across multiple platforms. You can find individual installation instructions below.

Hardware Requirements

System

You wil need one of the following:

  • An NVIDIA-based graphics card with 4 GB or more VRAM memory.
  • An Apple computer with an M1 chip.

Memory

  • At least 12 GB Main Memory RAM.

Disk

  • At least 12 GB of free disk space for the machine learning model, Python, and all its dependencies.

Note

If you have a Nvidia 10xx series card (e.g. the 1080ti), please run the dream script in full-precision mode as shown below.

Similarly, specify full-precision mode on Apple M1 hardware.

Precision is auto configured based on the device. If however you encounter errors like 'expected type Float but found Half' or 'not implemented for Half' you can try starting invoke.py with the --precision=float32 flag:

(ldm) ~/stable-diffusion$ python scripts/invoke.py --precision=float32

Features

Major Features

Other Features

Latest Changes

  • v2.0.1 (13 October 2022)

    • fix noisy images at high step count when using k* samplers
    • dream.py script now calls invoke.py module directly rather than via a new python process (which could break the environment)
  • v2.0.0 (9 October 2022)

    • dream.py script renamed invoke.py. A dream.py script wrapper remains for backward compatibility.
    • Completely new WebGUI - launch with python3 scripts/invoke.py --web
    • Support for inpainting and outpainting
    • img2img runs on all k* samplers
    • Support for negative prompts
    • Support for CodeFormer face reconstruction
    • Support for Textual Inversion on Macintoshes
    • Support in both WebGUI and CLI for post-processing of previously-generated images using facial reconstruction, ESRGAN upscaling, outcropping (similar to DALL-E infinite canvas), and "embiggen" upscaling. See the !fix command.
    • New --hires option on invoke> line allows larger images to be created without duplicating elements, at the cost of some performance.
    • New --perlin and --threshold options allow you to add and control variation during image generation (see Thresholding and Perlin Noise Initialization
    • Extensive metadata now written into PNG files, allowing reliable regeneration of images and tweaking of previous settings.
    • Command-line completion in invoke.py now works on Windows, Linux and Mac platforms.
    • Improved command-line completion behavior. New commands added:
      • List command-line history with !history
      • Search command-line history with !search
      • Clear history with !clear
    • Deprecated --full_precision / -F. Simply omit it and invoke.py will auto configure. To switch away from auto use the new flag like --precision=float32.

For older changelogs, please visit the CHANGELOG.

Troubleshooting

Please check out our Q&A to get solutions for common installation problems and other issues.

Contributing

Anyone who wishes to contribute to this project, whether documentation, features, bug fixes, code cleanup, testing, or code reviews, is very much encouraged to do so. If you are unfamiliar with how to contribute to GitHub projects, here is a Getting Started Guide.

A full set of contribution guidelines, along with templates, are in progress, but for now the most important thing is to make your pull request against the "development" branch, and not against "main". This will help keep public breakage to a minimum and will allow you to propose more radical changes.

Contributors

This fork is a combined effort of various people from across the world. Check out the list of all these amazing people. We thank them for their time, hard work and effort.

Support

For support, please use this repository's GitHub Issues tracking service. Feel free to send me an email if you use and like the script.

Original portions of the software are Copyright (c) 2020 Lincoln D. Stein

Further Reading

Please see the original README for more information on this software and underlying algorithm, located in the file README-CompViz.md.