"
+ for key, value in dic:
+ value_txt = str(value).replace('\n', ' ')
+ item += f"
{key}
{value_txt}
\n"
+ item += "
"
+
+ js_txt = urllib.parse.quote(json.dumps({k: v for k, v in dic}, indent=0), safe='')
+ item += f""
+
+ item += "
"
+ item += "
\n\n"
+
+ middle_part = item + middle_part
with open(html_name, 'w', encoding='utf-8') as f:
- f.write(existing_log)
+ f.write(begin_part + middle_part + end_part)
print(f'Image generated with private log at: {html_name}')
- log_cache[html_name] = existing_log
+ log_cache[html_name] = middle_part
return
diff --git a/modules/sample_hijack.py b/modules/sample_hijack.py
index eafda2dd..5936a096 100644
--- a/modules/sample_hijack.py
+++ b/modules/sample_hijack.py
@@ -1,11 +1,15 @@
import torch
-import fcbh.samplers
-import fcbh.model_management
+import ldm_patched.modules.samplers
+import ldm_patched.modules.model_management
-from fcbh.model_base import SDXLRefiner, SDXL
-from fcbh.conds import CONDRegular
-from fcbh.sample import get_additional_models, get_models_from_cond, cleanup_additional_models
-from fcbh.samplers import resolve_areas_and_cond_masks, wrap_model, calculate_start_end_timesteps, \
+from collections import namedtuple
+from ldm_patched.contrib.external_custom_sampler import SDTurboScheduler
+from ldm_patched.k_diffusion import sampling as k_diffusion_sampling
+from ldm_patched.modules.samplers import normal_scheduler, simple_scheduler, ddim_scheduler
+from ldm_patched.modules.model_base import SDXLRefiner, SDXL
+from ldm_patched.modules.conds import CONDRegular
+from ldm_patched.modules.sample import get_additional_models, get_models_from_cond, cleanup_additional_models
+from ldm_patched.modules.samplers import resolve_areas_and_cond_masks, wrap_model, calculate_start_end_timesteps, \
create_cond_with_same_area_if_none, pre_run_control, apply_empty_x_to_equal_area, encode_model_conds
@@ -95,6 +99,13 @@ def sample_hacked(model, noise, positive, negative, cfg, device, sampler, sigmas
calculate_start_end_timesteps(model, negative)
calculate_start_end_timesteps(model, positive)
+ if latent_image is not None:
+ latent_image = model.process_latent_in(latent_image)
+
+ if hasattr(model, 'extra_conds'):
+ positive = encode_model_conds(model.extra_conds, positive, noise, device, "positive", latent_image=latent_image, denoise_mask=denoise_mask)
+ negative = encode_model_conds(model.extra_conds, negative, noise, device, "negative", latent_image=latent_image, denoise_mask=denoise_mask)
+
#make sure each cond area has an opposite one with the same area
for c in positive:
create_cond_with_same_area_if_none(negative, c)
@@ -107,13 +118,6 @@ def sample_hacked(model, noise, positive, negative, cfg, device, sampler, sigmas
apply_empty_x_to_equal_area(list(filter(lambda c: c.get('control_apply_to_uncond', False) == True, positive)), negative, 'control', lambda cond_cnets, x: cond_cnets[x])
apply_empty_x_to_equal_area(positive, negative, 'gligen', lambda cond_cnets, x: cond_cnets[x])
- if latent_image is not None:
- latent_image = model.process_latent_in(latent_image)
-
- if hasattr(model, 'extra_conds'):
- positive = encode_model_conds(model.extra_conds, positive, noise, device, "positive", latent_image=latent_image, denoise_mask=denoise_mask)
- negative = encode_model_conds(model.extra_conds, negative, noise, device, "negative", latent_image=latent_image, denoise_mask=denoise_mask)
-
extra_args = {"cond":positive, "uncond":negative, "cond_scale": cfg, "model_options": model_options, "seed":seed}
if current_refiner is not None and hasattr(current_refiner.model, 'extra_conds'):
@@ -133,7 +137,9 @@ def sample_hacked(model, noise, positive, negative, cfg, device, sampler, sigmas
extra_args['model_options'] = {k: {} if k == 'transformer_options' else v for k, v in extra_args['model_options'].items()}
models, inference_memory = get_additional_models(positive_refiner, negative_refiner, current_refiner.model_dtype())
- fcbh.model_management.load_models_gpu([current_refiner] + models, current_refiner.memory_required(noise.shape) + inference_memory)
+ ldm_patched.modules.model_management.load_models_gpu(
+ [current_refiner] + models,
+ model.memory_required([noise.shape[0] * 2] + list(noise.shape[1:])) + inference_memory)
model_wrap.inner_model = current_refiner.model
print('Refiner Swapped')
@@ -152,4 +158,27 @@ def sample_hacked(model, noise, positive, negative, cfg, device, sampler, sigmas
return model.process_latent_out(samples.to(torch.float32))
-fcbh.samplers.sample = sample_hacked
+@torch.no_grad()
+@torch.inference_mode()
+def calculate_sigmas_scheduler_hacked(model, scheduler_name, steps):
+ if scheduler_name == "karras":
+ sigmas = k_diffusion_sampling.get_sigmas_karras(n=steps, sigma_min=float(model.model_sampling.sigma_min), sigma_max=float(model.model_sampling.sigma_max))
+ elif scheduler_name == "exponential":
+ sigmas = k_diffusion_sampling.get_sigmas_exponential(n=steps, sigma_min=float(model.model_sampling.sigma_min), sigma_max=float(model.model_sampling.sigma_max))
+ elif scheduler_name == "normal":
+ sigmas = normal_scheduler(model, steps)
+ elif scheduler_name == "simple":
+ sigmas = simple_scheduler(model, steps)
+ elif scheduler_name == "ddim_uniform":
+ sigmas = ddim_scheduler(model, steps)
+ elif scheduler_name == "sgm_uniform":
+ sigmas = normal_scheduler(model, steps, sgm=True)
+ elif scheduler_name == "turbo":
+ sigmas = SDTurboScheduler().get_sigmas(namedtuple('Patcher', ['model'])(model=model), steps=steps, denoise=1.0)[0]
+ else:
+ raise TypeError("error invalid scheduler")
+ return sigmas
+
+
+ldm_patched.modules.samplers.calculate_sigmas_scheduler = calculate_sigmas_scheduler_hacked
+ldm_patched.modules.samplers.sample = sample_hacked
diff --git a/modules/sdxl_styles.py b/modules/sdxl_styles.py
index d7489455..f5bb6276 100644
--- a/modules/sdxl_styles.py
+++ b/modules/sdxl_styles.py
@@ -31,7 +31,8 @@ for x in ['sdxl_styles_fooocus.json',
'sdxl_styles_sai.json',
'sdxl_styles_mre.json',
'sdxl_styles_twri.json',
- 'sdxl_styles_diva.json']:
+ 'sdxl_styles_diva.json',
+ 'sdxl_styles_marc_k3nt3l.json']:
if x in styles_files:
styles_files.remove(x)
styles_files.append(x)
diff --git a/modules/style_sorter.py b/modules/style_sorter.py
index 393e441d..49142bc7 100644
--- a/modules/style_sorter.py
+++ b/modules/style_sorter.py
@@ -15,11 +15,14 @@ def try_load_sorted_styles(style_names, default_selected):
try:
if os.path.exists('sorted_styles.json'):
with open('sorted_styles.json', 'rt', encoding='utf-8') as fp:
- sorted_styles = json.load(fp)
- if len(sorted_styles) == len(all_styles):
- if all(x in all_styles for x in sorted_styles):
- if all(x in sorted_styles for x in all_styles):
- all_styles = sorted_styles
+ sorted_styles = []
+ for x in json.load(fp):
+ if x in all_styles:
+ sorted_styles.append(x)
+ for x in all_styles:
+ if x not in sorted_styles:
+ sorted_styles.append(x)
+ all_styles = sorted_styles
except Exception as e:
print('Load style sorting failed.')
print(e)
diff --git a/modules/ui_gradio_extensions.py b/modules/ui_gradio_extensions.py
index e59b151b..bebf9f8c 100644
--- a/modules/ui_gradio_extensions.py
+++ b/modules/ui_gradio_extensions.py
@@ -30,6 +30,7 @@ def javascript_html():
edit_attention_js_path = webpath('javascript/edit-attention.js')
viewer_js_path = webpath('javascript/viewer.js')
image_viewer_js_path = webpath('javascript/imageviewer.js')
+ samples_path = webpath(os.path.abspath('./sdxl_styles/samples/fooocus_v2.jpg'))
head = f'\n'
head += f'\n'
head += f'\n'
@@ -38,6 +39,7 @@ def javascript_html():
head += f'\n'
head += f'\n'
head += f'\n'
+ head += f'\n'
if args_manager.args.theme:
head += f'\n'
diff --git a/modules/upscaler.py b/modules/upscaler.py
index 8e3a75e4..974e4f37 100644
--- a/modules/upscaler.py
+++ b/modules/upscaler.py
@@ -1,8 +1,9 @@
import os
import torch
+import modules.core as core
-from fcbh_extras.chainner_models.architecture.RRDB import RRDBNet as ESRGAN
-from fcbh_extras.nodes_upscale_model import ImageUpscaleWithModel
+from ldm_patched.pfn.architecture.RRDB import RRDBNet as ESRGAN
+from ldm_patched.contrib.external_upscale_model import ImageUpscaleWithModel
from collections import OrderedDict
from modules.config import path_upscale_models
@@ -13,6 +14,9 @@ model = None
def perform_upscale(img):
global model
+
+ print(f'Upscaling image with shape {str(img.shape)} ...')
+
if model is None:
sd = torch.load(model_filename)
sdo = OrderedDict()
@@ -22,4 +26,9 @@ def perform_upscale(img):
model = ESRGAN(sdo)
model.cpu()
model.eval()
- return opImageUpscaleWithModel.upscale(model, img)[0]
+
+ img = core.numpy_to_pytorch(img)
+ img = opImageUpscaleWithModel.upscale(model, img)[0]
+ img = core.pytorch_to_numpy(img)[0]
+
+ return img
diff --git a/modules/util.py b/modules/util.py
index 1601f1fe..052b746b 100644
--- a/modules/util.py
+++ b/modules/util.py
@@ -3,6 +3,7 @@ import datetime
import random
import math
import os
+import cv2
from PIL import Image
@@ -10,6 +11,15 @@ from PIL import Image
LANCZOS = (Image.Resampling.LANCZOS if hasattr(Image, 'Resampling') else Image.LANCZOS)
+def erode_or_dilate(x, k):
+ k = int(k)
+ if k > 0:
+ return cv2.dilate(x, kernel=np.ones(shape=(3, 3), dtype=np.uint8), iterations=k)
+ if k < 0:
+ return cv2.erode(x, kernel=np.ones(shape=(3, 3), dtype=np.uint8), iterations=-k)
+ return x
+
+
def resample_image(im, width, height):
im = Image.fromarray(im)
im = im.resize((int(width), int(height)), resample=LANCZOS)
@@ -79,7 +89,7 @@ def get_shape_ceil(h, w):
def get_image_shape_ceil(im):
- H, W, _ = im.shape
+ H, W = im.shape[:2]
return get_shape_ceil(H, W)
diff --git a/presets/sai.json b/presets/sai.json
index fe67c033..ac9c17d1 100644
--- a/presets/sai.json
+++ b/presets/sai.json
@@ -1,7 +1,7 @@
{
"default_model": "sd_xl_base_1.0_0.9vae.safetensors",
"default_refiner": "sd_xl_refiner_1.0_0.9vae.safetensors",
- "default_refiner_switch": 0.7,
+ "default_refiner_switch": 0.75,
"default_loras": [
[
"sd_xl_offset_example-lora_1.0.safetensors",
diff --git a/readme.md b/readme.md
index ab59d872..87c44b83 100644
--- a/readme.md
+++ b/readme.md
@@ -28,6 +28,8 @@ Fooocus has simplified the installation. Between pressing "download" and generat
`[1]` David Holz, 2019.
+**Recently many fake websites exist on Google when you search “fooocus”. Do not trust those – here is the only official source of Fooocus.**
+
## [Installing Fooocus](#download)
# Moving from Midjourney to Fooocus
@@ -36,7 +38,7 @@ Using Fooocus is as easy as (probably easier than) Midjourney – but this does
| Midjourney | Fooocus |
| - | - |
-| High-quality text-to-image without needing much prompt engineering or parameter tuning. (Unknown method) | High-quality text-to-image without needing much prompt engineering or parameter tuning. (Fooocus has offline GPT-2 based prompt processing engine and lots of sampling improvements so that results are always beautiful, no matter your prompt is as short as “house in garden” or as long as 1000 words) |
+| High-quality text-to-image without needing much prompt engineering or parameter tuning. (Unknown method) | High-quality text-to-image without needing much prompt engineering or parameter tuning. (Fooocus has an offline GPT-2 based prompt processing engine and lots of sampling improvements so that results are always beautiful, no matter if your prompt is as short as “house in garden” or as long as 1000 words) |
| V1 V2 V3 V4 | Input Image -> Upscale or Variation -> Vary (Subtle) / Vary (Strong)|
| U1 U2 U3 U4 | Input Image -> Upscale or Variation -> Upscale (1.5x) / Upscale (2x) |
| Inpaint / Up / Down / Left / Right (Pan) | Input Image -> Inpaint or Outpaint -> Inpaint / Up / Down / Left / Right (Fooocus uses its own inpaint algorithm and inpaint models so that results are more satisfying than all other software that uses standard SDXL inpaint method/model) |
@@ -51,6 +53,7 @@ Using Fooocus is as easy as (probably easier than) Midjourney – but this does
| --no | Advanced -> Negative Prompt |
| --ar | Advanced -> Aspect Ratios |
| InsightFace | Input Image -> Image Prompt -> Advanced -> FaceSwap |
+| Describe | Input Image -> Describe |
We also have a few things borrowed from the best parts of LeonardoAI:
@@ -68,18 +71,18 @@ Fooocus also developed many "fooocus-only" features for advanced users to get pe
You can directly download Fooocus with:
-**[>>> Click here to download <<<](https://github.com/lllyasviel/Fooocus/releases/download/release/Fooocus_win64_2-1-791.7z)**
+**[>>> Click here to download <<<](https://github.com/lllyasviel/Fooocus/releases/download/release/Fooocus_win64_2-1-831.7z)**
-After you download the file, please uncompress it, and then run the "run.bat".
+After you download the file, please uncompress it and then run the "run.bat".

-In the first time you launch the software, it will automatically download models:
+The first time you launch the software, it will automatically download models:
1. It will download [default models](#models) to the folder "Fooocus\models\checkpoints" given different presets. You can download them in advance if you do not want automatic download.
2. Note that if you use inpaint, at the first time you inpaint an image, it will download [Fooocus's own inpaint control model from here](https://huggingface.co/lllyasviel/fooocus_inpaint/resolve/main/inpaint_v26.fooocus.patch) as the file "Fooocus\models\inpaint\inpaint_v26.fooocus.patch" (the size of this file is 1.28GB).
-After Fooocus 2.1.60, you will also have `run_anime.bat` and `run_realistic.bat`. They are different model presets (and requires different models, but thet will be automatically downloaded). [Check here for more details](https://github.com/lllyasviel/Fooocus/discussions/679).
+After Fooocus 2.1.60, you will also have `run_anime.bat` and `run_realistic.bat`. They are different model presets (and require different models, but they will be automatically downloaded). [Check here for more details](https://github.com/lllyasviel/Fooocus/discussions/679).

@@ -96,7 +99,7 @@ Besides, recently many other software report that Nvidia driver above 532 is som
Note that the minimal requirement is **4GB Nvidia GPU memory (4GB VRAM)** and **8GB system memory (8GB RAM)**. This requires using Microsoft’s Virtual Swap technique, which is automatically enabled by your Windows installation in most cases, so you often do not need to do anything about it. However, if you are not sure, or if you manually turned it off (would anyone really do that?), or **if you see any "RuntimeError: CPUAllocator"**, you can enable it here:
-Click here to the see the image instruction.
+Click here to see the image instructions.

@@ -106,9 +109,13 @@ Note that the minimal requirement is **4GB Nvidia GPU memory (4GB VRAM)** and **
Please open an issue if you use similar devices but still cannot achieve acceptable performances.
+Note that the [minimal requirement](#minimal-requirement) for different platforms is different.
+
+See also the common problems and troubleshoots [here](troubleshoot.md).
+
### Colab
-(Last tested - 2023 Nov 15)
+(Last tested - 2023 Dec 12)
| Colab | Info
| --- | --- |
@@ -116,7 +123,7 @@ Please open an issue if you use similar devices but still cannot achieve accepta
In Colab, you can modify the last line to `!python entry_with_update.py --share` or `!python entry_with_update.py --preset anime --share` or `!python entry_with_update.py --preset realistic --share` for Fooocus Default/Anime/Realistic Edition.
-Note that this Colab will disable refiner by default because Colab free's resource is relatively limited.
+Note that this Colab will disable refiner by default because Colab free's resources are relatively limited (and some "big" features like image prompt may cause free-tier Colab to disconnect). We make sure that basic text-to-image is always working on free-tier Colab.
Thanks to [camenduru](https://github.com/camenduru)!
@@ -135,7 +142,7 @@ Then download the models: download [default models](#models) to the folder "Fooo
conda activate fooocus
python entry_with_update.py
-Or if you want to open a remote port, use
+Or, if you want to open a remote port, use
conda activate fooocus
python entry_with_update.py --listen
@@ -144,7 +151,7 @@ Use `python entry_with_update.py --preset anime` or `python entry_with_update.py
### Linux (Using Python Venv)
-Your Linux needs to have **Python 3.10** installed, and lets say your Python can be called with command **python3** with your venv system working, you can
+Your Linux needs to have **Python 3.10** installed, and let's say your Python can be called with the command **python3** with your venv system working; you can
git clone https://github.com/lllyasviel/Fooocus.git
cd Fooocus
@@ -157,7 +164,7 @@ See the above sections for model downloads. You can launch the software with:
source fooocus_env/bin/activate
python entry_with_update.py
-Or if you want to open a remote port, use
+Or, if you want to open a remote port, use
source fooocus_env/bin/activate
python entry_with_update.py --listen
@@ -166,7 +173,7 @@ Use `python entry_with_update.py --preset anime` or `python entry_with_update.py
### Linux (Using native system Python)
-If you know what you are doing, and your Linux already has **Python 3.10** installed, and your Python can be called with command **python3** (and Pip with **pip3**), you can
+If you know what you are doing, and your Linux already has **Python 3.10** installed, and your Python can be called with the command **python3** (and Pip with **pip3**), you can
git clone https://github.com/lllyasviel/Fooocus.git
cd Fooocus
@@ -176,7 +183,7 @@ See the above sections for model downloads. You can launch the software with:
python3 entry_with_update.py
-Or if you want to open a remote port, use
+Or, if you want to open a remote port, use
python3 entry_with_update.py --listen
@@ -184,7 +191,9 @@ Use `python entry_with_update.py --preset anime` or `python entry_with_update.py
### Linux (AMD GPUs)
-Same with the above instructions. You need to change torch to AMD version
+Note that the [minimal requirement](#minimal-requirement) for different platforms is different.
+
+Same with the above instructions. You need to change torch to the AMD version
pip uninstall torch torchvision torchaudio torchtext functorch xformers
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.6
@@ -195,7 +204,9 @@ Use `python entry_with_update.py --preset anime` or `python entry_with_update.py
### Windows(AMD GPUs)
-Same with Windows. Download the software, edit the content of `run.bat` as:
+Note that the [minimal requirement](#minimal-requirement) for different platforms is different.
+
+Same with Windows. Download the software and edit the content of `run.bat` as:
.\python_embeded\python.exe -m pip uninstall torch torchvision torchaudio torchtext functorch xformers -y
.\python_embeded\python.exe -m pip install torch-directml
@@ -206,10 +217,12 @@ Then run the `run.bat`.
AMD is not intensively tested, however. The AMD support is in beta.
-Use `python entry_with_update.py --preset anime` or `python entry_with_update.py --preset realistic` for Fooocus Anime/Realistic Edition.
+For AMD, use `.\python_embeded\python.exe entry_with_update.py --directml --preset anime` or `.\python_embeded\python.exe entry_with_update.py --directml --preset realistic` for Fooocus Anime/Realistic Edition.
### Mac
+Note that the [minimal requirement](#minimal-requirement) for different platforms is different.
+
Mac is not intensively tested. Below is an unofficial guideline for using Mac. You can discuss problems [here](https://github.com/lllyasviel/Fooocus/pull/129).
You can install Fooocus on Apple Mac silicon (M1 or M2) with macOS 'Catalina' or a newer version. Fooocus runs on Apple silicon computers via [PyTorch](https://pytorch.org/get-started/locally/) MPS device acceleration. Mac Silicon computers don't come with a dedicated graphics card, resulting in significantly longer image processing times compared to computers with dedicated graphics cards.
@@ -220,17 +233,48 @@ You can install Fooocus on Apple Mac silicon (M1 or M2) with macOS 'Catalina' or
1. Create a new conda environment, `conda env create -f environment.yaml`.
1. Activate your new conda environment, `conda activate fooocus`.
1. Install the packages required by Fooocus, `pip install -r requirements_versions.txt`.
-1. Launch Fooocus by running `python entry_with_update.py`. (Some Mac M2 users may need `python entry_with_update.py --enable-smart-memory` to speed up model loading/unloading.) The first time you run Fooocus, it will automatically download the Stable Diffusion SDXL models and will take a significant time, depending on your internet connection.
+1. Launch Fooocus by running `python entry_with_update.py`. (Some Mac M2 users may need `python entry_with_update.py --disable-offload-from-vram` to speed up model loading/unloading.) The first time you run Fooocus, it will automatically download the Stable Diffusion SDXL models and will take a significant amount of time, depending on your internet connection.
Use `python entry_with_update.py --preset anime` or `python entry_with_update.py --preset realistic` for Fooocus Anime/Realistic Edition.
+### Download Previous Version
+
+See the guidelines [here](https://github.com/lllyasviel/Fooocus/discussions/1405).
+
+## Minimal Requirement
+
+Below is the minimal requirement for running Fooocus locally. If your device capability is lower than this spec, you may not be able to use Fooocus locally. (Please let us know, in any case, if your device capability is lower but Fooocus still works.)
+
+| Operating System | GPU | Minimal GPU Memory | Minimal System Memory | [System Swap](troubleshoot.md) | Note |
+|-------------------|------------------------------|------------------------------|---------------------------|--------------------------------|----------------------------------------------------------------------------|
+| Windows/Linux | Nvidia RTX 4XXX | 4GB | 8GB | Required | fastest |
+| Windows/Linux | Nvidia RTX 3XXX | 4GB | 8GB | Required | usually faster than RTX 2XXX |
+| Windows/Linux | Nvidia RTX 2XXX | 4GB | 8GB | Required | usually faster than GTX 1XXX |
+| Windows/Linux | Nvidia GTX 1XXX | 8GB (* 6GB uncertain) | 8GB | Required | only marginally faster than CPU |
+| Windows/Linux | Nvidia GTX 9XX | 8GB | 8GB | Required | faster or slower than CPU |
+| Windows/Linux | Nvidia GTX < 9XX | Not supported | / | / | / |
+| Windows | AMD GPU | 8GB (updated 2023 Dec 30) | 8GB | Required | via DirectML (* ROCm is on hold), about 3x slower than Nvidia RTX 3XXX |
+| Linux | AMD GPU | 8GB | 8GB | Required | via ROCm, about 1.5x slower than Nvidia RTX 3XXX |
+| Mac | M1/M2 MPS | Shared | Shared | Shared | about 9x slower than Nvidia RTX 3XXX |
+| Windows/Linux/Mac | only use CPU | 0GB | 32GB | Required | about 17x slower than Nvidia RTX 3XXX |
+
+* AMD GPU ROCm (on hold): The AMD is still working on supporting ROCm on Windows.
+
+* Nvidia GTX 1XXX 6GB uncertain: Some people report 6GB success on GTX 10XX, but some other people report failure cases.
+
+*Note that Fooocus is only for extremely high quality image generating. We will not support smaller models to reduce the requirement and sacrifice result quality.*
+
+## Troubleshoot
+
+See the common problems [here](troubleshoot.md).
+
## Default Models
-Given different goals, the default models and configs of Fooocus is different:
+Given different goals, the default models and configs of Fooocus are different:
| Task | Windows | Linux args | Main Model | Refiner | Config |
-| - | - | - | - | - | - |
+| --- | --- | --- | --- | --- | --- |
| General | run.bat | | [juggernautXL v6_RunDiffusion](https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/juggernautXL_version6Rundiffusion.safetensors) | not used | [here](https://github.com/lllyasviel/Fooocus/blob/main/modules/path.py) |
| Realistic | run_realistic.bat | --preset realistic | [realistic_stock_photo](https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/realisticStockPhoto_v10.safetensors) | not used | [here](https://github.com/lllyasviel/Fooocus/blob/main/presets/realistic.json) |
| Anime | run_anime.bat | --preset anime | [bluepencil_v50](https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/bluePencilXL_v050.safetensors) | [dreamsharper_v8](https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/DreamShaper_8_pruned.safetensors) (SD1.5) | [here](https://github.com/lllyasviel/Fooocus/blob/main/presets/anime.json) |
@@ -240,26 +284,26 @@ Note that the download is **automatic** - you do not need to do anything if the
## List of "Hidden" Tricks
-Below things are already inside the software, and **users do not need to do anything about these**.
+The below things are already inside the software, and **users do not need to do anything about these**.
1. GPT2-based [prompt expansion as a dynamic style "Fooocus V2".](https://github.com/lllyasviel/Fooocus/discussions/117#raw) (similar to Midjourney's hidden pre-processsing and "raw" mode, or the LeonardoAI's Prompt Magic).
-2. Native refiner swap inside one single k-sampler. The advantage is that now the refiner model can reuse the base model's momentum (or ODE's history parameters) collected from k-sampling to achieve more coherent sampling. In Automatic1111's high-res fix and ComfyUI's node system, the base model and refiner use two independent k-samplers, which means the momentum is largely wasted, and the sampling continuity is broken. Fooocus uses its own advanced k-diffusion sampling that ensures seamless, native, and continuous swap in a refiner setup. (Update Aug 13: Actually I discussed this with Automatic1111 several days ago and it seems that the “native refiner swap inside one single k-sampler” is [merged]( https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/12371) into the dev branch of webui. Great!)
-3. Negative ADM guidance. Because the highest resolution level of XL Base does not have cross attentions, the positive and negative signals for XL's highest resolution level cannot receive enough contrasts during the CFG sampling, causing the results look a bit plastic or overly smooth in certain cases. Fortunately, since the XL's highest resolution level is still conditioned on image aspect ratios (ADM), we can modify the adm on the positive/negative side to compensate for the lack of CFG contrast in the highest resolution level. (Update Aug 16, the IOS App [Drawing Things](https://apps.apple.com/us/app/draw-things-ai-generation/id6444050820) will support Negative ADM Guidance. Great!)
-4. We implemented a carefully tuned variation of the Section 5.1 of ["Improving Sample Quality of Diffusion Models Using Self-Attention Guidance"](https://arxiv.org/pdf/2210.00939.pdf). The weight is set to very low, but this is Fooocus's final guarantee to make sure that the XL will never yield overly smooth or plastic appearance (examples [here](https://github.com/lllyasviel/Fooocus/discussions/117#sharpness)). This can almostly eliminate all cases that XL still occasionally produce overly smooth results even with negative ADM guidance. (Update 2023 Aug 18, the Gaussian kernel of SAG is changed to an anisotropic kernel for better structure preservation and fewer artifacts.)
+2. Native refiner swap inside one single k-sampler. The advantage is that the refiner model can now reuse the base model's momentum (or ODE's history parameters) collected from k-sampling to achieve more coherent sampling. In Automatic1111's high-res fix and ComfyUI's node system, the base model and refiner use two independent k-samplers, which means the momentum is largely wasted, and the sampling continuity is broken. Fooocus uses its own advanced k-diffusion sampling that ensures seamless, native, and continuous swap in a refiner setup. (Update Aug 13: Actually, I discussed this with Automatic1111 several days ago, and it seems that the “native refiner swap inside one single k-sampler” is [merged]( https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/12371) into the dev branch of webui. Great!)
+3. Negative ADM guidance. Because the highest resolution level of XL Base does not have cross attentions, the positive and negative signals for XL's highest resolution level cannot receive enough contrasts during the CFG sampling, causing the results to look a bit plastic or overly smooth in certain cases. Fortunately, since the XL's highest resolution level is still conditioned on image aspect ratios (ADM), we can modify the adm on the positive/negative side to compensate for the lack of CFG contrast in the highest resolution level. (Update Aug 16, the IOS App [Drawing Things](https://apps.apple.com/us/app/draw-things-ai-generation/id6444050820) will support Negative ADM Guidance. Great!)
+4. We implemented a carefully tuned variation of Section 5.1 of ["Improving Sample Quality of Diffusion Models Using Self-Attention Guidance"](https://arxiv.org/pdf/2210.00939.pdf). The weight is set to very low, but this is Fooocus's final guarantee to make sure that the XL will never yield an overly smooth or plastic appearance (examples [here](https://github.com/lllyasviel/Fooocus/discussions/117#sharpness)). This can almost eliminate all cases for which XL still occasionally produces overly smooth results, even with negative ADM guidance. (Update 2023 Aug 18, the Gaussian kernel of SAG is changed to an anisotropic kernel for better structure preservation and fewer artifacts.)
5. We modified the style templates a bit and added the "cinematic-default".
6. We tested the "sd_xl_offset_example-lora_1.0.safetensors" and it seems that when the lora weight is below 0.5, the results are always better than XL without lora.
7. The parameters of samplers are carefully tuned.
-8. Because XL uses positional encoding for generation resolution, images generated by several fixed resolutions look a bit better than that from arbitrary resolutions (because the positional encoding is not very good at handling int numbers that are unseen during training). This suggests that the resolutions in UI may be hard coded for best results.
-9. Separated prompts for two different text encoders seem unnecessary. Separated prompts for base model and refiner may work but the effects are random, and we refrain from implement this.
-10. DPM family seems well-suited for XL, since XL sometimes generates overly smooth texture but DPM family sometimes generate overly dense detail in texture. Their joint effect looks neutral and appealing to human perception.
+8. Because XL uses positional encoding for generation resolution, images generated by several fixed resolutions look a bit better than those from arbitrary resolutions (because the positional encoding is not very good at handling int numbers that are unseen during training). This suggests that the resolutions in UI may be hard coded for best results.
+9. Separated prompts for two different text encoders seem unnecessary. Separated prompts for the base model and refiner may work, but the effects are random, and we refrain from implementing this.
+10. The DPM family seems well-suited for XL since XL sometimes generates overly smooth texture, but the DPM family sometimes generates overly dense detail in texture. Their joint effect looks neutral and appealing to human perception.
11. A carefully designed system for balancing multiple styles as well as prompt expansion.
-12. Using automatic1111's method to normalize prompt emphasizing. This significantly improve results when users directly copy prompts from civitai.
-13. The joint swap system of refiner now also support img2img and upscale in a seamless way.
+12. Using automatic1111's method to normalize prompt emphasizing. This significantly improves results when users directly copy prompts from civitai.
+13. The joint swap system of the refiner now also supports img2img and upscale in a seamless way.
14. CFG Scale and TSNR correction (tuned for SDXL) when CFG is bigger than 10.
## Customization
-After the first time you run Fooocus, a config file will be generated at `Fooocus\config.txt`. This file can be edited for changing the model path or default parameters.
+After the first time you run Fooocus, a config file will be generated at `Fooocus\config.txt`. This file can be edited to change the model path or default parameters.
For example, an edited `Fooocus\config.txt` (this file will be generated after the first launch) may look like this:
@@ -295,9 +339,37 @@ Many other keys, formats, and examples are in `Fooocus\config_modification_tutor
Consider twice before you really change the config. If you find yourself breaking things, just delete `Fooocus\config.txt`. Fooocus will go back to default.
-A safter way is just to try "run_anime.bat" or "run_realistic.bat" - they should be already good enough for different tasks.
+A safer way is just to try "run_anime.bat" or "run_realistic.bat" - they should already be good enough for different tasks.
-Note that `user_path_config.txt` is deprecated and will be removed soon.
+~Note that `user_path_config.txt` is deprecated and will be removed soon.~ (Edit: it is already removed.)
+
+### All CMD Flags
+
+```
+entry_with_update.py [-h] [--listen [IP]] [--port PORT]
+ [--disable-header-check [ORIGIN]]
+ [--web-upload-size WEB_UPLOAD_SIZE]
+ [--external-working-path PATH [PATH ...]]
+ [--output-path OUTPUT_PATH] [--temp-path TEMP_PATH]
+ [--cache-path CACHE_PATH] [--in-browser]
+ [--disable-in-browser] [--gpu-device-id DEVICE_ID]
+ [--async-cuda-allocation | --disable-async-cuda-allocation]
+ [--disable-attention-upcast] [--all-in-fp32 | --all-in-fp16]
+ [--unet-in-bf16 | --unet-in-fp16 | --unet-in-fp8-e4m3fn | --unet-in-fp8-e5m2]
+ [--vae-in-fp16 | --vae-in-fp32 | --vae-in-bf16]
+ [--clip-in-fp8-e4m3fn | --clip-in-fp8-e5m2 | --clip-in-fp16 | --clip-in-fp32]
+ [--directml [DIRECTML_DEVICE]] [--disable-ipex-hijack]
+ [--preview-option [none,auto,fast,taesd]]
+ [--attention-split | --attention-quad | --attention-pytorch]
+ [--disable-xformers]
+ [--always-gpu | --always-high-vram | --always-normal-vram |
+ --always-low-vram | --always-no-vram | --always-cpu]
+ [--always-offload-from-vram] [--disable-server-log]
+ [--debug-mode] [--is-windows-embedded-python]
+ [--disable-server-info] [--share] [--preset PRESET]
+ [--language LANGUAGE] [--disable-offload-from-vram]
+ [--theme THEME] [--disable-image-log]
+```
## Advanced Features
@@ -307,15 +379,13 @@ Fooocus also has many community forks, just like SD-WebUI's [vladmandic/automati
| Fooocus' forks |
| - |
-| [fenneishi/Fooocus-Control](https://github.com/fenneishi/Fooocus-Control) [runew0lf/RuinedFooocus](https://github.com/runew0lf/RuinedFooocus) [MoonRide303/Fooocus-MRE](https://github.com/MoonRide303/Fooocus-MRE) and so on ... |
+| [fenneishi/Fooocus-Control](https://github.com/fenneishi/Fooocus-Control) [runew0lf/RuinedFooocus](https://github.com/runew0lf/RuinedFooocus) [MoonRide303/Fooocus-MRE](https://github.com/MoonRide303/Fooocus-MRE) [metercai/SimpleSDXL](https://github.com/metercai/SimpleSDXL) and so on ... |
See also [About Forking and Promotion of Forks](https://github.com/lllyasviel/Fooocus/discussions/699).
## Thanks
-Fooocus is powered by [FCBH backend](https://github.com/lllyasviel/Fooocus/tree/main/backend), which starts from an odd mixture of [Automatic1111](https://github.com/AUTOMATIC1111/stable-diffusion-webui) and [ComfyUI](https://github.com/comfyanonymous/ComfyUI).
-
-Special thanks to [twri](https://github.com/twri) and [3Diva](https://github.com/3Diva) for creating additional SDXL styles available in Fooocus.
+Special thanks to [twri](https://github.com/twri) and [3Diva](https://github.com/3Diva) and [Marc K3nt3L](https://github.com/K3nt3L) for creating additional SDXL styles available in Fooocus. Thanks [daswer123](https://github.com/daswer123) for contributing the Canvas Zoom!
## Update Log
@@ -323,7 +393,7 @@ The log is [here](update_log.md).
## Localization/Translation/I18N
-**We need your help!** Please help with translating Fooocus to international languages.
+**We need your help!** Please help translate Fooocus into international languages.
You can put json files in the `language` folder to translate the user interface.
diff --git a/requirements_versions.txt b/requirements_versions.txt
index 5d5af5d6..b2111c1f 100644
--- a/requirements_versions.txt
+++ b/requirements_versions.txt
@@ -8,10 +8,11 @@ Pillow==9.2.0
scipy==1.9.3
tqdm==4.64.1
psutil==5.9.5
-numpy==1.23.5
pytorch_lightning==1.9.4
omegaconf==2.2.3
gradio==3.41.2
pygit2==1.12.2
opencv-contrib-python==4.8.0.74
httpx==0.24.1
+onnxruntime==1.16.3
+timm==0.9.2
diff --git a/sdxl_styles/samples/abstract_expressionism.jpg b/sdxl_styles/samples/abstract_expressionism.jpg
new file mode 100644
index 00000000..226b8fa7
Binary files /dev/null and b/sdxl_styles/samples/abstract_expressionism.jpg differ
diff --git a/sdxl_styles/samples/academia.jpg b/sdxl_styles/samples/academia.jpg
new file mode 100644
index 00000000..26a700d0
Binary files /dev/null and b/sdxl_styles/samples/academia.jpg differ
diff --git a/sdxl_styles/samples/action_figure.jpg b/sdxl_styles/samples/action_figure.jpg
new file mode 100644
index 00000000..fcd1c092
Binary files /dev/null and b/sdxl_styles/samples/action_figure.jpg differ
diff --git a/sdxl_styles/samples/adorable_3d_character.jpg b/sdxl_styles/samples/adorable_3d_character.jpg
new file mode 100644
index 00000000..493bfb8f
Binary files /dev/null and b/sdxl_styles/samples/adorable_3d_character.jpg differ
diff --git a/sdxl_styles/samples/adorable_kawaii.jpg b/sdxl_styles/samples/adorable_kawaii.jpg
new file mode 100644
index 00000000..52bc7733
Binary files /dev/null and b/sdxl_styles/samples/adorable_kawaii.jpg differ
diff --git a/sdxl_styles/samples/ads_advertising.jpg b/sdxl_styles/samples/ads_advertising.jpg
new file mode 100644
index 00000000..40631d4c
Binary files /dev/null and b/sdxl_styles/samples/ads_advertising.jpg differ
diff --git a/sdxl_styles/samples/ads_automotive.jpg b/sdxl_styles/samples/ads_automotive.jpg
new file mode 100644
index 00000000..ceea6c4d
Binary files /dev/null and b/sdxl_styles/samples/ads_automotive.jpg differ
diff --git a/sdxl_styles/samples/ads_corporate.jpg b/sdxl_styles/samples/ads_corporate.jpg
new file mode 100644
index 00000000..1d590743
Binary files /dev/null and b/sdxl_styles/samples/ads_corporate.jpg differ
diff --git a/sdxl_styles/samples/ads_fashion_editorial.jpg b/sdxl_styles/samples/ads_fashion_editorial.jpg
new file mode 100644
index 00000000..22fdd232
Binary files /dev/null and b/sdxl_styles/samples/ads_fashion_editorial.jpg differ
diff --git a/sdxl_styles/samples/ads_food_photography.jpg b/sdxl_styles/samples/ads_food_photography.jpg
new file mode 100644
index 00000000..64c38aff
Binary files /dev/null and b/sdxl_styles/samples/ads_food_photography.jpg differ
diff --git a/sdxl_styles/samples/ads_gourmet_food_photography.jpg b/sdxl_styles/samples/ads_gourmet_food_photography.jpg
new file mode 100644
index 00000000..305770b0
Binary files /dev/null and b/sdxl_styles/samples/ads_gourmet_food_photography.jpg differ
diff --git a/sdxl_styles/samples/ads_luxury.jpg b/sdxl_styles/samples/ads_luxury.jpg
new file mode 100644
index 00000000..54248568
Binary files /dev/null and b/sdxl_styles/samples/ads_luxury.jpg differ
diff --git a/sdxl_styles/samples/ads_real_estate.jpg b/sdxl_styles/samples/ads_real_estate.jpg
new file mode 100644
index 00000000..438b9fd1
Binary files /dev/null and b/sdxl_styles/samples/ads_real_estate.jpg differ
diff --git a/sdxl_styles/samples/ads_retail.jpg b/sdxl_styles/samples/ads_retail.jpg
new file mode 100644
index 00000000..93aea1e7
Binary files /dev/null and b/sdxl_styles/samples/ads_retail.jpg differ
diff --git a/sdxl_styles/samples/art_deco.jpg b/sdxl_styles/samples/art_deco.jpg
new file mode 100644
index 00000000..7a37c722
Binary files /dev/null and b/sdxl_styles/samples/art_deco.jpg differ
diff --git a/sdxl_styles/samples/art_nouveau.jpg b/sdxl_styles/samples/art_nouveau.jpg
new file mode 100644
index 00000000..e318db83
Binary files /dev/null and b/sdxl_styles/samples/art_nouveau.jpg differ
diff --git a/sdxl_styles/samples/artstyle_abstract.jpg b/sdxl_styles/samples/artstyle_abstract.jpg
new file mode 100644
index 00000000..d1c3223b
Binary files /dev/null and b/sdxl_styles/samples/artstyle_abstract.jpg differ
diff --git a/sdxl_styles/samples/artstyle_abstract_expressionism.jpg b/sdxl_styles/samples/artstyle_abstract_expressionism.jpg
new file mode 100644
index 00000000..c2a9db02
Binary files /dev/null and b/sdxl_styles/samples/artstyle_abstract_expressionism.jpg differ
diff --git a/sdxl_styles/samples/artstyle_art_deco.jpg b/sdxl_styles/samples/artstyle_art_deco.jpg
new file mode 100644
index 00000000..d466541e
Binary files /dev/null and b/sdxl_styles/samples/artstyle_art_deco.jpg differ
diff --git a/sdxl_styles/samples/artstyle_art_nouveau.jpg b/sdxl_styles/samples/artstyle_art_nouveau.jpg
new file mode 100644
index 00000000..1f34ae95
Binary files /dev/null and b/sdxl_styles/samples/artstyle_art_nouveau.jpg differ
diff --git a/sdxl_styles/samples/artstyle_constructivist.jpg b/sdxl_styles/samples/artstyle_constructivist.jpg
new file mode 100644
index 00000000..161161a5
Binary files /dev/null and b/sdxl_styles/samples/artstyle_constructivist.jpg differ
diff --git a/sdxl_styles/samples/artstyle_cubist.jpg b/sdxl_styles/samples/artstyle_cubist.jpg
new file mode 100644
index 00000000..016cce7d
Binary files /dev/null and b/sdxl_styles/samples/artstyle_cubist.jpg differ
diff --git a/sdxl_styles/samples/artstyle_expressionist.jpg b/sdxl_styles/samples/artstyle_expressionist.jpg
new file mode 100644
index 00000000..40eec1db
Binary files /dev/null and b/sdxl_styles/samples/artstyle_expressionist.jpg differ
diff --git a/sdxl_styles/samples/artstyle_graffiti.jpg b/sdxl_styles/samples/artstyle_graffiti.jpg
new file mode 100644
index 00000000..12c6c5fa
Binary files /dev/null and b/sdxl_styles/samples/artstyle_graffiti.jpg differ
diff --git a/sdxl_styles/samples/artstyle_hyperrealism.jpg b/sdxl_styles/samples/artstyle_hyperrealism.jpg
new file mode 100644
index 00000000..8ab9e619
Binary files /dev/null and b/sdxl_styles/samples/artstyle_hyperrealism.jpg differ
diff --git a/sdxl_styles/samples/artstyle_impressionist.jpg b/sdxl_styles/samples/artstyle_impressionist.jpg
new file mode 100644
index 00000000..a932fb99
Binary files /dev/null and b/sdxl_styles/samples/artstyle_impressionist.jpg differ
diff --git a/sdxl_styles/samples/artstyle_pointillism.jpg b/sdxl_styles/samples/artstyle_pointillism.jpg
new file mode 100644
index 00000000..902ee1c7
Binary files /dev/null and b/sdxl_styles/samples/artstyle_pointillism.jpg differ
diff --git a/sdxl_styles/samples/artstyle_pop_art.jpg b/sdxl_styles/samples/artstyle_pop_art.jpg
new file mode 100644
index 00000000..1c9864b0
Binary files /dev/null and b/sdxl_styles/samples/artstyle_pop_art.jpg differ
diff --git a/sdxl_styles/samples/artstyle_psychedelic.jpg b/sdxl_styles/samples/artstyle_psychedelic.jpg
new file mode 100644
index 00000000..42b7c990
Binary files /dev/null and b/sdxl_styles/samples/artstyle_psychedelic.jpg differ
diff --git a/sdxl_styles/samples/artstyle_renaissance.jpg b/sdxl_styles/samples/artstyle_renaissance.jpg
new file mode 100644
index 00000000..322b758d
Binary files /dev/null and b/sdxl_styles/samples/artstyle_renaissance.jpg differ
diff --git a/sdxl_styles/samples/artstyle_steampunk.jpg b/sdxl_styles/samples/artstyle_steampunk.jpg
new file mode 100644
index 00000000..0ecf4ff9
Binary files /dev/null and b/sdxl_styles/samples/artstyle_steampunk.jpg differ
diff --git a/sdxl_styles/samples/artstyle_surrealist.jpg b/sdxl_styles/samples/artstyle_surrealist.jpg
new file mode 100644
index 00000000..44c48215
Binary files /dev/null and b/sdxl_styles/samples/artstyle_surrealist.jpg differ
diff --git a/sdxl_styles/samples/artstyle_typography.jpg b/sdxl_styles/samples/artstyle_typography.jpg
new file mode 100644
index 00000000..5a36ae50
Binary files /dev/null and b/sdxl_styles/samples/artstyle_typography.jpg differ
diff --git a/sdxl_styles/samples/artstyle_watercolor.jpg b/sdxl_styles/samples/artstyle_watercolor.jpg
new file mode 100644
index 00000000..f7d9cc30
Binary files /dev/null and b/sdxl_styles/samples/artstyle_watercolor.jpg differ
diff --git a/sdxl_styles/samples/astral_aura.jpg b/sdxl_styles/samples/astral_aura.jpg
new file mode 100644
index 00000000..e13f8493
Binary files /dev/null and b/sdxl_styles/samples/astral_aura.jpg differ
diff --git a/sdxl_styles/samples/avant_garde.jpg b/sdxl_styles/samples/avant_garde.jpg
new file mode 100644
index 00000000..f1e29b89
Binary files /dev/null and b/sdxl_styles/samples/avant_garde.jpg differ
diff --git a/sdxl_styles/samples/baroque.jpg b/sdxl_styles/samples/baroque.jpg
new file mode 100644
index 00000000..718aef7a
Binary files /dev/null and b/sdxl_styles/samples/baroque.jpg differ
diff --git a/sdxl_styles/samples/bauhaus_style_poster.jpg b/sdxl_styles/samples/bauhaus_style_poster.jpg
new file mode 100644
index 00000000..087fe3b5
Binary files /dev/null and b/sdxl_styles/samples/bauhaus_style_poster.jpg differ
diff --git a/sdxl_styles/samples/blueprint_schematic_drawing.jpg b/sdxl_styles/samples/blueprint_schematic_drawing.jpg
new file mode 100644
index 00000000..e3012010
Binary files /dev/null and b/sdxl_styles/samples/blueprint_schematic_drawing.jpg differ
diff --git a/sdxl_styles/samples/caricature.jpg b/sdxl_styles/samples/caricature.jpg
new file mode 100644
index 00000000..2ff3ee35
Binary files /dev/null and b/sdxl_styles/samples/caricature.jpg differ
diff --git a/sdxl_styles/samples/cel_shaded_art.jpg b/sdxl_styles/samples/cel_shaded_art.jpg
new file mode 100644
index 00000000..8a69ac22
Binary files /dev/null and b/sdxl_styles/samples/cel_shaded_art.jpg differ
diff --git a/sdxl_styles/samples/character_design_sheet.jpg b/sdxl_styles/samples/character_design_sheet.jpg
new file mode 100644
index 00000000..6f8fb665
Binary files /dev/null and b/sdxl_styles/samples/character_design_sheet.jpg differ
diff --git a/sdxl_styles/samples/cinematic_diva.jpg b/sdxl_styles/samples/cinematic_diva.jpg
new file mode 100644
index 00000000..74483019
Binary files /dev/null and b/sdxl_styles/samples/cinematic_diva.jpg differ
diff --git a/sdxl_styles/samples/classicism_art.jpg b/sdxl_styles/samples/classicism_art.jpg
new file mode 100644
index 00000000..bf8e7033
Binary files /dev/null and b/sdxl_styles/samples/classicism_art.jpg differ
diff --git a/sdxl_styles/samples/color_field_painting.jpg b/sdxl_styles/samples/color_field_painting.jpg
new file mode 100644
index 00000000..92b4e098
Binary files /dev/null and b/sdxl_styles/samples/color_field_painting.jpg differ
diff --git a/sdxl_styles/samples/colored_pencil_art.jpg b/sdxl_styles/samples/colored_pencil_art.jpg
new file mode 100644
index 00000000..1a7c590e
Binary files /dev/null and b/sdxl_styles/samples/colored_pencil_art.jpg differ
diff --git a/sdxl_styles/samples/conceptual_art.jpg b/sdxl_styles/samples/conceptual_art.jpg
new file mode 100644
index 00000000..06882a20
Binary files /dev/null and b/sdxl_styles/samples/conceptual_art.jpg differ
diff --git a/sdxl_styles/samples/constructivism.jpg b/sdxl_styles/samples/constructivism.jpg
new file mode 100644
index 00000000..d49c6828
Binary files /dev/null and b/sdxl_styles/samples/constructivism.jpg differ
diff --git a/sdxl_styles/samples/cubism.jpg b/sdxl_styles/samples/cubism.jpg
new file mode 100644
index 00000000..2ca0f286
Binary files /dev/null and b/sdxl_styles/samples/cubism.jpg differ
diff --git a/sdxl_styles/samples/dadaism.jpg b/sdxl_styles/samples/dadaism.jpg
new file mode 100644
index 00000000..5573cb07
Binary files /dev/null and b/sdxl_styles/samples/dadaism.jpg differ
diff --git a/sdxl_styles/samples/dark_fantasy.jpg b/sdxl_styles/samples/dark_fantasy.jpg
new file mode 100644
index 00000000..7d60f6dd
Binary files /dev/null and b/sdxl_styles/samples/dark_fantasy.jpg differ
diff --git a/sdxl_styles/samples/dark_moody_atmosphere.jpg b/sdxl_styles/samples/dark_moody_atmosphere.jpg
new file mode 100644
index 00000000..38921c62
Binary files /dev/null and b/sdxl_styles/samples/dark_moody_atmosphere.jpg differ
diff --git a/sdxl_styles/samples/dmt_art_style.jpg b/sdxl_styles/samples/dmt_art_style.jpg
new file mode 100644
index 00000000..a7ffae0b
Binary files /dev/null and b/sdxl_styles/samples/dmt_art_style.jpg differ
diff --git a/sdxl_styles/samples/doodle_art.jpg b/sdxl_styles/samples/doodle_art.jpg
new file mode 100644
index 00000000..8944eb0b
Binary files /dev/null and b/sdxl_styles/samples/doodle_art.jpg differ
diff --git a/sdxl_styles/samples/double_exposure.jpg b/sdxl_styles/samples/double_exposure.jpg
new file mode 100644
index 00000000..15b6fbb4
Binary files /dev/null and b/sdxl_styles/samples/double_exposure.jpg differ
diff --git a/sdxl_styles/samples/dripping_paint_splatter_art.jpg b/sdxl_styles/samples/dripping_paint_splatter_art.jpg
new file mode 100644
index 00000000..697c4438
Binary files /dev/null and b/sdxl_styles/samples/dripping_paint_splatter_art.jpg differ
diff --git a/sdxl_styles/samples/expressionism.jpg b/sdxl_styles/samples/expressionism.jpg
new file mode 100644
index 00000000..df5e7770
Binary files /dev/null and b/sdxl_styles/samples/expressionism.jpg differ
diff --git a/sdxl_styles/samples/faded_polaroid_photo.jpg b/sdxl_styles/samples/faded_polaroid_photo.jpg
new file mode 100644
index 00000000..51b2a135
Binary files /dev/null and b/sdxl_styles/samples/faded_polaroid_photo.jpg differ
diff --git a/sdxl_styles/samples/fauvism.jpg b/sdxl_styles/samples/fauvism.jpg
new file mode 100644
index 00000000..5afaaf5e
Binary files /dev/null and b/sdxl_styles/samples/fauvism.jpg differ
diff --git a/sdxl_styles/samples/flat_2d_art.jpg b/sdxl_styles/samples/flat_2d_art.jpg
new file mode 100644
index 00000000..9fba930e
Binary files /dev/null and b/sdxl_styles/samples/flat_2d_art.jpg differ
diff --git a/sdxl_styles/samples/fooocus_cinematic.jpg b/sdxl_styles/samples/fooocus_cinematic.jpg
new file mode 100644
index 00000000..1521f740
Binary files /dev/null and b/sdxl_styles/samples/fooocus_cinematic.jpg differ
diff --git a/sdxl_styles/samples/fooocus_enhance.jpg b/sdxl_styles/samples/fooocus_enhance.jpg
new file mode 100644
index 00000000..20e5ba2f
Binary files /dev/null and b/sdxl_styles/samples/fooocus_enhance.jpg differ
diff --git a/sdxl_styles/samples/fooocus_masterpiece.jpg b/sdxl_styles/samples/fooocus_masterpiece.jpg
new file mode 100644
index 00000000..e57b1fd0
Binary files /dev/null and b/sdxl_styles/samples/fooocus_masterpiece.jpg differ
diff --git a/sdxl_styles/samples/fooocus_negative.jpg b/sdxl_styles/samples/fooocus_negative.jpg
new file mode 100644
index 00000000..b025c43f
Binary files /dev/null and b/sdxl_styles/samples/fooocus_negative.jpg differ
diff --git a/sdxl_styles/samples/fooocus_photograph.jpg b/sdxl_styles/samples/fooocus_photograph.jpg
new file mode 100644
index 00000000..3f28b857
Binary files /dev/null and b/sdxl_styles/samples/fooocus_photograph.jpg differ
diff --git a/sdxl_styles/samples/fooocus_sharp.jpg b/sdxl_styles/samples/fooocus_sharp.jpg
new file mode 100644
index 00000000..12f7145c
Binary files /dev/null and b/sdxl_styles/samples/fooocus_sharp.jpg differ
diff --git a/sdxl_styles/samples/fooocus_v2.jpg b/sdxl_styles/samples/fooocus_v2.jpg
new file mode 100644
index 00000000..6e94d5b0
Binary files /dev/null and b/sdxl_styles/samples/fooocus_v2.jpg differ
diff --git a/sdxl_styles/samples/fortnite_art_style.jpg b/sdxl_styles/samples/fortnite_art_style.jpg
new file mode 100644
index 00000000..e90a4f64
Binary files /dev/null and b/sdxl_styles/samples/fortnite_art_style.jpg differ
diff --git a/sdxl_styles/samples/futurism.jpg b/sdxl_styles/samples/futurism.jpg
new file mode 100644
index 00000000..85267a62
Binary files /dev/null and b/sdxl_styles/samples/futurism.jpg differ
diff --git a/sdxl_styles/samples/futuristic_biomechanical.jpg b/sdxl_styles/samples/futuristic_biomechanical.jpg
new file mode 100644
index 00000000..f8c5c082
Binary files /dev/null and b/sdxl_styles/samples/futuristic_biomechanical.jpg differ
diff --git a/sdxl_styles/samples/futuristic_biomechanical_cyberpunk.jpg b/sdxl_styles/samples/futuristic_biomechanical_cyberpunk.jpg
new file mode 100644
index 00000000..e29a9b5b
Binary files /dev/null and b/sdxl_styles/samples/futuristic_biomechanical_cyberpunk.jpg differ
diff --git a/sdxl_styles/samples/futuristic_cybernetic.jpg b/sdxl_styles/samples/futuristic_cybernetic.jpg
new file mode 100644
index 00000000..f8042285
Binary files /dev/null and b/sdxl_styles/samples/futuristic_cybernetic.jpg differ
diff --git a/sdxl_styles/samples/futuristic_cybernetic_robot.jpg b/sdxl_styles/samples/futuristic_cybernetic_robot.jpg
new file mode 100644
index 00000000..6f988b78
Binary files /dev/null and b/sdxl_styles/samples/futuristic_cybernetic_robot.jpg differ
diff --git a/sdxl_styles/samples/futuristic_cyberpunk_cityscape.jpg b/sdxl_styles/samples/futuristic_cyberpunk_cityscape.jpg
new file mode 100644
index 00000000..c05280b7
Binary files /dev/null and b/sdxl_styles/samples/futuristic_cyberpunk_cityscape.jpg differ
diff --git a/sdxl_styles/samples/futuristic_futuristic.jpg b/sdxl_styles/samples/futuristic_futuristic.jpg
new file mode 100644
index 00000000..da8d4ccf
Binary files /dev/null and b/sdxl_styles/samples/futuristic_futuristic.jpg differ
diff --git a/sdxl_styles/samples/futuristic_retro_cyberpunk.jpg b/sdxl_styles/samples/futuristic_retro_cyberpunk.jpg
new file mode 100644
index 00000000..7686243e
Binary files /dev/null and b/sdxl_styles/samples/futuristic_retro_cyberpunk.jpg differ
diff --git a/sdxl_styles/samples/futuristic_retro_futurism.jpg b/sdxl_styles/samples/futuristic_retro_futurism.jpg
new file mode 100644
index 00000000..f0fa6e94
Binary files /dev/null and b/sdxl_styles/samples/futuristic_retro_futurism.jpg differ
diff --git a/sdxl_styles/samples/futuristic_sci_fi.jpg b/sdxl_styles/samples/futuristic_sci_fi.jpg
new file mode 100644
index 00000000..571c6141
Binary files /dev/null and b/sdxl_styles/samples/futuristic_sci_fi.jpg differ
diff --git a/sdxl_styles/samples/futuristic_vaporwave.jpg b/sdxl_styles/samples/futuristic_vaporwave.jpg
new file mode 100644
index 00000000..f8a77fe6
Binary files /dev/null and b/sdxl_styles/samples/futuristic_vaporwave.jpg differ
diff --git a/sdxl_styles/samples/game_bubble_bobble.jpg b/sdxl_styles/samples/game_bubble_bobble.jpg
new file mode 100644
index 00000000..1111de9e
Binary files /dev/null and b/sdxl_styles/samples/game_bubble_bobble.jpg differ
diff --git a/sdxl_styles/samples/game_cyberpunk_game.jpg b/sdxl_styles/samples/game_cyberpunk_game.jpg
new file mode 100644
index 00000000..e87451de
Binary files /dev/null and b/sdxl_styles/samples/game_cyberpunk_game.jpg differ
diff --git a/sdxl_styles/samples/game_fighting_game.jpg b/sdxl_styles/samples/game_fighting_game.jpg
new file mode 100644
index 00000000..b12c07d3
Binary files /dev/null and b/sdxl_styles/samples/game_fighting_game.jpg differ
diff --git a/sdxl_styles/samples/game_gta.jpg b/sdxl_styles/samples/game_gta.jpg
new file mode 100644
index 00000000..6458c6d8
Binary files /dev/null and b/sdxl_styles/samples/game_gta.jpg differ
diff --git a/sdxl_styles/samples/game_mario.jpg b/sdxl_styles/samples/game_mario.jpg
new file mode 100644
index 00000000..17cff4c4
Binary files /dev/null and b/sdxl_styles/samples/game_mario.jpg differ
diff --git a/sdxl_styles/samples/game_minecraft.jpg b/sdxl_styles/samples/game_minecraft.jpg
new file mode 100644
index 00000000..4e20641f
Binary files /dev/null and b/sdxl_styles/samples/game_minecraft.jpg differ
diff --git a/sdxl_styles/samples/game_pokemon.jpg b/sdxl_styles/samples/game_pokemon.jpg
new file mode 100644
index 00000000..20071f80
Binary files /dev/null and b/sdxl_styles/samples/game_pokemon.jpg differ
diff --git a/sdxl_styles/samples/game_retro_arcade.jpg b/sdxl_styles/samples/game_retro_arcade.jpg
new file mode 100644
index 00000000..c3836dc8
Binary files /dev/null and b/sdxl_styles/samples/game_retro_arcade.jpg differ
diff --git a/sdxl_styles/samples/game_retro_game.jpg b/sdxl_styles/samples/game_retro_game.jpg
new file mode 100644
index 00000000..ff81488a
Binary files /dev/null and b/sdxl_styles/samples/game_retro_game.jpg differ
diff --git a/sdxl_styles/samples/game_rpg_fantasy_game.jpg b/sdxl_styles/samples/game_rpg_fantasy_game.jpg
new file mode 100644
index 00000000..c32a2cc7
Binary files /dev/null and b/sdxl_styles/samples/game_rpg_fantasy_game.jpg differ
diff --git a/sdxl_styles/samples/game_strategy_game.jpg b/sdxl_styles/samples/game_strategy_game.jpg
new file mode 100644
index 00000000..a55eff5c
Binary files /dev/null and b/sdxl_styles/samples/game_strategy_game.jpg differ
diff --git a/sdxl_styles/samples/game_streetfighter.jpg b/sdxl_styles/samples/game_streetfighter.jpg
new file mode 100644
index 00000000..f389e0d3
Binary files /dev/null and b/sdxl_styles/samples/game_streetfighter.jpg differ
diff --git a/sdxl_styles/samples/game_zelda.jpg b/sdxl_styles/samples/game_zelda.jpg
new file mode 100644
index 00000000..f9b875d7
Binary files /dev/null and b/sdxl_styles/samples/game_zelda.jpg differ
diff --git a/sdxl_styles/samples/glitchcore.jpg b/sdxl_styles/samples/glitchcore.jpg
new file mode 100644
index 00000000..3122cda8
Binary files /dev/null and b/sdxl_styles/samples/glitchcore.jpg differ
diff --git a/sdxl_styles/samples/glo_fi.jpg b/sdxl_styles/samples/glo_fi.jpg
new file mode 100644
index 00000000..816b2244
Binary files /dev/null and b/sdxl_styles/samples/glo_fi.jpg differ
diff --git a/sdxl_styles/samples/googie_art_style.jpg b/sdxl_styles/samples/googie_art_style.jpg
new file mode 100644
index 00000000..e9a08c20
Binary files /dev/null and b/sdxl_styles/samples/googie_art_style.jpg differ
diff --git a/sdxl_styles/samples/graffiti_art.jpg b/sdxl_styles/samples/graffiti_art.jpg
new file mode 100644
index 00000000..87aebdda
Binary files /dev/null and b/sdxl_styles/samples/graffiti_art.jpg differ
diff --git a/sdxl_styles/samples/harlem_renaissance_art.jpg b/sdxl_styles/samples/harlem_renaissance_art.jpg
new file mode 100644
index 00000000..bd335494
Binary files /dev/null and b/sdxl_styles/samples/harlem_renaissance_art.jpg differ
diff --git a/sdxl_styles/samples/high_fashion.jpg b/sdxl_styles/samples/high_fashion.jpg
new file mode 100644
index 00000000..4dfc404d
Binary files /dev/null and b/sdxl_styles/samples/high_fashion.jpg differ
diff --git a/sdxl_styles/samples/idyllic.jpg b/sdxl_styles/samples/idyllic.jpg
new file mode 100644
index 00000000..660e9cac
Binary files /dev/null and b/sdxl_styles/samples/idyllic.jpg differ
diff --git a/sdxl_styles/samples/impressionism.jpg b/sdxl_styles/samples/impressionism.jpg
new file mode 100644
index 00000000..52522233
Binary files /dev/null and b/sdxl_styles/samples/impressionism.jpg differ
diff --git a/sdxl_styles/samples/infographic_drawing.jpg b/sdxl_styles/samples/infographic_drawing.jpg
new file mode 100644
index 00000000..41fdf2e9
Binary files /dev/null and b/sdxl_styles/samples/infographic_drawing.jpg differ
diff --git a/sdxl_styles/samples/ink_dripping_drawing.jpg b/sdxl_styles/samples/ink_dripping_drawing.jpg
new file mode 100644
index 00000000..6b88b62d
Binary files /dev/null and b/sdxl_styles/samples/ink_dripping_drawing.jpg differ
diff --git a/sdxl_styles/samples/japanese_ink_drawing.jpg b/sdxl_styles/samples/japanese_ink_drawing.jpg
new file mode 100644
index 00000000..ec90c8d0
Binary files /dev/null and b/sdxl_styles/samples/japanese_ink_drawing.jpg differ
diff --git a/sdxl_styles/samples/knolling_photography.jpg b/sdxl_styles/samples/knolling_photography.jpg
new file mode 100644
index 00000000..2f1b7f1e
Binary files /dev/null and b/sdxl_styles/samples/knolling_photography.jpg differ
diff --git a/sdxl_styles/samples/light_cheery_atmosphere.jpg b/sdxl_styles/samples/light_cheery_atmosphere.jpg
new file mode 100644
index 00000000..e769c892
Binary files /dev/null and b/sdxl_styles/samples/light_cheery_atmosphere.jpg differ
diff --git a/sdxl_styles/samples/logo_design.jpg b/sdxl_styles/samples/logo_design.jpg
new file mode 100644
index 00000000..8d71ea76
Binary files /dev/null and b/sdxl_styles/samples/logo_design.jpg differ
diff --git a/sdxl_styles/samples/luxurious_elegance.jpg b/sdxl_styles/samples/luxurious_elegance.jpg
new file mode 100644
index 00000000..515a01d8
Binary files /dev/null and b/sdxl_styles/samples/luxurious_elegance.jpg differ
diff --git a/sdxl_styles/samples/macro_photography.jpg b/sdxl_styles/samples/macro_photography.jpg
new file mode 100644
index 00000000..c775121a
Binary files /dev/null and b/sdxl_styles/samples/macro_photography.jpg differ
diff --git a/sdxl_styles/samples/mandola_art.jpg b/sdxl_styles/samples/mandola_art.jpg
new file mode 100644
index 00000000..1d9619b5
Binary files /dev/null and b/sdxl_styles/samples/mandola_art.jpg differ
diff --git a/sdxl_styles/samples/marker_drawing.jpg b/sdxl_styles/samples/marker_drawing.jpg
new file mode 100644
index 00000000..37f37fe1
Binary files /dev/null and b/sdxl_styles/samples/marker_drawing.jpg differ
diff --git a/sdxl_styles/samples/medievalism.jpg b/sdxl_styles/samples/medievalism.jpg
new file mode 100644
index 00000000..f26e28cf
Binary files /dev/null and b/sdxl_styles/samples/medievalism.jpg differ
diff --git a/sdxl_styles/samples/minimalism.jpg b/sdxl_styles/samples/minimalism.jpg
new file mode 100644
index 00000000..5c4f1848
Binary files /dev/null and b/sdxl_styles/samples/minimalism.jpg differ
diff --git a/sdxl_styles/samples/misc_architectural.jpg b/sdxl_styles/samples/misc_architectural.jpg
new file mode 100644
index 00000000..8db96999
Binary files /dev/null and b/sdxl_styles/samples/misc_architectural.jpg differ
diff --git a/sdxl_styles/samples/misc_disco.jpg b/sdxl_styles/samples/misc_disco.jpg
new file mode 100644
index 00000000..665dc347
Binary files /dev/null and b/sdxl_styles/samples/misc_disco.jpg differ
diff --git a/sdxl_styles/samples/misc_dreamscape.jpg b/sdxl_styles/samples/misc_dreamscape.jpg
new file mode 100644
index 00000000..cb2c6021
Binary files /dev/null and b/sdxl_styles/samples/misc_dreamscape.jpg differ
diff --git a/sdxl_styles/samples/misc_dystopian.jpg b/sdxl_styles/samples/misc_dystopian.jpg
new file mode 100644
index 00000000..2a8e21ca
Binary files /dev/null and b/sdxl_styles/samples/misc_dystopian.jpg differ
diff --git a/sdxl_styles/samples/misc_fairy_tale.jpg b/sdxl_styles/samples/misc_fairy_tale.jpg
new file mode 100644
index 00000000..effaa2ea
Binary files /dev/null and b/sdxl_styles/samples/misc_fairy_tale.jpg differ
diff --git a/sdxl_styles/samples/misc_gothic.jpg b/sdxl_styles/samples/misc_gothic.jpg
new file mode 100644
index 00000000..e47b38dc
Binary files /dev/null and b/sdxl_styles/samples/misc_gothic.jpg differ
diff --git a/sdxl_styles/samples/misc_grunge.jpg b/sdxl_styles/samples/misc_grunge.jpg
new file mode 100644
index 00000000..db85f75d
Binary files /dev/null and b/sdxl_styles/samples/misc_grunge.jpg differ
diff --git a/sdxl_styles/samples/misc_horror.jpg b/sdxl_styles/samples/misc_horror.jpg
new file mode 100644
index 00000000..f188b854
Binary files /dev/null and b/sdxl_styles/samples/misc_horror.jpg differ
diff --git a/sdxl_styles/samples/misc_kawaii.jpg b/sdxl_styles/samples/misc_kawaii.jpg
new file mode 100644
index 00000000..6897ed0a
Binary files /dev/null and b/sdxl_styles/samples/misc_kawaii.jpg differ
diff --git a/sdxl_styles/samples/misc_lovecraftian.jpg b/sdxl_styles/samples/misc_lovecraftian.jpg
new file mode 100644
index 00000000..835848e2
Binary files /dev/null and b/sdxl_styles/samples/misc_lovecraftian.jpg differ
diff --git a/sdxl_styles/samples/misc_macabre.jpg b/sdxl_styles/samples/misc_macabre.jpg
new file mode 100644
index 00000000..eeeb14c5
Binary files /dev/null and b/sdxl_styles/samples/misc_macabre.jpg differ
diff --git a/sdxl_styles/samples/misc_manga.jpg b/sdxl_styles/samples/misc_manga.jpg
new file mode 100644
index 00000000..aaecd109
Binary files /dev/null and b/sdxl_styles/samples/misc_manga.jpg differ
diff --git a/sdxl_styles/samples/misc_metropolis.jpg b/sdxl_styles/samples/misc_metropolis.jpg
new file mode 100644
index 00000000..51390016
Binary files /dev/null and b/sdxl_styles/samples/misc_metropolis.jpg differ
diff --git a/sdxl_styles/samples/misc_minimalist.jpg b/sdxl_styles/samples/misc_minimalist.jpg
new file mode 100644
index 00000000..45c70f62
Binary files /dev/null and b/sdxl_styles/samples/misc_minimalist.jpg differ
diff --git a/sdxl_styles/samples/misc_monochrome.jpg b/sdxl_styles/samples/misc_monochrome.jpg
new file mode 100644
index 00000000..9230e2e1
Binary files /dev/null and b/sdxl_styles/samples/misc_monochrome.jpg differ
diff --git a/sdxl_styles/samples/misc_nautical.jpg b/sdxl_styles/samples/misc_nautical.jpg
new file mode 100644
index 00000000..76ce3ac6
Binary files /dev/null and b/sdxl_styles/samples/misc_nautical.jpg differ
diff --git a/sdxl_styles/samples/misc_space.jpg b/sdxl_styles/samples/misc_space.jpg
new file mode 100644
index 00000000..b57c161f
Binary files /dev/null and b/sdxl_styles/samples/misc_space.jpg differ
diff --git a/sdxl_styles/samples/misc_stained_glass.jpg b/sdxl_styles/samples/misc_stained_glass.jpg
new file mode 100644
index 00000000..c2edf80c
Binary files /dev/null and b/sdxl_styles/samples/misc_stained_glass.jpg differ
diff --git a/sdxl_styles/samples/misc_techwear_fashion.jpg b/sdxl_styles/samples/misc_techwear_fashion.jpg
new file mode 100644
index 00000000..abdef86a
Binary files /dev/null and b/sdxl_styles/samples/misc_techwear_fashion.jpg differ
diff --git a/sdxl_styles/samples/misc_tribal.jpg b/sdxl_styles/samples/misc_tribal.jpg
new file mode 100644
index 00000000..436af144
Binary files /dev/null and b/sdxl_styles/samples/misc_tribal.jpg differ
diff --git a/sdxl_styles/samples/misc_zentangle.jpg b/sdxl_styles/samples/misc_zentangle.jpg
new file mode 100644
index 00000000..0aea7d40
Binary files /dev/null and b/sdxl_styles/samples/misc_zentangle.jpg differ
diff --git a/sdxl_styles/samples/mk_adnate_style.jpg b/sdxl_styles/samples/mk_adnate_style.jpg
new file mode 100644
index 00000000..642ea85b
Binary files /dev/null and b/sdxl_styles/samples/mk_adnate_style.jpg differ
diff --git a/sdxl_styles/samples/mk_afrofuturism.jpg b/sdxl_styles/samples/mk_afrofuturism.jpg
new file mode 100644
index 00000000..279c1db1
Binary files /dev/null and b/sdxl_styles/samples/mk_afrofuturism.jpg differ
diff --git a/sdxl_styles/samples/mk_albumen_print.jpg b/sdxl_styles/samples/mk_albumen_print.jpg
new file mode 100644
index 00000000..9bc89526
Binary files /dev/null and b/sdxl_styles/samples/mk_albumen_print.jpg differ
diff --git a/sdxl_styles/samples/mk_alcohol_ink_art.jpg b/sdxl_styles/samples/mk_alcohol_ink_art.jpg
new file mode 100644
index 00000000..daac2c95
Binary files /dev/null and b/sdxl_styles/samples/mk_alcohol_ink_art.jpg differ
diff --git a/sdxl_styles/samples/mk_andy_warhol.jpg b/sdxl_styles/samples/mk_andy_warhol.jpg
new file mode 100644
index 00000000..bfdd38e4
Binary files /dev/null and b/sdxl_styles/samples/mk_andy_warhol.jpg differ
diff --git a/sdxl_styles/samples/mk_anthotype_print.jpg b/sdxl_styles/samples/mk_anthotype_print.jpg
new file mode 100644
index 00000000..8de4085b
Binary files /dev/null and b/sdxl_styles/samples/mk_anthotype_print.jpg differ
diff --git a/sdxl_styles/samples/mk_aquatint_print.jpg b/sdxl_styles/samples/mk_aquatint_print.jpg
new file mode 100644
index 00000000..6f0f0e15
Binary files /dev/null and b/sdxl_styles/samples/mk_aquatint_print.jpg differ
diff --git a/sdxl_styles/samples/mk_atompunk.jpg b/sdxl_styles/samples/mk_atompunk.jpg
new file mode 100644
index 00000000..7da970ad
Binary files /dev/null and b/sdxl_styles/samples/mk_atompunk.jpg differ
diff --git a/sdxl_styles/samples/mk_basquiat.jpg b/sdxl_styles/samples/mk_basquiat.jpg
new file mode 100644
index 00000000..20a67367
Binary files /dev/null and b/sdxl_styles/samples/mk_basquiat.jpg differ
diff --git a/sdxl_styles/samples/mk_bauhaus_style.jpg b/sdxl_styles/samples/mk_bauhaus_style.jpg
new file mode 100644
index 00000000..be1b7820
Binary files /dev/null and b/sdxl_styles/samples/mk_bauhaus_style.jpg differ
diff --git a/sdxl_styles/samples/mk_blacklight_paint.jpg b/sdxl_styles/samples/mk_blacklight_paint.jpg
new file mode 100644
index 00000000..f185b904
Binary files /dev/null and b/sdxl_styles/samples/mk_blacklight_paint.jpg differ
diff --git a/sdxl_styles/samples/mk_bromoil_print.jpg b/sdxl_styles/samples/mk_bromoil_print.jpg
new file mode 100644
index 00000000..14445691
Binary files /dev/null and b/sdxl_styles/samples/mk_bromoil_print.jpg differ
diff --git a/sdxl_styles/samples/mk_calotype_print.jpg b/sdxl_styles/samples/mk_calotype_print.jpg
new file mode 100644
index 00000000..13a5f310
Binary files /dev/null and b/sdxl_styles/samples/mk_calotype_print.jpg differ
diff --git a/sdxl_styles/samples/mk_carnival_glass.jpg b/sdxl_styles/samples/mk_carnival_glass.jpg
new file mode 100644
index 00000000..62428739
Binary files /dev/null and b/sdxl_styles/samples/mk_carnival_glass.jpg differ
diff --git a/sdxl_styles/samples/mk_chicano_art.jpg b/sdxl_styles/samples/mk_chicano_art.jpg
new file mode 100644
index 00000000..66d29311
Binary files /dev/null and b/sdxl_styles/samples/mk_chicano_art.jpg differ
diff --git a/sdxl_styles/samples/mk_chromolithography.jpg b/sdxl_styles/samples/mk_chromolithography.jpg
new file mode 100644
index 00000000..27163c79
Binary files /dev/null and b/sdxl_styles/samples/mk_chromolithography.jpg differ
diff --git a/sdxl_styles/samples/mk_cibulak_porcelain.jpg b/sdxl_styles/samples/mk_cibulak_porcelain.jpg
new file mode 100644
index 00000000..30ae6205
Binary files /dev/null and b/sdxl_styles/samples/mk_cibulak_porcelain.jpg differ
diff --git a/sdxl_styles/samples/mk_color_sketchnote.jpg b/sdxl_styles/samples/mk_color_sketchnote.jpg
new file mode 100644
index 00000000..e8d2e4d9
Binary files /dev/null and b/sdxl_styles/samples/mk_color_sketchnote.jpg differ
diff --git a/sdxl_styles/samples/mk_coloring_book.jpg b/sdxl_styles/samples/mk_coloring_book.jpg
new file mode 100644
index 00000000..377f7c74
Binary files /dev/null and b/sdxl_styles/samples/mk_coloring_book.jpg differ
diff --git a/sdxl_styles/samples/mk_constructivism.jpg b/sdxl_styles/samples/mk_constructivism.jpg
new file mode 100644
index 00000000..374a62dc
Binary files /dev/null and b/sdxl_styles/samples/mk_constructivism.jpg differ
diff --git a/sdxl_styles/samples/mk_cross_processing_print.jpg b/sdxl_styles/samples/mk_cross_processing_print.jpg
new file mode 100644
index 00000000..234d809c
Binary files /dev/null and b/sdxl_styles/samples/mk_cross_processing_print.jpg differ
diff --git a/sdxl_styles/samples/mk_cross_stitching.jpg b/sdxl_styles/samples/mk_cross_stitching.jpg
new file mode 100644
index 00000000..07c7e352
Binary files /dev/null and b/sdxl_styles/samples/mk_cross_stitching.jpg differ
diff --git a/sdxl_styles/samples/mk_cyanotype_print.jpg b/sdxl_styles/samples/mk_cyanotype_print.jpg
new file mode 100644
index 00000000..9327227b
Binary files /dev/null and b/sdxl_styles/samples/mk_cyanotype_print.jpg differ
diff --git a/sdxl_styles/samples/mk_dayak_art.jpg b/sdxl_styles/samples/mk_dayak_art.jpg
new file mode 100644
index 00000000..3d27b0f0
Binary files /dev/null and b/sdxl_styles/samples/mk_dayak_art.jpg differ
diff --git a/sdxl_styles/samples/mk_de_stijl.jpg b/sdxl_styles/samples/mk_de_stijl.jpg
new file mode 100644
index 00000000..1260553a
Binary files /dev/null and b/sdxl_styles/samples/mk_de_stijl.jpg differ
diff --git a/sdxl_styles/samples/mk_dufaycolor_photograph.jpg b/sdxl_styles/samples/mk_dufaycolor_photograph.jpg
new file mode 100644
index 00000000..e18942b2
Binary files /dev/null and b/sdxl_styles/samples/mk_dufaycolor_photograph.jpg differ
diff --git a/sdxl_styles/samples/mk_embroidery.jpg b/sdxl_styles/samples/mk_embroidery.jpg
new file mode 100644
index 00000000..63f4e7c7
Binary files /dev/null and b/sdxl_styles/samples/mk_embroidery.jpg differ
diff --git a/sdxl_styles/samples/mk_encaustic_paint.jpg b/sdxl_styles/samples/mk_encaustic_paint.jpg
new file mode 100644
index 00000000..5c9844cf
Binary files /dev/null and b/sdxl_styles/samples/mk_encaustic_paint.jpg differ
diff --git a/sdxl_styles/samples/mk_fayum_portrait.jpg b/sdxl_styles/samples/mk_fayum_portrait.jpg
new file mode 100644
index 00000000..26427929
Binary files /dev/null and b/sdxl_styles/samples/mk_fayum_portrait.jpg differ
diff --git a/sdxl_styles/samples/mk_gond_painting.jpg b/sdxl_styles/samples/mk_gond_painting.jpg
new file mode 100644
index 00000000..3947f6cd
Binary files /dev/null and b/sdxl_styles/samples/mk_gond_painting.jpg differ
diff --git a/sdxl_styles/samples/mk_gyotaku.jpg b/sdxl_styles/samples/mk_gyotaku.jpg
new file mode 100644
index 00000000..650b4553
Binary files /dev/null and b/sdxl_styles/samples/mk_gyotaku.jpg differ
diff --git a/sdxl_styles/samples/mk_halftone_print.jpg b/sdxl_styles/samples/mk_halftone_print.jpg
new file mode 100644
index 00000000..37d977db
Binary files /dev/null and b/sdxl_styles/samples/mk_halftone_print.jpg differ
diff --git a/sdxl_styles/samples/mk_herbarium.jpg b/sdxl_styles/samples/mk_herbarium.jpg
new file mode 100644
index 00000000..01209be2
Binary files /dev/null and b/sdxl_styles/samples/mk_herbarium.jpg differ
diff --git a/sdxl_styles/samples/mk_illuminated_manuscript.jpg b/sdxl_styles/samples/mk_illuminated_manuscript.jpg
new file mode 100644
index 00000000..2b3765ac
Binary files /dev/null and b/sdxl_styles/samples/mk_illuminated_manuscript.jpg differ
diff --git a/sdxl_styles/samples/mk_inuit_carving.jpg b/sdxl_styles/samples/mk_inuit_carving.jpg
new file mode 100644
index 00000000..2cadd30a
Binary files /dev/null and b/sdxl_styles/samples/mk_inuit_carving.jpg differ
diff --git a/sdxl_styles/samples/mk_kalighat_painting.jpg b/sdxl_styles/samples/mk_kalighat_painting.jpg
new file mode 100644
index 00000000..7049b499
Binary files /dev/null and b/sdxl_styles/samples/mk_kalighat_painting.jpg differ
diff --git a/sdxl_styles/samples/mk_lite_brite_art.jpg b/sdxl_styles/samples/mk_lite_brite_art.jpg
new file mode 100644
index 00000000..0d348dfb
Binary files /dev/null and b/sdxl_styles/samples/mk_lite_brite_art.jpg differ
diff --git a/sdxl_styles/samples/mk_luminogram.jpg b/sdxl_styles/samples/mk_luminogram.jpg
new file mode 100644
index 00000000..011ce9b9
Binary files /dev/null and b/sdxl_styles/samples/mk_luminogram.jpg differ
diff --git a/sdxl_styles/samples/mk_madhubani_painting.jpg b/sdxl_styles/samples/mk_madhubani_painting.jpg
new file mode 100644
index 00000000..f959a0e5
Binary files /dev/null and b/sdxl_styles/samples/mk_madhubani_painting.jpg differ
diff --git a/sdxl_styles/samples/mk_mokume_gane.jpg b/sdxl_styles/samples/mk_mokume_gane.jpg
new file mode 100644
index 00000000..91bf90c7
Binary files /dev/null and b/sdxl_styles/samples/mk_mokume_gane.jpg differ
diff --git a/sdxl_styles/samples/mk_mosaic.jpg b/sdxl_styles/samples/mk_mosaic.jpg
new file mode 100644
index 00000000..f9d83075
Binary files /dev/null and b/sdxl_styles/samples/mk_mosaic.jpg differ
diff --git a/sdxl_styles/samples/mk_one_line_art.jpg b/sdxl_styles/samples/mk_one_line_art.jpg
new file mode 100644
index 00000000..62fb3593
Binary files /dev/null and b/sdxl_styles/samples/mk_one_line_art.jpg differ
diff --git a/sdxl_styles/samples/mk_palekh.jpg b/sdxl_styles/samples/mk_palekh.jpg
new file mode 100644
index 00000000..2c4453a7
Binary files /dev/null and b/sdxl_styles/samples/mk_palekh.jpg differ
diff --git a/sdxl_styles/samples/mk_patachitra_painting.jpg b/sdxl_styles/samples/mk_patachitra_painting.jpg
new file mode 100644
index 00000000..1fd21ea9
Binary files /dev/null and b/sdxl_styles/samples/mk_patachitra_painting.jpg differ
diff --git a/sdxl_styles/samples/mk_pichwai_painting.jpg b/sdxl_styles/samples/mk_pichwai_painting.jpg
new file mode 100644
index 00000000..3212f195
Binary files /dev/null and b/sdxl_styles/samples/mk_pichwai_painting.jpg differ
diff --git a/sdxl_styles/samples/mk_pictorialism.jpg b/sdxl_styles/samples/mk_pictorialism.jpg
new file mode 100644
index 00000000..7ed77422
Binary files /dev/null and b/sdxl_styles/samples/mk_pictorialism.jpg differ
diff --git a/sdxl_styles/samples/mk_pollock.jpg b/sdxl_styles/samples/mk_pollock.jpg
new file mode 100644
index 00000000..ecad511a
Binary files /dev/null and b/sdxl_styles/samples/mk_pollock.jpg differ
diff --git a/sdxl_styles/samples/mk_punk_collage.jpg b/sdxl_styles/samples/mk_punk_collage.jpg
new file mode 100644
index 00000000..5704a0f3
Binary files /dev/null and b/sdxl_styles/samples/mk_punk_collage.jpg differ
diff --git a/sdxl_styles/samples/mk_ron_english_style.jpg b/sdxl_styles/samples/mk_ron_english_style.jpg
new file mode 100644
index 00000000..14cc3ce5
Binary files /dev/null and b/sdxl_styles/samples/mk_ron_english_style.jpg differ
diff --git a/sdxl_styles/samples/mk_samoan_art_inspired.jpg b/sdxl_styles/samples/mk_samoan_art_inspired.jpg
new file mode 100644
index 00000000..570481d4
Binary files /dev/null and b/sdxl_styles/samples/mk_samoan_art_inspired.jpg differ
diff --git a/sdxl_styles/samples/mk_scrimshaw.jpg b/sdxl_styles/samples/mk_scrimshaw.jpg
new file mode 100644
index 00000000..cad08a21
Binary files /dev/null and b/sdxl_styles/samples/mk_scrimshaw.jpg differ
diff --git a/sdxl_styles/samples/mk_shepard_fairey_style.jpg b/sdxl_styles/samples/mk_shepard_fairey_style.jpg
new file mode 100644
index 00000000..7e5d1c17
Binary files /dev/null and b/sdxl_styles/samples/mk_shepard_fairey_style.jpg differ
diff --git a/sdxl_styles/samples/mk_shibori.jpg b/sdxl_styles/samples/mk_shibori.jpg
new file mode 100644
index 00000000..6dff3a6f
Binary files /dev/null and b/sdxl_styles/samples/mk_shibori.jpg differ
diff --git a/sdxl_styles/samples/mk_singer_sargent.jpg b/sdxl_styles/samples/mk_singer_sargent.jpg
new file mode 100644
index 00000000..1cef543e
Binary files /dev/null and b/sdxl_styles/samples/mk_singer_sargent.jpg differ
diff --git a/sdxl_styles/samples/mk_suminagashi.jpg b/sdxl_styles/samples/mk_suminagashi.jpg
new file mode 100644
index 00000000..5294cb9b
Binary files /dev/null and b/sdxl_styles/samples/mk_suminagashi.jpg differ
diff --git a/sdxl_styles/samples/mk_tlingit_art.jpg b/sdxl_styles/samples/mk_tlingit_art.jpg
new file mode 100644
index 00000000..60695e7a
Binary files /dev/null and b/sdxl_styles/samples/mk_tlingit_art.jpg differ
diff --git a/sdxl_styles/samples/mk_ukiyo_e.jpg b/sdxl_styles/samples/mk_ukiyo_e.jpg
new file mode 100644
index 00000000..2205c806
Binary files /dev/null and b/sdxl_styles/samples/mk_ukiyo_e.jpg differ
diff --git a/sdxl_styles/samples/mk_van_gogh.jpg b/sdxl_styles/samples/mk_van_gogh.jpg
new file mode 100644
index 00000000..96109a28
Binary files /dev/null and b/sdxl_styles/samples/mk_van_gogh.jpg differ
diff --git a/sdxl_styles/samples/mk_vintage_airline_poster.jpg b/sdxl_styles/samples/mk_vintage_airline_poster.jpg
new file mode 100644
index 00000000..e4c1fd5d
Binary files /dev/null and b/sdxl_styles/samples/mk_vintage_airline_poster.jpg differ
diff --git a/sdxl_styles/samples/mk_vintage_travel_poster.jpg b/sdxl_styles/samples/mk_vintage_travel_poster.jpg
new file mode 100644
index 00000000..bd3f2b7d
Binary files /dev/null and b/sdxl_styles/samples/mk_vintage_travel_poster.jpg differ
diff --git a/sdxl_styles/samples/mk_vitreous_enamel.jpg b/sdxl_styles/samples/mk_vitreous_enamel.jpg
new file mode 100644
index 00000000..afc5d14a
Binary files /dev/null and b/sdxl_styles/samples/mk_vitreous_enamel.jpg differ
diff --git a/sdxl_styles/samples/mre_ancient_illustration.jpg b/sdxl_styles/samples/mre_ancient_illustration.jpg
new file mode 100644
index 00000000..1583b72c
Binary files /dev/null and b/sdxl_styles/samples/mre_ancient_illustration.jpg differ
diff --git a/sdxl_styles/samples/mre_anime.jpg b/sdxl_styles/samples/mre_anime.jpg
new file mode 100644
index 00000000..be9a4058
Binary files /dev/null and b/sdxl_styles/samples/mre_anime.jpg differ
diff --git a/sdxl_styles/samples/mre_artistic_vision.jpg b/sdxl_styles/samples/mre_artistic_vision.jpg
new file mode 100644
index 00000000..eebd9fb6
Binary files /dev/null and b/sdxl_styles/samples/mre_artistic_vision.jpg differ
diff --git a/sdxl_styles/samples/mre_bad_dream.jpg b/sdxl_styles/samples/mre_bad_dream.jpg
new file mode 100644
index 00000000..125a27b4
Binary files /dev/null and b/sdxl_styles/samples/mre_bad_dream.jpg differ
diff --git a/sdxl_styles/samples/mre_brave_art.jpg b/sdxl_styles/samples/mre_brave_art.jpg
new file mode 100644
index 00000000..7b6ab272
Binary files /dev/null and b/sdxl_styles/samples/mre_brave_art.jpg differ
diff --git a/sdxl_styles/samples/mre_cinematic_dynamic.jpg b/sdxl_styles/samples/mre_cinematic_dynamic.jpg
new file mode 100644
index 00000000..46b6b845
Binary files /dev/null and b/sdxl_styles/samples/mre_cinematic_dynamic.jpg differ
diff --git a/sdxl_styles/samples/mre_comic.jpg b/sdxl_styles/samples/mre_comic.jpg
new file mode 100644
index 00000000..710208a8
Binary files /dev/null and b/sdxl_styles/samples/mre_comic.jpg differ
diff --git a/sdxl_styles/samples/mre_dark_cyberpunk.jpg b/sdxl_styles/samples/mre_dark_cyberpunk.jpg
new file mode 100644
index 00000000..18614e53
Binary files /dev/null and b/sdxl_styles/samples/mre_dark_cyberpunk.jpg differ
diff --git a/sdxl_styles/samples/mre_dark_dream.jpg b/sdxl_styles/samples/mre_dark_dream.jpg
new file mode 100644
index 00000000..af61310b
Binary files /dev/null and b/sdxl_styles/samples/mre_dark_dream.jpg differ
diff --git a/sdxl_styles/samples/mre_dynamic_illustration.jpg b/sdxl_styles/samples/mre_dynamic_illustration.jpg
new file mode 100644
index 00000000..66c78b3b
Binary files /dev/null and b/sdxl_styles/samples/mre_dynamic_illustration.jpg differ
diff --git a/sdxl_styles/samples/mre_elemental_art.jpg b/sdxl_styles/samples/mre_elemental_art.jpg
new file mode 100644
index 00000000..b55f9515
Binary files /dev/null and b/sdxl_styles/samples/mre_elemental_art.jpg differ
diff --git a/sdxl_styles/samples/mre_gloomy_art.jpg b/sdxl_styles/samples/mre_gloomy_art.jpg
new file mode 100644
index 00000000..9dbe72a4
Binary files /dev/null and b/sdxl_styles/samples/mre_gloomy_art.jpg differ
diff --git a/sdxl_styles/samples/mre_heroic_fantasy.jpg b/sdxl_styles/samples/mre_heroic_fantasy.jpg
new file mode 100644
index 00000000..7eff049e
Binary files /dev/null and b/sdxl_styles/samples/mre_heroic_fantasy.jpg differ
diff --git a/sdxl_styles/samples/mre_lyrical_geometry.jpg b/sdxl_styles/samples/mre_lyrical_geometry.jpg
new file mode 100644
index 00000000..fdd23018
Binary files /dev/null and b/sdxl_styles/samples/mre_lyrical_geometry.jpg differ
diff --git a/sdxl_styles/samples/mre_manga.jpg b/sdxl_styles/samples/mre_manga.jpg
new file mode 100644
index 00000000..891cadc0
Binary files /dev/null and b/sdxl_styles/samples/mre_manga.jpg differ
diff --git a/sdxl_styles/samples/mre_space_art.jpg b/sdxl_styles/samples/mre_space_art.jpg
new file mode 100644
index 00000000..f5cb31ab
Binary files /dev/null and b/sdxl_styles/samples/mre_space_art.jpg differ
diff --git a/sdxl_styles/samples/mre_spontaneous_picture.jpg b/sdxl_styles/samples/mre_spontaneous_picture.jpg
new file mode 100644
index 00000000..74cbcd39
Binary files /dev/null and b/sdxl_styles/samples/mre_spontaneous_picture.jpg differ
diff --git a/sdxl_styles/samples/mre_sumi_e_detailed.jpg b/sdxl_styles/samples/mre_sumi_e_detailed.jpg
new file mode 100644
index 00000000..bea50fa2
Binary files /dev/null and b/sdxl_styles/samples/mre_sumi_e_detailed.jpg differ
diff --git a/sdxl_styles/samples/mre_sumi_e_symbolic.jpg b/sdxl_styles/samples/mre_sumi_e_symbolic.jpg
new file mode 100644
index 00000000..81e4aa3b
Binary files /dev/null and b/sdxl_styles/samples/mre_sumi_e_symbolic.jpg differ
diff --git a/sdxl_styles/samples/mre_surreal_painting.jpg b/sdxl_styles/samples/mre_surreal_painting.jpg
new file mode 100644
index 00000000..82fa66db
Binary files /dev/null and b/sdxl_styles/samples/mre_surreal_painting.jpg differ
diff --git a/sdxl_styles/samples/mre_undead_art.jpg b/sdxl_styles/samples/mre_undead_art.jpg
new file mode 100644
index 00000000..d306d2cb
Binary files /dev/null and b/sdxl_styles/samples/mre_undead_art.jpg differ
diff --git a/sdxl_styles/samples/mre_underground.jpg b/sdxl_styles/samples/mre_underground.jpg
new file mode 100644
index 00000000..d01bc6cd
Binary files /dev/null and b/sdxl_styles/samples/mre_underground.jpg differ
diff --git a/sdxl_styles/samples/neo_baroque.jpg b/sdxl_styles/samples/neo_baroque.jpg
new file mode 100644
index 00000000..05ee36da
Binary files /dev/null and b/sdxl_styles/samples/neo_baroque.jpg differ
diff --git a/sdxl_styles/samples/neo_byzantine.jpg b/sdxl_styles/samples/neo_byzantine.jpg
new file mode 100644
index 00000000..f0d50aac
Binary files /dev/null and b/sdxl_styles/samples/neo_byzantine.jpg differ
diff --git a/sdxl_styles/samples/neo_futurism.jpg b/sdxl_styles/samples/neo_futurism.jpg
new file mode 100644
index 00000000..44cfa98e
Binary files /dev/null and b/sdxl_styles/samples/neo_futurism.jpg differ
diff --git a/sdxl_styles/samples/neo_impressionism.jpg b/sdxl_styles/samples/neo_impressionism.jpg
new file mode 100644
index 00000000..d11554df
Binary files /dev/null and b/sdxl_styles/samples/neo_impressionism.jpg differ
diff --git a/sdxl_styles/samples/neo_rococo.jpg b/sdxl_styles/samples/neo_rococo.jpg
new file mode 100644
index 00000000..0de1eaee
Binary files /dev/null and b/sdxl_styles/samples/neo_rococo.jpg differ
diff --git a/sdxl_styles/samples/neoclassicism.jpg b/sdxl_styles/samples/neoclassicism.jpg
new file mode 100644
index 00000000..cffc679b
Binary files /dev/null and b/sdxl_styles/samples/neoclassicism.jpg differ
diff --git a/sdxl_styles/samples/op_art.jpg b/sdxl_styles/samples/op_art.jpg
new file mode 100644
index 00000000..ee70c23b
Binary files /dev/null and b/sdxl_styles/samples/op_art.jpg differ
diff --git a/sdxl_styles/samples/ornate_and_intricate.jpg b/sdxl_styles/samples/ornate_and_intricate.jpg
new file mode 100644
index 00000000..765fec01
Binary files /dev/null and b/sdxl_styles/samples/ornate_and_intricate.jpg differ
diff --git a/sdxl_styles/samples/papercraft_collage.jpg b/sdxl_styles/samples/papercraft_collage.jpg
new file mode 100644
index 00000000..dba524c9
Binary files /dev/null and b/sdxl_styles/samples/papercraft_collage.jpg differ
diff --git a/sdxl_styles/samples/papercraft_flat_papercut.jpg b/sdxl_styles/samples/papercraft_flat_papercut.jpg
new file mode 100644
index 00000000..3608636c
Binary files /dev/null and b/sdxl_styles/samples/papercraft_flat_papercut.jpg differ
diff --git a/sdxl_styles/samples/papercraft_kirigami.jpg b/sdxl_styles/samples/papercraft_kirigami.jpg
new file mode 100644
index 00000000..f8a8c6f1
Binary files /dev/null and b/sdxl_styles/samples/papercraft_kirigami.jpg differ
diff --git a/sdxl_styles/samples/papercraft_paper_mache.jpg b/sdxl_styles/samples/papercraft_paper_mache.jpg
new file mode 100644
index 00000000..90122cac
Binary files /dev/null and b/sdxl_styles/samples/papercraft_paper_mache.jpg differ
diff --git a/sdxl_styles/samples/papercraft_paper_quilling.jpg b/sdxl_styles/samples/papercraft_paper_quilling.jpg
new file mode 100644
index 00000000..0b017ff3
Binary files /dev/null and b/sdxl_styles/samples/papercraft_paper_quilling.jpg differ
diff --git a/sdxl_styles/samples/papercraft_papercut_collage.jpg b/sdxl_styles/samples/papercraft_papercut_collage.jpg
new file mode 100644
index 00000000..0d0d60db
Binary files /dev/null and b/sdxl_styles/samples/papercraft_papercut_collage.jpg differ
diff --git a/sdxl_styles/samples/papercraft_papercut_shadow_box.jpg b/sdxl_styles/samples/papercraft_papercut_shadow_box.jpg
new file mode 100644
index 00000000..da088610
Binary files /dev/null and b/sdxl_styles/samples/papercraft_papercut_shadow_box.jpg differ
diff --git a/sdxl_styles/samples/papercraft_stacked_papercut.jpg b/sdxl_styles/samples/papercraft_stacked_papercut.jpg
new file mode 100644
index 00000000..503d78bf
Binary files /dev/null and b/sdxl_styles/samples/papercraft_stacked_papercut.jpg differ
diff --git a/sdxl_styles/samples/papercraft_thick_layered_papercut.jpg b/sdxl_styles/samples/papercraft_thick_layered_papercut.jpg
new file mode 100644
index 00000000..cd649505
Binary files /dev/null and b/sdxl_styles/samples/papercraft_thick_layered_papercut.jpg differ
diff --git a/sdxl_styles/samples/pebble_art.jpg b/sdxl_styles/samples/pebble_art.jpg
new file mode 100644
index 00000000..12e8c184
Binary files /dev/null and b/sdxl_styles/samples/pebble_art.jpg differ
diff --git a/sdxl_styles/samples/pencil_sketch_drawing.jpg b/sdxl_styles/samples/pencil_sketch_drawing.jpg
new file mode 100644
index 00000000..dc753e45
Binary files /dev/null and b/sdxl_styles/samples/pencil_sketch_drawing.jpg differ
diff --git a/sdxl_styles/samples/photo_alien.jpg b/sdxl_styles/samples/photo_alien.jpg
new file mode 100644
index 00000000..5fea0abb
Binary files /dev/null and b/sdxl_styles/samples/photo_alien.jpg differ
diff --git a/sdxl_styles/samples/photo_film_noir.jpg b/sdxl_styles/samples/photo_film_noir.jpg
new file mode 100644
index 00000000..961009af
Binary files /dev/null and b/sdxl_styles/samples/photo_film_noir.jpg differ
diff --git a/sdxl_styles/samples/photo_glamour.jpg b/sdxl_styles/samples/photo_glamour.jpg
new file mode 100644
index 00000000..9e136066
Binary files /dev/null and b/sdxl_styles/samples/photo_glamour.jpg differ
diff --git a/sdxl_styles/samples/photo_hdr.jpg b/sdxl_styles/samples/photo_hdr.jpg
new file mode 100644
index 00000000..a36bb175
Binary files /dev/null and b/sdxl_styles/samples/photo_hdr.jpg differ
diff --git a/sdxl_styles/samples/photo_iphone_photographic.jpg b/sdxl_styles/samples/photo_iphone_photographic.jpg
new file mode 100644
index 00000000..5e1830d4
Binary files /dev/null and b/sdxl_styles/samples/photo_iphone_photographic.jpg differ
diff --git a/sdxl_styles/samples/photo_long_exposure.jpg b/sdxl_styles/samples/photo_long_exposure.jpg
new file mode 100644
index 00000000..7a747fd1
Binary files /dev/null and b/sdxl_styles/samples/photo_long_exposure.jpg differ
diff --git a/sdxl_styles/samples/photo_neon_noir.jpg b/sdxl_styles/samples/photo_neon_noir.jpg
new file mode 100644
index 00000000..6e6d093b
Binary files /dev/null and b/sdxl_styles/samples/photo_neon_noir.jpg differ
diff --git a/sdxl_styles/samples/photo_silhouette.jpg b/sdxl_styles/samples/photo_silhouette.jpg
new file mode 100644
index 00000000..cf0a13c1
Binary files /dev/null and b/sdxl_styles/samples/photo_silhouette.jpg differ
diff --git a/sdxl_styles/samples/photo_tilt_shift.jpg b/sdxl_styles/samples/photo_tilt_shift.jpg
new file mode 100644
index 00000000..85fc2ba2
Binary files /dev/null and b/sdxl_styles/samples/photo_tilt_shift.jpg differ
diff --git a/sdxl_styles/samples/pop_art_2.jpg b/sdxl_styles/samples/pop_art_2.jpg
new file mode 100644
index 00000000..77c9a853
Binary files /dev/null and b/sdxl_styles/samples/pop_art_2.jpg differ
diff --git a/sdxl_styles/samples/rococo.jpg b/sdxl_styles/samples/rococo.jpg
new file mode 100644
index 00000000..63a97bd3
Binary files /dev/null and b/sdxl_styles/samples/rococo.jpg differ
diff --git a/sdxl_styles/samples/sai_3d_model.jpg b/sdxl_styles/samples/sai_3d_model.jpg
new file mode 100644
index 00000000..273ab40c
Binary files /dev/null and b/sdxl_styles/samples/sai_3d_model.jpg differ
diff --git a/sdxl_styles/samples/sai_analog_film.jpg b/sdxl_styles/samples/sai_analog_film.jpg
new file mode 100644
index 00000000..7dea7a69
Binary files /dev/null and b/sdxl_styles/samples/sai_analog_film.jpg differ
diff --git a/sdxl_styles/samples/sai_anime.jpg b/sdxl_styles/samples/sai_anime.jpg
new file mode 100644
index 00000000..a26f57e0
Binary files /dev/null and b/sdxl_styles/samples/sai_anime.jpg differ
diff --git a/sdxl_styles/samples/sai_cinematic.jpg b/sdxl_styles/samples/sai_cinematic.jpg
new file mode 100644
index 00000000..e6546d5e
Binary files /dev/null and b/sdxl_styles/samples/sai_cinematic.jpg differ
diff --git a/sdxl_styles/samples/sai_comic_book.jpg b/sdxl_styles/samples/sai_comic_book.jpg
new file mode 100644
index 00000000..2b82ed27
Binary files /dev/null and b/sdxl_styles/samples/sai_comic_book.jpg differ
diff --git a/sdxl_styles/samples/sai_craft_clay.jpg b/sdxl_styles/samples/sai_craft_clay.jpg
new file mode 100644
index 00000000..ad75d09f
Binary files /dev/null and b/sdxl_styles/samples/sai_craft_clay.jpg differ
diff --git a/sdxl_styles/samples/sai_digital_art.jpg b/sdxl_styles/samples/sai_digital_art.jpg
new file mode 100644
index 00000000..55af0120
Binary files /dev/null and b/sdxl_styles/samples/sai_digital_art.jpg differ
diff --git a/sdxl_styles/samples/sai_enhance.jpg b/sdxl_styles/samples/sai_enhance.jpg
new file mode 100644
index 00000000..f44c9000
Binary files /dev/null and b/sdxl_styles/samples/sai_enhance.jpg differ
diff --git a/sdxl_styles/samples/sai_fantasy_art.jpg b/sdxl_styles/samples/sai_fantasy_art.jpg
new file mode 100644
index 00000000..1792de0e
Binary files /dev/null and b/sdxl_styles/samples/sai_fantasy_art.jpg differ
diff --git a/sdxl_styles/samples/sai_isometric.jpg b/sdxl_styles/samples/sai_isometric.jpg
new file mode 100644
index 00000000..34a75225
Binary files /dev/null and b/sdxl_styles/samples/sai_isometric.jpg differ
diff --git a/sdxl_styles/samples/sai_line_art.jpg b/sdxl_styles/samples/sai_line_art.jpg
new file mode 100644
index 00000000..f137c033
Binary files /dev/null and b/sdxl_styles/samples/sai_line_art.jpg differ
diff --git a/sdxl_styles/samples/sai_lowpoly.jpg b/sdxl_styles/samples/sai_lowpoly.jpg
new file mode 100644
index 00000000..058dfe94
Binary files /dev/null and b/sdxl_styles/samples/sai_lowpoly.jpg differ
diff --git a/sdxl_styles/samples/sai_neonpunk.jpg b/sdxl_styles/samples/sai_neonpunk.jpg
new file mode 100644
index 00000000..4c32008f
Binary files /dev/null and b/sdxl_styles/samples/sai_neonpunk.jpg differ
diff --git a/sdxl_styles/samples/sai_origami.jpg b/sdxl_styles/samples/sai_origami.jpg
new file mode 100644
index 00000000..c5c5ffd2
Binary files /dev/null and b/sdxl_styles/samples/sai_origami.jpg differ
diff --git a/sdxl_styles/samples/sai_photographic.jpg b/sdxl_styles/samples/sai_photographic.jpg
new file mode 100644
index 00000000..5086895d
Binary files /dev/null and b/sdxl_styles/samples/sai_photographic.jpg differ
diff --git a/sdxl_styles/samples/sai_pixel_art.jpg b/sdxl_styles/samples/sai_pixel_art.jpg
new file mode 100644
index 00000000..dbb6f9fc
Binary files /dev/null and b/sdxl_styles/samples/sai_pixel_art.jpg differ
diff --git a/sdxl_styles/samples/sai_texture.jpg b/sdxl_styles/samples/sai_texture.jpg
new file mode 100644
index 00000000..cd34f537
Binary files /dev/null and b/sdxl_styles/samples/sai_texture.jpg differ
diff --git a/sdxl_styles/samples/silhouette_art.jpg b/sdxl_styles/samples/silhouette_art.jpg
new file mode 100644
index 00000000..e28c6616
Binary files /dev/null and b/sdxl_styles/samples/silhouette_art.jpg differ
diff --git a/sdxl_styles/samples/simple_vector_art.jpg b/sdxl_styles/samples/simple_vector_art.jpg
new file mode 100644
index 00000000..cecdf09c
Binary files /dev/null and b/sdxl_styles/samples/simple_vector_art.jpg differ
diff --git a/sdxl_styles/samples/sketchup.jpg b/sdxl_styles/samples/sketchup.jpg
new file mode 100644
index 00000000..c077400e
Binary files /dev/null and b/sdxl_styles/samples/sketchup.jpg differ
diff --git a/sdxl_styles/samples/steampunk_2.jpg b/sdxl_styles/samples/steampunk_2.jpg
new file mode 100644
index 00000000..b636c620
Binary files /dev/null and b/sdxl_styles/samples/steampunk_2.jpg differ
diff --git a/sdxl_styles/samples/sticker_designs.jpg b/sdxl_styles/samples/sticker_designs.jpg
new file mode 100644
index 00000000..1e03d7ae
Binary files /dev/null and b/sdxl_styles/samples/sticker_designs.jpg differ
diff --git a/sdxl_styles/samples/suprematism.jpg b/sdxl_styles/samples/suprematism.jpg
new file mode 100644
index 00000000..b8ddc3ad
Binary files /dev/null and b/sdxl_styles/samples/suprematism.jpg differ
diff --git a/sdxl_styles/samples/surrealism.jpg b/sdxl_styles/samples/surrealism.jpg
new file mode 100644
index 00000000..12a7cac0
Binary files /dev/null and b/sdxl_styles/samples/surrealism.jpg differ
diff --git a/sdxl_styles/samples/terragen.jpg b/sdxl_styles/samples/terragen.jpg
new file mode 100644
index 00000000..f83417f6
Binary files /dev/null and b/sdxl_styles/samples/terragen.jpg differ
diff --git a/sdxl_styles/samples/tranquil_relaxing_atmosphere.jpg b/sdxl_styles/samples/tranquil_relaxing_atmosphere.jpg
new file mode 100644
index 00000000..52ae6f5c
Binary files /dev/null and b/sdxl_styles/samples/tranquil_relaxing_atmosphere.jpg differ
diff --git a/sdxl_styles/samples/vibrant_rim_light.jpg b/sdxl_styles/samples/vibrant_rim_light.jpg
new file mode 100644
index 00000000..47b47316
Binary files /dev/null and b/sdxl_styles/samples/vibrant_rim_light.jpg differ
diff --git a/sdxl_styles/samples/volumetric_lighting.jpg b/sdxl_styles/samples/volumetric_lighting.jpg
new file mode 100644
index 00000000..b6fb6958
Binary files /dev/null and b/sdxl_styles/samples/volumetric_lighting.jpg differ
diff --git a/sdxl_styles/samples/watercolor_2.jpg b/sdxl_styles/samples/watercolor_2.jpg
new file mode 100644
index 00000000..1afb96e2
Binary files /dev/null and b/sdxl_styles/samples/watercolor_2.jpg differ
diff --git a/sdxl_styles/samples/whimsical_and_playful.jpg b/sdxl_styles/samples/whimsical_and_playful.jpg
new file mode 100644
index 00000000..d5afcb47
Binary files /dev/null and b/sdxl_styles/samples/whimsical_and_playful.jpg differ
diff --git a/sdxl_styles/sdxl_styles_marc_k3nt3l.json b/sdxl_styles/sdxl_styles_marc_k3nt3l.json
new file mode 100644
index 00000000..fbbe1a24
--- /dev/null
+++ b/sdxl_styles/sdxl_styles_marc_k3nt3l.json
@@ -0,0 +1,312 @@
+[
+ {
+ "name": "MK Chromolithography",
+ "prompt": "Chromolithograph {prompt}. Vibrant colors, intricate details, rich color saturation, meticulous registration, multi-layered printing, decorative elements, historical charm, artistic reproductions, commercial posters, nostalgic, ornate compositions.",
+ "negative_prompt": "monochromatic, simple designs, limited color palette, imprecise registration, minimalistic, modern aesthetic, digital appearance."
+ },
+ {
+ "name": "MK Cross Processing Print",
+ "prompt": "Cross processing print {prompt}. Experimental color shifts, unconventional tonalities, vibrant and surreal hues, heightened contrasts, unpredictable results, artistic unpredictability, retro and vintage feel, dynamic color interplay, abstract and dreamlike.",
+ "negative_prompt": "predictable color tones, traditional processing, realistic color representation, subdued contrasts, standard photographic aesthetics."
+ },
+ {
+ "name": "MK Dufaycolor Photograph",
+ "prompt": "Dufaycolor photograph {prompt}. Vintage color palette, distinctive color rendering, soft and dreamy atmosphere, historical charm, unique color process, grainy texture, evocative mood, nostalgic aesthetic, hand-tinted appearance, artistic patina.",
+ "negative_prompt": "modern color reproduction, hyperrealistic tones, sharp and clear details, digital precision, contemporary aesthetic."
+ },
+ {
+ "name": "MK Herbarium",
+ "prompt": "Herbarium drawing{prompt}. Botanical accuracy, old botanical book illustration, detailed illustrations, pressed plants, delicate and precise linework, scientific documentation, meticulous presentation, educational purpose, organic compositions, timeless aesthetic, naturalistic beauty.",
+ "negative_prompt": "abstract representation, vibrant colors, artistic interpretation, chaotic compositions, fantastical elements, digital appearance."
+ },
+ {
+ "name": "MK Punk Collage",
+ "prompt": "punk collage style {prompt} . mixed media, papercut,textured paper, overlapping, ripped posters, safety pins, chaotic layers, graffiti-style elements, anarchy symbols, vintage photos, cut-and-paste aesthetic, bold typography, distorted images, political messages, urban decay, distressed textures, newspaper clippings, spray paint, rebellious icons, DIY spirit, vivid colors, punk band logos, edgy and raw compositions, ",
+ "negative_prompt": "conventional,blurry, noisy, low contrast"
+ },
+ {
+ "name": "MK mosaic",
+ "prompt": "mosaic style {prompt} . fragmented, assembled, colorful, highly detailed",
+ "negative_prompt": "whole, unbroken, monochrome"
+ },
+ {
+ "name": "MK Van Gogh",
+ "prompt": "Oil painting by Van Gogh {prompt} . Expressive, impasto, swirling brushwork, vibrant, brush strokes, Brushstroke-heavy, Textured, Impasto, Colorful, Dynamic, Bold, Distinctive, Vibrant, Whirling, Expressive, Dramatic, Swirling, Layered, Intense, Contrastive, Atmospheric, Luminous, Textural, Evocative, SpiraledVan Gogh style",
+ "negative_prompt": "realistic, photorealistic, calm, straight lines, signature, frame, text, watermark"
+ },
+ {
+ "name": "MK Coloring Book",
+ "prompt": "centered black and white high contrast line drawing, coloring book style,{prompt} . monochrome, blank white background",
+ "negative_prompt": "greyscale, gradients,shadows,shadow, colored, Red, Blue, Yellow, Green, Orange, Purple, Pink, Brown, Gray, Beige, Turquoise, Lavender, Cyan, Magenta, Olive, Indigo, black background"
+ },
+ {
+ "name": "MK Singer Sargent",
+ "prompt": "Oil painting by John Singer Sargent {prompt}. Elegant, refined, masterful technique,realistic portrayal, subtle play of light, captivating expression, rich details, harmonious colors, skillful composition, brush strokes, chiaroscuro.",
+ "negative_prompt": "realistic, photorealistic, abstract, overly stylized, excessive contrasts, distorted,bright colors,disorder."
+ },
+ {
+ "name": "MK Pollock",
+ "prompt": "Oil painting by Jackson Pollock {prompt}. Abstract expressionism, drip painting, chaotic composition, energetic, spontaneous, unconventional technique, dynamic, bold, distinctive, vibrant, intense, expressive, energetic, layered, non-representational, gestural.",
+ "negative_prompt": "(realistic:1.5), (photorealistic:1.5), representational, calm, ordered composition, precise lines, detailed forms, subdued colors, quiet, static, traditional, figurative."
+ },
+ {
+ "name": "MK Basquiat",
+ "prompt": "Artwork by Jean-Michel Basquiat {prompt}. Neo-expressionism, street art influence, graffiti-inspired, raw, energetic, bold colors, dynamic composition, chaotic, layered, textural, expressive, spontaneous, distinctive, symbolic,energetic brushstrokes.",
+ "negative_prompt": "(realistic:1.5), (photorealistic:1.5), calm, precise lines, conventional composition, subdued"
+ },
+ {
+ "name": "MK Andy Warhol",
+ "prompt": "Artwork in the style of Andy Warhol {prompt}. Pop art, vibrant colors, bold compositions, repetition of iconic imagery, celebrity culture, commercial aesthetics, mass production influence, stylized simplicity, cultural commentary, graphical elements, distinctive portraits.",
+ "negative_prompt": "subdued colors, realistic, lack of repetition, minimalistic."
+ },
+ {
+ "name": "MK Halftone print",
+ "prompt": "Halftone print of {prompt}. Dot matrix pattern, grayscale tones, vintage aesthetic, newspaper print vibe, stylized dots, visual texture, black and white contrasts, retro appearance, artistic pointillism,pop culture, (Roy Lichtenstein style:1.5).",
+ "negative_prompt": "smooth gradients, continuous tones, vibrant colors."
+ },
+ {
+ "name": "MK Gond Painting",
+ "prompt": "Gond painting {prompt}. Intricate patterns, vibrant colors, detailed motifs, nature-inspired themes, tribal folklore, fine lines, intricate detailing, storytelling compositions, mystical and folkloric, cultural richness.",
+ "negative_prompt": "monochromatic, abstract shapes, minimalistic."
+ },
+ {
+ "name": "MK Albumen Print",
+ "prompt": "Albumen print {prompt}. Sepia tones, fine details, subtle tonal gradations, delicate highlights, vintage aesthetic, soft and muted atmosphere, historical charm, rich textures, meticulous craftsmanship, classic photographic technique, vignetting.",
+ "negative_prompt": "vibrant colors, high contrast, modern, digital appearance, sharp details, contemporary style."
+ },
+ {
+ "name": "MK Aquatint Print",
+ "prompt": "Aquatint print {prompt}. Soft tonal gradations, atmospheric effects, velvety textures, rich contrasts, fine details, etching process, delicate lines, nuanced shading, expressive and moody atmosphere, artistic depth.",
+ "negative_prompt": "sharp contrasts, bold lines, minimalistic."
+ },
+ {
+ "name": "MK Anthotype Print",
+ "prompt": "Anthotype print {prompt}. Monochrome dye, soft and muted colors, organic textures, ephemeral and delicate appearance, low details, watercolor canvas, low contrast, overexposed, silhouette, textured paper.",
+ "negative_prompt": "vibrant synthetic dyes, bold and saturated colors."
+ },
+ {
+ "name": "MK Inuit Carving",
+ "prompt": "A sculpture made of ivory, {prompt} made of . Sculptures, Inuit art style, intricate carvings, natural materials, storytelling motifs, arctic wildlife themes, symbolic representations, cultural traditions, earthy tones, harmonious compositions, spiritual and mythological elements.",
+ "negative_prompt": "abstract, vibrant colors."
+ },
+ {
+ "name": "MK Bromoil Print",
+ "prompt": "Bromoil print {prompt}. Painterly effects, sepia tones, textured surfaces, rich contrasts, expressive brushwork, tonal variations, vintage aesthetic, atmospheric mood, handmade quality, artistic experimentation, darkroom craftsmanship, vignetting.",
+ "negative_prompt": "smooth surfaces, minimal brushwork, contemporary digital appearance."
+ },
+ {
+ "name": "MK Calotype Print",
+ "prompt": "Calotype print {prompt}. Soft focus, subtle tonal range, paper negative process, fine details, vintage aesthetic, artistic experimentation, atmospheric mood, early photographic charm, handmade quality, vignetting.",
+ "negative_prompt": "sharp focus, bold contrasts, modern aesthetic, digital photography."
+ },
+ {
+ "name": "MK Color Sketchnote",
+ "prompt": "Color sketchnote {prompt}. Hand-drawn elements, vibrant colors, visual hierarchy, playful illustrations, varied typography, graphic icons, organic and dynamic layout, personalized touches, creative expression, engaging storytelling.",
+ "negative_prompt": "monochromatic, geometric layout."
+ },
+ {
+ "name": "MK Cibulak Porcelain",
+ "prompt": "A sculpture made of blue pattern porcelain of {prompt}. Classic design, blue and white color scheme, intricate detailing, floral motifs, onion-shaped elements, historical charm, rococo, white ware, cobalt blue, underglaze pattern, fine craftsmanship, traditional elegance, delicate patterns, vintage aesthetic, Meissen, Blue Onion pattern, Cibulak.",
+ "negative_prompt": "tea, teapot, cup, teacup,bright colors, bold and modern design, absence of intricate detailing, lack of floral motifs, non-traditional shapes."
+ },
+ {
+ "name": "MK Alcohol Ink Art",
+ "prompt": "Alcohol ink art {prompt}. Fluid and vibrant colors, unpredictable patterns, organic textures, translucent layers, abstract compositions, ethereal and dreamy effects, free-flowing movement, expressive brushstrokes, contemporary aesthetic, wet textured paper.",
+ "negative_prompt": "monochromatic, controlled patterns."
+ },
+ {
+ "name": "MK One Line Art",
+ "prompt": "One line art {prompt}. Continuous and unbroken black line, minimalistic, simplicity, economical use of space, flowing and dynamic, symbolic representations, contemporary aesthetic, evocative and abstract, white background.",
+ "negative_prompt": "disjointed lines, complexity, complex detailing."
+ },
+ {
+ "name": "MK Blacklight Paint",
+ "prompt": "Blacklight paint {prompt}. Fluorescent pigments, vibrant and surreal colors, ethereal glow, otherworldly effects, dynamic and psychedelic compositions, neon aesthetics, transformative in ultraviolet light, contemporary and experimental.",
+ "negative_prompt": "muted colors, traditional and realistic compositions."
+ },
+ {
+ "name": "MK Carnival Glass",
+ "prompt": "A sculpture made of Carnival glass, {prompt}. Iridescent surfaces, vibrant colors, intricate patterns, opalescent hues, reflective and prismatic effects, Art Nouveau and Art Deco influences, vintage charm, intricate detailing, lustrous and luminous appearance, Carnival Glass style.",
+ "negative_prompt": "non-iridescent surfaces, muted colors, absence of intricate patterns, lack of opalescent hues, modern and minimalist aesthetic."
+ },
+ {
+ "name": "MK Cyanotype Print",
+ "prompt": "Cyanotype print {prompt}. Prussian blue tones, distinctive coloration, high contrast, blueprint aesthetics, atmospheric mood, sun-exposed paper, silhouette effects, delicate details, historical charm, handmade and experimental quality.",
+ "negative_prompt": "vibrant colors, low contrast, modern and polished appearance."
+ },
+ {
+ "name": "MK Cross-Stitching",
+ "prompt": "Cross-stitching {prompt}. Intricate patterns, embroidery thread, sewing, fine details, precise stitches, textile artistry, symmetrical designs, varied color palette, traditional and contemporary motifs, handmade and crafted,canvas, nostalgic charm.",
+ "negative_prompt": "paper, paint, ink, photography."
+ },
+ {
+ "name": "MK Encaustic Paint",
+ "prompt": "Encaustic paint {prompt}. Textured surfaces, translucent layers, luminous quality, wax medium, rich color saturation, fluid and organic shapes, contemporary and historical influences, mixed media elements, atmospheric depth.",
+ "negative_prompt": "flat surfaces, opaque layers, lack of wax medium, muted color palette, absence of textured surfaces, non-mixed media."
+ },
+ {
+ "name": "MK Embroidery",
+ "prompt": "Embroidery {prompt}. Intricate stitching, embroidery thread, fine details, varied thread textures, textile artistry, embellished surfaces, diverse color palette, traditional and contemporary motifs, handmade and crafted, tactile and ornate.",
+ "negative_prompt": "minimalist, monochromatic."
+ },
+ {
+ "name": "MK Gyotaku",
+ "prompt": "Gyotaku {prompt}. Fish impressions, realistic details, ink rubbings, textured surfaces, traditional Japanese art form, nature-inspired compositions, artistic representation of marine life, black and white contrasts, cultural significance.",
+ "negative_prompt": "photography."
+ },
+ {
+ "name": "MK Luminogram",
+ "prompt": "Luminogram {prompt}. Photogram technique, ethereal and abstract effects, light and shadow interplay, luminous quality, experimental process, direct light exposure, unique and unpredictable results, artistic experimentation.",
+ "negative_prompt": ""
+ },
+ {
+ "name": "MK Lite Brite Art",
+ "prompt": "Lite Brite art {prompt}. Luminous and colorful designs, pixelated compositions, retro aesthetic, glowing effects, creative patterns, interactive and playful, nostalgic charm, vibrant and dynamic arrangements.",
+ "negative_prompt": "monochromatic."
+ },
+ {
+ "name": "MK Mokume-gane",
+ "prompt": "Mokume-gane {prompt}. Wood-grain patterns, mixed metal layers, intricate and organic designs, traditional Japanese metalwork, harmonious color combinations, artisanal craftsmanship, unique and layered textures, cultural and historical significance.",
+ "negative_prompt": "uniform metal surfaces."
+ },
+ {
+ "name": "Pebble Art",
+ "prompt": "a sculpture made of peebles, {prompt}. Pebble art style,natural materials, textured surfaces, balanced compositions, organic forms, harmonious arrangements, tactile and 3D effects, beach-inspired aesthetic, creative storytelling, artisanal craftsmanship.",
+ "negative_prompt": "non-natural materials, lack of textured surfaces, imbalanced compositions, absence of organic forms, non-tactile appearance."
+ },
+ {
+ "name": "MK Palekh",
+ "prompt": "Palekh art {prompt}. Miniature paintings, intricate details, vivid colors, folkloric themes, lacquer finish, storytelling compositions, symbolic elements, Russian folklore influence, cultural and historical significance.",
+ "negative_prompt": "large-scale paintings."
+ },
+ {
+ "name": "MK Suminagashi",
+ "prompt": "Suminagashi {prompt}. Floating ink patterns, marbled effects, delicate and ethereal designs, water-based ink, fluid and unpredictable compositions, meditative process, monochromatic or subtle color palette, Japanese artistic tradition.",
+ "negative_prompt": "vibrant and bold color palette."
+ },
+ {
+ "name": "MK Scrimshaw",
+ "prompt": "A Scrimshaw engraving of {prompt}. Intricate engravings on a spermwhale's teeth, marine motifs, detailed scenes, nautical themes, black and white contrasts, historical craftsmanship, artisanal carving, storytelling compositions, maritime heritage.",
+ "negative_prompt": "colorful, modern."
+ },
+ {
+ "name": "MK Shibori",
+ "prompt": "Shibori {prompt}. Textured fabric, intricate patterns, resist-dyeing technique, indigo or vibrant colors, organic and flowing designs, Japanese textile art, cultural tradition, tactile and visual interest.",
+ "negative_prompt": "monochromatic."
+ },
+ {
+ "name": "MK Vitreous Enamel",
+ "prompt": "A sculpture made of Vitreous enamel {prompt}. Smooth and glossy surfaces, vibrant colors, glass-like finish, durable and resilient, intricate detailing, traditional and contemporary applications, artistic craftsmanship, jewelry and decorative objects, , Vitreous enamel, colored glass.",
+ "negative_prompt": "rough surfaces, muted colors."
+ },
+ {
+ "name": "MK Ukiyo-e",
+ "prompt": "Ukiyo-e {prompt}. Woodblock prints, vibrant colors, intricate details, depictions of landscapes, kabuki actors, beautiful women, cultural scenes, traditional Japanese art, artistic craftsmanship, historical significance.",
+ "negative_prompt": "absence of woodblock prints, muted colors, lack of intricate details, non-traditional Japanese themes, absence of cultural scenes."
+ },
+ {
+ "name": "MK vintage-airline-poster",
+ "prompt": "vintage airline poster {prompt} . classic aviation fonts, pastel colors, elegant aircraft illustrations, scenic destinations, distressed textures, retro travel allure",
+ "negative_prompt": "modern fonts, bold colors, hyper-realistic, sleek design"
+ },
+ {
+ "name": "MK vintage-travel-poster",
+ "prompt": "vintage travel poster {prompt} . retro fonts, muted colors, scenic illustrations, iconic landmarks, distressed textures, nostalgic vibes",
+ "negative_prompt": "modern fonts, vibrant colors, hyper-realistic, sleek design"
+ },
+ {
+ "name": "MK bauhaus-style",
+ "prompt": "Bauhaus-inspired {prompt} . minimalism, geometric precision, primary colors, sans-serif typography, asymmetry, functional design",
+ "negative_prompt": "ornate, intricate, excessive detail, complex patterns, serif typography"
+ },
+ {
+ "name": "MK afrofuturism",
+ "prompt": "Afrofuturism illustration {prompt} . vibrant colors, futuristic elements, cultural symbolism, cosmic imagery, dynamic patterns, empowering narratives",
+ "negative_prompt": "monochromatic"
+ },
+ {
+ "name": "MK atompunk",
+ "prompt": "Atompunk illustation, {prompt} . retro-futuristic, atomic age aesthetics, sleek lines, metallic textures, futuristic technology, optimism, energy",
+ "negative_prompt": "organic, natural textures, rustic, dystopian"
+ },
+ {
+ "name": "MK constructivism",
+ "prompt": "Constructivism {prompt} . geometric abstraction, bold colors, industrial aesthetics, dynamic compositions, utilitarian design, revolutionary spirit",
+ "negative_prompt": "organic shapes, muted colors, ornate elements, traditional"
+ },
+ {
+ "name": "MK chicano-art",
+ "prompt": "Chicano art {prompt} . bold colors, cultural symbolism, muralism, lowrider aesthetics, barrio life, political messages, social activism, Mexico",
+ "negative_prompt": "monochromatic, minimalist, mainstream aesthetics"
+ },
+ {
+ "name": "MK de-stijl",
+ "prompt": "De Stijl Art {prompt} . neoplasticism, primary colors, geometric abstraction, horizontal and vertical lines, simplicity, harmony, utopian ideals",
+ "negative_prompt": "complex patterns, muted colors, ornate elements, asymmetry"
+ },
+ {
+ "name": "MK dayak-art",
+ "prompt": "Dayak art sculpture of {prompt} . intricate patterns, nature-inspired motifs, vibrant colors, traditional craftsmanship, cultural symbolism, storytelling",
+ "negative_prompt": "minimalist, monochromatic, modern"
+ },
+ {
+ "name": "MK fayum-portrait",
+ "prompt": "Fayum portrait {prompt} . encaustic painting, realistic facial features, warm earth tones, serene expressions, ancient Egyptian influences",
+ "negative_prompt": "abstract, vibrant colors, exaggerated features, modern"
+ },
+ {
+ "name": "MK illuminated-manuscript",
+ "prompt": "Illuminated manuscript {prompt} . intricate calligraphy, rich colors, detailed illustrations, gold leaf accents, ornate borders, religious, historical, medieval",
+ "negative_prompt": "modern typography, minimalist design, monochromatic, abstract themes"
+ },
+ {
+ "name": "MK kalighat-painting",
+ "prompt": "Kalighat painting {prompt} . bold lines, vibrant colors, narrative storytelling, cultural motifs, flat compositions, expressive characters",
+ "negative_prompt": "subdued colors, intricate details, realistic portrayal, modern aesthetics"
+ },
+ {
+ "name": "MK madhubani-painting",
+ "prompt": "Madhubani painting {prompt} . intricate patterns, vibrant colors, nature-inspired motifs, cultural storytelling, symmetry, folk art aesthetics",
+ "negative_prompt": "abstract, muted colors, minimalistic design, modern aesthetics"
+ },
+ {
+ "name": "MK pictorialism",
+ "prompt": "Pictorialism illustration{prompt} . soft focus, atmospheric effects, artistic interpretation, tonality, muted colors, evocative storytelling",
+ "negative_prompt": "sharp focus, high contrast, realistic depiction, vivid colors"
+ },
+ {
+ "name": "MK pichwai-painting",
+ "prompt": "Pichwai painting {prompt} . intricate detailing, vibrant colors, religious themes, nature motifs, devotional storytelling, gold leaf accents",
+ "negative_prompt": "minimalist, subdued colors, abstract design"
+ },
+ {
+ "name": "MK patachitra-painting",
+ "prompt": "Patachitra painting {prompt} . bold outlines, vibrant colors, intricate detailing, mythological themes, storytelling, traditional craftsmanship",
+ "negative_prompt": "subdued colors, minimalistic, abstract, modern aesthetics"
+ },
+ {
+ "name": "MK samoan-art-inspired",
+ "prompt": "Samoan art-inspired wooden sculpture {prompt} . traditional motifs, natural elements, bold colors, cultural symbolism, storytelling, craftsmanship",
+ "negative_prompt": "modern aesthetics, minimalist, abstract"
+ },
+ {
+ "name": "MK tlingit-art",
+ "prompt": "Tlingit art {prompt} . formline design, natural elements, animal motifs, bold colors, cultural storytelling, traditional craftsmanship, Alaska traditional art, (totem:1.5)",
+ "negative_prompt": ""
+ },
+ {
+ "name": "MK adnate-style",
+ "prompt": "Painting by Adnate {prompt} . realistic portraits, street art, large-scale murals, subdued color palette, social narratives",
+ "negative_prompt": "abstract, vibrant colors, small-scale art"
+ },
+ {
+ "name": "MK ron-english-style",
+ "prompt": "Painting by Ron English {prompt} . pop-surrealism, cultural subversion, iconic mash-ups, vibrant and bold colors, satirical commentary",
+ "negative_prompt": "traditional, monochromatic"
+ },
+ {
+ "name": "MK shepard-fairey-style",
+ "prompt": "Painting by Shepard Fairey {prompt} . street art, political activism, iconic stencils, bold typography, high contrast, red, black, and white color palette",
+ "negative_prompt": "traditional, muted colors"
+ }
+]
diff --git a/troubleshoot.md b/troubleshoot.md
new file mode 100644
index 00000000..7e079742
--- /dev/null
+++ b/troubleshoot.md
@@ -0,0 +1,178 @@
+Below are many common problems that people encountered:
+
+### RuntimeError: CPUAllocator
+
+See also the section: **System Swap**
+
+### Model loaded, then paused, then nothing happens
+
+See also the section: **System Swap**
+
+### Segmentation Fault
+
+See also the section: **System Swap**
+
+### Aborted
+
+See also the section: **System Swap**
+
+### core dumped
+
+See also the section: **System Swap**
+
+### Killed
+
+See also the section: **System Swap**
+
+### ^C, then quit
+
+See also the section: **System Swap**
+
+### adm 2816, then stuck
+
+See also the section: **System Swap**
+
+### Connection errored out
+
+See also the section: **System Swap**
+
+### Error 1006
+
+See also the section: **System Swap**
+
+### WinError 10060
+
+See also the section: **System Swap**
+
+### Read timed out
+
+See also the section: **System Swap**
+
+### No error, but the console close in a flash. Cannot find any error.
+
+See also the section: **System Swap**
+
+### Model loading is extremely slow (more than 1 minute)
+
+See also the section: **System Swap**
+
+### System Swap
+
+All above problems are caused by the fact that you do not have enough System Swap.
+
+Please make sure that you have at least 40GB System Swap. In fact, it does not need so much Swap, but 40Gb should be safe for you to run Fooocus in 100% success.
+
+(If you have more than 64GB RAM, then *perhaps* you do not need any System Swap, but we are not exactly sure about this.)
+
+Also, if your system swap is on HDD, the speed of model loading will be very slow. Please try best to put system swap on SSD.
+
+If you are using Linux/Mac, please follow your provider's instructions to set Swap Space. Herein, the "provider" refers to Ubuntu official, CentOS official, Mac official, etc.
+
+If you are using Windows, you can set Swap here:
+
+
+
+If you use both HDD and SSD, you *may* test some settings on the above step 7 to try best to put swap area on SSD, so that the speed of model loading will be faster.
+
+**Important: Microsoft Windows 10/11 by default automate system swap for you so that you do not need to touch this dangerous setting. If you do not have enough system swap, just make sure that you have at least 40GB free space on each disk.** The Microsoft Windows 10/11 will automatically make swap areas for you.
+
+Also, if you obtain Microsoft Windows 10/11 from some unofficial Chinese or Russian provider, they may have modified the default setting of system swap to advertise some "Enhanced Windows 10/11" (but actually they are just making things worse rather than improve things). In those cases, you may need to manually check if your system swap setting is consistent to the above screenshot.
+
+Finally, note that you need to restart computer to activate any changes in system swap.
+
+### MetadataIncompleteBuffer
+
+See also the section: **Model corrupted**
+
+### PytorchStreamReader failed
+
+See also the section: **Model corrupted**
+
+### Model corrupted
+
+If you see Model Corrupted, then your model is corrupted. Fooocus will re-download corrupted models for you if your internet connection is good. Otherwise, you may also manually download models. You can find model url and their local location in the console each time a model download is requested.
+
+### UserWarning: The operator 'aten::std_mean.correction' is not currently supported on the DML
+
+This is a warning that you can ignore.
+
+### Torch not compiled with CUDA enabled
+
+You are not following the official installation guide.
+
+Please do not trust those wrong tutorials on the internet, and please only trust the official installation guide.
+
+### subprocess-exited-with-error
+
+Please use python 3.10
+
+Also, you are not following the official installation guide.
+
+Please do not trust those wrong tutorials on the internet, and please only trust the official installation guide.
+
+### SSL: CERTIFICATE_VERIFY_FAILED
+
+Are you living in China? If yes, please consider turn off VPN, and/or try to download models manually.
+
+If you get this error elsewhere in the world, then you may need to look at [this search](https://www.google.com/search?q=SSL+Certificate+Error). We cannot give very specific guide to fix this since the cause can vary a lot.
+
+### CUDA kernel errors might be asynchronously reported at some other API call
+
+A very small amount of devices does have this problem. The cause can be complicated but usually can be resolved after following these steps:
+
+1. Make sure that you are using official version and latest version installed from [here](https://github.com/lllyasviel/Fooocus#download). (Some forks and other versions are more likely to cause this problem.)
+2. Upgrade your Nvidia driver to the latest version. (Usually the version of your Nvidia driver should be 53X, not 3XX or 4XX.)
+3. If things still do not work, then perhaps it is a problem with CUDA 12. You can use CUDA 11 and Xformers to try to solve this problem. We have prepared all files for you, and please do NOT install any CUDA or other environment on you own. The only one official way to do this is: (1) Backup and delete your `python_embeded` folder (near the `run.bat`); (2) Download the "previous_old_xformers_env.7z" from the [release page](https://github.com/lllyasviel/Fooocus/releases/tag/release), decompress it, and put the newly extracted `python_embeded` folder near your `run.bat`; (3) run Fooocus.
+4. If it still does not work, please open an issue for us to take a look.
+
+### Found no NVIDIA driver on your system
+
+Please upgrade your Nvidia Driver.
+
+If you are using AMD, please follow official installation guide.
+
+### NVIDIA driver too old
+
+Please upgrade your Nvidia Driver.
+
+### I am using Mac, the speed is very slow.
+
+Some MAC users may need `--disable-offload-from-vram` to speed up model loading.
+
+Besides, the current support for MAC is very experimental, and we encourage users to also try Diffusionbee or Drawingthings: they are developed only for MAC.
+
+### I am using Nvidia with 8GB VRAM, I get CUDA Out Of Memory
+
+It is a BUG. Please let us know as soon as possible. Please make an issue. See also [minimal requirements](https://github.com/lllyasviel/Fooocus/tree/main?tab=readme-ov-file#minimal-requirement).
+
+### I am using Nvidia with 6GB VRAM, I get CUDA Out Of Memory
+
+It is very likely a BUG. Please let us know as soon as possible. Please make an issue. See also [minimal requirements](https://github.com/lllyasviel/Fooocus/tree/main?tab=readme-ov-file#minimal-requirement).
+
+### I am using Nvidia with 4GB VRAM with Float16 support, like RTX 3050, I get CUDA Out Of Memory
+
+It is a BUG. Please let us know as soon as possible. Please make an issue. See also [minimal requirements](https://github.com/lllyasviel/Fooocus/tree/main?tab=readme-ov-file#minimal-requirement).
+
+### I am using Nvidia with 4GB VRAM without Float16 support, like GTX 960, I get CUDA Out Of Memory
+
+Supporting GPU with 4GB VRAM without fp16 is extremely difficult, and you may not be able to use SDXL. However, you may still make an issue and let us know. You may try SD1.5 in Automatic1111 or other software for your device. See also [minimal requirements](https://github.com/lllyasviel/Fooocus/tree/main?tab=readme-ov-file#minimal-requirement).
+
+### I am using AMD GPU on Windows, I get CUDA Out Of Memory
+
+Current AMD support is very experimental for Windows. If you see this, then perhaps you cannot use Fooocus on this device on Windows.
+
+However, if you re able to run SDXL on this same device on any other software, please let us know immediately, and we will support it as soon as possible. If no other software can enable your device to run SDXL on Windows, then we also do not have much to help.
+
+Besides, the AMD support on Linux is slightly better because it will use ROCM. You may also try it if you are willing to change OS to linux. See also [minimal requirements](https://github.com/lllyasviel/Fooocus/tree/main?tab=readme-ov-file#minimal-requirement).
+
+### I am using AMD GPU on Linux, I get CUDA Out Of Memory
+
+Current AMD support for Linux is better than that for Windows, but still, very experimental. However, if you re able to run SDXL on this same device on any other software, please let us know immediately, and we will support it as soon as possible. If no other software can enable your device to run SDXL on Windows, then we also do not have much to help. See also [minimal requirements](https://github.com/lllyasviel/Fooocus/tree/main?tab=readme-ov-file#minimal-requirement).
+
+### I tried flags like --lowvram or --gpu-only or --bf16 or so on, and things are not getting any better?
+
+Please remove these flags if you are mislead by some wrong tutorials. In most cases these flags are making things worse and introducing more problems.
+
+### Fooocus suddenly becomes very slow and I have not changed anything
+
+Are you accidentally running two Fooocus at the same time?
diff --git a/update_log.md b/update_log.md
index 5e78371d..1e8914d1 100644
--- a/update_log.md
+++ b/update_log.md
@@ -1,3 +1,97 @@
+**(2023 Dec 21) Hi all, the feature updating of Fooocus will be paused for about two or three weeks because we have some other workloads. See you soon and we will come back in mid or late Jan. However, you may still see updates if other collaborators are fixing bugs or solving problems.**
+
+# 2.1.861 (requested update)
+
+* Show image preview in Style when mouse hover.
+
+# 2.1.860 (requested update)
+
+* Allow upload inpaint mask in developer mode.
+
+# 2.1.857 (requested update)
+
+* Begin to support 8GB AMD GPU on Windows.
+
+# 2.1.854
+
+* Add a button to copy parameters to clipboard in log.
+* Allow users to load parameters directly by pasting parameters to prompt.
+
+# 2.1.853
+
+* Add Marc K3nt3L's styles. Thanks [Marc K3nt3L](https://github.com/K3nt3L)!
+
+# 2.1.852
+
+* New Log System: Log system now uses tables. If this is breaking some other browser extension or javascript developments, see also [use previous version](https://github.com/lllyasviel/Fooocus/discussions/1405).
+
+# 2.1.846
+
+* Many users reported that image quality is different from 2.1.824. We reviewed all codes and fixed several precision problems in 2.1.846.
+
+# 2.1.843
+
+* Many improvements to Canvas. Thanks CanvasZoom author!
+
+# 2.1.841
+
+* Backend maintain.
+* Fix some potential frozen after model mismatch.
+* Fix crash when cfg=1 when using anime preset.
+* Added some guidelines for troubleshoot the "CUDA kernel errors asynchronously" problem.
+* Fix inpaint device problem in `--always-gpu` mode.
+
+# 2.1.839
+
+* Maintained some computation codes in backend for efficiency.
+* Added a note about Seed Breaking Change.
+
+**Seed Breaking Change**: Note that 2.1.825-2.1.839 is seed breaking change. The computation float point is changed and some seeds may give slightly different results. The minor change in 2.1.825-2.1.839 do not influence image quality. See also [use previous version](https://github.com/lllyasviel/Fooocus/discussions/1405).
+
+# 2.1.837
+
+* Fix some precision-related problems.
+
+# 2.1.836
+
+* Avoid blip tokenizer download from torch hub
+
+# 2.1.831
+
+* Input Image -> Describe (Midjourney Describe)
+
+# 2.1.830
+
+* SegmindVega support.
+
+# 2.1.829
+
+* Change SDE tree to CPU on AMD/DirectMl to avoid potential problems.
+
+# 2.1.828
+
+* Allow to disable gradio analytics.
+* Use html table in log.
+* fix some SSL problems.
+
+# 2.1.826
+
+* New backend.
+* FP8 support (see also the new cmd flag list in Readme, eg, --unet-in-fp8-e4m3fn and --unet-in-fp8-e5m2).
+* Fix some MPS problems.
+* GLoRA support.
+* Turbo scheduler.
+
+# 2.1.823
+
+(2023 Nov 26) Hi all, the feature updating of Fooocus will be paused for about two or three weeks because we have some other workloads. See you soon and we will come back in mid December. However, you may still see updates if other collaborators are fixing bugs or solving problems.
+
+* Fix some potential problem when LoRAs has clip keys and user want to load those LoRAs to refiners.
+
+# 2.1.822
+
+* New inpaint system (inpaint beta test ends).
+
# 2.1.821
* New UI for LoRAs.
diff --git a/webui.py b/webui.py
index d1381d5e..fadd852a 100644
--- a/webui.py
+++ b/webui.py
@@ -1,6 +1,7 @@
import gradio as gr
import random
import os
+import json
import time
import shared
import modules.config
@@ -12,6 +13,7 @@ import modules.flags as flags
import modules.gradio_hijack as grh
import modules.advanced_parameters as advanced_parameters
import modules.style_sorter as style_sorter
+import modules.meta_parser
import args_manager
import copy
@@ -22,6 +24,11 @@ from modules.auth import auth_enabled, check_auth
def generate_clicked(*args):
+ import ldm_patched.modules.model_management as model_management
+
+ with model_management.interrupt_processing_mutex:
+ model_management.interrupt_processing = False
+
# outputs=[progress_html, progress_window, progress_gallery, gallery]
execution_start_time = time.perf_counter()
@@ -95,7 +102,7 @@ with shared.gradio_root:
elem_id='final_gallery')
with gr.Row(elem_classes='type_row'):
with gr.Column(scale=17):
- prompt = gr.Textbox(show_label=False, placeholder="Type prompt here.", elem_id='positive_prompt',
+ prompt = gr.Textbox(show_label=False, placeholder="Type prompt here or paste parameters.", elem_id='positive_prompt',
container=False, autofocus=True, elem_classes='type_row', lines=1024)
default_prompt = modules.config.default_prompt
@@ -104,17 +111,18 @@ with shared.gradio_root:
with gr.Column(scale=3, min_width=0):
generate_button = gr.Button(label="Generate", value="Generate", elem_classes='type_row', elem_id='generate_button', visible=True)
+ load_parameter_button = gr.Button(label="Load Parameters", value="Load Parameters", elem_classes='type_row', elem_id='load_parameter_button', visible=False)
skip_button = gr.Button(label="Skip", value="Skip", elem_classes='type_row_half', visible=False)
stop_button = gr.Button(label="Stop", value="Stop", elem_classes='type_row_half', elem_id='stop_button', visible=False)
def stop_clicked():
- import fcbh.model_management as model_management
+ import ldm_patched.modules.model_management as model_management
shared.last_stop = 'stop'
model_management.interrupt_current_processing()
return [gr.update(interactive=False)] * 2
def skip_clicked():
- import fcbh.model_management as model_management
+ import ldm_patched.modules.model_management as model_management
shared.last_stop = 'skip'
model_management.interrupt_current_processing()
return
@@ -177,13 +185,29 @@ with shared.gradio_root:
ip_advanced.change(ip_advance_checked, inputs=ip_advanced,
outputs=ip_ad_cols + ip_types + ip_stops + ip_weights,
queue=False, show_progress=False)
+ with gr.TabItem(label='Inpaint or Outpaint') as inpaint_tab:
+ with gr.Row():
+ inpaint_input_image = grh.Image(label='Drag inpaint or outpaint image to here', source='upload', type='numpy', tool='sketch', height=500, brush_color="#FFFFFF", elem_id='inpaint_canvas')
+ inpaint_mask_image = grh.Image(label='Mask Upload', source='upload', type='numpy', height=500, visible=False)
- with gr.TabItem(label='Inpaint or Outpaint (beta)') as inpaint_tab:
- inpaint_input_image = grh.Image(label='Drag above image to here', source='upload', type='numpy', tool='sketch', height=500, brush_color="#FFFFFF", elem_id='inpaint_canvas')
- gr.HTML('Outpaint Expansion Direction:')
- outpaint_selections = gr.CheckboxGroup(choices=['Left', 'Right', 'Top', 'Bottom'], value=[], label='Outpaint', show_label=False, container=False)
- gr.HTML('* Powered by Fooocus Inpaint Engine (beta) \U0001F4D4 Document')
-
+ with gr.Row():
+ inpaint_additional_prompt = gr.Textbox(placeholder="Describe what you want to inpaint.", elem_id='inpaint_additional_prompt', label='Inpaint Additional Prompt', visible=False)
+ outpaint_selections = gr.CheckboxGroup(choices=['Left', 'Right', 'Top', 'Bottom'], value=[], label='Outpaint Direction')
+ inpaint_mode = gr.Dropdown(choices=modules.flags.inpaint_options, value=modules.flags.inpaint_option_default, label='Method')
+ example_inpaint_prompts = gr.Dataset(samples=modules.config.example_inpaint_prompts, label='Additional Prompt Quick List', components=[inpaint_additional_prompt], visible=False)
+ gr.HTML('* Powered by Fooocus Inpaint Engine \U0001F4D4 Document')
+ example_inpaint_prompts.click(lambda x: x[0], inputs=example_inpaint_prompts, outputs=inpaint_additional_prompt, show_progress=False, queue=False)
+ with gr.TabItem(label='Describe') as desc_tab:
+ with gr.Row():
+ with gr.Column():
+ desc_input_image = grh.Image(label='Drag any image to here', source='upload', type='numpy')
+ with gr.Column():
+ desc_method = gr.Radio(
+ label='Content Type',
+ choices=[flags.desc_type_photo, flags.desc_type_anime],
+ value=flags.desc_type_photo)
+ desc_btn = gr.Button(value='Describe this Image into Prompt')
+ gr.HTML('\U0001F4D4 Document')
switch_js = "(x) => {if(x){viewer_to_bottom(100);viewer_to_bottom(500);}else{viewer_to_top();} return x;}"
down_js = "() => {viewer_to_bottom();}"
@@ -195,6 +219,7 @@ with shared.gradio_root:
uov_tab.select(lambda: 'uov', outputs=current_tab, queue=False, _js=down_js, show_progress=False)
inpaint_tab.select(lambda: 'inpaint', outputs=current_tab, queue=False, _js=down_js, show_progress=False)
ip_tab.select(lambda: 'ip', outputs=current_tab, queue=False, _js=down_js, show_progress=False)
+ desc_tab.select(lambda: 'desc', outputs=current_tab, queue=False, _js=down_js, show_progress=False)
with gr.Column(scale=1, visible=modules.config.default_advanced_checkbox) as advanced_column:
with gr.Tab(label='Setting'):
@@ -204,7 +229,7 @@ with shared.gradio_root:
aspect_ratios_selection = gr.Radio(label='Aspect Ratios', choices=modules.config.available_aspect_ratios,
value=modules.config.default_aspect_ratio, info='width × height',
elem_classes='aspect_ratios')
- image_number = gr.Slider(label='Image Number', minimum=1, maximum=32, step=1, value=modules.config.default_image_number)
+ image_number = gr.Slider(label='Image Number', minimum=1, maximum=modules.config.default_max_image_number, step=1, value=modules.config.default_image_number)
negative_prompt = gr.Textbox(label='Negative Prompt', show_label=True, placeholder="Type prompt here.",
info='Describing what you do not want to see.', lines=2,
elem_id='negative_prompt',
@@ -231,7 +256,7 @@ with shared.gradio_root:
queue=False, show_progress=False)
if not args_manager.args.disable_image_log:
- gr.HTML(f'\U0001F4DA History Log')
+ gr.HTML(f'\U0001F4DA History Log')
with gr.Tab(label='Style'):
style_sorter.try_load_sorted_styles(
@@ -297,15 +322,17 @@ with shared.gradio_root:
with gr.Row():
model_refresh = gr.Button(label='Refresh', value='\U0001f504 Refresh All Files', variant='secondary', elem_classes='refresh_button')
with gr.Tab(label='Advanced'):
- sharpness = gr.Slider(label='Sampling Sharpness', minimum=0.0, maximum=30.0, step=0.001, value=modules.config.default_sample_sharpness,
+ guidance_scale = gr.Slider(label='Guidance Scale', minimum=1.0, maximum=30.0, step=0.01,
+ value=modules.config.default_cfg_scale,
+ info='Higher value means style is cleaner, vivider, and more artistic.')
+ sharpness = gr.Slider(label='Image Sharpness', minimum=0.0, maximum=30.0, step=0.001,
+ value=modules.config.default_sample_sharpness,
info='Higher value means image and texture are sharper.')
- guidance_scale = gr.Slider(label='Guidance Scale', minimum=1.0, maximum=30.0, step=0.01, value=modules.config.default_cfg_scale,
- info='Higher value means style is cleaner, vivider, and more artistic.')
gr.HTML('\U0001F4D4 Document')
dev_mode = gr.Checkbox(label='Developer Debug Mode', value=False, container=False)
with gr.Column(visible=False) as dev_tools:
- with gr.Tab(label='Developer Debug Tools'):
+ with gr.Tab(label='Debug Tools'):
adm_scaler_positive = gr.Slider(label='Positive ADM Guidance Scaler', minimum=0.1, maximum=3.0,
step=0.001, value=1.5, info='The scaler multiplied to positive ADM (use 1.0 to disable). ')
adm_scaler_negative = gr.Slider(label='Negative ADM Guidance Scaler', minimum=0.1, maximum=3.0,
@@ -352,14 +379,10 @@ with shared.gradio_root:
overwrite_upscale_strength = gr.Slider(label='Forced Overwrite of Denoising Strength of "Upscale"',
minimum=-1, maximum=1.0, step=0.001, value=-1,
info='Set as negative number to disable. For developer debugging.')
- inpaint_engine = gr.Dropdown(label='Inpaint Engine',
- value=modules.config.default_inpaint_engine_version,
- choices=flags.inpaint_engine_versions,
- info='Version of Fooocus inpaint model')
disable_preview = gr.Checkbox(label='Disable Preview', value=False,
info='Disable preview during generation.')
- with gr.Tab(label='Control Debug'):
+ with gr.Tab(label='Control'):
debugging_cn_preprocessor = gr.Checkbox(label='Debug Preprocessors', value=False,
info='See the results from preprocessors.')
skipping_cn_preprocessor = gr.Checkbox(label='Skip Preprocessors', value=False,
@@ -380,6 +403,41 @@ with shared.gradio_root:
canny_high_threshold = gr.Slider(label='Canny High Threshold', minimum=1, maximum=255,
step=1, value=128)
+ with gr.Tab(label='Inpaint'):
+ debugging_inpaint_preprocessor = gr.Checkbox(label='Debug Inpaint Preprocessing', value=False)
+ inpaint_disable_initial_latent = gr.Checkbox(label='Disable initial latent in inpaint', value=False)
+ inpaint_engine = gr.Dropdown(label='Inpaint Engine',
+ value=modules.config.default_inpaint_engine_version,
+ choices=flags.inpaint_engine_versions,
+ info='Version of Fooocus inpaint model')
+ inpaint_strength = gr.Slider(label='Inpaint Denoising Strength',
+ minimum=0.0, maximum=1.0, step=0.001, value=1.0,
+ info='Same as the denoising strength in A1111 inpaint. '
+ 'Only used in inpaint, not used in outpaint. '
+ '(Outpaint always use 1.0)')
+ inpaint_respective_field = gr.Slider(label='Inpaint Respective Field',
+ minimum=0.0, maximum=1.0, step=0.001, value=0.618,
+ info='The area to inpaint. '
+ 'Value 0 is same as "Only Masked" in A1111. '
+ 'Value 1 is same as "Whole Image" in A1111. '
+ 'Only used in inpaint, not used in outpaint. '
+ '(Outpaint always use 1.0)')
+ inpaint_erode_or_dilate = gr.Slider(label='Mask Erode or Dilate',
+ minimum=-64, maximum=64, step=1, value=0,
+ info='Positive value will make white area in the mask larger, '
+ 'negative value will make white area smaller.'
+ '(default is 0, always process before any mask invert)')
+ inpaint_mask_upload_checkbox = gr.Checkbox(label='Enable Mask Upload', value=False)
+ invert_mask_checkbox = gr.Checkbox(label='Invert Mask', value=False)
+
+ inpaint_ctrls = [debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine,
+ inpaint_strength, inpaint_respective_field,
+ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate]
+
+ inpaint_mask_upload_checkbox.change(lambda x: gr.update(visible=x),
+ inputs=inpaint_mask_upload_checkbox,
+ outputs=inpaint_mask_image, queue=False, show_progress=False)
+
with gr.Tab(label='FreeU'):
freeu_enabled = gr.Checkbox(label='Enabled', value=False)
freeu_b1 = gr.Slider(label='B1', minimum=0, maximum=2, step=0.01, value=1.01)
@@ -392,9 +450,10 @@ with shared.gradio_root:
scheduler_name, generate_image_grid, overwrite_step, overwrite_switch, overwrite_width, overwrite_height,
overwrite_vary_strength, overwrite_upscale_strength,
mixing_image_prompt_and_vary_upscale, mixing_image_prompt_and_inpaint,
- debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness, canny_low_threshold, canny_high_threshold,
- inpaint_engine, refiner_swap_method]
+ debugging_cn_preprocessor, skipping_cn_preprocessor, controlnet_softness,
+ canny_low_threshold, canny_high_threshold, refiner_swap_method]
adps += freeu_ctrls
+ adps += inpaint_ctrls
def dev_mode_checked(r):
return gr.update(visible=r)
@@ -414,18 +473,52 @@ with shared.gradio_root:
model_refresh.click(model_refresh_clicked, [], [base_model, refiner_model] + lora_ctrls,
queue=False, show_progress=False)
- performance_selection.change(lambda x: [gr.update(interactive=x != 'Extreme Speed')] * 11,
+ performance_selection.change(lambda x: [gr.update(interactive=x != 'Extreme Speed')] * 11 +
+ [gr.update(visible=x != 'Extreme Speed')] * 1,
inputs=performance_selection,
outputs=[
guidance_scale, sharpness, adm_scaler_end, adm_scaler_positive,
adm_scaler_negative, refiner_switch, refiner_model, sampler_name,
- scheduler_name, adaptive_cfg, refiner_swap_method
+ scheduler_name, adaptive_cfg, refiner_swap_method, negative_prompt
], queue=False, show_progress=False)
advanced_checkbox.change(lambda x: gr.update(visible=x), advanced_checkbox, advanced_column,
queue=False, show_progress=False) \
.then(fn=lambda: None, _js='refresh_grid_delayed', queue=False, show_progress=False)
+ def inpaint_mode_change(mode):
+ assert mode in modules.flags.inpaint_options
+
+ # inpaint_additional_prompt, outpaint_selections, example_inpaint_prompts,
+ # inpaint_disable_initial_latent, inpaint_engine,
+ # inpaint_strength, inpaint_respective_field
+
+ if mode == modules.flags.inpaint_option_detail:
+ return [
+ gr.update(visible=True), gr.update(visible=False, value=[]),
+ gr.Dataset.update(visible=True, samples=modules.config.example_inpaint_prompts),
+ False, 'None', 0.5, 0.0
+ ]
+
+ if mode == modules.flags.inpaint_option_modify:
+ return [
+ gr.update(visible=True), gr.update(visible=False, value=[]),
+ gr.Dataset.update(visible=False, samples=modules.config.example_inpaint_prompts),
+ True, modules.config.default_inpaint_engine_version, 1.0, 0.0
+ ]
+
+ return [
+ gr.update(visible=False, value=''), gr.update(visible=True),
+ gr.Dataset.update(visible=False, samples=modules.config.example_inpaint_prompts),
+ False, modules.config.default_inpaint_engine_version, 1.0, 0.618
+ ]
+
+ inpaint_mode.input(inpaint_mode_change, inputs=inpaint_mode, outputs=[
+ inpaint_additional_prompt, outpaint_selections, example_inpaint_prompts,
+ inpaint_disable_initial_latent, inpaint_engine,
+ inpaint_strength, inpaint_respective_field
+ ], show_progress=False, queue=False)
+
ctrls = [
prompt, negative_prompt, style_selections,
performance_selection, aspect_ratios_selection, image_number, image_seed, sharpness, guidance_scale
@@ -434,14 +527,65 @@ with shared.gradio_root:
ctrls += [base_model, refiner_model, refiner_switch] + lora_ctrls
ctrls += [input_image_checkbox, current_tab]
ctrls += [uov_method, uov_input_image]
- ctrls += [outpaint_selections, inpaint_input_image]
+ ctrls += [outpaint_selections, inpaint_input_image, inpaint_additional_prompt, inpaint_mask_image]
ctrls += ip_ctrls
- generate_button.click(lambda: (gr.update(visible=True, interactive=True), gr.update(visible=True, interactive=True), gr.update(visible=False), []), outputs=[stop_button, skip_button, generate_button, gallery]) \
+ state_is_generating = gr.State(False)
+
+ def parse_meta(raw_prompt_txt, is_generating):
+ loaded_json = None
+ try:
+ if '{' in raw_prompt_txt:
+ if '}' in raw_prompt_txt:
+ if ':' in raw_prompt_txt:
+ loaded_json = json.loads(raw_prompt_txt)
+ assert isinstance(loaded_json, dict)
+ except:
+ loaded_json = None
+
+ if loaded_json is None:
+ if is_generating:
+ return gr.update(), gr.update(), gr.update()
+ else:
+ return gr.update(), gr.update(visible=True), gr.update(visible=False)
+
+ return json.dumps(loaded_json), gr.update(visible=False), gr.update(visible=True)
+
+ prompt.input(parse_meta, inputs=[prompt, state_is_generating], outputs=[prompt, generate_button, load_parameter_button], queue=False, show_progress=False)
+
+ load_parameter_button.click(modules.meta_parser.load_parameter_button_click, inputs=[prompt, state_is_generating], outputs=[
+ advanced_checkbox,
+ image_number,
+ prompt,
+ negative_prompt,
+ style_selections,
+ performance_selection,
+ aspect_ratios_selection,
+ overwrite_width,
+ overwrite_height,
+ sharpness,
+ guidance_scale,
+ adm_scaler_positive,
+ adm_scaler_negative,
+ adm_scaler_end,
+ base_model,
+ refiner_model,
+ refiner_switch,
+ sampler_name,
+ scheduler_name,
+ seed_random,
+ image_seed,
+ generate_button,
+ load_parameter_button
+ ] + lora_ctrls, queue=False, show_progress=False)
+
+ generate_button.click(lambda: (gr.update(visible=True, interactive=True), gr.update(visible=True, interactive=True), gr.update(visible=False, interactive=False), [], True),
+ outputs=[stop_button, skip_button, generate_button, gallery, state_is_generating]) \
.then(fn=refresh_seed, inputs=[seed_random, image_seed], outputs=image_seed) \
.then(advanced_parameters.set_all_advanced_parameters, inputs=adps) \
.then(fn=generate_clicked, inputs=ctrls, outputs=[progress_html, progress_window, progress_gallery, gallery]) \
- .then(lambda: (gr.update(visible=True), gr.update(visible=False), gr.update(visible=False)), outputs=[generate_button, stop_button, skip_button]) \
+ .then(lambda: (gr.update(visible=True, interactive=True), gr.update(visible=False, interactive=False), gr.update(visible=False, interactive=False), False),
+ outputs=[generate_button, stop_button, skip_button, state_is_generating]) \
.then(fn=lambda: None, _js='playNotification').then(fn=lambda: None, _js='refresh_grid_delayed')
for notification_file in ['notification.ogg', 'notification.mp3']:
@@ -449,6 +593,18 @@ with shared.gradio_root:
gr.Audio(interactive=False, value=notification_file, elem_id='audio_notification', visible=False)
break
+ def trigger_describe(mode, img):
+ if mode == flags.desc_type_photo:
+ from extras.interrogate import default_interrogator as default_interrogator_photo
+ return default_interrogator_photo(img), ["Fooocus V2", "Fooocus Enhance", "Fooocus Sharp"]
+ if mode == flags.desc_type_anime:
+ from extras.wd14tagger import default_interrogator as default_interrogator_anime
+ return default_interrogator_anime(img), ["Fooocus V2", "Fooocus Masterpiece"]
+ return mode, ["Fooocus V2"]
+
+ desc_btn.click(trigger_describe, inputs=[desc_method, desc_input_image],
+ outputs=[prompt, style_selections], show_progress=True, queue=True)
+
def dump_default_english_config():
from modules.localization import dump_english_config
@@ -458,7 +614,7 @@ def dump_default_english_config():
# dump_default_english_config()
shared.gradio_root.launch(
- inbrowser=args_manager.args.auto_launch,
+ inbrowser=args_manager.args.in_browser,
server_name=args_manager.args.listen,
server_port=args_manager.args.port,
share=args_manager.args.share,