The invoke-ai team is excited to be able to share the release of InvokeAI 2.1 - A Stable Diffusion Toolkit, a project that aims to provide enthusiasts and professionals both a suite of robust image creation tools. Optimized for efficiency, InvokeAI needs only ~3.5GB of VRAM to generate a 512x768 image (and less for smaller images), and is compatible with Windows/Linux/Mac (M1 & M2).
InvokeAI was one of the earliest forks of the core CompVis repo (formerly lstein/stable-diffusion), and recently evolved into a full-fledged community driven and open source stable diffusion toolkit. Version 2.1 of the tool introduces multiple new features and performance enhancements.
This 14-minute YouTube video introduces you to some of the new features contained in this release. The following sections describe what's new in the Web interface (WebGUI) and the command-line interface (CLI).
Major new features
- Inpainting support in the WebGUI
- Greatly improved navigation and user experience in the WebGUI
- The prompt syntax has been enhanced with prompt weighting, cross-attention and prompt merging.
- You can now load multiple models and switch among them quickly without leaving the CLI or WebGUI.
- The installation process (via
scripts/preload_models.py
) now lets you select among several popular Stable Diffusion models and downloads and installs them on your behalf. Among other models, this script will install the current Stable Diffusion 1.5 model as well as a StabilityAI variable autoencoder (VAE) which improves face generation. - Tired of struggling with photoeditors to get the masked region of for inpainting just right? Let the AI make the mask for you using text masking. This feature allows you to specify the part of the image to paint over using just English-language phrases.
- Tired of seeing the head of your subjects cropped off? Uncrop them in the CLI with the outcrop feature.
- Tired of seeing your subject's bodies duplicated or mangled when generating larger-dimension images? Check out the
--hires
option in the CLI, or select the corresponding toggle in the WebGUI. - We now support textual inversion and fine-tune .bin styles and subjects from the Hugging Face archive of SD Concepts. Load the .bin file using the
--embedding_path
option. (The next version will support merging and loading of multiple simultaneous models).
Installation
To install InvokeAI from scratch, please see the Installation section of the InvokeAI docs.
Upgrading
For those wishing to upgrade from an earlier version, please use the following recipe from within the InvokeAI directory:
Mac users:
conda deactivate
git checkout main
git pull
rm -rf src
conda update -f environment-mac.yml
conda activate invokeai
python scripts/preload_models.py
Windows users:
conda deactivate
git checkout main
git pull
rmdir src /s
conda update
conda activate invokeai
python scripts\preload_models.py
Linux Users
conda deactivate
git checkout main
git pull
rm -rf src
conda update
conda activate invokeai
python scripts/preload_models.py
Contributing
Please see CONTRIBUTORS for a list of the many individuals who contributed to this project. Also many thanks to the dozens of patient testers who flushed out bugs in this release before it went live.
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.
The most important thing is to know about contributing code 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.
Support
For support, please use this repository's GitHub Issues tracking service. Live support is also available on the InvokeAI Discord server.
Full change log since 2.0.2
- update mac instructions to use invokeai for env name by @willwillems in #1030
- Update .gitignore by @blessedcoolant in #1040
- reintroduce fix for m1 from #579 missing after merge by @skurovec in #1056
- Update Stable_Diffusion_AI_Notebook.ipynb (Take 2) by @ChloeL19 in #1060
- Print out the device type which is used by @manzke in #1073
- Hires Addition by @hipsterusername in #1063
- fix for "1 leaked semaphore objects to clean up at shutdown" on M1 by @skurovec in #1081
- Forward dream.py to invoke.py using the same interpreter, add deprecation warning by @db3000 in #1077
- fix noisy images at high step counts by @lstein in #1086
- Generalize facetool strength argument by @db3000 in #1078
- Enable fast switching among models at the invoke> command line by @lstein in #1066
- Fix Typo, committed changing ldm environment to invokeai by @jdries3 in #1095
- Update generate.py by @unreleased in #1109
- Update 'ldm' env to 'invokeai' in troubleshooting steps by @19wolf in #1125
- Fixed documentation typos and resolved merge conflicts by @rupeshs in #1123
- Fix broken doc links, fix malaprop in the project subtitle by @majick in #1131
- Only output facetool parameters if enhancing faces by @db3000 in #1119
- Update gitignore to ignore codeformer weights at new location by @spezialspezial in #1136
- fix links to point to invoke-ai.github.io #1117 by @mauwii in #1143
- Rework-mkdocs by @mauwii in #1144
- add option to CLI and pngwriter that allows user to set PNG compression level by @lstein in #1127
- Fix img2img DDIM index out of bound by @wfng92 in #1137
- Fix gh actions by @mauwii in #1128
- update mac instructions to use invokeai for env name by @willwillems in #1030
- Update .gitignore by @blessedcoolant in #1040
- reintroduce fix for m1 from #579 missing after merge by @skurovec in #1056
- Update Stable_Diffusion_AI_Notebook.ipynb (Take 2) by @ChloeL19 in #1060
- Print out the device type which is used by @manzke in #1073
- Hires Addition by @hipsterusername in #1063
- fix for "1 leaked semaphore objects to clean up at shutdown" on M1 by @skurovec in #1081
- Forward dream.py to invoke.py using the same interpreter, add deprecation warning by @db3000 in #1077
- fix noisy images at high step counts by @lstein in #1086
- Generalize facetool strength argument by @db3000 in #1078
- Enable fast switching among models at the invoke> command line by @lstein in #1066
- Fix Typo, committed changing ldm environment to invokeai by @jdries3 in #1095
- Fixed documentation typos and resolved merge conflicts by @rupeshs in #1123
- Only output facetool parameters if enhancing faces by @db3000 in #1119
- add option to CLI and pngwriter that allows user to set PNG compression level by @lstein in #1127
- Fix img2img DDIM index out of bound by @wfng92 in #1137
- Add text prompt to inpaint mask support by @lstein in #1133
- Respect http[s] protocol when making socket.io middleware by @damian0815 in #976
- WebUI: Adds Codeformer support by @psychedelicious in #1151
- Skips normalizing prompts for web UI metadata by @psychedelicious in #1165
- Add Asymmetric Tiling by @carson-katri in #1132
- Web UI: Increases max CFG Scale to 200 by @psychedelicious in #1172
- Corrects color channels in face restoration; Fixes #1167 by @psychedelicious in #1175
- Flips channels using array slicing instead of using OpenCV by @psychedelicious in #1178
- Fix typo in docs: s/Formally/Formerly by @noodlebox in #1176
- fix clipseg loading problems by @lstein in #1177
- Correct color channels in upscale using array slicing by @wfng92 in #1181
- Web UI: Filters existing images when adding new images; Fixes #1085 by @psychedelicious in #1171
- fix a number of bugs in textual inversion by @lstein in #1190
- Improve !fetch, add !replay command by @ArDiouscuros in #882
- Fix generation of image with s>1000 by @holstvoogd in #951
- Web UI: Gallery improvements by @psychedelicious in #1198
- Update CLI.md by @krummrey in #1211
- outcropping improvements by @lstein in #1207
- add support for loading VAE autoencoders by @lstein in #1216
- remove duplicate fix_func for MPS by @wfng92 in #1210
- Metadata storage and retrieval fixes by @lstein in #1204
- nix: add shell.nix file by @Cloudef in #1170
- Web UI: Changes vite dist asset paths to relative by @psychedelicious in #1185
- Web UI: Removes isDisabled from PromptInput by @psychedelicious in #1187
- Allow user to generate images with initial noise as on M1 / mps system by @ArDiouscuros in #981
- feat: adding filename format template by @plucked in #968
- Web UI: Fixes broken bundle by @psychedelicious in #1242
- Support runwayML custom inpainting model by @lstein in #1243
- Update IMG2IMG.md by @talitore in #1262
- New dockerfile - including a build- and a run- script as well as a GH-Action by @mauwii in #1233
- cut over from karras to model noise schedule for higher steps by @lstein in #1222
- Prompt tweaks by @lstein in #1268
- Outpainting implementation by @Kyle0654 in #1251
- fixing aspect ratio on hires by @tjennings in #1249
- Fix-build-container-action by @mauwii in #1274
- handle all unicode characters by @damian0815 in #1276
- adds models.user.yml to .gitignore by @JakeHL in #1281
- remove debug branch, set fail-fast to false by @mauwii in #1284
- Protect-secrets-on-pr by @mauwii in #1285
- Web UI: Adds initial inpainting implementation by @psychedelicious in #1225
- fix environment-mac.yml - tested on x64 and arm64 by @mauwii in #1289
- Use proper authentication to download model by @mauwii in #1287
- Prevent indexing error for mode RGB by @spezialspezial in #1294
- Integrate sd-v1-5 model into test matrix (easily expandable), remove unecesarry caches by @mauwii in #1293
- add --no-interactive to preload_models step by @mauwii in #1302
- 1-click installer and updater. Uses micromamba to install git and conda into a contained environment (if necessary) before running the normal installation script by @cmdr2 in #1253
- preload_models.py script downloads the weight files by @lstein in #1290
New Contributors
- @willwillems made their first contribution in #1030
- @ChloeL19 made their first contribution in #1060
- @manzke made their first contribution in #1073
- @rupeshs made their first contribution in #1123
- @wfng92 made their first contribution in #1137
- @carson-katri made their first contribution in #1132
- @noodlebox made their first contribution in #1176
- @krummrey made their first contribution in #1211
- @Cloudef made their first contribution in #1170
- @talitore made their first contribution in #1262
- @tjennings made their first contribution in #1249
- @JakeHL made their first contribution in #1281
- @cmdr2 made their first contribution in #1253
Full Changelog: v2.0.1...2.1.0-rc1