diff --git a/.gitignore b/.gitignore index 6df029445..10bdd7608 100644 --- a/.gitignore +++ b/.gitignore @@ -51,7 +51,7 @@ build/ dist/ # dynamically generated -/repositories/ip-instruct/ +/repositories/deepseek-vl2/ # all dynamic stuff /extensions/**/* diff --git a/.gitmodules b/.gitmodules index 3f8f26a67..0ba9aa44c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -23,5 +23,5 @@ url = https://github.com/ArtVentureX/sd-webui-agent-scheduler ignore = dirty [submodule "extensions-builtin/sdnext-modernui"] - path = extensions-builtin/sdnext-modernui - url = https://github.com/BinaryQuantumSoul/sdnext-modernui + path = extensions-builtin/sdnext-modernui + url = https://github.com/BinaryQuantumSoul/sdnext-modernui diff --git a/.pylintrc b/.pylintrc index 78361f7c4..b472d26a0 100644 --- a/.pylintrc +++ b/.pylintrc @@ -23,12 +23,14 @@ ignore-paths=/usr/lib/.*$, modules/k-diffusion, modules/ldsr, modules/meissonic, + modules/mod, modules/omnigen, modules/onnx_impl, modules/pag, modules/pixelsmith, modules/prompt_parser_xhinker.py, modules/pulid/eva_clip, + modules/ras, modules/rife, modules/schedulers, modules/taesd, diff --git a/.ruff.toml b/.ruff.toml index 89bd1586d..8e3d13e64 100644 --- a/.ruff.toml +++ b/.ruff.toml @@ -17,12 +17,14 @@ exclude = [ "modules/k-diffusion", "modules/ldsr", "modules/meissonic", + "modules/mod", "modules/omnigen", "modules/pag", "modules/pixelsmith", "modules/postprocess/aurasr_arch.py", "modules/prompt_parser_xhinker.py", "modules/pulid/eva_clip", + "modules/ras", "modules/rife", "modules/schedulers", "modules/segmoe", diff --git a/CHANGELOG.md b/CHANGELOG.md index 212a0402d..d810b7ed2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,146 @@ # Change Log for SD.Next +## Update for 2025-02-20 + +### Highlight for 2025-02-20 + +We're back with another update with nearly 100 commits! +- Starting with massive UI update with full [localization](https://vladmandic.github.io/sdnext-docs/Locale/) for 8 languages + and 100+ new [hints](https://vladmandic.github.io/sdnext-docs/Hints/) +- Big update to [Docker](https://vladmandic.github.io/sdnext-docs/Docker/) containers + with support for all major compute platforms +- A lot of [outpainting](https://vladmandic.github.io/sdnext-docs/Outpaint/) goodies +- Support for new models: [AlphaVLLM Lumina 2](https://github.com/Alpha-VLLM/Lumina-Image-2.0) and [Ostris Flex.1-Alpha](https://huggingface.co/ostris/Flex.1-alpha) +- And new **Mixture-of-Diffusers** regional prompting & tiling pipeline +- Follow-up to last weeks **interrogate/captioning** rewrite + now with redesigned captioning UI, batch support, and much more + plus **JoyTag**, **JoyCaption**, **PaliGemma**, **ToriiGate**, **Ovis2** added to list of supported models +- Some changes to **prompt parsing** to allow more control as well as + more flexibility when mouting SDNext server to custom URL +- Of course, cumulative fixes... + +*...and more* - see [changelog](https://github.com/vladmandic/sdnext/blob/dev/CHANGELOG.md) for full details! + +### Details for 2025-02-20 + +- **User Interface** + - **Hints** + - added/updated 100+ ui hints! + - [hints](https://vladmandic.github.io/sdnext-docs/Hints/) documentation and contribution guide + - **Localization** + - full ui localization! + *english, croatian, spanish, french, italian, portuguese, chinese, japanese, korean, russian* + - set in *settings -> user interface -> language* + - [localization](https://vladmandic.github.io/sdnext-docs/Locale/) documentation + - **UI** + - force browser cache-invalidate on page load + - configurable request timeout + - modernui improve gallery styling + - modernui improve networks styling + - modernui support variable card size +- **Docs** + - New [Outpaint](https://vladmandic.github.io/sdnext-docs/Outpaint/) step-by-step guide + - Updated [Docker](https://github.com/vladmandic/sdnext/wiki/Docker) guide + includes build and publish and both local and cloud examples +- **Models** + - [AlphaVLLM Lumina 2](https://github.com/Alpha-VLLM/Lumina-Image-2.0) + new foundation model for image generation based o Gemma-2-2B text encoder and a flow-based diffusion transformer + fully supports offloading and on-the-fly quantization + simply select from *networks -> models -> reference* + - [Ostris Flex.1-Alpha](https://huggingface.co/ostris/Flex.1-alpha) + originally based on *Flux.1-Schnell*, but retrained and with different architecture + result is model smaller than *Flux.1-Dev*, but with similar capabilities + fully supports offloading and on-the-fly quantization + simply select from *networks -> models -> reference* +- **Functions** + - [Mixture-of-Diffusers](https://huggingface.co/posts/elismasilva/251775641926329) + Regional tiling type of a solution for SDXL models + select from *scripts -> mixture of diffusers* + - [Automatic Color Inpaint] + Automatically creates mask based on selected color and triggers inpaint + simply select in *scripts -> automatic color inpaint* when in img2img mode + - [RAS: Region-Adaptive Sampling](https://github.com/microsoft/RAS) *experimental* + Speeds up SD3.5 models by sampling only regions of interest + Enable in *settings -> pipeline modifiers -> ras* +- **Interrogate/Captioning** + - Redesigned captioning UI + split from Process tab into separate tab + split `clip` vs `vlm` models processing + direct *send-to* buttons on all tabs: txt/img/ctrl->process/caption, process/caption->txt/img/ctrl + - Advanced params: + VLM: *max-tokens, num-beams, temperature, top-k, top-p, do-sample* + CLiP: *min-length, max-length, chunk-size, min-flavors, max-flavors, flavor-count, num-beams* + params are auto-saved in `config.json` and used when using quick interrogate + params that are set to 0 mean use model defaults + - Batch processing: VLM and CLiP + for example, can be used to caption your training dataset in one go + add option to append to captions file, can be used to run multiple captioning models in sequence + add option to run recursively on all subfolders + add progress bar + - Add additional VLM models: + [JoyTag](https://huggingface.co/fancyfeast/joytag) + [JoyCaption 2](https://huggingface.co/fancyfeast/llama-joycaption-alpha-two-hf-llava) + [Google PaliGemma 2](https://huggingface.co/google/paligemma2-3b-pt-224) 3B + [ToriiGate 0.4](https://huggingface.co/Minthy/ToriiGate-v0.4-7B) 7B + [AIDC Ovis2](https://huggingface.co/AIDC-AI/Ovis2-1B) 1B/2B/4B + - *Note* some models require `flash-attn` to be installed + due to binary/build dependencies, it should not be done automatically, + see [flash-attn](https://github.com/Dao-AILab/flash-attention) for installation instructions +- **Docker** + - updated **CUDA** receipe to `torch==2.6.0` with `cuda==12.6` and add prebuilt image + - added **ROCm** receipe and prebuilt image + - added **IPEX** receipe and add prebuilt image + - added **OpenVINO** receipe and prebuilt image +- **System** + - improve **python==3.12** compatibility + - **Torch** + - for **zluda** set default to `torch==2.6.0+cu118` + - for **openvino** set default to `torch==2.6.0+cpu` + - **OpenVINO** + - update to `openvino==2025.0.0` + - improve upscaler compatibility + - enable upscaler compile by default + - fix shape mismatch errors on too many resolution changes + - **ZLUDA** + - update to `zluda==3.8.8` +- **Other** + - **Asymmetric tiling** + allows for configurable image tiling for x/y axis separately + enable in *scripts -> asymmetric tiling* + *note*: traditional symmetric tiling is achieved by setting circular mode for both x and y + - **Styles** + ability to save and/or restore prompts before or after parsing of wildcards + set in *settings -> networks -> styles* + - **Access tokens** + persist *models -> hugginface -> token* + persist *models -> civitai -> token* + - global switch to lancosz method for all interal resize ops and bicubic for interpolation ops + - **Text encoder** + add advanced per-model options for text encoder + set in *settings -> text encoder -> Optional* + - **Subpath** + allow setting additional mount subpath over which server url will be accessible + set in *settings -> user interface* + - **Prompt parsing** + better handling of prompt parsing when using masking char `\` +- **Fixes** + - update torch nightly urls + - docs/wiki always use relative links + - ui use correct timezone for log display + - ui improve settings search behavior + - ui log scroll to bottom + - ui fix send to inpaint/sketch + - modernui add control init image toggle + - modernui fix sampler advanced options + - outpaint fixes + - validate output before hires/refine + - scheduler fix sigma index out of bounds + - force pydantic version reinstall/reload + - multi-unit when using controlnet-union + - pulid with hidiffusion + - api: stricter access control + - api: universal handle mount subpaths + ## Update for 2025-02-05 - refresh dev/master branches diff --git a/README.md b/README.md index e2277d309..4331f85ca 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,8 @@ ## SD.Next Features All individual features are not listed here, instead check [ChangeLog](CHANGELOG.md) for full list of changes +- Fully localized: + ▹ **English | Chinese | Russian | Spanish | German | French | Italian | Portuguese | Japanese | Korean** - Multiple UIs! ▹ **Standard | Modern** - Multiple [diffusion models](https://vladmandic.github.io/sdnext-docs/Model-Support/)! @@ -34,6 +36,7 @@ All individual features are not listed here, instead check [ChangeLog](CHANGELOG - Optimized processing with latest `torch` developments with built-in support for model compile, quantize and compress Compile backends: *Triton | StableFast | DeepCache | OneDiff | TeaCache | etc.* Quantization and compression methods: *BitsAndBytes | TorchAO | Optimum-Quanto | NNCF* +- **Interrogate/Captioning** with 150+ **OpenCLiP** models and 20+ built-in **VLMs** - Built-in queue management - Built in installer with automatic updates and dependency management - Mobile compatible @@ -68,6 +71,8 @@ SD.Next supports broad range of models: [supported models](https://vladmandic.gi - *ONNX/Olive* - *AMD* GPUs on Windows using **ZLUDA** libraries +Plus Docker container receipes for: [CUDA, ROCm, Intel IPEX and OpenVINO](https://vladmandic.github.io/sdnext-docs/Docker/) + ## Getting started - Get started with **SD.Next** by following the [installation instructions](https://vladmandic.github.io/sdnext-docs/Installation/) diff --git a/TODO.md b/TODO.md index 59261c542..69606a375 100644 --- a/TODO.md +++ b/TODO.md @@ -2,29 +2,26 @@ Main ToDo list can be found at [GitHub projects](https://github.com/users/vladmandic/projects) -## Pending - -- LoRA direct with caching -- Previewer issues -- Redesign postprocessing - ## Future Candidates -- Flux NF4 loader: -- IPAdapter negative: -- Control API enhance scripts compatibility -- PixelSmith: +- Redesign postprocessing +- Flux NF4 loader: +- IPAdapter negative: +- Control API enhance scripts compatibility +- CogView4 ## Code TODO -- TODO install: enable ROCm for windows when available -- TODO resize image: enable full VAE mode for resize-latent -- TODO processing: remove duplicate mask params -- TODO flux: fix loader for civitai nf4 models -- TODO model loader: implement model in-memory caching -- TODO hypertile: vae breaks when using non-standard sizes -- TODO model load: force-reloading entire model as loading transformers only leads to massive memory usage -- TODO lora load: direct with bnb -- TODO lora make: support quantized flux -- TODO control: support scripts via api -- TODO modernui: monkey-patch for missing tabs.select event +- flux: loader for civitai nf4 models (fixme) +- hypertile: vae breaks when using non-standard sizes (fixme) +- install: enable ROCm for windows when available (fixme) +- lora make support quantized flux (fixme) +- lora: add other quantization types (fixme) +- model load: force-reloading entire model as loading transformers only leads to massive memory usage (fixme) +- model loader: implement model in-memory caching (fixme) +- modernui: monkey-patch for missing tabs.select event (fixme) +- processing: remove duplicate mask params (fixme) +- resize image: enable full VAE mode for resize-latent (fixme) +- sana: fails when quantized (fixme) +- support scripts via api (fixme) +- transformer from-single-file with quant (fixme) diff --git a/cli/image-interrogate.py b/cli/api-interrogate.py similarity index 100% rename from cli/image-interrogate.py rename to cli/api-interrogate.py diff --git a/cli/hf-convert.py b/cli/hf-convert.py deleted file mode 100755 index eeefdce5e..000000000 --- a/cli/hf-convert.py +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env python - -import os -import sys -import logging -import torch -import diffusers -import safetensors -import safetensors.torch as sf - -log = logging.getLogger("sd") -logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)s | %(message)s') - - -def convert(model_id, output_name): - if os.path.exists(output_name): - log.error(f'Output already exists: {output_name}') - return - pipe = diffusers.DiffusionPipeline.from_pretrained(model_id) - metadata = { 'model_id': model_id } - model = {} - model['state_dict'] = vars(pipe)['_internal_dict'] - for k in model['state_dict'].keys(): - # print(k, getattr(pipe, k)) - model[k] = getattr(pipe, k) - sf.save_model(model, output_name, metadata=metadata) - # log.info(f'Saved model: {output_name}') - -if __name__ == "__main__": - sys.argv.pop(0) - if len(sys.argv) < 2: - log.info('Usage: hf-convert.py ') - sys.exit(1) - log.debug(f'Packages: torch={torch.__version__} diffusers={diffusers.__version__} safetensors={safetensors.__version__}') - convert(sys.argv[0], sys.argv[1]) diff --git a/cli/image-encode.py b/cli/image-encode.py index 0769c2544..832c50b14 100755 --- a/cli/image-encode.py +++ b/cli/image-encode.py @@ -29,4 +29,3 @@ if __name__ == "__main__": print('=== BEGIN ===') print(f'{b64}') print('=== END ===') - diff --git a/cli/locale-sanitize-override.py b/cli/locale-sanitize-override.py new file mode 100755 index 000000000..98e43ae9e --- /dev/null +++ b/cli/locale-sanitize-override.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python + +# Remove the entries that no longer exist in locale from override. + +import sys +import json +from rich import print # pylint: disable=redefined-builtin + +if __name__ == "__main__": + sys.argv.pop(0) + if len(sys.argv) == 0: + print('Invalid parameters.') + sys.exit(1) + filename = sys.argv[0] + labels = [] + override = None + try: + with open('html/locale_en.json', 'r', encoding="utf-8") as f: + locale = json.load(f) + for v in locale.values(): + for item in v: + labels.append(item['label']) + with open(filename, 'r', encoding="utf-8") as f: + override = json.load(f) + except Exception: + print('Invalid file format.') + sys.exit(1) + with open(filename, 'w', encoding="utf-8") as f: + json.dump([item for item in override if item['label'] in labels], f, ensure_ascii=False) diff --git a/cli/localize.js b/cli/localize.js new file mode 100755 index 000000000..2ea52c718 --- /dev/null +++ b/cli/localize.js @@ -0,0 +1,66 @@ +#!/usr/bin/env node +// script used to localize sdnext ui and hints to multiple languages using google gemini ai + +const fs = require('fs'); +const process = require('process'); +const { GoogleGenerativeAI } = require('@google/generative-ai'); + +const api_key = process.env.GOOGLE_AI_API_KEY; +const model = 'gemini-2.0-flash-exp'; +const prompt = ` +Translate attached JSON from English to {language} using following rules: fields id and label should be preserved from original, field localized should be a translated version of field label and field hint should be translated in-place. +Every JSON entry should have id, label, localized and hint fields. Output should be pure JSON without any additional text. To better match translation, context of the text is related to Stable Diffusion and topic of Generative AI.`; +const languages = { + hr: 'Croatian', + de: 'German', + es: 'Spanish', + fr: 'French', + it: 'Italian', + pt: 'Portuguese', + zh: 'Chinese', + ja: 'Japanese', + ko: 'Korean', + ru: 'Russian', +}; +const chunkLines = 100; + +async function localize() { + if (!api_key || api_key.length < 10) { + console.error('localize: set GOOGLE_AI_API_KEY env variable with your API key'); + process.exit(); + } + const genAI = new GoogleGenerativeAI(api_key); + const instance = genAI.getGenerativeModel({ model }); + const raw = fs.readFileSync('html/locale_en.json'); + const json = JSON.parse(raw); + for (const locale of Object.keys(languages)) { + const lang = languages[locale]; + const target = prompt.replace('{language}', lang).trim(); + const output = {}; + const fn = `html/locale_${locale}.json`; + for (const section of Object.keys(json)) { + const data = json[section]; + output[section] = []; + for (let i = 0; i < data.length; i += chunkLines) { + let markdown; + try { + const chunk = data.slice(i, i + chunkLines); + const result = await instance.generateContent([target, JSON.stringify(chunk)]); + markdown = result.response.text(); + const text = markdown.replaceAll('```', '').replace(/^.*\n/, ''); + const parsed = JSON.parse(text); + output[section].push(...parsed); + console.log(`localize: locale=${locale} lang=${lang} section=${section} chunk=${chunk.length} output=${output[section].length} fn=${fn}`); + } catch (err) { + console.error('localize:', err); + console.error('localize input:', { target, section, i }); + console.error('localize output:', { markdown }); + } + } + const txt = JSON.stringify(output, null, 2); + fs.writeFileSync(fn, txt); + } + } +} + +localize(); diff --git a/cli/validate-locale.py b/cli/validate-locale.py index b5dd48ba7..8ac104334 100755 --- a/cli/validate-locale.py +++ b/cli/validate-locale.py @@ -7,7 +7,7 @@ from rich import print # pylint: disable=redefined-builtin if __name__ == "__main__": sys.argv.pop(0) - fn = sys.argv[0] if len(sys.argv) > 0 else 'locale_en.json' + fn = sys.argv[0] if len(sys.argv) > 0 else 'html/locale_en.json' if not os.path.isfile(fn): print(f'File not found: {fn}') sys.exit(1) diff --git a/Dockerfile b/configs/Dockerfile.cuda similarity index 95% rename from Dockerfile rename to configs/Dockerfile.cuda index d31b17a36..1534647af 100644 --- a/Dockerfile +++ b/configs/Dockerfile.cuda @@ -2,7 +2,7 @@ # docs: # base image -FROM pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime +FROM pytorch/pytorch:2.6.0-cuda12.6-cudnn9-runtime # metadata LABEL org.opencontainers.image.vendor="SD.Next" @@ -13,7 +13,7 @@ LABEL org.opencontainers.image.source="https://github.com/vladmandic/sdnext/" LABEL org.opencontainers.image.licenses="AGPL-3.0" LABEL org.opencontainers.image.title="SD.Next" LABEL org.opencontainers.image.description="SD.Next: Advanced Implementation of Stable Diffusion and other Diffusion-based generative image models" -LABEL org.opencontainers.image.base.name="https://hub.docker.com/pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime" +LABEL org.opencontainers.image.base.name="https://hub.docker.com/pytorch/pytorch:2.6.0-cuda12.6-cudnn9-runtime" LABEL org.opencontainers.image.version="latest" # minimum install @@ -29,8 +29,8 @@ WORKDIR /app # stop pip and uv from caching ENV PIP_NO_CACHE_DIR=true -ENV PIP_ROOT_USER_ACTION=ignore ENV UV_NO_CACHE=true +ENV PIP_ROOT_USER_ACTION=ignore # disable model hashing for faster startup ENV SD_NOHASHING=true # set data directories diff --git a/configs/Dockerfile.ipex b/configs/Dockerfile.ipex new file mode 100644 index 000000000..393a9363b --- /dev/null +++ b/configs/Dockerfile.ipex @@ -0,0 +1,98 @@ +# SD.Next IPEX Dockerfile +# docs: + +# base image +FROM ubuntu:noble + +# metadata +LABEL org.opencontainers.image.vendor="SD.Next" +LABEL org.opencontainers.image.authors="disty0" +LABEL org.opencontainers.image.url="https://github.com/vladmandic/sdnext/" +LABEL org.opencontainers.image.documentation="https://github.com/vladmandic/sdnext/wiki/Docker" +LABEL org.opencontainers.image.source="https://github.com/vladmandic/sdnext/" +LABEL org.opencontainers.image.licenses="AGPL-3.0" +LABEL org.opencontainers.image.title="SD.Next IPEX" +LABEL org.opencontainers.image.description="SD.Next: Advanced Implementation of Stable Diffusion and other Diffusion-based generative image models" +LABEL org.opencontainers.image.base.name="https://hub.docker.com/_/ubuntu:noble" +LABEL org.opencontainers.image.version="latest" + +# essentials +RUN apt-get update && \ + apt-get install -y --no-install-recommends --fix-missing \ + software-properties-common \ + build-essential \ + ca-certificates \ + wget \ + gpg \ + git + +# intel compute runtime +RUN wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | gpg --yes --dearmor --output /usr/share/keyrings/intel-graphics.gpg +RUN echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu noble client" | tee /etc/apt/sources.list.d/intel-gpu-noble.list +RUN apt-get update + +RUN apt-get install -y --no-install-recommends --fix-missing \ + intel-opencl-icd \ + libze-intel-gpu1 \ + libze1 + +# required by pytorch / ipex +RUN apt-get install -y --no-install-recommends --fix-missing \ + libgl1 \ + libglib2.0-0 \ + libgomp1 + +# python3.12 +RUN apt-get install -y --no-install-recommends --fix-missing \ + python3 \ + python3-dev \ + python3-venv \ + python3-pip + +# jemalloc is not required but it is highly recommended (also used with optional ipexrun) +RUN apt-get install -y --no-install-recommends --fix-missing libjemalloc-dev +ENV LD_PRELOAD=libjemalloc.so.2 + +# cleanup +RUN /usr/sbin/ldconfig +RUN apt-get clean && rm -rf /var/lib/apt/lists/* + +# stop pip and uv from caching +ENV PIP_NO_CACHE_DIR=true +ENV UV_NO_CACHE=true + +# set paths to use with sdnext +ENV SD_DOCKER=true +ENV SD_DATADIR="/mnt/data" +ENV SD_MODELSDIR="/mnt/models" +ENV venv_dir="/mnt/python/venv" + +# paths used by sdnext can be a volume if necessary +#VOLUME [ "/app" ] +#VOLUME [ "/mnt/data" ] +#VOLUME [ "/mnt/models" ] +#VOLUME [ "/mnt/python" ] +#VOLUME [ "/root/.cache/huggingface" ] + +# intel specific environment variables +#ENV IPEX_SDPA_SLICE_TRIGGER_RATE=1 +#ENV IPEX_ATTENTION_SLICE_RATE=0.5 +#ENV IPEX_FORCE_ATTENTION_SLICE=-1 +#ENV IPEXRUN=False + +# git clone and run sdnext +RUN echo '#!/bin/bash\ngit status || git clone https://github.com/vladmandic/sdnext.git .\n/app/webui.sh "$@"' | tee /bin/startup.sh +RUN chmod 755 /bin/startup.sh + +# actually run sdnext +WORKDIR /app +ENTRYPOINT [ "startup.sh", "-f", "--use-ipex", "--uv", "--listen", "--debug", "--api-log", "--log", "sdnext.log" ] + +# expose port +EXPOSE 7860 + +# healthcheck function +# HEALTHCHECK --interval=60s --timeout=10s --start-period=60s --retries=3 CMD curl --fail http://localhost:7860/sdapi/v1/status || exit 1 + +# stop signal +STOPSIGNAL SIGINT diff --git a/configs/Dockerfile.openvino b/configs/Dockerfile.openvino new file mode 100644 index 000000000..d97e128d5 --- /dev/null +++ b/configs/Dockerfile.openvino @@ -0,0 +1,88 @@ +# SD.Next OpenVINO Dockerfile +# docs: + +# base image +FROM ubuntu:noble + +# metadata +LABEL org.opencontainers.image.vendor="SD.Next" +LABEL org.opencontainers.image.authors="disty0" +LABEL org.opencontainers.image.url="https://github.com/vladmandic/sdnext/" +LABEL org.opencontainers.image.documentation="https://github.com/vladmandic/sdnext/wiki/Docker" +LABEL org.opencontainers.image.source="https://github.com/vladmandic/sdnext/" +LABEL org.opencontainers.image.licenses="AGPL-3.0" +LABEL org.opencontainers.image.title="SD.Next OpenVINO" +LABEL org.opencontainers.image.description="SD.Next: Advanced Implementation of Stable Diffusion and other Diffusion-based generative image models" +LABEL org.opencontainers.image.base.name="https://hub.docker.com/_/ubuntu:noble" +LABEL org.opencontainers.image.version="latest" + +# essentials +RUN apt-get update && \ + apt-get install -y --no-install-recommends --fix-missing \ + software-properties-common \ + build-essential \ + ca-certificates \ + wget \ + gpg \ + git + +# intel compute runtime +RUN wget -qO - https://repositories.intel.com/gpu/intel-graphics.key | gpg --yes --dearmor --output /usr/share/keyrings/intel-graphics.gpg +RUN echo "deb [arch=amd64,i386 signed-by=/usr/share/keyrings/intel-graphics.gpg] https://repositories.intel.com/gpu/ubuntu noble client" | tee /etc/apt/sources.list.d/intel-gpu-noble.list +RUN apt-get update + +RUN apt-get install -y --no-install-recommends --fix-missing \ + intel-opencl-icd \ + libze-intel-gpu1 \ + libze1 + +# required by pytorch / ipex +RUN apt-get install -y --no-install-recommends --fix-missing \ + libgl1 \ + libglib2.0-0 \ + libgomp1 + +# python3.12 +RUN apt-get install -y --no-install-recommends --fix-missing \ + python3 \ + python3-dev \ + python3-venv \ + python3-pip + +# cleanup +RUN /usr/sbin/ldconfig +RUN apt-get clean && rm -rf /var/lib/apt/lists/* + +# stop pip and uv from caching +ENV PIP_NO_CACHE_DIR=true +ENV UV_NO_CACHE=true + +# set paths to use with sdnext +ENV SD_DOCKER=true +ENV SD_DATADIR="/mnt/data" +ENV SD_MODELSDIR="/mnt/models" +ENV venv_dir="/mnt/python/venv" + +# paths used by sdnext can be a volume if necessary +#VOLUME [ "/app" ] +#VOLUME [ "/mnt/data" ] +#VOLUME [ "/mnt/models" ] +#VOLUME [ "/mnt/python" ] +#VOLUME [ "/root/.cache/huggingface" ] + +# git clone and run sdnext +RUN echo '#!/bin/bash\ngit status || git clone https://github.com/vladmandic/sdnext.git .\n/app/webui.sh "$@"' | tee /bin/startup.sh +RUN chmod 755 /bin/startup.sh + +# actually run sdnext +WORKDIR /app +ENTRYPOINT [ "startup.sh", "-f", "--use-openvino", "--uv", "--listen", "--debug", "--api-log", "--log", "sdnext.log" ] + +# expose port +EXPOSE 7860 + +# healthcheck function +# HEALTHCHECK --interval=60s --timeout=10s --start-period=60s --retries=3 CMD curl --fail http://localhost:7860/sdapi/v1/status || exit 1 + +# stop signal +STOPSIGNAL SIGINT diff --git a/configs/Dockerfile.rocm b/configs/Dockerfile.rocm new file mode 100644 index 000000000..7919c7834 --- /dev/null +++ b/configs/Dockerfile.rocm @@ -0,0 +1,84 @@ +# SD.Next ROCm Dockerfile +# docs: + +# base image + +# rocm runtime (3gb) +FROM rocm/dev-ubuntu-24.04:6.3.2 + +# rocm complete (32gb), required to build flash_atten +#FROM rocm/dev-ubuntu-24.04:6.3.2-complete + +# metadata +LABEL org.opencontainers.image.vendor="SD.Next" +LABEL org.opencontainers.image.authors="disty0" +LABEL org.opencontainers.image.url="https://github.com/vladmandic/sdnext/" +LABEL org.opencontainers.image.documentation="https://github.com/vladmandic/sdnext/wiki/Docker" +LABEL org.opencontainers.image.source="https://github.com/vladmandic/sdnext/" +LABEL org.opencontainers.image.licenses="AGPL-3.0" +LABEL org.opencontainers.image.title="SD.Next ROCm" +LABEL org.opencontainers.image.description="SD.Next: Advanced Implementation of Stable Diffusion and other Diffusion-based generative image models" +LABEL org.opencontainers.image.base.name="https://hub.docker.com/r/rocm/dev-ubuntu-24.04:6.3.2" +LABEL org.opencontainers.image.version="latest" + +# essentials +RUN apt-get update && \ + apt-get install -y --no-install-recommends --fix-missing \ + software-properties-common \ + build-essential \ + ca-certificates \ + wget \ + gpg \ + git + +# python3.12 +RUN apt-get install -y --no-install-recommends --fix-missing \ + python3 \ + python3-dev \ + python3-venv \ + python3-pip + +# jemalloc is not required but it is highly recommended +RUN apt-get install -y --no-install-recommends --fix-missing libjemalloc-dev +ENV LD_PRELOAD=libjemalloc.so.2 + +# cleanup +RUN /usr/sbin/ldconfig +RUN apt-get clean && rm -rf /var/lib/apt/lists/* + +# stop pip and uv from caching +ENV PIP_NO_CACHE_DIR=true +ENV UV_NO_CACHE=true + +# set paths to use with sdnext +ENV SD_DOCKER=true +ENV SD_DATADIR="/mnt/data" +ENV SD_MODELSDIR="/mnt/models" +ENV venv_dir="/mnt/python/venv" + +# paths used by sdnext can be a volume if necessary +#VOLUME [ "/app" ] +#VOLUME [ "/mnt/data" ] +#VOLUME [ "/mnt/models" ] +#VOLUME [ "/mnt/python" ] +#VOLUME [ "/root/.cache/huggingface" ] + +# override gpu architecture for unsupported gpus +#ENV HSA_OVERRIDE_GFX_VERSION=10.0.0 + +# git clone and run sdnext +RUN echo '#!/bin/bash\ngit status || git clone https://github.com/vladmandic/sdnext.git .\n/app/webui.sh "$@"' | tee /bin/startup.sh +RUN chmod 755 /bin/startup.sh + +# actually run sdnext +WORKDIR /app +ENTRYPOINT [ "startup.sh", "-f", "--use-rocm", "--uv", "--listen", "--debug", "--api-log", "--log", "sdnext.log" ] + +# expose port +EXPOSE 7860 + +# healthcheck function +# HEALTHCHECK --interval=60s --timeout=10s --start-period=60s --retries=3 CMD curl --fail http://localhost:7860/sdapi/v1/status || exit 1 + +# stop signal +STOPSIGNAL SIGINT diff --git a/extensions-builtin/sdnext-modernui b/extensions-builtin/sdnext-modernui index 7c2ff11f7..d2a3e992b 160000 --- a/extensions-builtin/sdnext-modernui +++ b/extensions-builtin/sdnext-modernui @@ -1 +1 @@ -Subproject commit 7c2ff11f7400e62cd2312524191d11fb8a7f4ce0 +Subproject commit d2a3e992be5bace1226241828ebd98cf77c51515 diff --git a/html/locale_de.json b/html/locale_de.json new file mode 100644 index 000000000..881157b8f --- /dev/null +++ b/html/locale_de.json @@ -0,0 +1,7556 @@ +{ + "icons": [ + { + "id": "", + "label": "🎲️", + "localized": "🎲️", + "hint": "Zufälligen Seed verwenden" + }, + { + "id": "", + "label": "🔄", + "localized": "🔄", + "hint": "Werte zurücksetzen" + }, + { + "id": "", + "label": "⬆️", + "localized": "⬆️", + "hint": "Bild hochladen" + }, + { + "id": "", + "label": "⬅️", + "localized": "⬅️", + "hint": "Bild wiederverwenden" + }, + { + "id": "", + "label": "⇅", + "localized": "⇅", + "hint": "Werte tauschen" + }, + { + "id": "", + "label": "⇨", + "localized": "⇨", + "hint": "Voreinstellung auf den Tab \"Manuelle Block-Zusammenführung\" anwenden" + }, + { + "id": "", + "label": "🕮", + "localized": "🕮", + "hint": "Parameter des zuletzt generierten Bildes als Stilvorlage speichern" + }, + { + "id": "", + "label": "⇕", + "localized": "⇕", + "hint": "Sortieren nach: Name auf-/absteigend, Größe größte/kleinste, Zeit neueste/älteste" + }, + { + "id": "", + "label": "⟲", + "localized": "⟲", + "hint": "Aktualisieren" + }, + { + "id": "", + "label": "✕", + "localized": "✕", + "hint": "Schließen" + }, + { + "id": "", + "label": "⊜", + "localized": "⊜", + "hint": "Füllen" + }, + { + "id": "", + "label": "⌾", + "localized": "⌾", + "hint": "Modell als Refiner-Modell laden, wenn ausgewählt, andernfalls als Basismodell laden" + }, + { + "id": "", + "label": "🔎︎", + "localized": "🔎︎", + "hint": "CivitAI nach fehlenden Metadaten und Vorschaubildern durchsuchen" + }, + { + "id": "", + "label": "☲", + "localized": "☲", + "hint": "Ansichtstyp ändern" + }, + { + "id": "", + "label": "📐", + "localized": "📐", + "hint": "Messen" + }, + { + "id": "", + "label": "🔍", + "localized": "🔍", + "hint": "Suchen" + }, + { + "id": "", + "label": "🖌️", + "localized": "🖌️", + "hint": "LaMa: Ausgewähltes Objekt aus dem Bild entfernen" + }, + { + "id": "", + "label": "🖼️", + "localized": "🖼️", + "hint": "Vorschau anzeigen" + }, + { + "id": "", + "label": "♻", + "localized": "♻", + "hint": "Bild untersuchen" + }, + { + "id": "", + "label": "↶", + "localized": "↶", + "hint": "Ausgewählten Stil auf Prompt anwenden" + }, + { + "id": "", + "label": "↷", + "localized": "↷", + "hint": "Aktuellen Prompt als Stil speichern" + } + ], + "main": [ + { + "id": "", + "label": "Prompt", + "localized": "Prompt", + "hint": "Beschreibe das Bild, das du generieren möchtest" + }, + { + "id": "", + "label": "Negative prompt", + "localized": "Negativer Prompt", + "hint": "Beschreibe, was du nicht im generierten Bild sehen möchtest" + }, + { + "id": "", + "label": "Text", + "localized": "Text", + "hint": "Erstelle ein Bild aus Text" + }, + { + "id": "", + "label": "Image", + "localized": "Bild", + "hint": "Erstelle ein Bild aus einem Bild" + }, + { + "id": "", + "label": "Control", + "localized": "Steuerung", + "hint": "Erstelle ein Bild mit zusätzlicher Steuerung" + }, + { + "id": "", + "label": "Process", + "localized": "Prozess", + "hint": "Bearbeite ein vorhandenes Bild" + }, + { + "id": "", + "label": "Interrogate", + "localized": "Abfragen", + "hint": "Führe eine Abfrage aus, um eine Beschreibung deines Bildes zu erhalten" + }, + { + "id": "", + "label": "Models", + "localized": "Modelle", + "hint": "Lade deine Modelle herunter, konvertiere oder führe sie zusammen und verwalte die Metadaten der Modelle" + }, + { + "id": "", + "label": "Agent Scheduler", + "localized": "Agentenplaner", + "hint": "Stelle deine Generierungsanfragen in die Warteschlange und führe sie im Hintergrund aus" + }, + { + "id": "", + "label": "System", + "localized": "System", + "hint": "Systemeinstellungen und -informationen" + }, + { + "id": "", + "label": "System Info", + "localized": "Systeminformationen", + "hint": "Systeminformationen" + }, + { + "id": "", + "label": "Settings", + "localized": "Einstellungen", + "hint": "Anwendungseinstellungen" + }, + { + "id": "", + "label": "Script", + "localized": "Skript", + "hint": "Zusätzliche Skripte, die verwendet werden sollen" + }, + { + "id": "", + "label": "Generate", + "localized": "Generieren", + "hint": "Starte die Verarbeitung" + }, + { + "id": "", + "label": "Enqueue", + "localized": "In Warteschlange einreihen", + "hint": "Füge eine Aufgabe zur Hintergrundwarteschlange im Agentenplaner hinzu" + }, + { + "id": "", + "label": "Reprocess", + "localized": "Erneut verarbeiten", + "hint": "Verarbeite vorherige Generationen mit anderen Parametern erneut" + }, + { + "id": "", + "label": "Stop", + "localized": "Stopp", + "hint": "Stoppe die Verarbeitung" + }, + { + "id": "", + "label": "Skip", + "localized": "Überspringen", + "hint": "Stoppe die Verarbeitung des aktuellen Auftrags und setze die Verarbeitung fort" + }, + { + "id": "", + "label": "Pause", + "localized": "Pause", + "hint": "Pausiere die Verarbeitung" + }, + { + "id": "", + "label": "Restore", + "localized": "Wiederherstellen", + "hint": "Stelle Parameter vom aktuellen Prompt oder dem zuletzt bekannten generierten Bild wieder her" + }, + { + "id": "", + "label": "Clear", + "localized": "Leeren", + "hint": "Leere Prompts" + }, + { + "id": "", + "label": "Networks", + "localized": "Netzwerke", + "hint": "Benutzeroberfläche für Netzwerke" + }, + { + "id": "", + "label": "Default strength", + "localized": "Standardstärke", + "hint": "Wenn ein zusätzliches Netzwerk wie Lora zum Prompt hinzugefügt wird, verwende diesen Multiplikator dafür" + }, + { + "id": "", + "label": "Upscale", + "localized": "Hochskalieren", + "hint": "Skaliere das Bild hoch" + }, + { + "id": "", + "label": "Model", + "localized": "Modell", + "hint": "Basismodell" + }, + { + "id": "", + "label": "Style", + "localized": "Stil", + "hint": "Zusätzliche Stile, die auf die ausgewählten Generierungsparameter angewendet werden sollen" + }, + { + "id": "", + "label": "Styles", + "localized": "Stile", + "hint": "Zusätzliche Stile, die auf die ausgewählten Generierungsparameter angewendet werden sollen" + }, + { + "id": "", + "label": "Lora", + "localized": "Lora", + "hint": "LoRA: Low-Rank Adaptation. Feinabgestimmtes Modell, das auf ein geladenes Modell angewendet wird" + }, + { + "id": "", + "label": "Embedding", + "localized": "Einbettung", + "hint": "Textuelle Inversion Embedding ist eine trainierte eingebettete Information über das Subjekt" + }, + { + "id": "", + "label": "Hypernetwork", + "localized": "Hypernetzwerk", + "hint": "Kleines trainiertes neuronales Netzwerk, das das Verhalten des geladenen Modells verändert" + }, + { + "id": "", + "label": "VLM Caption", + "localized": "VLM Beschriftung", + "hint": "Analysiere das Bild mit einem Vision-Language-Modell" + }, + { + "id": "", + "label": "CLiP Interrogate", + "localized": "CLiP Abfrage", + "hint": "Analysiere das Bild mit einem CLiP-Modell" + }, + { + "id": "", + "label": "VAE", + "localized": "VAE", + "hint": "Variational Auto Encoder: Modell, das verwendet wird, um die Bilddekodierung am Ende der Generierung auszuführen" + }, + { + "id": "", + "label": "History", + "localized": "Verlauf", + "hint": "Liste der vorherigen Generationen, die weiterverarbeitet werden können" + }, + { + "id": "", + "label": "UI disable variable aspect ratio", + "localized": "UI Variable Seitenverhältnisse deaktivieren", + "hint": "Wenn deaktiviert, werden alle Thumbnails als quadratische Bilder angezeigt" + }, + { + "id": "", + "label": "Build info on first access", + "localized": "Informationen beim ersten Zugriff erstellen", + "hint": "Verhindert, dass der Server die EN-Seite beim Serverstart erstellt, und erstellt sie stattdessen, wenn sie angefordert wird" + }, + { + "id": "", + "label": "Show reference styles", + "localized": "Referenzstile anzeigen", + "hint": "Build-in Stile anzeigen oder ausblenden" + }, + { + "id": "", + "label": "LoRA load using Diffusers method", + "localized": "LoRA-Load mit Diffusers-Methode", + "hint": "Alternative Methode verwendet die integrierten LoRA-Funktionen von Diffusers anstelle der nativen SD.Next-Implementierung (kann die LoRA-Kompatibilität verringern)" + }, + { + "id": "", + "label": "LoRA fuse directly to model", + "localized": "LoRA direkt mit Modell verschmelzen", + "hint": "Beim Laden von LoRAs werden die Gewichte sofort mit dem zugrunde liegenden Modell zusammengeführt, anstatt sie dynamisch anzuwenden" + }, + { + "id": "", + "label": "LoRA memory cache", + "localized": "LoRA-Speichercache", + "hint": "Wie viele LoRAs sollen im Netzwerk für die zukünftige Verwendung gespeichert werden, bevor sie vom Speicher neu geladen werden müssen" + }, + { + "id": "", + "label": "Local", + "localized": "Lokal", + "hint": "Modelle, die heruntergeladen wurden und einsatzbereit sind" + }, + { + "id": "", + "label": "Gallery", + "localized": "Galerie", + "hint": "Bildergalerie" + }, + { + "id": "", + "label": "Reference", + "localized": "Referenz", + "hint": "Liste der Referenzmodelle, die beim ersten Gebrauch automatisch heruntergeladen werden können" + }, + { + "id": "", + "label": "Samplers", + "localized": "Sampler", + "hint": "Erweiterte Einstellungen für Sampler/Scheduler" + }, + { + "id": "", + "label": "Seed", + "localized": "Seed", + "hint": "Initialer Seed und Variation" + }, + { + "id": "", + "label": "Advanced", + "localized": "Erweitert", + "hint": "Erweiterte Einstellungen" + }, + { + "id": "", + "label": "Corrections", + "localized": "Korrekturen", + "hint": "Steuere Farb-/Schärfen-/Helligkeitskorrekturen während des Generierungsprozesses" + }, + { + "id": "", + "label": "Refine", + "localized": "Verfeinern", + "hint": "Einstellungen im Zusammenhang mit Hochskalieren, HiRes und Verfeinerungs Verarbeitung" + }, + { + "id": "", + "label": "Detailer", + "localized": "Detailer", + "hint": "Detailer Einstellungen" + }, + { + "id": "", + "label": "Resize", + "localized": "Größe ändern", + "hint": "Bildgrößenänderung, kann eine feste Auflösung basierend auf der Skalierung verwenden" + }, + { + "id": "", + "label": "Batch", + "localized": "Stapel", + "hint": "Einstellungen für die Stapelverarbeitung" + }, + { + "id": "", + "label": "Denoise", + "localized": "Entrauschen", + "hint": "Entrauschungseinstellungen. Eine höhere Entrauschung bedeutet, dass sich mehr von vorhandenem Bildinhalt während der Generierung ändern darf" + }, + { + "id": "", + "label": "Mask", + "localized": "Maske", + "hint": "Bildmaskierung und Maskenoptionen" + }, + { + "id": "", + "label": "Input", + "localized": "Eingabe", + "hint": "Auswahl von Eingabemedien" + }, + { + "id": "", + "label": "Video", + "localized": "Video", + "hint": "Einstellungen im Zusammenhang mit der Videogenerierung" + }, + { + "id": "", + "label": "Control elements", + "localized": "Steuerelemente", + "hint": "Steuerelemente sind erweiterte Modelle, die die Generierung in Richtung des gewünschten Ergebnisses lenken können" + }, + { + "id": "", + "label": "IP adapters", + "localized": "IP-Adapter", + "hint": "IP-Adapter sind Plugin-Modelle, die die Generierung in Richtung des gewünschten Ergebnisses lenken können" + }, + { + "id": "", + "label": "Extensions", + "localized": "Erweiterungen", + "hint": "Anwendungserweiterungen" + }, + { + "id": "", + "label": "XYZ Grid", + "localized": "XYZ-Gitter", + "hint": "XYZ-Gitter ist ein leistungsstarkes Modul, das ein Bildgitter basierend auf der Variation mehrerer Generierungsparameter erstellt" + }, + { + "id": "", + "label": "Cover", + "localized": "Abdecken", + "hint": "vollständige Fläche abdecken" + }, + { + "id": "", + "label": "Inline", + "localized": "Inline", + "hint": "Inline mit allen zusätzlichen Elementen (scrollbar)" + }, + { + "id": "", + "label": "Sidebar", + "localized": "Seitenleiste", + "hint": "Seitenleiste auf der rechten Seite des Bildschirms" + }, + { + "id": "", + "label": "SD15", + "localized": "SD15", + "hint": "StableDiffusion 1.5" + }, + { + "id": "", + "label": "SD21", + "localized": "SD21", + "hint": "StableDiffusion 2.1" + }, + { + "id": "", + "label": "SD35", + "localized": "SD35", + "hint": "StableDiffusion 3.5" + }, + { + "id": "", + "label": "SDXL", + "localized": "SDXL", + "hint": "StableDiffusion XL" + }, + { + "id": "", + "label": "SC", + "localized": "SC", + "hint": "StableCascade" + }, + { + "id": "", + "label": "Flux", + "localized": "Flux", + "hint": "FLUX.1" + }, + { + "id": "", + "label": "Show", + "localized": "Anzeigen", + "hint": "Bildspeicherort anzeigen" + }, + { + "id": "", + "label": "Save", + "localized": "Speichern", + "hint": "Bild speichern" + }, + { + "id": "", + "label": "Delete", + "localized": "Löschen", + "hint": "Bild löschen" + }, + { + "id": "", + "label": "Replace", + "localized": "Ersetzen", + "hint": "Bild ersetzen" + }, + { + "id": "", + "label": "➠ Text", + "localized": "➠ Text", + "hint": "Bild zur Textoberfläche übertragen" + }, + { + "id": "", + "label": "➠ Image", + "localized": "➠ Bild", + "hint": "Bild zur Bildoberfläche übertragen" + }, + { + "id": "", + "label": "➠ Inpaint", + "localized": "➠ Inpaint", + "hint": "Bild zur Inpaint-Oberfläche übertragen" + }, + { + "id": "", + "label": "➠ Sketch", + "localized": "➠ Skizze", + "hint": "Bild zur Skizzenoberfläche übertragen" + }, + { + "id": "", + "label": "➠ Composite", + "localized": "➠ Zusammensetzen", + "hint": "Bild zur Inpaint-Skizzenoberfläche übertragen" + }, + { + "id": "", + "label": "➠ Process", + "localized": "➠ Prozess", + "hint": "Bild zur Prozessoberfläche übertragen" + }, + { + "id": "", + "label": "➠ Control", + "localized": "➠ Steuerung", + "hint": "Bild zur Steuerungsoberfläche übertragen" + }, + { + "id": "", + "label": "➠ Caption", + "localized": "➠ Beschriftung", + "hint": "Bild zur Beschriftungsoberfläche übertragen" + } + ], + "generate": [ + { + "id": "", + "label": "Sampling method", + "localized": "Sampling-Methode", + "hint": "Welchen Algorithmus soll zur Bilderzeugung verwendet werden?" + }, + { + "id": "", + "label": "Steps", + "localized": "Schritte", + "hint": "Wie oft soll das generierte Bild iterativ verbessert werden; höhere Werte dauern länger; sehr niedrige Werte können zu schlechten Ergebnissen führen." + }, + { + "id": "", + "label": "Tiling", + "localized": "Kacheln", + "hint": "Ein Bild erzeugen, das gekachelt werden kann" + }, + { + "id": "", + "label": "Full quality", + "localized": "Volle Qualität", + "hint": "Verwende VAE in voller Qualität, um latente Samples zu dekodieren" + }, + { + "id": "", + "label": "HiDiffusion", + "localized": "HiDiffusion", + "hint": "HiDiffusion ermöglicht die Erstellung hochauflösender Bilder mit Ihren Standardmodellen ohne Duplikate/Verzerrungen und verbesserter Leistung" + }, + { + "id": "", + "label": "HDR Clamp", + "localized": "HDR-Beschneidung", + "hint": "Passt den Grad unsinniger Details an, indem Werte entfernt werden, die erheblich vom Verteilungsdurchschnitt abweichen. Es ist besonders nützlich, um die Generierung bei höheren Guidance-Skalen zu verbessern, Ausreißer frühzeitig im Prozess zu identifizieren und mathematische Anpassungen basierend auf den Bereichs- (Grenzwert-) und Schwellenwerteinstellungen vorzunehmen. Stellen Sie sich vor, Sie legen den Bereich fest, in dem sich Ihre Bildwerte befinden sollen, und passen Sie den Schwellenwert an, um zu bestimmen, welche Werte wieder in diesen Bereich gebracht werden sollen." + }, + { + "id": "", + "label": "HDR Maximize", + "localized": "HDR-Maximierung", + "hint": "Berechnet einen 'Normalisierungsfaktor', indem der maximale Tensorwert durch den angegebenen Bereich multipliziert mit 4 dividiert wird. Dieser Faktor wird dann verwendet, um die Kanäle innerhalb der gegebenen Grenze zu verschieben, um einen maximalen Dynamikbereich für die nachfolgende Verarbeitung zu gewährleisten. Ziel ist es, den Dynamikbereich für externe Anwendungen wie Photoshop zu optimieren, insbesondere zur Anpassung von Pegeln, Kontrast und Helligkeit." + }, + { + "id": "", + "label": "Enable refine pass", + "localized": "Refine-Pass aktivieren", + "hint": "Verwenden Sie einen ähnlichen Prozess wie Bild zu Bild, um das endgültige Bild hochzuskalieren und/oder Details hinzuzufügen. Optional wird ein Refiner-Modell verwendet, um Bilddetails zu verbessern." + }, + { + "id": "", + "label": "Enable detailer pass", + "localized": "Detailer-Pass aktivieren", + "hint": "Zielobjekte wie Gesichter erkennen und in höherer Auflösung neu verarbeiten" + }, + { + "id": "", + "label": "Denoising strength", + "localized": "Entrauschungsstärke", + "hint": "Bestimmt, wie wenig Respekt der Algorithmus vor dem Inhalt des Bildes haben sollte. Bei 0 ändert sich nichts, und bei 1 erhalten Sie ein nicht verwandtes Bild. Bei Werten unter 1.0 dauert die Verarbeitung weniger Schritte als im Schieberegler 'Sampling-Schritte' angegeben." + }, + { + "id": "", + "label": "Denoise start", + "localized": "Entrauschungsstart", + "hint": "Überschreiben Sie die Entrauschungsstärke, indem Sie angeben, wie früh das Basismodell fertig sein soll und wann der Refiner starten soll. Nur anwendbar bei Refiner-Nutzung. Wenn auf 0 oder 1 gesetzt, wird die Entrauschungsstärke verwendet." + }, + { + "id": "", + "label": "Hires steps", + "localized": "Hires-Schritte", + "hint": "Anzahl der Sampling-Schritte für das hochskalierte Bild. Wenn 0, wird derselbe Wert wie für das Original verwendet." + }, + { + "id": "", + "label": "Strength", + "localized": "Stärke", + "hint": "Die Entrauschungsstärke während der Bildoperation steuert, wie stark sich das Originalbild während der Generierung verändern darf" + }, + { + "id": "", + "label": "Upscaler", + "localized": "Upscaler", + "hint": "Welches vortrainierte Modell soll für den Hochskalierungsprozess verwendet werden?" + }, + { + "id": "", + "label": "Force Hires", + "localized": "Hires erzwingen", + "hint": "Hires wird automatisch ausgeführt, wenn Latent Upscale ausgewählt ist, wird aber übersprungen, wenn nicht-latente Upscaler verwendet werden. Aktivieren Sie Force Hires, um Hires mit nicht-latenten Upscalern auszuführen." + }, + { + "id": "", + "label": "Resize width", + "localized": "Breite ändern", + "hint": "Ändert die Bildgröße auf diese Breite. Wenn 0, wird die Breite von einem der beiden nahegelegenen Schieberegler abgeleitet." + }, + { + "id": "", + "label": "Resize height", + "localized": "Höhe ändern", + "hint": "Ändert die Bildgröße auf diese Höhe. Wenn 0, wird die Höhe von einem der beiden nahegelegenen Schieberegler abgeleitet." + }, + { + "id": "", + "label": "Refine sampler", + "localized": "Refine-Sampler", + "hint": "Verwenden Sie einen bestimmten Sampler als Fallback-Sampler, wenn der primäre für eine bestimmte Operation nicht unterstützt wird." + }, + { + "id": "", + "label": "Refiner start", + "localized": "Refiner-Start", + "hint": "Der Refiner-Pass startet, wenn das Basismodell so weit abgeschlossen ist (auf größer als 0 und kleiner als 1 setzen, um nach dem vollständigen Durchlauf des Basismodells zu starten)" + }, + { + "id": "", + "label": "Refiner steps", + "localized": "Refiner-Schritte", + "hint": "Anzahl der Schritte, die für den Refiner-Pass verwendet werden sollen" + }, + { + "id": "", + "label": "Refine guidance", + "localized": "Refine-Guidance", + "hint": "CFG-Skala, die für den Refiner-Pass verwendet wird" + }, + { + "id": "", + "label": "Attention guidance", + "localized": "Attention-Guidance", + "hint": "CFG-Skala, die für PAG verwendet wird: Perturbed-Attention Guidance" + }, + { + "id": "", + "label": "Adaptive scaling", + "localized": "Adaptive Skalierung", + "hint": "Adaptiver Modifikator für die Attention-Guidance-Skala" + }, + { + "id": "", + "label": "Rescale guidance", + "localized": "Rescale Guidance", + "hint": "Generiertes CFG-Rauschen neu skalieren, um überbelichtete Bilder zu vermeiden" + }, + { + "id": "", + "label": "Refine Prompt", + "localized": "Refine-Prompt", + "hint": "Prompt, der sowohl für den zweiten Encoder im Basismodell (falls vorhanden) als auch für den Refiner-Pass (falls aktiviert) verwendet wird" + }, + { + "id": "", + "label": "Refine negative prompt", + "localized": "Refine Negativ-Prompt", + "hint": "Negativer Prompt, der sowohl für den zweiten Encoder im Basismodell (falls vorhanden) als auch für den Refiner-Pass (falls aktiviert) verwendet wird" + }, + { + "id": "", + "label": "Width", + "localized": "Breite", + "hint": "Bildbreite" + }, + { + "id": "", + "label": "Height", + "localized": "Höhe", + "hint": "Bildhöhe" + }, + { + "id": "", + "label": "Batch count", + "localized": "Batch-Anzahl", + "hint": "Wie viele Batches von Bildern erstellt werden sollen (hat keinen Einfluss auf die Generierungsleistung oder die VRAM-Nutzung)" + }, + { + "id": "", + "label": "Batch size", + "localized": "Batch-Größe", + "hint": "Wie viele Bilder in einem einzelnen Batch erstellt werden sollen (erhöht die Generierungsleistung auf Kosten einer höheren VRAM-Nutzung)" + }, + { + "id": "", + "label": "guidance scale", + "localized": "Guidance-Skala", + "hint": "Classifier Free Guidance Skala: Wie stark sich das Bild an den Prompt anpassen soll. Niedrigere Werte erzeugen kreativere Ergebnisse, höhere Werte sorgen dafür, dass es dem Prompt strikter folgt; empfohlene Werte zwischen 5-10" + }, + { + "id": "", + "label": "Guidance End", + "localized": "Guidance-Ende", + "hint": "Beendet den Effekt von CFG und PAG frühzeitig: Ein Wert von 1 wirkt normal, 0,5 stoppt die Guidance bei 50 % der Schritte" + }, + { + "id": "", + "label": "Initial seed", + "localized": "Initialer Seed", + "hint": "Ein Wert, der die Ausgabe des Zufallszahlengenerators bestimmt - wenn Sie ein Bild mit denselben Parametern und demselben Seed wie ein anderes Bild erstellen, erhalten Sie dasselbe Ergebnis" + }, + { + "id": "", + "label": "Variation", + "localized": "Variation", + "hint": "Zweiter Seed, der mit dem primären Seed gemischt werden soll" + }, + { + "id": "", + "label": "Variation strength", + "localized": "Variationsstärke", + "hint": "Wie stark eine Variation erzeugt werden soll. Bei 0 gibt es keinen Effekt. Bei 1 erhalten Sie das vollständige Bild mit dem Variations-Seed (mit Ausnahme von Ancestral Samplern, wo Sie einfach etwas erhalten)" + }, + { + "id": "", + "label": "Resize seed from width", + "localized": "Seed-Größe von Breite ändern", + "hint": "Versuchen Sie, ein Bild zu erzeugen, das dem ähnlich ist, das mit demselben Seed bei der angegebenen Auflösung erzeugt worden wäre" + }, + { + "id": "", + "label": "Resize seed from height", + "localized": "Seed-Größe von Höhe ändern", + "hint": "Versuchen Sie, ein Bild zu erzeugen, das dem ähnlich ist, das mit demselben Seed bei der angegebenen Auflösung erzeugt worden wäre" + }, + { + "id": "", + "label": "Fixed", + "localized": "Fest", + "hint": "Bildgröße auf Zielauflösung ändern. Wenn Höhe und Breite nicht übereinstimmen, erhalten Sie ein falsches Seitenverhältnis" + }, + { + "id": "", + "label": "scale", + "localized": "Skalieren", + "hint": "Bildgröße auf Zielskala ändern. Wenn die feste Breite/Höhe für die Größenänderung festgelegt ist, wird diese Option ignoriert." + }, + { + "id": "", + "label": "Crop", + "localized": "Zuschneiden", + "hint": "Ändern Sie die Größe des Bildes so, dass die gesamte Zielauflösung mit dem Bild gefüllt wird. Schneiden Sie Teile ab, die herausragen." + }, + { + "id": "", + "label": "Fill", + "localized": "Füllen", + "hint": "Ändern Sie die Größe des Bildes so, dass sich das gesamte Bild innerhalb der Zielauflösung befindet. Füllen Sie leeren Raum mit den Farben des Bildes." + }, + { + "id": "", + "label": "Mask blur", + "localized": "Maskenunschärfe", + "hint": "Wie stark die Maske vor der Verarbeitung unscharf gemacht werden soll, in Pixeln" + }, + { + "id": "", + "label": "Latent noise", + "localized": "Latentes Rauschen", + "hint": "Füllen Sie es mit latentem Rauschen" + }, + { + "id": "", + "label": "Latent nothing", + "localized": "Latentes Nichts", + "hint": "Füllen Sie es mit latenten Nullen" + }, + { + "id": "", + "label": "Guess Mode", + "localized": "Schätzmodus", + "hint": "Entfernt die Notwendigkeit, einen Prompt an ein ControlNet zu liefern. Es zwingt den Controlnet-Encoder, seine 'beste Schätzung' basierend auf den Inhalten der Eingabe-Kontrollkarte abzugeben." + }, + { + "id": "", + "label": "Control Only", + "localized": "Nur Steuerung", + "hint": "Dies verwendet nur die unten stehende Steuerungseingabe als Quelle für alle ControlNet- oder IP-Adapter-Aufgaben, die auf einer unserer verschiedenen Optionen basieren." + }, + { + "id": "", + "label": "Init Image Same As Control", + "localized": "Init-Bild wie Steuerung", + "hint": "Behandelt zusätzlich jedes Bild, das in das Steuerungseingabefenster platziert wird, als Quelle für Aufgaben vom Typ img2img, z. B. ein Bild, das geändert werden soll." + }, + { + "id": "", + "label": "Separate Init Image", + "localized": "Separiertes Init-Bild", + "hint": "Erstellt ein zusätzliches Fenster neben der Steuerungseingabe mit der Bezeichnung Init-Eingabe, sodass Sie ein separates Bild sowohl für Steuerungsoperationen als auch als Init-Quelle haben können." + }, + { + "id": "", + "label": "Override settings", + "localized": "Einstellungen überschreiben", + "hint": "Wenn die Generierungsparameter von Ihren Systemeinstellungen abweichen, überschreiben Sie die mit diesen Einstellungen gefüllten Einstellungen, um Ihre Systemkonfiguration für diesen Workflow zu überschreiben" + } + ], + "other": [ + { + "id": "", + "label": "Install", + "localized": "Installieren", + "hint": "Installieren" + }, + { + "id": "", + "label": "Search", + "localized": "Suchen", + "hint": "Suchen" + }, + { + "id": "", + "label": "Sort by", + "localized": "Sortieren nach", + "hint": "Sortieren nach" + }, + { + "id": "", + "label": "Manage extensions", + "localized": "Erweiterungen verwalten", + "hint": "Erweiterungen verwalten" + }, + { + "id": "", + "label": "Manual install", + "localized": "Manuelle Installation", + "hint": "Erweiterung manuell installieren" + }, + { + "id": "", + "label": "Extension GIT repository URL", + "localized": "URL des Erweiterungs-GIT-Repositorys", + "hint": "URL des Erweiterungs-Repositorys auf GitHub angeben" + }, + { + "id": "", + "label": "Specific branch name", + "localized": "Name des spezifischen Zweigs", + "hint": "Namen des Erweiterungszweigs angeben, leer lassen für Standard" + }, + { + "id": "", + "label": "Local directory name", + "localized": "Name des lokalen Verzeichnisses", + "hint": "Verzeichnis, in dem die Erweiterung installiert werden soll, leer lassen für Standard" + }, + { + "id": "", + "label": "Refresh extension list", + "localized": "Erweiterungsliste aktualisieren", + "hint": "Liste der verfügbaren Erweiterungen aktualisieren" + }, + { + "id": "", + "label": "Update all installed", + "localized": "Alle installierten aktualisieren", + "hint": "Installierte Erweiterungen auf die neueste verfügbare Version aktualisieren" + }, + { + "id": "", + "label": "Apply changes", + "localized": "Änderungen übernehmen", + "hint": "Alle Änderungen übernehmen und Server neu starten" + }, + { + "id": "", + "label": "Uninstall", + "localized": "Deinstallieren", + "hint": "Diese Erweiterung deinstallieren" + }, + { + "id": "", + "label": "User interface", + "localized": "Benutzeroberfläche", + "hint": "Überprüfen und Festlegen der Einstellungen der Benutzeroberfläche" + }, + { + "id": "", + "label": "Set UI defaults", + "localized": "UI-Standardwerte festlegen", + "hint": "Aktuelle Werte als Standardwerte für die Benutzeroberfläche festlegen" + }, + { + "id": "", + "label": "Benchmark", + "localized": "Benchmark", + "hint": "Benchmarks ausführen" + }, + { + "id": "", + "label": "Models & Networks", + "localized": "Modelle & Netzwerke", + "hint": "Listen aller verfügbaren Modelle und Netzwerke anzeigen" + }, + { + "id": "", + "label": "Restore UI defaults", + "localized": "UI-Standardwerte wiederherstellen", + "hint": "Standardwerte der Benutzeroberfläche wiederherstellen" + }, + { + "id": "", + "label": "Detailer classes", + "localized": "Detailer-Klassen", + "hint": "Spezifische Klassen angeben, die verwendet werden sollen, wenn das ausgewählte Detailer-Modell ein Multi-Klassen-Modell ist" + }, + { + "id": "", + "label": "Detailer models", + "localized": "Detailer-Modelle", + "hint": "Auswahl von Detektionsmodellen zur Detailierung" + }, + { + "id": "", + "label": "Detailer negative prompt", + "localized": "Negativer Detailer-Prompt", + "hint": "Verwende einen separaten negativen Prompt für den Detailer. Falls nicht vorhanden, wird der primäre negative Prompt verwendet" + }, + { + "id": "", + "label": "Detailer prompt", + "localized": "Detailer-Prompt", + "hint": "Verwende einen separaten Prompt für den Detailer. Falls nicht vorhanden, wird der primäre Prompt verwendet" + }, + { + "id": "", + "label": "Detailer steps", + "localized": "Detailer-Schritte", + "hint": "Anzahl der Schritte, die für den Detailer-Prozess ausgeführt werden sollen" + }, + { + "id": "", + "label": "Detailer strength", + "localized": "Detailer-Stärke", + "hint": "Entrauschungsstärke des Detailer-Prozesses" + }, + { + "id": "", + "label": "Detailer use model augment", + "localized": "Detailer-Modellaugmentierung verwenden", + "hint": "Führe Detailer-Detektionsmodelle mit zusätzlicher Präzision aus" + }, + { + "id": "", + "label": "Max detected", + "localized": "Maximal erkannt", + "hint": "Maximale Anzahl erkannter Objekte, auf denen der Detailer ausgeführt werden soll" + }, + { + "id": "", + "label": "Edge blur", + "localized": "Kantenunschärfe", + "hint": "Kante des maskierten Bereichs um diesen Prozentsatz verwischen" + }, + { + "id": "", + "label": "Edge padding", + "localized": "Kantenauffüllung", + "hint": "Kante des maskierten Bereichs um diesen Prozentsatz erweitern" + }, + { + "id": "", + "label": "Min confidence", + "localized": "Minimale Konfidenz", + "hint": "Minimale Konfidenz im erkannten Element" + }, + { + "id": "", + "label": "Max overlap", + "localized": "Maximale Überlappung", + "hint": "Maximale Überlappung zwischen zwei erkannten Elementen, bevor eines verworfen wird" + }, + { + "id": "", + "label": "Min size", + "localized": "Minimale Größe", + "hint": "Minimale Größe des erkannten Objekts als Prozentsatz des Gesamtbildes" + }, + { + "id": "", + "label": "Max size", + "localized": "Maximale Größe", + "hint": "Maximale Größe des erkannten Objekts als Prozentsatz des Gesamtbildes" + }, + { + "id": "", + "label": "Process Image", + "localized": "Bild verarbeiten", + "hint": "Einzelnes Bild verarbeiten" + }, + { + "id": "", + "label": "Process Batch", + "localized": "Stapel verarbeiten", + "hint": "Bildstapel verarbeiten" + }, + { + "id": "", + "label": "Process Folder", + "localized": "Ordner verarbeiten", + "hint": "Alle Bilder in einem Ordner verarbeiten" + }, + { + "id": "", + "label": "Current", + "localized": "Aktuell", + "hint": "Module im aktuell geladenen Modell analysieren" + }, + { + "id": "", + "label": "Merge", + "localized": "Zusammenführen", + "hint": "Zwei oder mehr Modelle zu einem neuen Modell zusammenführen" + }, + { + "id": "", + "label": "Modules", + "localized": "Module", + "hint": "Module in ein vorhandenes Modell zusammenführen und/oder ersetzen" + }, + { + "id": "", + "label": "Validate", + "localized": "Validieren", + "hint": "Alle lokalen Modelle validieren" + }, + { + "id": "", + "label": "CivitAI", + "localized": "CivitAI", + "hint": "Modelle von CivitAI suchen und herunterladen" + }, + { + "id": "", + "label": "Scale by", + "localized": "Skalieren um", + "hint": "Verwenden Sie diesen Tab, um die Quellbilder um einen gewählten Faktor zu vergrößern" + }, + { + "id": "", + "label": "Scale to", + "localized": "Skalieren auf", + "hint": "Verwenden Sie diesen Tab, um die Quellbilder auf eine gewählte Zielgröße zu vergrößern" + }, + { + "id": "", + "label": "Input directory", + "localized": "Eingabeverzeichnis", + "hint": "Ordner, in dem sich die zu verarbeitenden Bilder befinden" + }, + { + "id": "", + "label": "Output directory", + "localized": "Ausgabeverzeichnis", + "hint": "Ordner, in dem die verarbeiteten Bilder gespeichert werden sollen" + }, + { + "id": "", + "label": "Show result images", + "localized": "Ergebnisbilder anzeigen", + "hint": "Aktivieren, um die verarbeiteten Bilder im Bildbereich anzuzeigen" + }, + { + "id": "", + "label": "Crop to fit", + "localized": "Zuschneiden, um anzupassen", + "hint": "Wenn die Abmessungen Ihres Quellbildes (z. B. 512x510) von Ihren Zielabmessungen (z. B. 1024x768) abweichen, passt diese Funktion Ihr hochskaliertes Bild in Ihr Zielgrößenbild ein. Überschuss wird beschnitten" + }, + { + "id": "", + "label": "Refine Upscaler", + "localized": "Upscaler verfeinern", + "hint": "Wählen Sie einen sekundären Upscaler aus, der nach dem ersten Upscaler ausgeführt werden soll" + }, + { + "id": "", + "label": "Upscaler 2 visibility", + "localized": "Upscaler 2 Sichtbarkeit", + "hint": "Stärke des sekundären Upscalers" + }, + { + "id": "", + "label": "Calculate hash for all models", + "localized": "Hash für alle Modelle berechnen", + "hint": "Berechnet den Hash für alle verfügbaren Modelle, was sehr lange dauern kann" + }, + { + "id": "", + "label": "Weights Clip", + "localized": "Gewichte Clip", + "hint": "Erzwingt, dass zusammengeführte Gewichte nicht schwerer als das ursprüngliche Modell sind, wodurch Burn-In und übersättigte Modelle verhindert werden" + }, + { + "id": "", + "label": "ReBasin", + "localized": "ReBasin", + "hint": "Führt mehrere Zusammenführungen mit Permutationen durch, um mehr Funktionen aus beiden Modellen zu erhalten" + }, + { + "id": "", + "label": "Number of ReBasin Iterations", + "localized": "Anzahl der ReBasin-Iterationen", + "hint": "Anzahl der Male, die das Modell zusammengeführt und permutiert wird, bevor es gespeichert wird" + }, + { + "id": "", + "label": "CPU", + "localized": "CPU", + "hint": "Verwendet nur CPU und RAM: am langsamsten, aber am wenigsten wahrscheinlich für OOM" + }, + { + "id": "", + "label": "Shuffle", + "localized": "Mischen", + "hint": "Lädt das vollständige Modell in den RAM und berechnet auf VRAM: Weniger Beschleunigung, empfohlen für SDXL-Merges" + }, + { + "id": "", + "label": "In Blocks", + "localized": "In Blöcken", + "hint": "Downsampling-Blöcke des UNet (12 Werte für SD1.5, 9 Werte für SDXL)" + }, + { + "id": "", + "label": "Mid Block", + "localized": "Mittlerer Block", + "hint": "Zentraler Block des UNet (1 Wert)" + }, + { + "id": "", + "label": "Out Block", + "localized": "Ausgabe-Block", + "hint": "Upsampling-Blöcke des UNet (12 Werte für SD1.5, 9 Werte für SDXL)" + }, + { + "id": "", + "label": "Preset Interpolation Ratio", + "localized": "Voreingestelltes Interpolationsverhältnis", + "hint": "Wenn zwei Voreinstellungen ausgewählt sind, interpolieren Sie zwischen ihnen" + }, + { + "id": "", + "label": "Adapter", + "localized": "Adapter", + "hint": "IP-Adaptermodell" + }, + { + "id": "", + "label": "Active ip adapters", + "localized": "Aktive IP-Adapter", + "hint": "Anzahl der aktiven IP-Adapter" + }, + { + "id": "", + "label": "Unload adapter", + "localized": "Adapter entladen", + "hint": "IP-Adapter sofort nach der Generierung entladen. Andernfalls bleibt der IP-Adapter für eine schnellere Verwendung im nächsten Generierungsprozess geladen" + }, + { + "id": "", + "label": "Crop to portrait", + "localized": "Auf Porträt zuschneiden", + "hint": "Eingabebild nur auf Porträt zuschneiden, bevor es als IP-Adaptereingabe verwendet wird" + }, + { + "id": "", + "label": "Layer options", + "localized": "Layoptionen", + "hint": "IP-Adapter erweiterte Layeroptionen manuell festlegen" + }, + { + "id": "", + "label": "X values", + "localized": "X-Werte", + "hint": "Separate Werte für die X-Achse mit Kommas" + }, + { + "id": "", + "label": "Y values", + "localized": "Y-Werte", + "hint": "Separate Werte für die Y-Achse mit Kommas" + }, + { + "id": "", + "label": "Z values", + "localized": "Z-Werte", + "hint": "Separate Werte für die Z-Achse mit Kommas" + }, + { + "id": "", + "label": "Loops", + "localized": "Schleifen", + "hint": "Wie oft ein Bild verarbeitet werden soll. Jede Ausgabe wird als Eingabe der nächsten Schleife verwendet. Wenn auf 1 gesetzt, verhält es sich so, als ob dieses Skript nicht verwendet würde" + }, + { + "id": "", + "label": "Final denoising strength", + "localized": "Finale Entrauschungsstärke", + "hint": "Die Entrauschungsstärke für die letzte Schleife jedes Bildes im Stapel" + }, + { + "id": "", + "label": "Denoising strength curve", + "localized": "Entrauschungsstärkekurve", + "hint": "Die Entrauschungskurve steuert die Änderungsrate der Entrauschungsstärke in jeder Schleife. Aggressiv: Der größte Teil der Änderung erfolgt zu Beginn der Schleifen. Linear: Die Änderung ist in allen Schleifen konstant. Träge: Der größte Teil der Änderung erfolgt gegen Ende der Schleifen" + }, + { + "id": "", + "label": "Tile overlap", + "localized": "Kachelüberlappung", + "hint": "Für SD-Upscaling, wie viel Überlappung in Pixeln sollte zwischen den Kacheln bestehen. Kacheln überlappen sich, so dass beim Zusammenführen zu einem Bild keine deutlich sichtbare Naht entsteht" + }, + { + "id": "", + "label": "ACI: Color to Mask", + "localized": "ACI: Farbe zur Maske", + "hint": "Wählen Sie die Farbe aus, die Sie maskieren und inpainten möchten. Klicken Sie auf die Farbe im Bild, um sie automatisch auszuwählen.\n Es wird empfohlen, Bilder wie Green Screens zu verwenden, um präzise Ergebnisse zu erzielen." + }, + { + "id": "", + "label": "ACI: Color Tolerance", + "localized": "ACI: Farbtoleranz", + "hint": "Passen Sie die Toleranz an, um ähnliche Farben in die Maske einzubeziehen. Niedrigere Werte = Maskieren nur sehr ähnliche Farben. Höhere = Werte maskieren einen größeren Bereich ähnlicher Farben." + }, + { + "id": "", + "label": "ACI: Mask Erode", + "localized": "ACI: Maske erodieren", + "hint": "Passen Sie die Polsterung an, um einen inneren Versatz auf die Maske anzuwenden. (Empfohlener Wert = 2, um Reste an den Kanten zu entfernen)" + }, + { + "id": "", + "label": "ACI: Mask Blur", + "localized": "ACI: Maske verwischen", + "hint": "Passen Sie die Unschärfe an, um einen sanften Übergang zwischen Bild und Inpaint-Bereich zu erzielen. (Empfohlener Wert = 0 für Schärfe)" + }, + { + "id": "", + "label": "ACI: Denoising Strength", + "localized": "ACI: Entrauschungsstärke", + "hint": "Ändern Sie die Entrauschungsstärke, um den gewünschten Inpaint-Betrag zu erzielen." + } + ], + "settings": [ + { + "id": "", + "label": "Apply settings", + "localized": "Einstellungen anwenden", + "hint": "Aktuelle Einstellungen speichern, ein Serverneustart wird empfohlen" + }, + { + "id": "", + "label": "Restart server", + "localized": "Server neustarten", + "hint": "Server neustarten" + }, + { + "id": "", + "label": "Shutdown server", + "localized": "Server herunterfahren", + "hint": "Server herunterfahren" + }, + { + "id": "", + "label": "Preview theme", + "localized": "Theme Vorschau", + "hint": "Theme Vorschau anzeigen" + }, + { + "id": "", + "label": "Restore defaults", + "localized": "Standardeinstellungen wiederherstellen", + "hint": "Standardeinstellungen des Servers wiederherstellen" + }, + { + "id": "", + "label": "Unload model", + "localized": "Modell entladen", + "hint": "Aktuell geladenes Modell entladen" + }, + { + "id": "", + "label": "Reload model", + "localized": "Modell neu laden", + "hint": "Aktuell ausgewähltes Modell neu laden" + }, + { + "id": "", + "label": "Models & Loading", + "localized": "Modelle & Laden", + "hint": "Einstellungen bezüglich Basismodellen, primärem Backend und Modellladeverhalten" + }, + { + "id": "", + "label": "Variable Auto Encoder", + "localized": "Variabler Auto-Encoder", + "hint": "Einstellungen bezüglich variablem Auto-Encoder und Bilddekodierungsprozess während der Generierung" + }, + { + "id": "", + "label": "Text encoder", + "localized": "Text-Encoder", + "hint": "Einstellungen bezüglich Text-Encoder und Prompt-Encoding-Verarbeitung während der Generierung" + }, + { + "id": "", + "label": "Compute Settings", + "localized": "Berechnungseinstellungen", + "hint": "Einstellungen bezüglich Berechnungspräzision, Cross-Attention und Optimierungen für Berechnungsplattformen" + }, + { + "id": "", + "label": "Backend Settings", + "localized": "Backend-Einstellungen", + "hint": "Einstellungen bezüglich Berechnungs-Backends: Torch, ONNX und Olive" + }, + { + "id": "", + "label": "Quantization Settings", + "localized": "Quantisierungseinstellungen", + "hint": "Einstellungen bezüglich Modellquantisierung" + }, + { + "id": "", + "label": "Pipeline modifiers", + "localized": "Pipeline Modifikatoren", + "hint": "Zusätzliche Funktionen, die während der Generierung aktiviert werden können" + }, + { + "id": "", + "label": "Model compile", + "localized": "Modellkompilierung", + "hint": "Einstellungen bezüglich verschiedener Modellkompilierungsmethoden" + }, + { + "id": "", + "label": "System Paths", + "localized": "Systempfade", + "hint": "Einstellungen bezüglich des Speicherorts verschiedener Modellverzeichnisse" + }, + { + "id": "", + "label": "Image Options", + "localized": "Bildoptionen", + "hint": "Einstellungen bezüglich Bildformat, Metadaten und Bildrastern" + }, + { + "id": "", + "label": "Image Paths", + "localized": "Bildpfade", + "hint": "Einstellungen bezüglich Bilddateinamen und Ausgabeverzeichnissen" + }, + { + "id": "", + "label": "Live Previews", + "localized": "Live-Vorschauen", + "hint": "Einstellungen bezüglich Live-Vorschauen, Audiobenachrichtigungen" + }, + { + "id": "", + "label": "Sampler Settings", + "localized": "Sampler-Einstellungen", + "hint": "Einstellungen bezüglich Sampler-Auswahl und -Konfiguration sowie Diffuser-spezifischer Sampler-Konfiguration" + }, + { + "id": "", + "label": "Postprocessing", + "localized": "Nachbearbeitung", + "hint": "Einstellungen bezüglich Nachbearbeitung der Bildgenerierung, Gesichtswiederherstellung und Hochskalierung" + }, + { + "id": "", + "label": "Control Options", + "localized": "Steuerungsoptionen", + "hint": "Einstellungen bezüglich des Steuerung-Reiters" + }, + { + "id": "", + "label": "Huggingface", + "localized": "Huggingface", + "hint": "Einstellungen bezüglich Huggingface-Zugriff" + }, + { + "id": "", + "label": "Show all pages", + "localized": "Alle Seiten anzeigen", + "hint": "Alle Einstellungsseiten anzeigen" + }, + { + "id": "", + "label": "Base model", + "localized": "Basismodell", + "hint": "Hauptmodell, das für alle Operationen verwendet wird" + }, + { + "id": "", + "label": "Refiner model", + "localized": "Refiner-Modell", + "hint": "Refiner-Modell, das für Operationen im zweiten Durchgang verwendet wird" + }, + { + "id": "", + "label": "Cached models", + "localized": "Zwischengespeicherte Modelle", + "hint": "Die Anzahl der Modelle, die für den schnellen Zugriff im RAM gespeichert werden sollen" + }, + { + "id": "", + "label": "VAE model", + "localized": "VAE-Modell", + "hint": "VAE hilft bei feinen Details im endgültigen Bild und kann auch Farben verändern" + }, + { + "id": "", + "label": "Model load using streams", + "localized": "Modellladen mit Streams", + "hint": "Beim Laden von Modellen Stream-Laden versuchen, optimiert für langsamen oder Netzwerkspeicher" + }, + { + "id": "", + "label": "xFormers", + "localized": "xFormers", + "hint": "Speicheroptimierung. Nicht-deterministisch (jedes Mal andere Ergebnisse)" + }, + { + "id": "", + "label": "Scaled-Dot-Product", + "localized": "Scaled-Dot-Product", + "hint": "Speicheroptimierung. Nicht-deterministisch, es sei denn, die SDP-Speicher-Attention ist deaktiviert." + }, + { + "id": "", + "label": "Prompt padding", + "localized": "Prompt Padding", + "hint": "Erhöhen Sie die Kohärenz durch Padding ab dem letzten Komma innerhalb von n Token, wenn mehr als 75 Token verwendet werden" + }, + { + "id": "", + "label": "Original", + "localized": "Original", + "hint": "Originales LDM-Backend" + }, + { + "id": "", + "label": "Autocast", + "localized": "Autocast", + "hint": "Automatische Bestimmung der Präzision während der Laufzeit" + }, + { + "id": "", + "label": "Full", + "localized": "Vollständig", + "hint": "Immer volle Präzision verwenden" + }, + { + "id": "", + "label": "FP32", + "localized": "FP32", + "hint": "32-Bit-Gleitkomma-Präzision für Berechnungen verwenden" + }, + { + "id": "", + "label": "FP16", + "localized": "FP16", + "hint": "16-Bit-Gleitkomma-Präzision für Berechnungen verwenden" + }, + { + "id": "", + "label": "BF16", + "localized": "BF16", + "hint": "Modifizierte 16-Bit-Gleitkomma-Präzision für Berechnungen verwenden" + }, + { + "id": "", + "label": "Full precision (--no-half-vae)", + "localized": "Volle Präzision (--no-half-vae)", + "hint": "Verwendet FP32 für den VAE. Kann bessere Ergebnisse erzielen, verbraucht aber mehr VRAM und verlangsamt die Generierung" + }, + { + "id": "", + "label": "Force full precision (--no-half)", + "localized": "Volle Präzision erzwingen (--no-half)", + "hint": "Verwendet FP32 für das Modell. Kann bessere Ergebnisse erzielen, verbraucht aber mehr VRAM und verlangsamt die Generierung" + }, + { + "id": "", + "label": "Upcast sampling", + "localized": "Upcast-Sampling", + "hint": "Erzeugt normalerweise ähnliche Ergebnisse wie --no-half mit besserer Leistung bei geringerem Speicherverbrauch" + }, + { + "id": "", + "label": "Attempt VAE roll back for NaN values", + "localized": "Versuchen Sie, VAE für NaN-Werte zurückzusetzen", + "hint": "Erfordert Torch 2.1 und aktivierte NaN-Prüfung" + }, + { + "id": "", + "label": "Olive use FP16 on optimization", + "localized": "Olive verwendet FP16 bei der Optimierung", + "hint": "Verwenden Sie 16-Bit-Gleitkomma-Präzision für das Ausgabemodell des Olive-Optimierungsprozesses. Verwenden Sie 32-Bit-Gleitkomma-Präzision, wenn deaktiviert." + }, + { + "id": "", + "label": "Olive force FP32 for VAE Encoder", + "localized": "Olive erzwingt FP32 für VAE Encoder", + "hint": "Verwenden Sie 32-Bit-Gleitkomma-Präzision für den VAE-Encoder des Ausgabemodells. Dies überschreibt die Option 'FP16 bei der Optimierung verwenden'. Wenn Sie NaN- oder schwarze leere Bilder von Img2Img erhalten, aktivieren Sie diese Option und entfernen Sie den Cache" + }, + { + "id": "", + "label": "Olive use static dimensions", + "localized": "Olive verwendet statische Dimensionen", + "hint": "Beschleunigen Sie die Inferenz mit Olive-optimierten Modellen erheblich. (OrtTransformersOptimization)" + }, + { + "id": "", + "label": "Olive cache optimized models", + "localized": "Olive speichert optimierte Modelle im Cache", + "hint": "Speichern Sie Olive-verarbeitete Modelle als Cache. Sie können sie im ONNX-Reiter verwalten." + }, + { + "id": "", + "label": "File format", + "localized": "Dateiformat", + "hint": "Dateiformat für Bilder auswählen" + }, + { + "id": "", + "label": "Include metadata", + "localized": "Metadaten einschließen", + "hint": "Bildgenerierungsparameter als Metadaten-Tags in der Bilddatei speichern" + }, + { + "id": "", + "label": "Images filename pattern", + "localized": "Dateinamensmuster für Bilder", + "hint": "Verwenden Sie die folgenden Tags, um festzulegen, wie Dateinamen für Bilder ausgewählt werden:
seq, uuid
date, datetime, job_timestamp
generation_number, batch_number
model, model_shortname
model_hash, model_name
sampler, seed, steps, cfg
clip_skip, denoising
hasprompt, prompt, styles
prompt_hash, prompt_no_styles
prompt_spaces, prompt_words
height, width, image_hash
" + }, + { + "id": "", + "label": "Row count", + "localized": "Zeilenanzahl", + "hint": "Verwenden Sie -1 für automatische Erkennung und 0, damit sie mit der Batch-Größe übereinstimmt" + }, + { + "id": "", + "label": "Directory name pattern", + "localized": "Verzeichnisnamensmuster", + "hint": "Verwenden Sie die folgenden Tags, um festzulegen, wie Unterverzeichnisse für Bilder und Raster ausgewählt werden: [steps], [cfg],[prompt_hash], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [model_name], [prompt_words], [date], [datetime], [datetime], [datetime