diff --git a/fooocus_version.py b/fooocus_version.py index 024a3d18..383afaed 100644 --- a/fooocus_version.py +++ b/fooocus_version.py @@ -1 +1 @@ -version = '2.1.732' +version = '2.1.733' diff --git a/modules/async_worker.py b/modules/async_worker.py index b7c3c18d..2509d763 100644 --- a/modules/async_worker.py +++ b/modules/async_worker.py @@ -123,13 +123,8 @@ def worker(): controlnet_cpds_path = None clip_vision_path, ip_negative_path, ip_adapter_path = None, None, None - seed = image_seed - max_seed = int(1024 * 1024 * 1024) - if not isinstance(seed, int): - seed = random.randint(1, max_seed) - if seed < 0: - seed = - seed - seed = seed % max_seed + seed = int(image_seed) + print(f'[Parameters] Seed = {seed}') if performance_selection == 'Speed': steps = 30 diff --git a/modules/expansion.py b/modules/expansion.py index 2145a701..f65089fa 100644 --- a/modules/expansion.py +++ b/modules/expansion.py @@ -6,6 +6,9 @@ from transformers import AutoTokenizer, AutoModelForCausalLM, set_seed from modules.path import fooocus_expansion_path from fcbh.model_patcher import ModelPatcher +# limitation of np.random.seed(), called from transformers.set_seed() +SEED_LIMIT_NUMPY = 2**32 + fooocus_magic_split = [ ', extremely', @@ -54,7 +57,7 @@ class FooocusExpansion: print('Fooocus Expansion loaded by itself.') model_management.load_model_gpu(self.patcher) - seed = int(seed) + seed = int(seed) % SEED_LIMIT_NUMPY set_seed(seed) origin = safe_str(prompt) prompt = origin + fooocus_magic_split[seed % len(fooocus_magic_split)] diff --git a/update_log.md b/update_log.md index c122d66b..9d33ba27 100644 --- a/update_log.md +++ b/update_log.md @@ -1,3 +1,7 @@ +# 2.1.733 + +* Increased allowed random seed range. + # 2.1.728 * Fixed some potential numerical problems since 2.1.723 diff --git a/webui.py b/webui.py index c8c6bc4e..a6829aee 100644 --- a/webui.py +++ b/webui.py @@ -18,6 +18,10 @@ from modules.sdxl_styles import legal_style_names, aspect_ratios from modules.private_logger import get_current_html_path from modules.ui_gradio_extensions import reload_javascript +# as in k-diffusion (sampling.py) +MIN_SEED = 0 +MAX_SEED = 2**63 - 1 + def generate_clicked(*args): execution_start_time = time.perf_counter() @@ -193,16 +197,22 @@ with shared.gradio_root: info='Describing what you do not want to see.', lines=2, value=modules.path.default_negative_prompt) seed_random = gr.Checkbox(label='Random', value=True) - image_seed = gr.Number(label='Seed', value=0, precision=0, visible=False) + image_seed = gr.Textbox(label='Seed', value=0, max_lines=1, visible=False) # workaround for https://github.com/gradio-app/gradio/issues/5354 def random_checked(r): return gr.update(visible=not r) - def refresh_seed(r, s): + def refresh_seed(r, seed_string): if r: - return random.randint(1, 1024*1024*1024) + return random.randint(MIN_SEED, MAX_SEED) else: - return s + try: + seed_value = int(seed_string) + if MIN_SEED <= seed_value <= MAX_SEED: + return seed_value + except ValueError: + pass + return random.randint(MIN_SEED, MAX_SEED) seed_random.change(random_checked, inputs=[seed_random], outputs=[image_seed], queue=False)