From ec75c732b48be047e7b001c8f4ce72f8bd21822c Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Sun, 29 Jan 2023 12:40:26 -0600 Subject: [PATCH] add InvokeAI Signed-off-by: Jeff Carr --- InvokeAI/README.md | 18 + .../environment-lin-aarch64.yml | 45 + .../environment-lin-amd.yml | 47 + .../environment-lin-cuda.yml | 46 + .../environment-mac.yml | 65 ++ .../environment-win-cuda.yml | 46 + .../requirements-base.txt | 40 + .../requirements-lin-amd.txt | 6 + .../requirements-lin-arm64.txt | 3 + .../requirements-lin-cuda.txt | 5 + .../requirements-mac-mps-cpu.txt | 6 + .../requirements-win-colab-cuda.txt | 6 + .../invokeai/InvokeAI-Installer/install.sh | 234 +++++ .../invokeai/InvokeAI-Installer/readme.txt | 52 ++ .../InvokeAI-Installer/requirements.txt | 5 + .../templates/invoke.bat.in | 37 + .../InvokeAI-Installer/templates/invoke.sh.in | 34 + .../rootdir/configs/INITIAL_MODELS.yaml | 80 ++ .../rootdir/configs/models.yaml.example | 29 + .../templates/rootdir/configs/sd-concepts.txt | 803 ++++++++++++++++++ .../configs/stable-diffusion/v1-finetune.yaml | 110 +++ .../stable-diffusion/v1-finetune_style.yaml | 103 +++ .../stable-diffusion/v1-inference.yaml | 79 ++ .../v1-inpainting-inference.yaml | 79 ++ .../stable-diffusion/v1-m1-finetune.yaml | 110 +++ .../templates/update.bat.in | 70 ++ .../InvokeAI-Installer/templates/update.sh.in | 59 ++ coredns/Makefile | 2 + 28 files changed, 2219 insertions(+) create mode 100644 InvokeAI/README.md create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-lin-aarch64.yml create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-lin-amd.yml create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-lin-cuda.yml create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-mac.yml create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-win-cuda.yml create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-base.txt create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-lin-amd.txt create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-lin-arm64.txt create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-lin-cuda.txt create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-mac-mps-cpu.txt create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-win-colab-cuda.txt create mode 100755 InvokeAI/files/opt/invokeai/InvokeAI-Installer/install.sh create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/readme.txt create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/requirements.txt create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/invoke.bat.in create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/invoke.sh.in create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/INITIAL_MODELS.yaml create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/models.yaml.example create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/sd-concepts.txt create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-finetune.yaml create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-finetune_style.yaml create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-inference.yaml create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-inpainting-inference.yaml create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-m1-finetune.yaml create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/update.bat.in create mode 100644 InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/update.sh.in diff --git a/InvokeAI/README.md b/InvokeAI/README.md new file mode 100644 index 0000000..bd0280d --- /dev/null +++ b/InvokeAI/README.md @@ -0,0 +1,18 @@ +** Model Installation Successful ** + +You're all set! + +If you installed using one of the automated installation scripts, +execute 'invoke.sh' (Linux/macOS) or 'invoke.bat' (Windows) to +start InvokeAI. + +If you installed manually, activate the 'invokeai' environment +(e.g. 'conda activate invokeai'), then run one of the following +commands to start InvokeAI. + +Web UI: + python scripts/invoke.py --web # (connect to http://localhost:9090) +Command-line interface: + python scripts/invoke.py + +Have fun! diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-lin-aarch64.yml b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-lin-aarch64.yml new file mode 100644 index 0000000..c1e7553 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-lin-aarch64.yml @@ -0,0 +1,45 @@ +name: invokeai +channels: + - pytorch + - conda-forge + - defaults +dependencies: + - albumentations=0.4.3 + - cudatoolkit + - einops=0.3.0 + - eventlet + - flask-socketio=5.3.0 + - flask=2.1.* + - flask_cors=3.0.10 + - imageio-ffmpeg=0.4.2 + - imageio=2.9.0 + - kornia=0.6 + - numpy=1.19 + - opencv=4.6.0 + - pillow=8.* + - pip>=22.2.2 + - pudb=2019.2 + - python=3.9.* + - pytorch + - pytorch-lightning=1.7.7 + - send2trash=1.8.0 + - streamlit + - tokenizers>=0.11.1,!=0.11.3,<0.13 + - torch-fidelity=0.3.0 + - torchmetrics=0.7.0 + - torchvision + - transformers=4.21.3 + - pip: + - getpass_asterisk + - omegaconf==2.1.1 + - picklescan + - pyreadline3 + - realesrgan + - taming-transformers-rom1504 + - test-tube>=0.7.5 + - git+https://github.com/openai/CLIP.git@main#egg=clip + - git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k_diffusion + - git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg + - git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan + - git+https://github.com/invoke-ai/PyPatchMatch@0.1.5#egg=pypatchmatch + - -e . diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-lin-amd.yml b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-lin-amd.yml new file mode 100644 index 0000000..42ebf37 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-lin-amd.yml @@ -0,0 +1,47 @@ +name: invokeai +channels: + - pytorch + - conda-forge + - defaults +dependencies: + - python=3.9.* + - pip=22.2.2 + - numpy=1.23.3 + - pip: + - --extra-index-url https://download.pytorch.org/whl/rocm5.2/ + - albumentations==0.4.3 + - diffusers==0.6.0 + - einops==0.3.0 + - eventlet + - flask==2.1.3 + - flask_cors==3.0.10 + - flask_socketio==5.3.0 + - getpass_asterisk + - imageio-ffmpeg==0.4.2 + - imageio==2.9.0 + - kornia==0.6.0 + - omegaconf==2.2.3 + - opencv-python==4.5.5.64 + - picklescan + - pillow==9.2.0 + - pudb==2019.2 + - pyreadline3 + - pytorch-lightning==1.7.7 + - realesrgan + - send2trash==1.8.0 + - streamlit==1.12.0 + - taming-transformers-rom1504 + - test-tube>=0.7.5 + - tqdm + - torch + - torch-fidelity==0.3.0 + - torchaudio + - torchmetrics==0.7.0 + - torchvision + - transformers==4.21.3 + - git+https://github.com/openai/CLIP.git@main#egg=clip + - git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k-diffusion + - git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg + - git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan + - git+https://github.com/invoke-ai/PyPatchMatch@0.1.5#egg=pypatchmatch + - -e . diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-lin-cuda.yml b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-lin-cuda.yml new file mode 100644 index 0000000..ce60cfd --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-lin-cuda.yml @@ -0,0 +1,46 @@ +name: invokeai +channels: + - pytorch + - conda-forge + - defaults +dependencies: + - python=3.9.* + - pip=22.2.2 + - numpy=1.23.3 + - torchvision=0.13.1 + - torchaudio=0.12.1 + - pytorch=1.12.1 + - cudatoolkit=11.6 + - pip: + - albumentations==0.4.3 + - diffusers==0.6.0 + - einops==0.3.0 + - eventlet + - flask==2.1.3 + - flask_cors==3.0.10 + - flask_socketio==5.3.0 + - getpass_asterisk + - imageio-ffmpeg==0.4.2 + - imageio==2.9.0 + - kornia==0.6.0 + - omegaconf==2.2.3 + - opencv-python==4.5.5.64 + - picklescan + - pillow==9.2.0 + - pudb==2019.2 + - pyreadline3 + - pytorch-lightning==1.7.7 + - realesrgan + - send2trash==1.8.0 + - streamlit==1.12.0 + - taming-transformers-rom1504 + - test-tube>=0.7.5 + - torch-fidelity==0.3.0 + - torchmetrics==0.7.0 + - transformers==4.21.3 + - git+https://github.com/openai/CLIP.git@main#egg=clip + - git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k-diffusion + - git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg + - git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan + - git+https://github.com/invoke-ai/PyPatchMatch@0.1.5#egg=pypatchmatch + - -e . diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-mac.yml b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-mac.yml new file mode 100644 index 0000000..3e78d9a --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-mac.yml @@ -0,0 +1,65 @@ +name: invokeai +channels: + - pytorch + - conda-forge + - defaults +dependencies: + - python=3.10 + - pip>=22.2 + - pytorch=1.12 + - pytorch-lightning=1.7 + - torchvision=0.13 + - torchmetrics=0.10 + - torch-fidelity=0.3 + + # I suggest to keep the other deps sorted for convenience. + # To determine what the latest versions should be, run: + # + # ```shell + # sed -E 's/invokeai/invokeai-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 invokeai-updated | awk ' {print " - " $1 "==" $2;} ' + # ``` + + - albumentations=1.2 + - coloredlogs=15.0 + - diffusers=0.6 + - einops=0.3 + - eventlet + - grpcio=1.46 + - flask=2.1 + - flask-socketio=5.3 + - flask-cors=3.0 + - humanfriendly=10.0 + - imageio=2.21 + - imageio-ffmpeg=0.4 + - imgaug=0.4 + - kornia=0.6 + - mpmath=1.2 + - nomkl=3 + - numpy=1.23 + - omegaconf=2.1 + - openh264=2.3 + - onnx=1.12 + - onnxruntime=1.12 + - pudb=2019.2 + - protobuf=3.20 + - py-opencv=4.6 + - scipy=1.9 + - streamlit=1.12 + - sympy=1.10 + - send2trash=1.8 + - tensorboard=2.10 + - transformers=4.23 + - pip: + - getpass_asterisk + - picklescan + - taming-transformers-rom1504 + - test-tube==0.7.5 + - git+https://github.com/openai/CLIP.git@main#egg=clip + - git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k-diffusion + - git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg + - git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.2#egg=gfpgan + - git+https://github.com/invoke-ai/PyPatchMatch@0.1.5#egg=pypatchmatch + - -e . +variables: + PYTORCH_ENABLE_MPS_FALLBACK: 1 diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-win-cuda.yml b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-win-cuda.yml new file mode 100644 index 0000000..580f84f --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/environment-win-cuda.yml @@ -0,0 +1,46 @@ +name: invokeai +channels: + - pytorch + - conda-forge + - defaults +dependencies: + - python=3.10.* + - pip=22.2.2 + - numpy=1.23.3 + - torchvision=0.13.1 + - torchaudio=0.12.1 + - pytorch=1.12.1 + - cudatoolkit=11.6 + - pip: + - albumentations==0.4.3 + - diffusers==0.6.0 + - einops==0.3.0 + - eventlet + - flask==2.1.3 + - flask_cors==3.0.10 + - flask_socketio==5.3.0 + - getpass_asterisk + - imageio-ffmpeg==0.4.2 + - imageio==2.9.0 + - kornia==0.6.0 + - omegaconf==2.2.3 + - opencv-python==4.5.5.64 + - picklescan + - pillow==9.2.0 + - pudb==2019.2 + - pyreadline3 + - pytorch-lightning==1.7.7 + - realesrgan + - send2trash==1.8.0 + - streamlit==1.12.0 + - taming-transformers-rom1504 + - test-tube>=0.7.5 + - torch-fidelity==0.3.0 + - torchmetrics==0.7.0 + - transformers==4.21.3 + - git+https://github.com/openai/CLIP.git@main#egg=clip + - git+https://github.com/Birch-san/k-diffusion.git@mps#egg=k_diffusion + - git+https://github.com/invoke-ai/clipseg.git@relaxed-python-requirement#egg=clipseg + - git+https://github.com/invoke-ai/GFPGAN@basicsr-1.4.1#egg=gfpgan + - git+https://github.com/invoke-ai/PyPatchMatch@0.1.5#egg=pypatchmatch + - -e . diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-base.txt b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-base.txt new file mode 100644 index 0000000..d5a6c60 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-base.txt @@ -0,0 +1,40 @@ +# pip will resolve the version which matches torch +albumentations +diffusers==0.10.* +dnspython==2.2.1 +einops +eventlet +facexlib +flask==2.1.3 +flask_cors==3.0.10 +flask_socketio==5.3.0 +flaskwebgui==1.0.3 +getpass_asterisk +gfpgan==1.3.8 +huggingface-hub +imageio +imageio-ffmpeg +kornia +numpy==1.23.* +omegaconf +opencv-python +picklescan +pillow +pip>=22 +pudb +pyreadline3 +pytorch-lightning==1.7.7 +realesrgan +requests==2.25.1 +scikit-image>=0.19 +send2trash +streamlit +taming-transformers-rom1504 +test-tube>=0.7.5 +torch-fidelity +torchmetrics +transformers==4.25.* +https://github.com/Birch-san/k-diffusion/archive/refs/heads/mps.zip#egg=k-diffusion +https://github.com/invoke-ai/PyPatchMatch/archive/refs/tags/0.1.5.zip#egg=pypatchmatch +https://github.com/openai/CLIP/archive/eaa22acb90a5876642d0507623e859909230a52d.zip#egg=clip +https://github.com/invoke-ai/clipseg/archive/relaxed-python-requirement.zip#egg=clipseg diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-lin-amd.txt b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-lin-amd.txt new file mode 100644 index 0000000..ba53c93 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-lin-amd.txt @@ -0,0 +1,6 @@ +-r environments-and-requirements/requirements-base.txt +# Get hardware-appropriate torch/torchvision +--extra-index-url https://download.pytorch.org/whl/rocm5.1.1 --trusted-host https://download.pytorch.org +torch +torchvision +-e . diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-lin-arm64.txt b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-lin-arm64.txt new file mode 100644 index 0000000..304432e --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-lin-arm64.txt @@ -0,0 +1,3 @@ +--pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu +-r environments-and-requirements/requirements-base.txt +-e . diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-lin-cuda.txt b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-lin-cuda.txt new file mode 100644 index 0000000..d815dd8 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-lin-cuda.txt @@ -0,0 +1,5 @@ +--extra-index-url https://download.pytorch.org/whl/cu116 --trusted-host https://download.pytorch.org +-r environments-and-requirements/requirements-base.txt +torch +torchvision +-e . diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-mac-mps-cpu.txt b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-mac-mps-cpu.txt new file mode 100644 index 0000000..0c957c2 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-mac-mps-cpu.txt @@ -0,0 +1,6 @@ +-r environments-and-requirements/requirements-base.txt +grpcio<1.51.0 +protobuf==3.19.6 +torch<1.13.0 +torchvision<0.14.0 +-e . diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-win-colab-cuda.txt b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-win-colab-cuda.txt new file mode 100644 index 0000000..4083d67 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/environments-and-requirements/requirements-win-colab-cuda.txt @@ -0,0 +1,6 @@ +-r environments-and-requirements/requirements-base.txt +# Get hardware-appropriate torch/torchvision +--extra-index-url https://download.pytorch.org/whl/cu116 --trusted-host https://download.pytorch.org +torch==1.12.1 +torchvision==0.13.1 +-e . diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/install.sh b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/install.sh new file mode 100755 index 0000000..28833d5 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/install.sh @@ -0,0 +1,234 @@ +#!/usr/bin/env bash + +# ensure we're in the correct folder in case user's CWD is somewhere else +scriptdir=$(dirname "$0") +cd "$scriptdir" + +# This version number will be replaced by the one supplied to create_installers.sh. +# Do not change it here - change it in create_installers.sh. +INVOKEAI_VERSION="v2.2.5p2" + +# make sure we are not already in a venv +# (don't need to check status) +deactivate >/dev/null 2>&1 + +INVOKE_AI_SRC=https://github.com/invoke-ai/InvokeAI/archive/refs/tags/${INVOKEAI_VERSION}.zip +INSTRUCTIONS=https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/ +TROUBLESHOOTING=https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/#troubleshooting +MINIMUM_PYTHON_VERSION=3.9.0 + +set -euo pipefail +IFS=$'\n\t' + +function _err_exit { + if test "$1" -ne 0 + then + echo -e "Error code $1; Error caught was '$2'" + if [ "$OS_NAME" == "osx" ]; then + echo "Something went wrong while installing InvokeAI and/or its requirements." + echo "You may need to use the Xcode command line tools to proceed. See step number 3 of" + echo "https://invoke-ai.github.io/InvokeAI/INSTALL_SOURCE#walk_through for" + echo "installation instructions and then run this script again." + else + echo "Something went wrong while installing InvokeAI and/or its requirements." + echo "See https://invoke-ai.github.io/InvokeAI/INSTALL_SOURCE#troubleshooting for troubleshooting" + echo "tips, or visit https://invoke-ai.github.io/InvokeAI/#installation for alternative" + echo "installation methods" + fi + read -p "Press any key to exit..." + exit + fi +} + +function readinput() { + local CLEAN_ARGS="" + while [[ $# -gt 0 ]]; do + local i="$1" + case "$i" in + "-i") + if read -i "default" 2>/dev/null <<< "test"; then + CLEAN_ARGS="$CLEAN_ARGS -i \"$2\"" + fi + shift + shift + ;; + "-p") + CLEAN_ARGS="$CLEAN_ARGS -p \"$2\"" + shift + shift + ;; + *) + CLEAN_ARGS="$CLEAN_ARGS $1" + shift + ;; + esac + done + eval read $CLEAN_ARGS +} + + +function version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; } + +echo "InvokeAI simple installer..." +echo "" +echo "Some of the installation steps take a long time to run. Please be patient." +echo "If the script appears to hang for more than 10 minutes, please interrupt with control-C and retry." +read -n 1 -s -r -p "" +echo "" + +OS_NAME=$(uname -s) +case "${OS_NAME}" in + Linux*) OS_NAME="linux";; + Darwin*) OS_NAME="osx";; + *) echo "Unknown OS: $OS_NAME! This script runs only on Linux or Mac" && exit +esac + +OS_ARCH=$(uname -m) +case "${OS_ARCH}" in + x86_64*) OS_ARCH="64";; + arm64*) OS_ARCH="arm64";; + *) echo "Unknown system architecture: $OS_ARCH! This script runs only on x86_64 or arm64" && exit +esac + +echo "Installing for $OS_NAME-$OS_ARCH" +# confirm that python is installed and is up to date + +PYTHON="" +for candidate in python3.10 python3.9 python3 python python3.11 ; do + if ppath=`which $candidate`; then + python_version=$($ppath -V | awk '{ print $2 }') + if [ $(version $python_version) -ge $(version "$MINIMUM_PYTHON_VERSION") ]; then + PYTHON=$ppath + echo Python $python_version found at $PYTHON + break + fi + fi +done + +if [ -z "$PYTHON" ]; then + echo "A suitable Python interpreter could not be found" + echo "Please install Python 3.9 or higher before running this script. See instructions at $INSTRUCTIONS for help." + read -p "Press any key to exit" + exit -1 +fi + + +ROOTDIR="" +while [ "$ROOTDIR" == "" ] +do + echo + readinput -e -p "Select your preferred location for the 'invokeai' directory [$HOME]: " -i $HOME input + ROOTDIR=${input:=$HOME}/invokeai + + # This is surprisingly hard to do in plain Bash; easier in ZSH. Just running python in subshell is easiest. + ROOTDIR=$(python -c "from pathlib import Path; print(Path('${ROOTDIR}').expanduser().resolve())") + + read -e -p "InvokeAI will be installed into $ROOTDIR. OK? [y]: " input + RESPONSE=${input:='y'} + if [ "$RESPONSE" == 'y' ]; then + if [ -e "$ROOTDIR" ]; then + echo + read -e -p "Directory "$ROOTDIR" already exists. Do you want to resume an interrupted install? [y]: " input + RESPONSE=${input:='y'} + if [ "$RESPONSE" != 'y' ]; then + ROOTDIR="" + fi + else + mkdir -p "$ROOTDIR" + if [ $? -ne 0 ]; then + echo "Could not create "$ROOTDIR". Try again with a different install location." + ROOTDIR="" + fi + fi + else + ROOTDIR="" + fi +done + +#-------------------------------------------------------------------------------- +echo +echo "** Creating Virtual Environment for InvokeAI **" + +$PYTHON -mvenv "$ROOTDIR"/.venv +_err_exit $? "Python failed to create virtual environment "$ROOTDIR"/.venv. Please see $TROUBLESHOOTING for help." + +#-------------------------------------------------------------------------------- +echo +echo "** Activating Virtual Environment for InvokeAI **" + +source "$ROOTDIR"/.venv/bin/activate +_err_exit $? "Failed to activate virtual evironment "$ROOTDIR"/.venv. Please see $TROUBLESHOOTING for help." + +PYTHON="$ROOTDIR"/.venv/bin/python +$PYTHON -mensurepip --upgrade +$PYTHON -mpip install --upgrade pip + +#-------------------------------------------------------------------------------- +echo +echo "*** Installing InvokeAI Dependencies ***" + +if [ "$OS_NAME" == "osx" ]; then + echo "macOS detected. Installing MPS and CPU support." + egrep -v '^-e .' environments-and-requirements/requirements-mac-mps-cpu.txt >requirements.txt +else + if (lsmod | grep amdgpu) &>/dev/null ; then + readinput -e -p "Linux system with AMD GPU driver detected. Install ROCm AMD accelerated support? (Otherwise, CUDA support will be installed) [n]: " input + RESPONSE=${input:='n'} + if [ "$RESPONSE" != "n" ]; then + echo "Installing ROCm (AMD) support" + egrep -v '^-e .' environments-and-requirements/requirements-lin-amd.txt >requirements.txt + else + echo "Installing CUDA support" + egrep -v '^-e .' environments-and-requirements/requirements-lin-cuda.txt >requirements.txt + fi + else + echo "Linux system detected. Installing CUDA and CPU support." + egrep -v '^-e .' environments-and-requirements/requirements-lin-cuda.txt >requirements.txt + fi +fi + +$PYTHON -mpip install --prefer-binary -r requirements.txt +_err_exit $? "Failed to install InvokeAI's dependencies." + +#-------------------------------------------------------------------------------- +echo +echo "*** Installing InvokeAI Modules and Executables ***" +$PYTHON -mpip install $INVOKE_AI_SRC +_err_exit $? "Installation of InvokeAI failed." + +#-------------------------------------------------------------------------------- +echo " *** Setting Up Root Directory "$ROOTDIR" *** " +cp -pr templates/rootdir/* "$ROOTDIR"/ +cp templates/invoke.sh.in "$ROOTDIR"/invoke.sh +chmod a+rx "$ROOTDIR"/invoke.sh +cp templates/update.sh.in "$ROOTDIR"/update.sh +chmod a+rx "$ROOTDIR"/update.sh + +# This allows the updater to work! +cp -pr environments-and-requirements requirements.txt "$ROOTDIR/" + +#-------------------------------------------------------------------------------- +echo +echo "*** Confguring InvokeAI ***" +pushd "$ROOTDIR" >/dev/null +$PYTHON ./.venv/bin/configure_invokeai.py --root="$ROOTDIR" +_err_exit $? "Initial configuration failed. Please see above error messages and $TROUBLESHOOTING for help." + +#-------------------------------------------------------------------------------- +popd +cp templates/invoke.sh.in "$ROOTDIR"/invoke.sh +chmod a+rx "$ROOTDIR"/invoke.sh + +cp templates/update.sh.in "$ROOTDIR"/update.sh +chmod a+rx "$ROOTDIR"/update.sh + +echo "You may now run InvokeAI by entering the directory $ROOTDIR and running invoke.sh:" +echo +echo " ${ROOTDIR}/invoke.sh" +echo + +read -e -p "Run InvokeAI now? [y]:" input +RESPONSE=${input:='y'} +if [ "$RESPONSE" == 'y' ]; then + exec ${ROOTDIR}/invoke.sh +fi diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/readme.txt b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/readme.txt new file mode 100644 index 0000000..44961b5 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/readme.txt @@ -0,0 +1,52 @@ +InvokeAI + +Project homepage: https://github.com/invoke-ai/InvokeAI + +Preparations: + + You will need to install Python 3.9 or higher for this installer + to work. Instructions are given here: + https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/ + + Before you start the installer, please open up your system's command + line window (Terminal or Command) and type the commands: + + python --version + + If all is well, it will print "Python 3.X.X", where the version number + is at least 3.9.1 + + If this works, check the version of the Python package manager, pip: + + pip --version + + You should get a message that indicates that the pip package + installer was derived from Python 3.9 or 3.10. For example: + "pip 22.3.1 from /usr/bin/pip (python 3.9)" + +Long Paths on Windows: + + If you are on Windows, you will need to enable Windows Long Paths to + run InvokeAI successfully. If you're not sure what this is, you + almost certainly need to do this. + + Simply double-click the "WinLongPathsEnabled.reg" file located in + this directory, and approve the Windows warnings. Note that you will + need to have admin privileges in order to do this. + +Launching the installer: + + Windows: double-click the 'install.bat' file (while keeping it inside + the InvokeAI-Installer folder). + + Linux and Mac: Please open the terminal application and run + './install.sh' (while keeping it inside the InvokeAI-Installer + folder). + +The installer will create a directory named "invokeai" in the folder +of your choice. This directory contains everything you need to run +invokeai. Once InvokeAI is up and running, you may delete the +InvokeAI-Installer folder at your convenience. + +For more information, please see +https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/ diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/requirements.txt b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/requirements.txt new file mode 100644 index 0000000..b65093e --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/requirements.txt @@ -0,0 +1,5 @@ +-r environments-and-requirements/requirements-base.txt +# Get hardware-appropriate torch/torchvision +--extra-index-url https://download.pytorch.org/whl/rocm5.1.1 --trusted-host https://download.pytorch.org +torch +torchvision diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/invoke.bat.in b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/invoke.bat.in new file mode 100644 index 0000000..19885d8 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/invoke.bat.in @@ -0,0 +1,37 @@ +@echo off + +PUSHD "%~dp0" +setlocal + +call .venv\Scripts\activate.bat +set INVOKEAI_ROOT=. + +echo Do you want to generate images using the +echo 1. command-line +echo 2. browser-based UI +echo 3. open the developer console +set /P restore="Please enter 1, 2 or 3: " +IF /I "%restore%" == "1" ( + echo Starting the InvokeAI command-line.. + python .venv\Scripts\invoke.py %* +) ELSE IF /I "%restore%" == "2" ( + echo Starting the InvokeAI browser-based UI.. + python .venv\Scripts\invoke.py --web %* +) ELSE IF /I "%restore%" == "3" ( + echo Developer Console + echo Python command is: + where python + echo Python version is: + python --version + echo ************************* + echo You are now in the system shell, with the local InvokeAI Python virtual environment activated, + echo so that you can troubleshoot this InvokeAI installation as necessary. + echo ************************* + echo *** Type `exit` to quit this shell and deactivate the Python virtual environment *** + call cmd /k +) ELSE ( + echo Invalid selection + pause + exit /b +) +endlocal diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/invoke.sh.in b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/invoke.sh.in new file mode 100644 index 0000000..7b67c95 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/invoke.sh.in @@ -0,0 +1,34 @@ +#!/bin/bash + +set -eu + +# ensure we're in the correct folder in case user's CWD is somewhere else +scriptdir=$(dirname "$0") +cd "$scriptdir" + +. .venv/bin/activate + +export INVOKEAI_ROOT="$scriptdir" + +# set required env var for torch on mac MPS +if [ "$(uname -s)" == "Darwin" ]; then + export PYTORCH_ENABLE_MPS_FALLBACK=1 +fi + +if [ "$0" != "bash" ]; then + echo "Do you want to generate images using the" + echo "1. command-line" + echo "2. browser-based UI" + echo "3. open the developer console" + read -p "Please enter 1, 2, or 3: " yn + case $yn in + 1 ) printf "\nStarting the InvokeAI command-line..\n"; .venv/bin/python .venv/bin/invoke.py $*;; + 2 ) printf "\nStarting the InvokeAI browser-based UI..\n"; .venv/bin/python .venv/bin/invoke.py --web $*;; + 3 ) printf "\nDeveloper Console:\n"; file_name=$(basename "${BASH_SOURCE[0]}"); bash --init-file "$file_name";; + * ) echo "Invalid selection"; exit;; + esac +else # in developer console + python --version + echo "Press ^D to exit" + export PS1="(InvokeAI) \u@\h \w> " +fi diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/INITIAL_MODELS.yaml b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/INITIAL_MODELS.yaml new file mode 100644 index 0000000..6cfb863 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/INITIAL_MODELS.yaml @@ -0,0 +1,80 @@ +stable-diffusion-1.5: + description: The newest Stable Diffusion version 1.5 weight file (4.27 GB) + repo_id: runwayml/stable-diffusion-v1-5 + config: v1-inference.yaml + file: v1-5-pruned-emaonly.ckpt + recommended: true + width: 512 + height: 512 +inpainting-1.5: + description: RunwayML SD 1.5 model optimized for inpainting (4.27 GB) + repo_id: runwayml/stable-diffusion-inpainting + config: v1-inpainting-inference.yaml + file: sd-v1-5-inpainting.ckpt + recommended: True + width: 512 + height: 512 +ft-mse-improved-autoencoder-840000: + description: StabilityAI improved autoencoder fine-tuned for human faces (recommended; 335 MB) + repo_id: stabilityai/sd-vae-ft-mse-original + config: VAE/default + file: vae-ft-mse-840000-ema-pruned.ckpt + recommended: True + width: 512 + height: 512 +stable-diffusion-1.4: + description: The original Stable Diffusion version 1.4 weight file (4.27 GB) + repo_id: CompVis/stable-diffusion-v-1-4-original + config: v1-inference.yaml + file: sd-v1-4.ckpt + recommended: False + width: 512 + height: 512 +waifu-diffusion-1.3: + description: Stable Diffusion 1.4 fine tuned on anime-styled images (4.27 GB) + repo_id: hakurei/waifu-diffusion-v1-3 + config: v1-inference.yaml + file: model-epoch09-float32.ckpt + recommended: False + width: 512 + height: 512 +trinart-2.0: + description: An SD model finetuned with ~40,000 assorted high resolution manga/anime-style pictures (2.13 GB) + repo_id: naclbit/trinart_stable_diffusion_v2 + config: v1-inference.yaml + file: trinart2_step95000.ckpt + recommended: False + width: 512 + height: 512 +trinart_characters-1.0: + description: An SD model finetuned with 19.2M anime/manga style images (2.13 GB) + repo_id: naclbit/trinart_characters_19.2m_stable_diffusion_v1 + config: v1-inference.yaml + file: trinart_characters_it4_v1.ckpt + recommended: False + width: 512 + height: 512 +trinart_vae: + description: Custom autoencoder for trinart_characters + repo_id: naclbit/trinart_characters_19.2m_stable_diffusion_v1 + config: VAE/trinart + file: autoencoder_fix_kl-f8-trinart_characters.ckpt + recommended: False + width: 512 + height: 512 +papercut-1.0: + description: SD 1.5 fine-tuned for papercut art (use "PaperCut" in your prompts) (2.13 GB) + repo_id: Fictiverse/Stable_Diffusion_PaperCut_Model + config: v1-inference.yaml + file: PaperCut_v1.ckpt + recommended: False + width: 512 + height: 512 +voxel_art-1.0: + description: Stable Diffusion trained on voxel art (use "VoxelArt" in your prompts) (4.27 GB) + repo_id: Fictiverse/Stable_Diffusion_VoxelArt_Model + config: v1-inference.yaml + file: VoxelArt_v1.ckpt + recommended: False + width: 512 + height: 512 diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/models.yaml.example b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/models.yaml.example new file mode 100644 index 0000000..61e1fe2 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/models.yaml.example @@ -0,0 +1,29 @@ +# This file describes the alternative machine learning models +# available to InvokeAI script. +# +# To add a new model, follow the examples below. Each +# model requires a model config file, a weights file, +# and the width and height of the images it +# was trained on. +stable-diffusion-1.5: + description: The newest Stable Diffusion version 1.5 weight file (4.27 GB) + weights: models/ldm/stable-diffusion-v1/v1-5-pruned-emaonly.ckpt + config: configs/stable-diffusion/v1-inference.yaml + width: 512 + height: 512 + vae: ./models/ldm/stable-diffusion-v1/vae-ft-mse-840000-ema-pruned.ckpt + default: true +stable-diffusion-1.4: + description: Stable Diffusion inference model version 1.4 + config: configs/stable-diffusion/v1-inference.yaml + weights: models/ldm/stable-diffusion-v1/sd-v1-4.ckpt + vae: models/ldm/stable-diffusion-v1/vae-ft-mse-840000-ema-pruned.ckpt + width: 512 + height: 512 +inpainting-1.5: + weights: models/ldm/stable-diffusion-v1/sd-v1-5-inpainting.ckpt + config: configs/stable-diffusion/v1-inpainting-inference.yaml + vae: models/ldm/stable-diffusion-v1/vae-ft-mse-840000-ema-pruned.ckpt + description: RunwayML SD 1.5 model optimized for inpainting + width: 512 + height: 512 diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/sd-concepts.txt b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/sd-concepts.txt new file mode 100644 index 0000000..969f628 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/sd-concepts.txt @@ -0,0 +1,803 @@ +sd-concepts-library/001glitch-core +sd-concepts-library/2814-roth +sd-concepts-library/3d-female-cyborgs +sd-concepts-library/4tnght +sd-concepts-library/80s-anime-ai +sd-concepts-library/80s-anime-ai-being +sd-concepts-library/852style-girl +sd-concepts-library/8bit +sd-concepts-library/8sconception +sd-concepts-library/Aflac-duck +sd-concepts-library/Akitsuki +sd-concepts-library/Atako +sd-concepts-library/Exodus-Styling +sd-concepts-library/RINGAO +sd-concepts-library/a-female-hero-from-the-legend-of-mir +sd-concepts-library/a-hat-kid +sd-concepts-library/a-tale-of-two-empires +sd-concepts-library/aadhav-face +sd-concepts-library/aavegotchi +sd-concepts-library/abby-face +sd-concepts-library/abstract-concepts +sd-concepts-library/accurate-angel +sd-concepts-library/agm-style-nao +sd-concepts-library/aj-fosik +sd-concepts-library/alberto-mielgo +sd-concepts-library/alex-portugal +sd-concepts-library/alex-thumbnail-object-2000-steps +sd-concepts-library/aleyna-tilki +sd-concepts-library/alf +sd-concepts-library/alicebeta +sd-concepts-library/alien-avatar +sd-concepts-library/alisa +sd-concepts-library/all-rings-albuns +sd-concepts-library/altvent +sd-concepts-library/altyn-helmet +sd-concepts-library/amine +sd-concepts-library/amogus +sd-concepts-library/anders-zorn +sd-concepts-library/angus-mcbride-style +sd-concepts-library/animalve3-1500seq +sd-concepts-library/anime-background-style +sd-concepts-library/anime-background-style-v2 +sd-concepts-library/anime-boy +sd-concepts-library/anime-girl +sd-concepts-library/anyXtronXredshift +sd-concepts-library/anya-forger +sd-concepts-library/apex-wingman +sd-concepts-library/apulian-rooster-v0-1 +sd-concepts-library/arcane-face +sd-concepts-library/arcane-style-jv +sd-concepts-library/arcimboldo-style +sd-concepts-library/armando-reveron-style +sd-concepts-library/armor-concept +sd-concepts-library/arq-render +sd-concepts-library/art-brut +sd-concepts-library/arthur1 +sd-concepts-library/artist-yukiko-kanagai +sd-concepts-library/arwijn +sd-concepts-library/ashiok +sd-concepts-library/at-wolf-boy-object +sd-concepts-library/atm-ant +sd-concepts-library/atm-ant-2 +sd-concepts-library/axe-tattoo +sd-concepts-library/ayush-spider-spr +sd-concepts-library/azura-from-vibrant-venture +sd-concepts-library/ba-shiroko +sd-concepts-library/babau +sd-concepts-library/babs-bunny +sd-concepts-library/babushork +sd-concepts-library/backrooms +sd-concepts-library/bad_Hub_Hugh +sd-concepts-library/bada-club +sd-concepts-library/baldi +sd-concepts-library/baluchitherian +sd-concepts-library/bamse +sd-concepts-library/bamse-og-kylling +sd-concepts-library/bee +sd-concepts-library/beholder +sd-concepts-library/beldam +sd-concepts-library/belen +sd-concepts-library/bella-goth +sd-concepts-library/belle-delphine +sd-concepts-library/bert-muppet +sd-concepts-library/better-collage3 +sd-concepts-library/between2-mt-fade +sd-concepts-library/birb-style +sd-concepts-library/black-and-white-design +sd-concepts-library/black-waifu +sd-concepts-library/bloo +sd-concepts-library/blue-haired-boy +sd-concepts-library/blue-zombie +sd-concepts-library/blue-zombiee +sd-concepts-library/bluebey +sd-concepts-library/bluebey-2 +sd-concepts-library/bobs-burgers +sd-concepts-library/boissonnard +sd-concepts-library/bonzi-monkey +sd-concepts-library/borderlands +sd-concepts-library/bored-ape-textual-inversion +sd-concepts-library/boris-anderson +sd-concepts-library/bozo-22 +sd-concepts-library/breakcore +sd-concepts-library/brittney-williams-art +sd-concepts-library/bruma +sd-concepts-library/brunnya +sd-concepts-library/buddha-statue +sd-concepts-library/bullvbear +sd-concepts-library/button-eyes +sd-concepts-library/canadian-goose +sd-concepts-library/canary-cap +sd-concepts-library/cancer_style +sd-concepts-library/captain-haddock +sd-concepts-library/captainkirb +sd-concepts-library/car-toy-rk +sd-concepts-library/carasibana +sd-concepts-library/carlitos-el-mago +sd-concepts-library/carrascharacter +sd-concepts-library/cartoona-animals +sd-concepts-library/cat-toy +sd-concepts-library/centaur +sd-concepts-library/cgdonny1 +sd-concepts-library/cham +sd-concepts-library/chandra-nalaar +sd-concepts-library/char-con +sd-concepts-library/character-pingu +sd-concepts-library/cheburashka +sd-concepts-library/chen-1 +sd-concepts-library/child-zombie +sd-concepts-library/chillpill +sd-concepts-library/chonkfrog +sd-concepts-library/chop +sd-concepts-library/christo-person +sd-concepts-library/chuck-walton +sd-concepts-library/chucky +sd-concepts-library/chungus-poodl-pet +sd-concepts-library/cindlop +sd-concepts-library/collage-cutouts +sd-concepts-library/collage14 +sd-concepts-library/collage3 +sd-concepts-library/collage3-hubcity +sd-concepts-library/cologne +sd-concepts-library/color-page +sd-concepts-library/colossus +sd-concepts-library/command-and-conquer-remastered-cameos +sd-concepts-library/concept-art +sd-concepts-library/conner-fawcett-style +sd-concepts-library/conway-pirate +sd-concepts-library/coop-himmelblau +sd-concepts-library/coraline +sd-concepts-library/cornell-box +sd-concepts-library/cortana +sd-concepts-library/covid-19-rapid-test +sd-concepts-library/cow-uwu +sd-concepts-library/cowboy +sd-concepts-library/crazy-1 +sd-concepts-library/crazy-2 +sd-concepts-library/crb-portraits +sd-concepts-library/crb-surrealz +sd-concepts-library/crbart +sd-concepts-library/crested-gecko +sd-concepts-library/crinos-form-garou +sd-concepts-library/cry-baby-style +sd-concepts-library/crybaby-style-2-0 +sd-concepts-library/csgo-awp-object +sd-concepts-library/csgo-awp-texture-map +sd-concepts-library/cubex +sd-concepts-library/cumbia-peruana +sd-concepts-library/cute-bear +sd-concepts-library/cute-cat +sd-concepts-library/cute-game-style +sd-concepts-library/cyberpunk-lucy +sd-concepts-library/dabotap +sd-concepts-library/dan-mumford +sd-concepts-library/dan-seagrave-art-style +sd-concepts-library/dark-penguin-pinguinanimations +sd-concepts-library/darkpenguinanimatronic +sd-concepts-library/darkplane +sd-concepts-library/david-firth-artstyle +sd-concepts-library/david-martinez-cyberpunk +sd-concepts-library/david-martinez-edgerunners +sd-concepts-library/david-moreno-architecture +sd-concepts-library/daycare-attendant-sun-fnaf +sd-concepts-library/ddattender +sd-concepts-library/degods +sd-concepts-library/degodsheavy +sd-concepts-library/depthmap +sd-concepts-library/depthmap-style +sd-concepts-library/design +sd-concepts-library/detectivedinosaur1 +sd-concepts-library/diaosu-toy +sd-concepts-library/dicoo +sd-concepts-library/dicoo2 +sd-concepts-library/dishonored-portrait-styles +sd-concepts-library/disquieting-muses +sd-concepts-library/ditko +sd-concepts-library/dlooak +sd-concepts-library/doc +sd-concepts-library/doener-red-line-art +sd-concepts-library/dog +sd-concepts-library/dog-django +sd-concepts-library/doge-pound +sd-concepts-library/dong-ho +sd-concepts-library/dong-ho2 +sd-concepts-library/doose-s-realistic-art-style +sd-concepts-library/dq10-anrushia +sd-concepts-library/dr-livesey +sd-concepts-library/dr-strange +sd-concepts-library/dragonborn +sd-concepts-library/dreamcore +sd-concepts-library/dreamy-painting +sd-concepts-library/drive-scorpion-jacket +sd-concepts-library/dsmuses +sd-concepts-library/dtv-pkmn +sd-concepts-library/dullboy-caricature +sd-concepts-library/duranduran +sd-concepts-library/durer-style +sd-concepts-library/dyoudim-style +sd-concepts-library/early-mishima-kurone +sd-concepts-library/eastward +sd-concepts-library/eddie +sd-concepts-library/edgerunners-style +sd-concepts-library/edgerunners-style-v2 +sd-concepts-library/el-salvador-style-style +sd-concepts-library/elegant-flower +sd-concepts-library/elspeth-tirel +sd-concepts-library/eru-chitanda-casual +sd-concepts-library/erwin-olaf-style +sd-concepts-library/ettblackteapot +sd-concepts-library/explosions-cat +sd-concepts-library/eye-of-agamotto +sd-concepts-library/f-22 +sd-concepts-library/facadeplace +sd-concepts-library/fairy-tale-painting-style +sd-concepts-library/fairytale +sd-concepts-library/fang-yuan-001 +sd-concepts-library/faraon-love-shady +sd-concepts-library/fasina +sd-concepts-library/felps +sd-concepts-library/female-kpop-singer +sd-concepts-library/fergal-cat +sd-concepts-library/filename-2 +sd-concepts-library/fileteado-porteno +sd-concepts-library/final-fantasy-logo +sd-concepts-library/fireworks-over-water +sd-concepts-library/fish +sd-concepts-library/flag-ussr +sd-concepts-library/flatic +sd-concepts-library/floral +sd-concepts-library/fluid-acrylic-jellyfish-creatures-style-of-carl-ingram-art +sd-concepts-library/fnf-boyfriend +sd-concepts-library/fold-structure +sd-concepts-library/fox-purple +sd-concepts-library/fractal +sd-concepts-library/fractal-flame +sd-concepts-library/fractal-temple-style +sd-concepts-library/frank-frazetta +sd-concepts-library/franz-unterberger +sd-concepts-library/freddy-fazbear +sd-concepts-library/freefonix-style +sd-concepts-library/furrpopasthetic +sd-concepts-library/fursona +sd-concepts-library/fzk +sd-concepts-library/galaxy-explorer +sd-concepts-library/ganyu-genshin-impact +sd-concepts-library/garcon-the-cat +sd-concepts-library/garfield-pizza-plush +sd-concepts-library/garfield-pizza-plush-v2 +sd-concepts-library/gba-fe-class-cards +sd-concepts-library/gba-pokemon-sprites +sd-concepts-library/geggin +sd-concepts-library/ggplot2 +sd-concepts-library/ghost-style +sd-concepts-library/ghostproject-men +sd-concepts-library/gibasachan-v0 +sd-concepts-library/gim +sd-concepts-library/gio +sd-concepts-library/giygas +sd-concepts-library/glass-pipe +sd-concepts-library/glass-prism-cube +sd-concepts-library/glow-forest +sd-concepts-library/goku +sd-concepts-library/gram-tops +sd-concepts-library/green-blue-shanshui +sd-concepts-library/green-tent +sd-concepts-library/grifter +sd-concepts-library/grisstyle +sd-concepts-library/grit-toy +sd-concepts-library/gt-color-paint-2 +sd-concepts-library/gta5-artwork +sd-concepts-library/guttestreker +sd-concepts-library/gymnastics-leotard-v2 +sd-concepts-library/half-life-2-dog +sd-concepts-library/handstand +sd-concepts-library/hanfu-anime-style +sd-concepts-library/happy-chaos +sd-concepts-library/happy-person12345 +sd-concepts-library/happy-person12345-assets +sd-concepts-library/harley-quinn +sd-concepts-library/harmless-ai-1 +sd-concepts-library/harmless-ai-house-style-1 +sd-concepts-library/hd-emoji +sd-concepts-library/heather +sd-concepts-library/henjo-techno-show +sd-concepts-library/herge-style +sd-concepts-library/hiten-style-nao +sd-concepts-library/hitokomoru-style-nao +sd-concepts-library/hiyuki-chan +sd-concepts-library/hk-bamboo +sd-concepts-library/hk-betweenislands +sd-concepts-library/hk-bicycle +sd-concepts-library/hk-blackandwhite +sd-concepts-library/hk-breakfast +sd-concepts-library/hk-buses +sd-concepts-library/hk-clouds +sd-concepts-library/hk-goldbuddha +sd-concepts-library/hk-goldenlantern +sd-concepts-library/hk-hkisland +sd-concepts-library/hk-leaves +sd-concepts-library/hk-market +sd-concepts-library/hk-oldcamera +sd-concepts-library/hk-opencamera +sd-concepts-library/hk-peach +sd-concepts-library/hk-phonevax +sd-concepts-library/hk-streetpeople +sd-concepts-library/hk-vintage +sd-concepts-library/hoi4 +sd-concepts-library/hoi4-leaders +sd-concepts-library/homestuck-sprite +sd-concepts-library/homestuck-troll +sd-concepts-library/hours-sentry-fade +sd-concepts-library/hours-style +sd-concepts-library/hrgiger-drmacabre +sd-concepts-library/huang-guang-jian +sd-concepts-library/huatli +sd-concepts-library/huayecai820-greyscale +sd-concepts-library/hub-city +sd-concepts-library/hubris-oshri +sd-concepts-library/huckleberry +sd-concepts-library/hydrasuit +sd-concepts-library/i-love-chaos +sd-concepts-library/ibere-thenorio +sd-concepts-library/ic0n +sd-concepts-library/ie-gravestone +sd-concepts-library/ikea-fabler +sd-concepts-library/illustration-style +sd-concepts-library/ilo-kunst +sd-concepts-library/ilya-shkipin +sd-concepts-library/im-poppy +sd-concepts-library/ina-art +sd-concepts-library/indian-watercolor-portraits +sd-concepts-library/indiana +sd-concepts-library/ingmar-bergman +sd-concepts-library/insidewhale +sd-concepts-library/interchanges +sd-concepts-library/inuyama-muneto-style-nao +sd-concepts-library/irasutoya +sd-concepts-library/iridescent-illustration-style +sd-concepts-library/iridescent-photo-style +sd-concepts-library/isabell-schulte-pv-pvii-3000steps +sd-concepts-library/isabell-schulte-pviii-1-image-style +sd-concepts-library/isabell-schulte-pviii-1024px-1500-steps-style +sd-concepts-library/isabell-schulte-pviii-12tiles-3000steps-style +sd-concepts-library/isabell-schulte-pviii-4-tiles-1-lr-3000-steps-style +sd-concepts-library/isabell-schulte-pviii-4-tiles-3-lr-5000-steps-style +sd-concepts-library/isabell-schulte-pviii-4tiles-500steps +sd-concepts-library/isabell-schulte-pviii-4tiles-6000steps +sd-concepts-library/isabell-schulte-pviii-style +sd-concepts-library/isometric-tile-test +sd-concepts-library/jacqueline-the-unicorn +sd-concepts-library/james-web-space-telescope +sd-concepts-library/jamie-hewlett-style +sd-concepts-library/jamiels +sd-concepts-library/jang-sung-rak-style +sd-concepts-library/jetsetdreamcastcovers +sd-concepts-library/jin-kisaragi +sd-concepts-library/jinjoon-lee-they +sd-concepts-library/jm-bergling-monogram +sd-concepts-library/joe-mad +sd-concepts-library/joe-whiteford-art-style +sd-concepts-library/joemad +sd-concepts-library/john-blanche +sd-concepts-library/johnny-silverhand +sd-concepts-library/jojo-bizzare-adventure-manga-lineart +sd-concepts-library/jos-de-kat +sd-concepts-library/junji-ito-artstyle +sd-concepts-library/kaleido +sd-concepts-library/kaneoya-sachiko +sd-concepts-library/kanovt +sd-concepts-library/kanv1 +sd-concepts-library/karan-gloomy +sd-concepts-library/karl-s-lzx-1 +sd-concepts-library/kasumin +sd-concepts-library/kawaii-colors +sd-concepts-library/kawaii-girl-plus-object +sd-concepts-library/kawaii-girl-plus-style +sd-concepts-library/kawaii-girl-plus-style-v1-1 +sd-concepts-library/kay +sd-concepts-library/kaya-ghost-assasin +sd-concepts-library/ki +sd-concepts-library/kinda-sus +sd-concepts-library/kings-quest-agd +sd-concepts-library/kiora +sd-concepts-library/kira-sensei +sd-concepts-library/kirby +sd-concepts-library/klance +sd-concepts-library/kodakvision500t +sd-concepts-library/kogatan-shiny +sd-concepts-library/kogecha +sd-concepts-library/kojima-ayami +sd-concepts-library/koko-dog +sd-concepts-library/kuvshinov +sd-concepts-library/kysa-v-style +sd-concepts-library/laala-character +sd-concepts-library/larrette +sd-concepts-library/lavko +sd-concepts-library/lazytown-stephanie +sd-concepts-library/ldr +sd-concepts-library/ldrs +sd-concepts-library/led-toy +sd-concepts-library/lego-astronaut +sd-concepts-library/leica +sd-concepts-library/leif-jones +sd-concepts-library/lex +sd-concepts-library/liliana +sd-concepts-library/liliana-vess +sd-concepts-library/liminal-spaces-2-0 +sd-concepts-library/liminalspaces +sd-concepts-library/line-art +sd-concepts-library/line-style +sd-concepts-library/linnopoke +sd-concepts-library/liquid-light +sd-concepts-library/liqwid-aquafarmer +sd-concepts-library/lizardman +sd-concepts-library/loab-character +sd-concepts-library/loab-style +sd-concepts-library/lofa +sd-concepts-library/logo-with-face-on-shield +sd-concepts-library/lolo +sd-concepts-library/looney-anime +sd-concepts-library/lost-rapper +sd-concepts-library/lphr-style +sd-concepts-library/lucario +sd-concepts-library/lucky-luke +sd-concepts-library/lugal-ki-en +sd-concepts-library/luinv2 +sd-concepts-library/lula-13 +sd-concepts-library/lumio +sd-concepts-library/lxj-o4 +sd-concepts-library/m-geo +sd-concepts-library/m-geoo +sd-concepts-library/madhubani-art +sd-concepts-library/mafalda-character +sd-concepts-library/magic-pengel +sd-concepts-library/malika-favre-art-style +sd-concepts-library/manga-style +sd-concepts-library/marbling-art +sd-concepts-library/margo +sd-concepts-library/marty +sd-concepts-library/marty6 +sd-concepts-library/mass +sd-concepts-library/masyanya +sd-concepts-library/masyunya +sd-concepts-library/mate +sd-concepts-library/matthew-stone +sd-concepts-library/mattvidpro +sd-concepts-library/maurice-quentin-de-la-tour-style +sd-concepts-library/maus +sd-concepts-library/max-foley +sd-concepts-library/mayor-richard-irvin +sd-concepts-library/mechasoulall +sd-concepts-library/medazzaland +sd-concepts-library/memnarch-mtg +sd-concepts-library/metagabe +sd-concepts-library/meyoco +sd-concepts-library/meze-audio-elite-headphones +sd-concepts-library/midjourney-style +sd-concepts-library/mikako-method +sd-concepts-library/mikako-methodi2i +sd-concepts-library/miko-3-robot +sd-concepts-library/milady +sd-concepts-library/mildemelwe-style +sd-concepts-library/million-live-akane-15k +sd-concepts-library/million-live-akane-3k +sd-concepts-library/million-live-akane-shifuku-3k +sd-concepts-library/million-live-spade-q-object-3k +sd-concepts-library/million-live-spade-q-style-3k +sd-concepts-library/minecraft-concept-art +sd-concepts-library/mishima-kurone +sd-concepts-library/mizkif +sd-concepts-library/moeb-style +sd-concepts-library/moebius +sd-concepts-library/mokoko +sd-concepts-library/mokoko-seed +sd-concepts-library/monster-girl +sd-concepts-library/monster-toy +sd-concepts-library/monte-novo +sd-concepts-library/moo-moo +sd-concepts-library/morino-hon-style +sd-concepts-library/moxxi +sd-concepts-library/msg +sd-concepts-library/mtg-card +sd-concepts-library/mtl-longsky +sd-concepts-library/mu-sadr +sd-concepts-library/munch-leaks-style +sd-concepts-library/museum-by-coop-himmelblau +sd-concepts-library/muxoyara +sd-concepts-library/my-hero-academia-style +sd-concepts-library/my-mug +sd-concepts-library/mycat +sd-concepts-library/mystical-nature +sd-concepts-library/naf +sd-concepts-library/nahiri +sd-concepts-library/namine-ritsu +sd-concepts-library/naoki-saito +sd-concepts-library/nard-style +sd-concepts-library/naruto +sd-concepts-library/natasha-johnston +sd-concepts-library/nathan-wyatt +sd-concepts-library/naval-portrait +sd-concepts-library/nazuna +sd-concepts-library/nebula +sd-concepts-library/ned-flanders +sd-concepts-library/neon-pastel +sd-concepts-library/new-priests +sd-concepts-library/nic-papercuts +sd-concepts-library/nikodim +sd-concepts-library/nissa-revane +sd-concepts-library/nixeu +sd-concepts-library/noggles +sd-concepts-library/nomad +sd-concepts-library/nouns-glasses +sd-concepts-library/obama-based-on-xi +sd-concepts-library/obama-self-2 +sd-concepts-library/og-mox-style +sd-concepts-library/ohisashiburi-style +sd-concepts-library/oleg-kuvaev +sd-concepts-library/olli-olli +sd-concepts-library/on-kawara +sd-concepts-library/one-line-drawing +sd-concepts-library/onepunchman +sd-concepts-library/onzpo +sd-concepts-library/orangejacket +sd-concepts-library/ori +sd-concepts-library/ori-toor +sd-concepts-library/orientalist-art +sd-concepts-library/osaka-jyo +sd-concepts-library/osaka-jyo2 +sd-concepts-library/osrsmini2 +sd-concepts-library/osrstiny +sd-concepts-library/other-mother +sd-concepts-library/ouroboros +sd-concepts-library/outfit-items +sd-concepts-library/overprettified +sd-concepts-library/owl-house +sd-concepts-library/painted-by-silver-of-999 +sd-concepts-library/painted-by-silver-of-999-2 +sd-concepts-library/painted-student +sd-concepts-library/painting +sd-concepts-library/pantone-milk +sd-concepts-library/paolo-bonolis +sd-concepts-library/party-girl +sd-concepts-library/pascalsibertin +sd-concepts-library/pastelartstyle +sd-concepts-library/paul-noir +sd-concepts-library/pen-ink-portraits-bennorthen +sd-concepts-library/phan +sd-concepts-library/phan-s-collage +sd-concepts-library/phc +sd-concepts-library/phoenix-01 +sd-concepts-library/pineda-david +sd-concepts-library/pink-beast-pastelae-style +sd-concepts-library/pintu +sd-concepts-library/pion-by-august-semionov +sd-concepts-library/piotr-jablonski +sd-concepts-library/pixel-mania +sd-concepts-library/pixel-toy +sd-concepts-library/pjablonski-style +sd-concepts-library/plant-style +sd-concepts-library/plen-ki-mun +sd-concepts-library/pokemon-conquest-sprites +sd-concepts-library/pool-test +sd-concepts-library/poolrooms +sd-concepts-library/poring-ragnarok-online +sd-concepts-library/poutine-dish +sd-concepts-library/princess-knight-art +sd-concepts-library/progress-chip +sd-concepts-library/puerquis-toy +sd-concepts-library/purplefishli +sd-concepts-library/pyramidheadcosplay +sd-concepts-library/qpt-atrium +sd-concepts-library/quiesel +sd-concepts-library/r-crumb-style +sd-concepts-library/rahkshi-bionicle +sd-concepts-library/raichu +sd-concepts-library/rail-scene +sd-concepts-library/rail-scene-style +sd-concepts-library/ralph-mcquarrie +sd-concepts-library/ransom +sd-concepts-library/rayne-weynolds +sd-concepts-library/rcrumb-portraits-style +sd-concepts-library/rd-chaos +sd-concepts-library/rd-paintings +sd-concepts-library/red-glasses +sd-concepts-library/reeducation-camp +sd-concepts-library/reksio-dog +sd-concepts-library/rektguy +sd-concepts-library/remert +sd-concepts-library/renalla +sd-concepts-library/repeat +sd-concepts-library/retro-girl +sd-concepts-library/retro-mecha-rangers +sd-concepts-library/retropixelart-pinguin +sd-concepts-library/rex-deno +sd-concepts-library/rhizomuse-machine-bionic-sculpture +sd-concepts-library/ricar +sd-concepts-library/rickyart +sd-concepts-library/rico-face +sd-concepts-library/riker-doll +sd-concepts-library/rikiart +sd-concepts-library/rikiboy-art +sd-concepts-library/rilakkuma +sd-concepts-library/rishusei-style +sd-concepts-library/rj-palmer +sd-concepts-library/rl-pkmn-test +sd-concepts-library/road-to-ruin +sd-concepts-library/robertnava +sd-concepts-library/roblox-avatar +sd-concepts-library/roy-lichtenstein +sd-concepts-library/ruan-jia +sd-concepts-library/russian +sd-concepts-library/s1m-naoto-ohshima +sd-concepts-library/saheeli-rai +sd-concepts-library/sakimi-style +sd-concepts-library/salmonid +sd-concepts-library/sam-yang +sd-concepts-library/sanguo-guanyu +sd-concepts-library/sas-style +sd-concepts-library/scarlet-witch +sd-concepts-library/schloss-mosigkau +sd-concepts-library/scrap-style +sd-concepts-library/scratch-project +sd-concepts-library/sculptural-style +sd-concepts-library/sd-concepts-library-uma-meme +sd-concepts-library/seamless-ground +sd-concepts-library/selezneva-alisa +sd-concepts-library/sem-mac2n +sd-concepts-library/senneca +sd-concepts-library/seraphimmoonshadow-art +sd-concepts-library/sewerslvt +sd-concepts-library/she-hulk-law-art +sd-concepts-library/she-mask +sd-concepts-library/sherhook-painting +sd-concepts-library/sherhook-painting-v2 +sd-concepts-library/shev-linocut +sd-concepts-library/shigure-ui-style +sd-concepts-library/shiny-polyman +sd-concepts-library/shrunken-head +sd-concepts-library/shu-doll +sd-concepts-library/shvoren-style +sd-concepts-library/sims-2-portrait +sd-concepts-library/singsing +sd-concepts-library/singsing-doll +sd-concepts-library/sintez-ico +sd-concepts-library/skyfalls +sd-concepts-library/slm +sd-concepts-library/smarties +sd-concepts-library/smiling-friend-style +sd-concepts-library/smooth-pencils +sd-concepts-library/smurf-style +sd-concepts-library/smw-map +sd-concepts-library/society-finch +sd-concepts-library/sorami-style +sd-concepts-library/spider-gwen +sd-concepts-library/spritual-monsters +sd-concepts-library/stable-diffusion-conceptualizer +sd-concepts-library/star-tours-posters +sd-concepts-library/stardew-valley-pixel-art +sd-concepts-library/starhavenmachinegods +sd-concepts-library/sterling-archer +sd-concepts-library/stretch-re1-robot +sd-concepts-library/stuffed-penguin-toy +sd-concepts-library/style-of-marc-allante +sd-concepts-library/summie-style +sd-concepts-library/sunfish +sd-concepts-library/super-nintendo-cartridge +sd-concepts-library/supitcha-mask +sd-concepts-library/sushi-pixel +sd-concepts-library/swamp-choe-2 +sd-concepts-library/t-skrang +sd-concepts-library/takuji-kawano +sd-concepts-library/tamiyo +sd-concepts-library/tangles +sd-concepts-library/tb303 +sd-concepts-library/tcirle +sd-concepts-library/teelip-ir-landscape +sd-concepts-library/teferi +sd-concepts-library/tela-lenca +sd-concepts-library/tela-lenca2 +sd-concepts-library/terraria-style +sd-concepts-library/tesla-bot +sd-concepts-library/test +sd-concepts-library/test-epson +sd-concepts-library/test2 +sd-concepts-library/testing +sd-concepts-library/thalasin +sd-concepts-library/thegeneral +sd-concepts-library/thorneworks +sd-concepts-library/threestooges +sd-concepts-library/thunderdome-cover +sd-concepts-library/thunderdome-covers +sd-concepts-library/ti-junglepunk-v0 +sd-concepts-library/tili-concept +sd-concepts-library/titan-robot +sd-concepts-library/tnj +sd-concepts-library/toho-pixel +sd-concepts-library/tomcat +sd-concepts-library/tonal1 +sd-concepts-library/tony-diterlizzi-s-planescape-art +sd-concepts-library/towerplace +sd-concepts-library/toy +sd-concepts-library/toy-bonnie-plush +sd-concepts-library/toyota-sera +sd-concepts-library/transmutation-circles +sd-concepts-library/trash-polka-artstyle +sd-concepts-library/travis-bedel +sd-concepts-library/trigger-studio +sd-concepts-library/trust-support +sd-concepts-library/trypophobia +sd-concepts-library/ttte +sd-concepts-library/tubby +sd-concepts-library/tubby-cats +sd-concepts-library/tudisco +sd-concepts-library/turtlepics +sd-concepts-library/type +sd-concepts-library/ugly-sonic +sd-concepts-library/uliana-kudinova +sd-concepts-library/uma +sd-concepts-library/uma-clean-object +sd-concepts-library/uma-meme +sd-concepts-library/uma-meme-style +sd-concepts-library/uma-style-classic +sd-concepts-library/unfinished-building +sd-concepts-library/urivoldemort +sd-concepts-library/uzumaki +sd-concepts-library/valorantstyle +sd-concepts-library/vb-mox +sd-concepts-library/vcr-classique +sd-concepts-library/venice +sd-concepts-library/vespertine +sd-concepts-library/victor-narm +sd-concepts-library/vietstoneking +sd-concepts-library/vivien-reid +sd-concepts-library/vkuoo1 +sd-concepts-library/vraska +sd-concepts-library/w3u +sd-concepts-library/walter-wick-photography +sd-concepts-library/warhammer-40k-drawing-style +sd-concepts-library/waterfallshadow +sd-concepts-library/wayne-reynolds-character +sd-concepts-library/wedding +sd-concepts-library/wedding-HandPainted +sd-concepts-library/werebloops +sd-concepts-library/wheatland +sd-concepts-library/wheatland-arknight +sd-concepts-library/wheelchair +sd-concepts-library/wildkat +sd-concepts-library/willy-hd +sd-concepts-library/wire-angels +sd-concepts-library/wish-artist-stile +sd-concepts-library/wlop-style +sd-concepts-library/wojak +sd-concepts-library/wojaks-now +sd-concepts-library/wojaks-now-now-now +sd-concepts-library/xatu +sd-concepts-library/xatu2 +sd-concepts-library/xbh +sd-concepts-library/xi +sd-concepts-library/xidiversity +sd-concepts-library/xioboma +sd-concepts-library/xuna +sd-concepts-library/xyz +sd-concepts-library/yb-anime +sd-concepts-library/yerba-mate +sd-concepts-library/yesdelete +sd-concepts-library/yf21 +sd-concepts-library/yilanov2 +sd-concepts-library/yinit +sd-concepts-library/yoji-shinkawa-style +sd-concepts-library/yolandi-visser +sd-concepts-library/yoshi +sd-concepts-library/youpi2 +sd-concepts-library/youtooz-candy +sd-concepts-library/yuji-himukai-style +sd-concepts-library/zaney +sd-concepts-library/zaneypixelz +sd-concepts-library/zdenek-art +sd-concepts-library/zero +sd-concepts-library/zero-bottle +sd-concepts-library/zero-suit-samus +sd-concepts-library/zillertal-can +sd-concepts-library/zizigooloo +sd-concepts-library/zk +sd-concepts-library/zoroark diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-finetune.yaml b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-finetune.yaml new file mode 100644 index 0000000..783a7f1 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-finetune.yaml @@ -0,0 +1,110 @@ +model: + base_learning_rate: 5.0e-03 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: image + cond_stage_key: caption + image_size: 64 + channels: 4 + cond_stage_trainable: true # Note: different from the one we trained before + conditioning_key: crossattn + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + embedding_reg_weight: 0.0 + + personalization_config: + target: ldm.modules.embedding_manager.EmbeddingManager + params: + placeholder_strings: ["*"] + initializer_words: ["sculpture"] + per_image_tokens: false + num_vectors_per_token: 1 + progressive_words: False + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 32 # unused + in_channels: 4 + out_channels: 4 + model_channels: 320 + attention_resolutions: [ 4, 2, 1 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 4, 4 ] + num_heads: 8 + use_spatial_transformer: True + transformer_depth: 1 + context_dim: 768 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + + cond_stage_config: + target: ldm.modules.encoders.modules.FrozenCLIPEmbedder + +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 2 + wrap: false + train: + target: ldm.data.personalized.PersonalizedBase + params: + size: 512 + set: train + per_image_tokens: false + repeats: 100 + validation: + target: ldm.data.personalized.PersonalizedBase + params: + size: 512 + set: val + per_image_tokens: false + repeats: 10 + +lightning: + modelcheckpoint: + params: + every_n_train_steps: 500 + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 8 + increase_log_steps: False + + trainer: + benchmark: True + max_steps: 4000000 +# max_steps: 4000 + diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-finetune_style.yaml b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-finetune_style.yaml new file mode 100644 index 0000000..1964d92 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-finetune_style.yaml @@ -0,0 +1,103 @@ +model: + base_learning_rate: 5.0e-03 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: image + cond_stage_key: caption + image_size: 64 + channels: 4 + cond_stage_trainable: true # Note: different from the one we trained before + conditioning_key: crossattn + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + embedding_reg_weight: 0.0 + + personalization_config: + target: ldm.modules.embedding_manager.EmbeddingManager + params: + placeholder_strings: ["*"] + initializer_words: ["painting"] + per_image_tokens: false + num_vectors_per_token: 1 + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 32 # unused + in_channels: 4 + out_channels: 4 + model_channels: 320 + attention_resolutions: [ 4, 2, 1 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 4, 4 ] + num_heads: 8 + use_spatial_transformer: True + transformer_depth: 1 + context_dim: 768 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + + cond_stage_config: + target: ldm.modules.encoders.modules.FrozenCLIPEmbedder + +data: + target: main.DataModuleFromConfig + params: + batch_size: 2 + num_workers: 16 + wrap: false + train: + target: ldm.data.personalized_style.PersonalizedBase + params: + size: 512 + set: train + per_image_tokens: false + repeats: 100 + validation: + target: ldm.data.personalized_style.PersonalizedBase + params: + size: 512 + set: val + per_image_tokens: false + repeats: 10 + +lightning: + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 8 + increase_log_steps: False + + trainer: + benchmark: True \ No newline at end of file diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-inference.yaml b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-inference.yaml new file mode 100644 index 0000000..d872404 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-inference.yaml @@ -0,0 +1,79 @@ +model: + base_learning_rate: 1.0e-04 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: "jpg" + cond_stage_key: "txt" + image_size: 64 + channels: 4 + cond_stage_trainable: false # Note: different from the one we trained before + conditioning_key: crossattn + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + + scheduler_config: # 10000 warmup steps + target: ldm.lr_scheduler.LambdaLinearScheduler + params: + warm_up_steps: [ 10000 ] + cycle_lengths: [ 10000000000000 ] # incredibly large number to prevent corner cases + f_start: [ 1.e-6 ] + f_max: [ 1. ] + f_min: [ 1. ] + + personalization_config: + target: ldm.modules.embedding_manager.EmbeddingManager + params: + placeholder_strings: ["*"] + initializer_words: ['sculpture'] + per_image_tokens: false + num_vectors_per_token: 1 + progressive_words: False + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 32 # unused + in_channels: 4 + out_channels: 4 + model_channels: 320 + attention_resolutions: [ 4, 2, 1 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 4, 4 ] + num_heads: 8 + use_spatial_transformer: True + transformer_depth: 1 + context_dim: 768 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + + cond_stage_config: + target: ldm.modules.encoders.modules.WeightedFrozenCLIPEmbedder diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-inpainting-inference.yaml b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-inpainting-inference.yaml new file mode 100644 index 0000000..2d25b8a --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-inpainting-inference.yaml @@ -0,0 +1,79 @@ +model: + base_learning_rate: 7.5e-05 + target: ldm.models.diffusion.ddpm.LatentInpaintDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: "jpg" + cond_stage_key: "txt" + image_size: 64 + channels: 4 + cond_stage_trainable: false # Note: different from the one we trained before + conditioning_key: hybrid # important + monitor: val/loss_simple_ema + scale_factor: 0.18215 + finetune_keys: null + + scheduler_config: # 10000 warmup steps + target: ldm.lr_scheduler.LambdaLinearScheduler + params: + warm_up_steps: [ 2500 ] # NOTE for resuming. use 10000 if starting from scratch + cycle_lengths: [ 10000000000000 ] # incredibly large number to prevent corner cases + f_start: [ 1.e-6 ] + f_max: [ 1. ] + f_min: [ 1. ] + + personalization_config: + target: ldm.modules.embedding_manager.EmbeddingManager + params: + placeholder_strings: ["*"] + initializer_words: ['sculpture'] + per_image_tokens: false + num_vectors_per_token: 8 + progressive_words: False + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 32 # unused + in_channels: 9 # 4 data + 4 downscaled image + 1 mask + out_channels: 4 + model_channels: 320 + attention_resolutions: [ 4, 2, 1 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 4, 4 ] + num_heads: 8 + use_spatial_transformer: True + transformer_depth: 1 + context_dim: 768 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + + cond_stage_config: + target: ldm.modules.encoders.modules.WeightedFrozenCLIPEmbedder diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-m1-finetune.yaml b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-m1-finetune.yaml new file mode 100644 index 0000000..f2d5ddd --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/rootdir/configs/stable-diffusion/v1-m1-finetune.yaml @@ -0,0 +1,110 @@ +model: + base_learning_rate: 5.0e-03 + target: ldm.models.diffusion.ddpm.LatentDiffusion + params: + linear_start: 0.00085 + linear_end: 0.0120 + num_timesteps_cond: 1 + log_every_t: 200 + timesteps: 1000 + first_stage_key: image + cond_stage_key: caption + image_size: 64 + channels: 4 + cond_stage_trainable: true # Note: different from the one we trained before + conditioning_key: crossattn + monitor: val/loss_simple_ema + scale_factor: 0.18215 + use_ema: False + embedding_reg_weight: 0.0 + + personalization_config: + target: ldm.modules.embedding_manager.EmbeddingManager + params: + placeholder_strings: ["*"] + initializer_words: ['sculpture'] + per_image_tokens: false + num_vectors_per_token: 6 + progressive_words: False + + unet_config: + target: ldm.modules.diffusionmodules.openaimodel.UNetModel + params: + image_size: 32 # unused + in_channels: 4 + out_channels: 4 + model_channels: 320 + attention_resolutions: [ 4, 2, 1 ] + num_res_blocks: 2 + channel_mult: [ 1, 2, 4, 4 ] + num_heads: 8 + use_spatial_transformer: True + transformer_depth: 1 + context_dim: 768 + use_checkpoint: True + legacy: False + + first_stage_config: + target: ldm.models.autoencoder.AutoencoderKL + params: + embed_dim: 4 + monitor: val/rec_loss + ddconfig: + double_z: true + z_channels: 4 + resolution: 256 + in_channels: 3 + out_ch: 3 + ch: 128 + ch_mult: + - 1 + - 2 + - 4 + - 4 + num_res_blocks: 2 + attn_resolutions: [] + dropout: 0.0 + lossconfig: + target: torch.nn.Identity + + cond_stage_config: + target: ldm.modules.encoders.modules.FrozenCLIPEmbedder + +data: + target: main.DataModuleFromConfig + params: + batch_size: 1 + num_workers: 2 + wrap: false + train: + target: ldm.data.personalized.PersonalizedBase + params: + size: 512 + set: train + per_image_tokens: false + repeats: 100 + validation: + target: ldm.data.personalized.PersonalizedBase + params: + size: 512 + set: val + per_image_tokens: false + repeats: 10 + +lightning: + modelcheckpoint: + params: + every_n_train_steps: 500 + callbacks: + image_logger: + target: main.ImageLogger + params: + batch_frequency: 500 + max_images: 5 + increase_log_steps: False + + trainer: + benchmark: False + max_steps: 6200 +# max_steps: 4000 + diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/update.bat.in b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/update.bat.in new file mode 100644 index 0000000..307a269 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/update.bat.in @@ -0,0 +1,70 @@ +@echo off +setlocal EnableExtensions EnableDelayedExpansion + +PUSHD "%~dp0" + +set INVOKE_AI_VERSION=latest +set arg=%1 +if "%arg%" neq "" ( + if "%arg:~0,2%" equ "/?" ( + echo Usage: update.bat ^ + echo Updates InvokeAI to use the indicated version of the code base. + echo Find the version or branch for the release you want, and pass it as the argument. + echo For example '.\update.bat v2.2.5' for release 2.2.5. + echo '.\update.bat main' for the latest development version + echo. + echo If no argument provided then will install the most recent release, equivalent to + echo '.\update.bat latest' + exit /b + ) else ( + set INVOKE_AI_VERSION=%arg% + ) +) + +set INVOKE_AI_SRC="https://github.com/invoke-ai/InvokeAI/archive/!INVOKE_AI_VERSION!.zip" +set INVOKE_AI_DEP=https://raw.githubusercontent.com/invoke-ai/InvokeAI/!INVOKE_AI_VERSION!/environments-and-requirements/requirements-base.txt + +call curl -I "%INVOKE_AI_DEP%" -fs >.tmp.out +if %errorlevel% neq 0 ( + echo '!INVOKE_AI_VERSION!' is not a known branch name or tag. Please check the version and try again. + echo "Press any key to continue" + pause + exit /b +) +del .tmp.out + +echo This script will update InvokeAI and all its dependencies to !INVOKE_AI_SRC!. +echo If you do not want to do this, press control-C now! +pause + +call curl -L "%INVOKE_AI_DEP%" > environments-and-requirements/requirements-base.txt + +call .venv\Scripts\activate.bat +call .venv\Scripts\python -mpip install -r requirements.txt +if %errorlevel% neq 0 ( + echo Installation of requirements failed. See https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/#troubleshooting for suggestions. + pause + exit /b +) + +call .venv\Scripts\python -mpip install !INVOKE_AI_SRC! +if %errorlevel% neq 0 ( + echo Installation of InvokeAI failed. See https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/#troubleshooting for suggestions. + pause + exit /b +) + +@rem call .venv\Scripts\python .venv\Scripts\configure_invokeai.py --root=. + +@rem if %errorlevel% neq 0 ( +@rem echo Configuration InvokeAI failed. See https://invoke-ai.github.io/InvokeAI/installation/INSTALL_AUTOMATED/#troubleshooting for suggestions. +@rem pause +@rem exit /b +@rem ) + +echo InvokeAI has been updated to '%INVOKE_AI_VERSION%' + +echo "Press any key to continue" +pause +endlocal + diff --git a/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/update.sh.in b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/update.sh.in new file mode 100644 index 0000000..2f45926 --- /dev/null +++ b/InvokeAI/files/opt/invokeai/InvokeAI-Installer/templates/update.sh.in @@ -0,0 +1,59 @@ +#!/usr/bin/env bash + +set -eu + +if [ $# -ge 1 ] && [ "${1:0:2}" == "-h" ]; then + echo "Usage: update.sh " + echo "Updates InvokeAI to use the indicated version of the code base." + echo "Find the version or branch for the release you want, and pass it as the argument." + echo "For example: update.sh v2.2.5 for release 2.2.5." + echo " update.sh main for the current development version." + echo "" + echo "If no argument provided then will install the version tagged with 'latest', equivalent to" + echo "update.sh latest" + exit -1 +fi + +INVOKE_AI_VERSION=${1:-latest} + +INVOKE_AI_SRC="https://github.com/invoke-ai/InvokeAI/archive/$INVOKE_AI_VERSION.zip" +INVOKE_AI_DEP=https://raw.githubusercontent.com/invoke-ai/InvokeAI/$INVOKE_AI_VERSION/environments-and-requirements/requirements-base.txt + +# ensure we're in the correct folder in case user's CWD is somewhere else +scriptdir=$(dirname "$0") +cd "$scriptdir" + +function _err_exit { + if test "$1" -ne 0 + then + echo "Something went wrong while installing InvokeAI and/or its requirements." + echo "Update cannot continue. Please report this error to https://github.com/invoke-ai/InvokeAI/issues" + echo -e "Error code $1; Error caught was '$2'" + read -p "Press any key to exit..." + exit + fi +} + +if ! curl -I "$INVOKE_AI_DEP" -fs >/dev/null; then + echo \'$INVOKE_AI_VERSION\' is not a known branch name or tag. Please check the version and try again. + exit +fi + +echo This script will update InvokeAI and all its dependencies to version \'$INVOKE_AI_VERSION\'. +echo If you do not want to do this, press control-C now! +read -p "Press any key to continue, or CTRL-C to exit..." + +curl -L "$INVOKE_AI_DEP" > environments-and-requirements/requirements-base.txt + +. .venv/bin/activate + +./.venv/bin/python -mpip install -r requirements.txt +_err_exit $? "The pip program failed to install InvokeAI's requirements." + +./.venv/bin/python -mpip install $INVOKE_AI_SRC +_err_exit $? "The pip program failed to install InvokeAI." + +echo InvokeAI updated to \'$INVOKE_AI_VERSION\' + +# ./.venv/bin/python .venv/bin/configure_invokeai.py --root . +# _err_exit $? "The configure script failed to run successfully." diff --git a/coredns/Makefile b/coredns/Makefile index 29bfcee..53a9298 100644 --- a/coredns/Makefile +++ b/coredns/Makefile @@ -1,3 +1,5 @@ +.PHONY: control + # debian files were taking from upstream: # git clone https://github.com/coredns/debian.git