From edd92c604efd0e35e4dfb9d096b0abd4d193b8e4 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Wed, 18 Sep 2024 15:51:26 -0400 Subject: [PATCH] fix --- CHANGELOG.md | 2 +- modules/paths.py | 10 +++++++++- modules/prompt_parser_diffusers.py | 10 ++++++---- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d69b653fa..e845ca8ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,7 +35,7 @@ will automatically find appropriate encoder in the loaded model and replace it with loaded text encoder download text encoders into folder set in settings -> system paths -> text encoders default `models/Text-encoder` folder is used if no custom path is set - example *clip-vit-l* models: [Detailed & Smooth](https://huggingface.co/zer0int/CLIP-GmP-ViT-L-14), [LongCLIP](https://huggingface.co/zer0int/LongCLIP-GmP-ViT-L-14) + example *clip-vit-l* models: [Detailed, Smooth](https://huggingface.co/zer0int/CLIP-GmP-ViT-L-14), [LongCLIP](https://huggingface.co/zer0int/LongCLIP-GmP-ViT-L-14) - xyz grid support for text encoder - full prompt parser now correctly works with different prompts in batch - **huggingface**: diff --git a/modules/paths.py b/modules/paths.py index e4ee65864..8c7cc610c 100644 --- a/modules/paths.py +++ b/modules/paths.py @@ -76,7 +76,14 @@ def create_path(folder): def create_paths(opts): def fix_path(folder): - tgt = opts.data.get(folder, None) or opts.data_labels[folder].default + print('HERE', folder, folder in opts.data, folder in opts.data_labels) + tgt = None + if folder in opts.data: + tgt = opts.data[folder] + elif folder in opts.data_labels: + tgt = opts.data_labels[folder].default + else: + log.warning(f'Path: folder="{folder}" unknown') if tgt is None or tgt == '': return tgt fix = tgt @@ -87,6 +94,7 @@ def create_paths(opts): fix = fix if os.path.isabs(fix) else os.path.relpath(fix, script_path) opts.data[folder] = fix debug(f'Paths: folder="{folder}" original="{tgt}" target="{fix}"') + print('HERE', opts.data[folder]) return opts.data[folder] create_path(data_path) diff --git a/modules/prompt_parser_diffusers.py b/modules/prompt_parser_diffusers.py index 106b71b49..236270383 100644 --- a/modules/prompt_parser_diffusers.py +++ b/modules/prompt_parser_diffusers.py @@ -197,9 +197,10 @@ def encode_prompts(pipe, p, prompts: list, negative_prompts: list, steps: int, c else: prompt_embed, positive_pooled, negative_embed, negative_pooled = get_weighted_text_embeddings(pipe, positive_prompt, negative_prompt, clip_skip) prompt_embeds.append(prompt_embed) - positive_pooleds.append(positive_pooled) negative_embeds.append(negative_embed) - negative_pooleds.append(negative_pooled) + if positive_pooled and negative_pooled: + positive_pooleds.append(positive_pooled) + negative_pooleds.append(negative_pooled) last_prompt, last_negative = prompt, negative def fix_length(embeds): @@ -213,8 +214,9 @@ def encode_prompts(pipe, p, prompts: list, negative_prompts: list, steps: int, c p.prompt_embeds.append(fix_length(prompt_embeds)) p.negative_embeds.append(fix_length(negative_embeds)) - p.positive_pooleds.append(fix_length(positive_pooleds)) - p.negative_pooleds.append(fix_length(negative_pooleds)) + if len(positive_pooleds) > 0 and len(negative_pooleds) > 0: # sd15 does not have pooled embeds + p.positive_pooleds.append(fix_length(positive_pooleds)) + p.negative_pooleds.append(fix_length(negative_pooleds)) if shared.opts.sd_textencoder_cache and p.batch_size == 1: cache.update({