diff --git a/.github/workflows/create-caches.yml b/.github/workflows/create-caches.yml index 951718af1b..e21286a407 100644 --- a/.github/workflows/create-caches.yml +++ b/.github/workflows/create-caches.yml @@ -13,10 +13,10 @@ jobs: id: vars run: | if [ "$RUNNER_OS" = "macOS" ]; then - echo "::set-output name=ENV_FILE::environment-mac.yaml" + echo "::set-output name=ENV_FILE::environment-mac.yml" echo "::set-output name=PYTHON_BIN::/usr/local/miniconda/envs/ldm/bin/python" elif [ "$RUNNER_OS" = "Linux" ]; then - echo "::set-output name=ENV_FILE::environment.yaml" + echo "::set-output name=ENV_FILE::environment.yml" echo "::set-output name=PYTHON_BIN::/usr/share/miniconda/envs/ldm/bin/python" fi - name: Checkout sources diff --git a/.github/workflows/test-dream-conda.yml b/.github/workflows/test-dream-conda.yml index 6c51ebe718..b426275b26 100644 --- a/.github/workflows/test-dream-conda.yml +++ b/.github/workflows/test-dream-conda.yml @@ -19,10 +19,10 @@ jobs: run: | # Note, can't "activate" via github action; specifying the env's python has the same effect if [ "$RUNNER_OS" = "macOS" ]; then - echo "::set-output name=ENV_FILE::environment-mac.yaml" + echo "::set-output name=ENV_FILE::environment-mac.yml" echo "::set-output name=PYTHON_BIN::/usr/local/miniconda/envs/ldm/bin/python" elif [ "$RUNNER_OS" = "Linux" ]; then - echo "::set-output name=ENV_FILE::environment.yaml" + echo "::set-output name=ENV_FILE::environment.yml" echo "::set-output name=PYTHON_BIN::/usr/share/miniconda/envs/ldm/bin/python" fi - name: Checkout sources diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md new file mode 100644 index 0000000000..f0d61aeb97 --- /dev/null +++ b/docs/CHANGELOG.md @@ -0,0 +1,137 @@ +# **Changelog** + +## v1.13 (in process) + +- Supports a Google Colab notebook for a standalone server running on Google hardware [Arturo Mendivil](https://github.com/artmen1516) +- WebUI supports GFPGAN/ESRGAN facial reconstruction and upscaling [Kevin Gibbons](https://github.com/bakkot) +- WebUI supports incremental display of in-progress images during generation [Kevin Gibbons](https://github.com/bakkot) +- Output directory can be specified on the dream> command line. +- The grid was displaying duplicated images when not enough images to fill the final row [Muhammad Usama](https://github.com/SMUsamaShah) +- Can specify --grid on dream.py command line as the default. +- Miscellaneous internal bug and stability fixes. + +--- + +## v1.12 (28 August 2022) + +- Improved file handling, including ability to read prompts from standard input. + (kudos to [Yunsaki](https://github.com/yunsaki) +- The web server is now integrated with the dream.py script. Invoke by adding --web to + the dream.py command arguments. +- Face restoration and upscaling via GFPGAN and Real-ESGAN are now automatically + enabled if the GFPGAN directory is located as a sibling to Stable Diffusion. + VRAM requirements are modestly reduced. Thanks to both [Blessedcoolant](https://github.com/blessedcoolant) and + [Oceanswave](https://github.com/oceanswave) for their work on this. +- You can now swap samplers on the dream> command line. [Blessedcoolant](https://github.com/blessedcoolant) + +--- + +## v1.11 (26 August 2022) + +- NEW FEATURE: Support upscaling and face enhancement using the GFPGAN module. (kudos to [Oceanswave](https://github.com/Oceanswave) +- You now can specify a seed of -1 to use the previous image's seed, -2 to use the seed for the image generated before that, etc. + Seed memory only extends back to the previous command, but will work on all images generated with the -n# switch. +- Variant generation support temporarily disabled pending more general solution. +- Created a feature branch named **yunsaki-morphing-dream** which adds experimental support for + iteratively modifying the prompt and its parameters. Please see[ Pull Request #86](https://github.com/lstein/stable-diffusion/pull/86) + for a synopsis of how this works. Note that when this feature is eventually added to the main branch, it will may be modified + significantly. + +--- + +## v1.10 (25 August 2022) + +- A barebones but fully functional interactive web server for online generation of txt2img and img2img. + +--- + +## v1.09 (24 August 2022) + +- A new -v option allows you to generate multiple variants of an initial image + in img2img mode. (kudos to [Oceanswave](https://github.com/Oceanswave). [ + See this discussion in the PR for examples and details on use](https://github.com/lstein/stable-diffusion/pull/71#issuecomment-1226700810)) +- Added ability to personalize text to image generation (kudos to [Oceanswave](https://github.com/Oceanswave) and [nicolai256](https://github.com/nicolai256)) +- Enabled all of the samplers from k_diffusion + +--- + +## v1.08 (24 August 2022) + +- Escape single quotes on the dream> command before trying to parse. This avoids + parse errors. +- Removed instruction to get Python3.8 as first step in Windows install. + Anaconda3 does it for you. +- Added bounds checks for numeric arguments that could cause crashes. +- Cleaned up the copyright and license agreement files. + +--- + +## v1.07 (23 August 2022) + +- Image filenames will now never fill gaps in the sequence, but will be assigned the + next higher name in the chosen directory. This ensures that the alphabetic and chronological + sort orders are the same. + +--- + +## v1.06 (23 August 2022) + +- Added weighted prompt support contributed by [xraxra](https://github.com/xraxra) +- Example of using weighted prompts to tweak a demonic figure contributed by [bmaltais](https://github.com/bmaltais) + +--- + +## v1.05 (22 August 2022 - after the drop) + +- Filenames now use the following formats: + 000010.95183149.png -- Two files produced by the same command (e.g. -n2), + 000010.26742632.png -- distinguished by a different seed. + + 000011.455191342.01.png -- Two files produced by the same command using + 000011.455191342.02.png -- a batch size>1 (e.g. -b2). They have the same seed. + + 000011.4160627868.grid#1-4.png -- a grid of four images (-g); the whole grid can + be regenerated with the indicated key + +- It should no longer be possible for one image to overwrite another +- You can use the "cd" and "pwd" commands at the dream> prompt to set and retrieve + the path of the output directory. + +--- + +## v1.04 (22 August 2022 - after the drop) + +- Updated README to reflect installation of the released weights. +- Suppressed very noisy and inconsequential warning when loading the frozen CLIP + tokenizer. + +--- + +## v1.03 (22 August 2022) + +- The original txt2img and img2img scripts from the CompViz repository have been moved into + a subfolder named "orig_scripts", to reduce confusion. + +--- + +## v1.02 (21 August 2022) + +- A copy of the prompt and all of its switches and options is now stored in the corresponding + image in a tEXt metadata field named "Dream". You can read the prompt using scripts/images2prompt.py, + or an image editor that allows you to explore the full metadata. + **Please run "conda env update" to load the k_lms dependencies!!** + +--- + +## v1.01 (21 August 2022) + +- added k_lms sampling. + **Please run "conda env update" to load the k_lms dependencies!!** +- use half precision arithmetic by default, resulting in faster execution and lower memory requirements + Pass argument --full_precision to dream.py to get slower but more accurate image generation + +--- + +## Links + +- **[Read Me](../readme.md)** diff --git a/docs/help/TROUBLESHOOT.md b/docs/help/TROUBLESHOOT.md index 506d441f73..0d57514400 100644 --- a/docs/help/TROUBLESHOOT.md +++ b/docs/help/TROUBLESHOOT.md @@ -13,7 +13,7 @@ incomplete installations or crashes during the install process. ### **QUESTION** -During `conda env create -f environment.yaml`, conda hangs indefinitely. +During `conda env create`, conda hangs indefinitely. If it is because of the last PIP step (usually stuck in the Git Clone step, you can check the detailed log by this method): ```bash @@ -67,8 +67,8 @@ Reinstall the stable diffusion modules. Enter the `stable-diffusion` directory a ### **SOLUTION** -From within the `stable-diffusion` directory, run `conda env update -f environment.yaml` This is -also frequently the solution to complaints about an unknown function in a module. +From within the `InvokeAI` directory, run `conda env update` This is also frequently the solution to +complaints about an unknown function in a module. --- @@ -83,8 +83,10 @@ There's a feature or bugfix in the Stable Diffusion GitHub that you want to try If the fix/feature is on the `main` branch, enter the stable-diffusion directory and do a `git pull`. -Usually this will be sufficient, but if you start to see errors about missing or incorrect modules, -use the command +Usually this will be sufficient, but if you start to see errors about +missing or incorrect modules, use the command `pip install -e .` +and/or `conda env update` (These commands won't break anything.) + `pip install -e .` and/or diff --git a/docs/installation/INSTALL_LINUX.md b/docs/installation/INSTALL_LINUX.md index a865016bd5..88f327c734 100644 --- a/docs/installation/INSTALL_LINUX.md +++ b/docs/installation/INSTALL_LINUX.md @@ -44,7 +44,7 @@ This will create InvokeAI folder where you will follow the rest of the steps. ``` -(base) ~/InvokeAI$ conda env create -f environment.yaml +(base) ~/InvokeAI$ conda env create (base) ~/InvokeAI$ conda activate ldm (ldm) ~/InvokeAI$ ``` diff --git a/docs/installation/INSTALL_MAC.md b/docs/installation/INSTALL_MAC.md index b4cf6f074d..c5a3e8c3fa 100644 --- a/docs/installation/INSTALL_MAC.md +++ b/docs/installation/INSTALL_MAC.md @@ -147,18 +147,15 @@ python scripts/orig_scripts/txt2img.py \ --plms ``` -1. half-precision requires autocast which is unfortunatelly incompatible +## Notes -!!! note +1. half-precision requires autocast which is unfortunately incompatible with the + implementation of pytorch on the M1 architecture. On Macs, --full-precision will + default to True. - `#!bash export PIP_EXISTS_ACTION=w` is a precaution to fix a problem where - - ```bash - conda env create \ - -f environment-mac.yaml - ``` - - did never finish in some situations. So it isn't required but wont hurt. +2. `export PIP_EXISTS_ACTION=w` in the commands above, is a precaution to fix `conda env +create -f environment-mac.yml` never finishing in some situations. So +it isn't required but wont hurt. --- @@ -199,30 +196,23 @@ conda install \ -n ldm ``` -If it takes forever to run +If it takes forever to run `conda env create -f environment-mac.yml` you could try to run: -```bash -conda env create \ - -f environment-mac.yaml -``` - -you could try to run: - -```bash -git clean -f -conda clean \ - --yes \ - --all -``` + ```bash + git clean -f + conda clean \ + --yes \ + --all + ``` Or you could try to completley reset Anaconda: -```bash -conda update \ - --force-reinstall \ - -y \ - -n base \ - -c defaults conda + ```bash + conda update \ + --force-reinstall \ + -y \ + -n base \ + -c defaults conda ``` --- @@ -247,11 +237,9 @@ There are several causes of these errors: ```bash conda deactivate conda env remove -n ldm - PIP_EXISTS_ACTION=w CONDA_SUBDIR=osx-arm64 \ - conda env create \ - -f environment-mac.yaml + conda env create -f environment-mac.yml ``` - + 4. If you have activated the ldm virtual environment and tried rebuilding it, maybe the problem could be that I have something installed that you don't and you'll just need to manually install it. Make sure you activate the virtual @@ -396,9 +384,7 @@ python scripts/preload_models.py ``` This fork already includes a fix for this in -[environment-mac.yaml](https://github.com/invoke-ai/InvokeAI/blob/main/environment-mac.yaml). - ---- +[environment-mac.yaml](https://github.com/invoke-ai/InvokeAI/blob/main/environment-mac.yml). ### "Could not build wheels for tokenizers" diff --git a/docs/installation/INSTALL_WINDOWS.md b/docs/installation/INSTALL_WINDOWS.md index fc98c33ae0..d2e881db30 100644 --- a/docs/installation/INSTALL_WINDOWS.md +++ b/docs/installation/INSTALL_WINDOWS.md @@ -46,23 +46,26 @@ in the wiki This will create stable-diffusion folder where you will follow the rest of the steps. -5. Enter the newly-created stable-diffusion folder. From this step forward make - sure that you are working in the stable-diffusion directory! +5. Enter the newly-created InvokeAI folder. From this step forward make sure that you are working in the InvokeAI directory! ```batch - cd stable-diffusion + cd InvokeAI ``` 6. Run the following two commands: ```batch - conda env create -f environment.yaml - conda activate ldm + conda env create (step 6a) + conda activate ldm (step 6b) ``` This will install all python requirements and activate the "ldm" environment which sets PATH and other environment variables properly. + Note that the long form of the first command is `conda env create -f environment.yml`. If the + environment file isn't specified, conda will default to `environment.yml`. You will need + to provide the `-f` option if you wish to load a different environment file at any point. + 7. Run the command: ```batch @@ -77,29 +80,23 @@ in the wiki 8. Now you need to install the weights for the big stable diffusion model. - - For running with the released weights, you will first need to set up an - acount with [Hugging Face](https://huggingface.co). - - Use your credentials to log in, and then point your browser at - [https://huggingface.co/CompVis/stable-diffusion-v-1-4-original](https://huggingface.co/CompVis/stable-diffusion-v-1-4-original). - - You may be asked to sign a license agreement at this point. - - Click on "Files and versions" near the top of the page, and then click on - the file named `sd-v1-4.ckpt`. You'll be taken to a page that prompts you - to click the "download" link. Now save the file somewhere safe on your - local machine. - - The weight file is >4 GB in size, so downloading may take a while. +- For running with the released weights, you will first need to set up an acount with Hugging Face (https://huggingface.co). +- Use your credentials to log in, and then point your browser at https://huggingface.co/CompVis/stable-diffusion-v-1-4-original. +- You may be asked to sign a license agreement at this point. +- Click on "Files and versions" near the top of the page, and then click on the file named `sd-v1-4.ckpt`. You'll be taken to a page that + prompts you to click the "download" link. Now save the file somewhere safe on your local machine. +- The weight file is >4 GB in size, so + downloading may take a while. - Now run the following commands from **within the stable-diffusion directory** - to copy the weights file to the right place: +Now run the following commands from **within the InvokeAI directory** to copy the weights file to the right place: - ```batch - mkdir -p models\ldm\stable-diffusion-v1 - copy C:\path\to\sd-v1-4.ckpt models\ldm\stable-diffusion-v1\model.ckpt - ``` + ```batch + mkdir -p models\ldm\stable-diffusion-v1 + copy C:\path\to\sd-v1-4.ckpt models\ldm\stable-diffusion-v1\model.ckpt + ``` - Please replace `C:\path\to\sd-v1.4.ckpt` with the correct path to wherever - you stashed this file. If you prefer not to copy or move the .ckpt file, you - may instead create a shortcut to it from within - `models\ldm\stable-diffusion-v1\`. +Please replace `C:\path\to\sd-v1.4.ckpt` with the correct path to wherever you stashed this file. If you prefer not to copy or move the .ckpt file, +you may instead create a shortcut to it from within `models\ldm\stable-diffusion-v1\`. 9. Start generating images! @@ -111,10 +108,7 @@ in the wiki python scripts\dream.py ``` -10. Subsequently, to relaunch the script, first activate the Anaconda command - window (step 3),enter the stable-diffusion directory (step 5, - `cd \path\to\stable-diffusion`), run `conda activate ldm` (step 6b), and - then launch the dream script (step 9). +10. Subsequently, to relaunch the script, first activate the Anaconda command window (step 3),enter the InvokeAI directory (step 5, `cd \path\to\InvokeAI`), run `conda activate ldm` (step 6b), and then launch the dream script (step 9). **Note:** Tildebyte has written an alternative ["Easy peasy Windows install"](https://github.com/invoke-ai/InvokeAI/wiki/Easy-peasy-Windows-install) @@ -130,9 +124,9 @@ This distribution is changing rapidly. If you used the `git clone` method latest and greatest version, launch the Anaconda window, enter `stable-diffusion`, and type: -```batch -git pull -conda env update -f environment.yaml -``` + ```batch + git pull + conda env update + ``` This will bring your local copy into sync with the remote one. diff --git a/docs/other/README-CompViz.md b/docs/other/README-CompViz.md index 395612092f..a8dd370223 100644 --- a/docs/other/README-CompViz.md +++ b/docs/other/README-CompViz.md @@ -39,11 +39,14 @@ lightweight and runs on a GPU with at least 10GB VRAM. See A suitable [conda](https://conda.io/) environment named `ldm` can be created and activated with: -```bash -conda env create -f environment.yaml +``` +conda env create -f environment.yml conda activate ldm ``` +Note that the first line may be abbreviated `conda env create`, since conda will +look for `environment.yml` by default. + You can also update an existing [latent diffusion](https://github.com/CompVis/latent-diffusion) environment by running diff --git a/environment-mac.yaml b/environment-mac.yml similarity index 97% rename from environment-mac.yaml rename to environment-mac.yml index 1693306c26..dcaed6c88d 100644 --- a/environment-mac.yaml +++ b/environment-mac.yml @@ -14,7 +14,7 @@ dependencies: # To determine what the latest versions should be, run: # # ```shell - # sed -E 's/ldm/ldm-updated/;20,99s/- ([^=]+)==.+/- \1/' environment-mac.yaml > environment-mac-updated.yml + # sed -E 's/ldm/ldm-updated/;20,99s/- ([^=]+)==.+/- \1/' environment-mac.yml > environment-mac-updated.yml # CONDA_SUBDIR=osx-arm64 conda env create -f environment-mac-updated.yml && conda list -n ldm-updated | awk ' {print " - " $1 "==" $2;} ' # ``` - albumentations==1.2.1 diff --git a/environment.yaml b/environment.yml similarity index 100% rename from environment.yaml rename to environment.yml