From db95107fed124fe9d142bac6df0d09022d601eb7 Mon Sep 17 00:00:00 2001 From: Sean Sube Date: Sun, 26 Mar 2023 22:08:12 -0500 Subject: [PATCH] chore(docs): update features, link to user guide --- README.md | 106 ++++++++++++++++++++++++++++++++++++--------- docs/user-guide.md | 10 +++++ 2 files changed, 96 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 0589ddb3..53829d4f 100644 --- a/README.md +++ b/README.md @@ -20,25 +20,37 @@ Please [see the User Guide](https://github.com/ssube/onnx-web/blob/main/docs/use ## Features -- AMD and Nvidia hardware acceleration using CUDA, DirectML, or ROCm +This is an incomplete list of new and interesting features, with links to the user guide: + +- hardware acceleration on both AMD and Nvidia + - [tested on CUDA, DirectML, and ROCm](#install-pip-packages) + - [half-precision support for low-memory GPUs](docs/user-guide.md#optimizing-models-for-lower-memory-usage) + - fallback for CPU-only systems - web app to generate and view images - [hosted on Github Pages](https://ssube.github.io/onnx-web), from your CDN, or locally - - keeps your recent images and progress as you change tabs - - queue up multiple images -- convert and load your own models - - directly supports HuggingFace Hub and Civitai - - supports LoRA with [an extra conversion step](./docs/converting-models.md) + - [persists your recent images and progress as you change tabs](docs/user-guide.md#image-history) + - queue up multiple images and retry errors - supports many `diffusers` pipelines - - txt2img - - img2img - - inpainting - - upscale (with ONNX acceleration) - - long prompt weighting -- blending mode for combining images + - [txt2img](docs/user-guide.md#txt2img-tab) + - [img2img](docs/user-guide.md#img2img-tab) + - [inpainting](docs/user-guide.md#inpaint-tab), with mask drawing and upload + - [upscaling](docs/user-guide.md#upscale-tab), with ONNX acceleration +- [add and use your own models](docs/user-guide.md#adding-your-own-models) + - [convert models from diffusers and SD checkpoints](docs/converting-models.md) + - [download models from HuggingFace hub, Civitai, and HTTPS sources](docs/user-guide.md#model-sources) +- blend in additional networks + - [permanent and prompt-based blending](docs/user-guide.md#permanently-blending-additional-networks) + - [supports LoRA weights](docs/user-guide.md#lora-tokens) + - [supports Textual Inversion concepts and embeddings](docs/user-guide.md#textual-inversion-tokens) +- infinite prompt length + - [with long prompt weighting](docs/user-guide.md#long-prompt-weighting) + - expand and control Textual Inversions per-layer +- [image blending mode](docs/user-guide.md#blend-tab) + - combine images from history - upscaling and face correction - upscaling with Real ESRGAN or Stable Diffusion - face correction with CodeFormer or GFPGAN -- API server can run models on a remote GPU +- [API server can be run remotely](docs/server-admin.md) - REST API can be served over HTTPS or HTTP - background processing for all image pipelines - polling for image status, plays nice with load balancers @@ -322,24 +334,77 @@ Diffusion v2 models. #### Converting your own models -You can include your own models in the conversion script without making any code changes. +You can include your own models in the conversion script without making any code changes and download additional +networks to blend during conversion or by using prompt tokens. For more details, please [see the user guide +](./docs/user-guide.md#adding-your-own-models). Make a copy of the `api/extras.json` file and edit it to include the models you want to download and convert: ```json { "diffusion": [ - ["diffusion-knollingcase", "Aybeeceedee/knollingcase"], - ["diffusion-openjourney", "prompthero/openjourney"] + { + "name": "diffusion-knollingcase", + "label": "Knollingcase", + "source": "Aybeeceedee/knollingcase" + }, + { + "name": "diffusion-openjourney", + "source": "prompthero/openjourney" + }, + { + "name": "diffusion-stablydiffused-aesthetic-v2-6", + "label": "Stably Diffused Aesthetic Mix v2.6", + "source": "civitai://6266?type=Pruned%20Model&format=SafeTensor", + "format": "safetensors" + }, + { + "name": "diffusion-unstable-ink-dream-v6", + "label": "Unstable Ink Dream v6", + "source": "civitai://5796", + "format": "safetensors" + }, + { + "name": "sonic-diffusion-v1-5", + "source": "runwayml/stable-diffusion-v1-5", + "inversions": [ + { + "name": "ugly-sonic", + "source": "huggingface://sd-concepts-library/ugly-sonic", + "model": "concept" + } + ] + } ], "correction": [], - "upscaling": [] + "upscaling": [], + "networks": [ + { + "name": "cubex", + "source": "huggingface://sd-concepts-library/cubex", + "label": "Cubex", + "model": "concept", + "type": "inversion" + }, + { + "name": "birb", + "source": "huggingface://sd-concepts-library/birb-style", + "label": "Birb", + "model": "concept", + "type": "inversion" + }, + { + "name": "minecraft", + "source": "huggingface://sd-concepts-library/minecraft-concept-art", + "label": "Minecraft Concept", + "model": "concept", + "type": "inversion" + }, + ], + "sources": [] } ``` -Models based on Stable Diffusion typically need to be in the `diffusion` category, including the Stable Diffusion -upscaling model. For more details, please [see the user guide](./docs/user-guide.md#adding-your-own-models). - Set the `ONNX_WEB_EXTRA_MODELS` environment variable to the path to your new `extras.json` file before running the launch script: @@ -538,5 +603,6 @@ Getting this set up and running on AMD would not have been possible without guid There are many other good options for using Stable Diffusion with hardware acceleration, including: - https://github.com/azuritecoin/OnnxDiffusersUI +- https://github.com/ForserX/StableDiffusionUI - https://github.com/pingzing/stable-diffusion-playground - https://github.com/quickwick/stable-diffusion-win-amd-ui diff --git a/docs/user-guide.md b/docs/user-guide.md index 670d997e..8cbab5a5 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -33,6 +33,7 @@ Please see [the server admin guide](server-admin.md) for details on how to confi - [LoRA tokens](#lora-tokens) - [Textual Inversion tokens](#textual-inversion-tokens) - [CLIP skip tokens](#clip-skip-tokens) + - [Long prompt weighting](#long-prompt-weighting) - [Tabs](#tabs) - [Txt2img tab](#txt2img-tab) - [Scheduler parameter](#scheduler-parameter) @@ -67,6 +68,7 @@ Please see [the server admin guide](server-admin.md) for details on how to confi - [Downloading models from Civitai](#downloading-models-from-civitai) - [Downloading models from HuggingFace](#downloading-models-from-huggingface) - [Using a custom VAE](#using-a-custom-vae) + - [Optimizing models for lower memory usage](#optimizing-models-for-lower-memory-usage) - [Permanently blending additional networks](#permanently-blending-additional-networks) - [Extras file format](#extras-file-format) - [Known errors](#known-errors) @@ -279,6 +281,10 @@ You can skip the last layers of the CLIP text encoder using the `clip` token: This makes your prompt less specific and some models have been trained to work better with some amount of skipping. +### Long prompt weighting + +TODO + ## Tabs ### Txt2img tab @@ -705,6 +711,10 @@ Some common VAE models include: - https://huggingface.co/stabilityai/sd-vae-ft-mse - https://huggingface.co/stabilityai/sd-vae-ft-mse-original +### Optimizing models for lower memory usage + +TODO + ### Permanently blending additional networks TODO