Compare commits

...
10 Commits
Author SHA1 Message Date
Manuel Schmid 28cdc2f104 Merge pull request #2439 from lllyasviel/develop
release 2.2.1
2024-03-04 11:37:41 +01:00
Manuel Schmid ee96b854d9 docs: update version and changelog 2024-03-04 11:33:49 +01:00
Manuel Schmid 9155d94067 feat: match anything in array syntax, not only words and whitespace (#2438)
allows e.g. [[ (red:1.1), (blue:1.2) ]] and enables same seed checks for different prompt weight
2024-03-04 11:22:24 +01:00
nbs e54fb54f91 fix: typo in wildcards/animal.txt (#2433)
* Fix typo in animal wildcards

* Update animal.txt
2024-03-04 10:19:49 +01:00
eddyizm e965bfc39c fix: add hint for png to metadata scheme selection (#2434) 2024-03-04 00:22:47 +01:00
Manuel Schmid e241c53f0e feat: adjust width of lora_weight for firefox (#2431) 2024-03-03 21:15:42 +01:00
Manuel Schmid c3fd57acb9 feat: add metadata flag and steps override to history log (#2425)
* feat: add metadata hint to history log

* feat: add actual metadata_scheme to log instead of only boolean

* feat: add steps to log if they were overridden

* fix: pass copy of metadata

prevents LoRA file extension removal in history log caused by passing reference to meta_parser fooocus scheme
2024-03-03 19:34:38 +01:00
Manuel Schmid fb94394b10 fix: add fallback value for default_max_lora_number when default_loras is empty (#2430) 2024-03-03 18:46:26 +01:00
Manuel Schmid 4ea3baff50 fix: add handling for filepaths to image grid (#2414)
previously skipped due to not being in np.ndarray format but string
2024-03-03 00:21:59 +01:00
Manuel Schmid 90839430da fix: adjust parameters for upscale fast 2x (#2411) 2024-03-02 19:05:11 +01:00
10 changed files with 52 additions and 44 deletions
+1 -1
View File
@@ -1 +1 @@
version = '2.2.0' version = '2.2.1'
+1 -1
View File
@@ -379,7 +379,7 @@
"Metadata": "Metadata", "Metadata": "Metadata",
"Apply Metadata": "Apply Metadata", "Apply Metadata": "Apply Metadata",
"Metadata Scheme": "Metadata Scheme", "Metadata Scheme": "Metadata Scheme",
"Image Prompt parameters are not included. Use a1111 for compatibility with Civitai.": "Image Prompt parameters are not included. Use a1111 for compatibility with Civitai.", "Image Prompt parameters are not included. Use png and a1111 for compatibility with Civitai.": "Image Prompt parameters are not included. Use png and a1111 for compatibility with Civitai.",
"fooocus (json)": "fooocus (json)", "fooocus (json)": "fooocus (json)",
"a1111 (plain text)": "a1111 (plain text)" "a1111 (plain text)": "a1111 (plain text)"
} }
+21 -12
View File
@@ -22,6 +22,7 @@ def worker():
import traceback import traceback
import math import math
import numpy as np import numpy as np
import cv2
import torch import torch
import time import time
import shared import shared
@@ -79,16 +80,20 @@ def worker():
return return
def build_image_wall(async_task): def build_image_wall(async_task):
results = async_task.results results = []
if len(results) < 2: if len(async_task.results) < 2:
return return
for img in results: for img in async_task.results:
if isinstance(img, str) and os.path.exists(img):
img = cv2.imread(img)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
if not isinstance(img, np.ndarray): if not isinstance(img, np.ndarray):
return return
if img.ndim != 3: if img.ndim != 3:
return return
results.append(img)
H, W, C = results[0].shape H, W, C = results[0].shape
@@ -553,8 +558,8 @@ def worker():
direct_return = False direct_return = False
if direct_return: if direct_return:
d = [('Upscale (Fast)', '2x')] d = [('Upscale (Fast)', 'upscale_fast', '2x')]
uov_input_image_path = log(uov_input_image, d, output_format) uov_input_image_path = log(uov_input_image, d, output_format=output_format)
yield_result(async_task, uov_input_image_path, do_not_show_finished_images=True) yield_result(async_task, uov_input_image_path, do_not_show_finished_images=True)
return return
@@ -825,8 +830,12 @@ def worker():
('Negative Prompt', 'negative_prompt', task['log_negative_prompt']), ('Negative Prompt', 'negative_prompt', task['log_negative_prompt']),
('Fooocus V2 Expansion', 'prompt_expansion', task['expansion']), ('Fooocus V2 Expansion', 'prompt_expansion', task['expansion']),
('Styles', 'styles', str(raw_style_selections)), ('Styles', 'styles', str(raw_style_selections)),
('Performance', 'performance', performance_selection.value), ('Performance', 'performance', performance_selection.value)]
('Resolution', 'resolution', str((width, height))),
if performance_selection.steps() != steps:
d.append(('Steps', 'steps', steps))
d += [('Resolution', 'resolution', str((width, height))),
('Guidance Scale', 'guidance_scale', guidance_scale), ('Guidance Scale', 'guidance_scale', guidance_scale),
('Sharpness', 'sharpness', sharpness), ('Sharpness', 'sharpness', sharpness),
('ADM Guidance', 'adm_guidance', str(( ('ADM Guidance', 'adm_guidance', str((
@@ -852,17 +861,17 @@ def worker():
if freeu_enabled: if freeu_enabled:
d.append(('FreeU', 'freeu', str((freeu_b1, freeu_b2, freeu_s1, freeu_s2)))) d.append(('FreeU', 'freeu', str((freeu_b1, freeu_b2, freeu_s1, freeu_s2))))
for li, (n, w) in enumerate(loras):
if n != 'None':
d.append((f'LoRA {li + 1}', f'lora_combined_{li + 1}', f'{n} : {w}'))
metadata_parser = None metadata_parser = None
if save_metadata_to_images: if save_metadata_to_images:
metadata_parser = modules.meta_parser.get_metadata_parser(metadata_scheme) metadata_parser = modules.meta_parser.get_metadata_parser(metadata_scheme)
metadata_parser.set_data(task['log_positive_prompt'], task['positive'], metadata_parser.set_data(task['log_positive_prompt'], task['positive'],
task['log_negative_prompt'], task['negative'], task['log_negative_prompt'], task['negative'],
steps, base_model_name, refiner_model_name, loras) steps, base_model_name, refiner_model_name, loras)
d.append(('Metadata Scheme', 'metadata_scheme', metadata_scheme.value if save_metadata_to_images else save_metadata_to_images))
for li, (n, w) in enumerate(loras):
if n != 'None':
d.append((f'LoRA {li + 1}', f'lora_combined_{li + 1}', f'{n} : {w}'))
d.append(('Version', 'version', 'Fooocus v' + fooocus_version.version)) d.append(('Version', 'version', 'Fooocus v' + fooocus_version.version))
img_paths.append(log(x, d, metadata_parser, output_format)) img_paths.append(log(x, d, metadata_parser, output_format))
+1 -1
View File
@@ -264,7 +264,7 @@ default_loras = get_config_item_or_set_default(
) )
default_max_lora_number = get_config_item_or_set_default( default_max_lora_number = get_config_item_or_set_default(
key='default_max_lora_number', key='default_max_lora_number',
default_value=len(default_loras), default_value=len(default_loras) if isinstance(default_loras, list) and len(default_loras) > 0 else 5,
validator=lambda x: isinstance(x, int) and x >= 1 validator=lambda x: isinstance(x, int) and x >= 1
) )
default_cfg_scale = get_config_item_or_set_default( default_cfg_scale = get_config_item_or_set_default(
+3 -9
View File
@@ -112,10 +112,6 @@ progress::after {
margin-left: -5px !important; margin-left: -5px !important;
} }
.lora_enable {
flex-grow: 1 !important;
}
.lora_enable label { .lora_enable label {
height: 100%; height: 100%;
} }
@@ -128,12 +124,10 @@ progress::after {
display: none; display: none;
} }
.lora_model { @-moz-document url-prefix() {
flex-grow: 5 !important; .lora_weight input[type=number] {
width: 80px;
} }
.lora_weight {
flex-grow: 5 !important;
} }
''' '''
+2 -2
View File
@@ -26,7 +26,7 @@ def log(img, metadata, metadata_parser: MetadataParser | None = None, output_for
date_string, local_temp_filename, only_name = generate_temp_filename(folder=path_outputs, extension=output_format) date_string, local_temp_filename, only_name = generate_temp_filename(folder=path_outputs, extension=output_format)
os.makedirs(os.path.dirname(local_temp_filename), exist_ok=True) os.makedirs(os.path.dirname(local_temp_filename), exist_ok=True)
parsed_parameters = metadata_parser.parse_string(metadata) if metadata_parser is not None else '' parsed_parameters = metadata_parser.parse_string(metadata.copy()) if metadata_parser is not None else ''
image = Image.fromarray(img) image = Image.fromarray(img)
if output_format == 'png': if output_format == 'png':
@@ -90,7 +90,7 @@ def log(img, metadata, metadata_parser: MetadataParser | None = None, output_for
</script>""" </script>"""
) )
begin_part = f"<!DOCTYPE html><html><head><title>Fooocus Log {date_string}</title>{css_styles}</head><body>{js}<p>Fooocus Log {date_string} (private)</p>\n<p>All images are clean, without any hidden data/meta, and safe to share with others.</p><!--fooocus-log-split-->\n\n" begin_part = f"<!DOCTYPE html><html><head><title>Fooocus Log {date_string}</title>{css_styles}</head><body>{js}<p>Fooocus Log {date_string} (private)</p>\n<p>Metadata is embedded if enabled in the config or developer debug mode. You can find the information for each image in line Metadata Scheme.</p><!--fooocus-log-split-->\n\n"
end_part = f'\n<!--fooocus-log-split--></body></html>' end_part = f'\n<!--fooocus-log-split--></body></html>'
middle_part = log_cache.get(html_name, "") middle_part = log_cache.get(html_name, "")
+1 -2
View File
@@ -94,9 +94,8 @@ def get_words(arrays, totalMult, index):
return [word] + get_words(arrays[1:], math.floor(totalMult/len(words)), index) return [word] + get_words(arrays[1:], math.floor(totalMult/len(words)), index)
def apply_arrays(text, index): def apply_arrays(text, index):
arrays = re.findall(r'\[\[([\s,\w-]+)\]\]', text) arrays = re.findall(r'\[\[(.*?)\]\]', text)
if len(arrays) == 0: if len(arrays) == 0:
return text return text
+6
View File
@@ -1,3 +1,9 @@
# [2.2.1](https://github.com/lllyasviel/Fooocus/releases/tag/2.2.1)
* Fix some small bugs (e.g. image grid, upscale fast 2x, LoRA weight width in Firefox)
* Allow prompt weights in array syntax
* Add steps override and metadata scheme to history log
# [2.2.0](https://github.com/lllyasviel/Fooocus/releases/tag/2.2.0) # [2.2.0](https://github.com/lllyasviel/Fooocus/releases/tag/2.2.0)
* Isolate every image generation to truly allow multi-user usage * Isolate every image generation to truly allow multi-user usage
+4 -4
View File
@@ -355,13 +355,13 @@ with shared.gradio_root:
for i, (n, v) in enumerate(modules.config.default_loras): for i, (n, v) in enumerate(modules.config.default_loras):
with gr.Row(): with gr.Row():
lora_enabled = gr.Checkbox(label='Enable', value=True, lora_enabled = gr.Checkbox(label='Enable', value=True,
elem_classes=['lora_enable', 'min_check']) elem_classes=['lora_enable', 'min_check'], scale=1)
lora_model = gr.Dropdown(label=f'LoRA {i + 1}', lora_model = gr.Dropdown(label=f'LoRA {i + 1}',
choices=['None'] + modules.config.lora_filenames, value=n, choices=['None'] + modules.config.lora_filenames, value=n,
elem_classes='lora_model') elem_classes='lora_model', scale=5)
lora_weight = gr.Slider(label='Weight', minimum=modules.config.default_loras_min_weight, lora_weight = gr.Slider(label='Weight', minimum=modules.config.default_loras_min_weight,
maximum=modules.config.default_loras_max_weight, step=0.01, value=v, maximum=modules.config.default_loras_max_weight, step=0.01, value=v,
elem_classes='lora_weight') elem_classes='lora_weight', scale=5)
lora_ctrls += [lora_enabled, lora_model, lora_weight] lora_ctrls += [lora_enabled, lora_model, lora_weight]
with gr.Row(): with gr.Row():
@@ -438,7 +438,7 @@ with shared.gradio_root:
save_metadata_to_images = gr.Checkbox(label='Save Metadata to Images', value=modules.config.default_save_metadata_to_images, save_metadata_to_images = gr.Checkbox(label='Save Metadata to Images', value=modules.config.default_save_metadata_to_images,
info='Adds parameters to generated images allowing manual regeneration.') info='Adds parameters to generated images allowing manual regeneration.')
metadata_scheme = gr.Radio(label='Metadata Scheme', choices=flags.metadata_scheme, value=modules.config.default_metadata_scheme, metadata_scheme = gr.Radio(label='Metadata Scheme', choices=flags.metadata_scheme, value=modules.config.default_metadata_scheme,
info='Image Prompt parameters are not included. Use a1111 for compatibility with Civitai.', info='Image Prompt parameters are not included. Use png and a1111 for compatibility with Civitai.',
visible=modules.config.default_save_metadata_to_images) visible=modules.config.default_save_metadata_to_images)
save_metadata_to_images.change(lambda x: gr.update(visible=x), inputs=[save_metadata_to_images], outputs=[metadata_scheme], save_metadata_to_images.change(lambda x: gr.update(visible=x), inputs=[save_metadata_to_images], outputs=[metadata_scheme],
+1 -1
View File
@@ -18,7 +18,7 @@ Chihuahua
Chimpanzee Chimpanzee
Chinchilla Chinchilla
Chipmunk Chipmunk
Comodo Dragon Komodo Dragon
Cow Cow
Coyote Coyote
Crocodile Crocodile