diff --git a/cli/validate-locale.py b/cli/validate-locale.py index 4df62bf5b..5eb574b84 100755 --- a/cli/validate-locale.py +++ b/cli/validate-locale.py @@ -27,7 +27,7 @@ if __name__ == "__main__": if v['label'] in keys: print(f' Duplicate: {k}.{v["label"]}') else: - if len(v['label']) > 54: + if len(v['label']) > 63: long += 1 print(f' Long label: {k}.{v["label"]}') keys.append(v['label']) diff --git a/extensions-builtin/Lora/scripts/lora_script.py b/extensions-builtin/Lora/scripts/lora_script.py index cd61c5175..cef764c52 100644 --- a/extensions-builtin/Lora/scripts/lora_script.py +++ b/extensions-builtin/Lora/scripts/lora_script.py @@ -57,7 +57,7 @@ script_callbacks.on_infotext_pasted(lora.infotext_pasted) shared.options_templates.update(shared.options_section(('extra_networks', "Extra Networks"), { "sd_lora": shared.OptionInfo("None", "Add Lora to prompt", gr.Dropdown, lambda: {"choices": ["None", *lora.available_loras]}, refresh=lora.list_available_loras), "lora_preferred_name": shared.OptionInfo("Alias from file", "When adding to prompt, refer to Lora by", gr.Radio, {"choices": ["Alias from file", "Filename"]}), - "lora_add_hashes_to_infotext": shared.OptionInfo(True, "Add Lora hashes to infotext"), + "lora_add_hashes_to_infotext": shared.OptionInfo(True, "Add Lora hashes to infotext", gr.Checkbox, { "visible": False }), })) diff --git a/extensions-builtin/sd-extension-system-info b/extensions-builtin/sd-extension-system-info index acfc8d68b..8347deba3 160000 --- a/extensions-builtin/sd-extension-system-info +++ b/extensions-builtin/sd-extension-system-info @@ -1 +1 @@ -Subproject commit acfc8d68b887cb482a94870f005a3a0661670aea +Subproject commit 8347deba3d9df7b6dd2bafc492ac465e5dd81e98 diff --git a/html/locale_en.json b/html/locale_en.json index 11486613a..1a261a8a9 100644 --- a/html/locale_en.json +++ b/html/locale_en.json @@ -102,16 +102,16 @@ {"id":"","label":"Upscaler 2 visibility","localized":"","hint":"Strength of the secondary upscaler"}, {"id":"","label":"GFPGAN visibility","localized":"","hint":"Strength of GFPGAN face restore network, 0=disabled"}, {"id":"","label":"CodeFormer visibility","localized":"","hint":"Strength of CodeFormer face restore network, 0=disabled"}, - {"id":"","label":"CodeFormer weight (0 = max, 1 = min)","localized":"","hint":""} + {"id":"","label":"CodeFormer weight","localized":"","hint":"0=maximum strength, 1=minimium strength"} ], "settings menu": [ - {"id":"settings_submit","label":"Apply settings","localized":"","hint":""}, - {"id":"restart_submit","label":"Restart server","localized":"","hint":""}, - {"id":"shutdown_submit","label":"Shutdown server","localized":"","hint":""}, - {"id":"settings_preview_theme","label":"Preview theme","localized":"","hint":""}, - {"id":"defaults_submit","label":"Restore defaults","localized":"","hint":""}, - {"id":"sett_unload_sd_model","label":"Unload checkpoint","localized":"","hint":""}, - {"id":"sett_reload_sd_model","label":"Reload checkpoint","localized":"","hint":""} + {"id":"settings_submit","label":"Apply settings","localized":"","hint":"Save current settings, server restart is recommended"}, + {"id":"restart_submit","label":"Restart server","localized":"","hint":"Restart server"}, + {"id":"shutdown_submit","label":"Shutdown server","localized":"","hint":"Shutdown server"}, + {"id":"settings_preview_theme","label":"Preview theme","localized":"","hint":"Show theme preview"}, + {"id":"defaults_submit","label":"Restore defaults","localized":"","hint":"Restore default server settings"}, + {"id":"sett_unload_sd_model","label":"Unload checkpoint","localized":"","hint":"Unload currently loaded model checkpoint"}, + {"id":"sett_reload_sd_model","label":"Reload checkpoint","localized":"","hint":"Reload currently selected model checkpoint"} ], "settings sections": [ {"id":"","label":"Stable Diffusion ","localized":"","hint":""}, @@ -260,7 +260,7 @@ {"id":"","label":"Number of cached VAE checkpoints","localized":"","hint":"The amount of VAE files to store in RAM for quick access"}, {"id":"","label":"Select VAE","localized":"","hint":"VAE helps with fine details in the final image and may also alter colors"}, {"id":"","label":"Enable splitting of hires batch processing","localized":"","hint":"Reduces VRAM usage when using hires fix on batches of images"}, - {"id":"","label":"When loading models attempt stream loading optimized for slow or network storage","localized":"","hint":""}, + {"id":"","label":"Load models using stream loading method","localized":"","hint":"When loading models attempt stream loading optimized for slow or network storage"}, {"id":"","label":"When loading models attempt to reuse previous model dictionary","localized":"","hint":""}, {"id":"","label":"Disable cross-attention layer optimization","localized":"","hint":"Disable the all cross-attention optimization. May result in higher VRAM usage and longer generation times"}, {"id":"","label":"xFormers","localized":"","hint":"Memory optimization. Non-Deterministic (different results each time)"}, @@ -295,7 +295,7 @@ {"id":"","label":"Enable upcast sampling","localized":"","hint":"Usually produces similar results to --no-half with better performance while using less memory"}, {"id":"","label":"Enable upcast cross attention layer","localized":"","hint":""}, {"id":"","label":"Disable NaN check in produced images/latent spaces","localized":"","hint":""}, - {"id":"","label":"Attempt to roll back VAE when produced NaN values, requires NaN check (experimental)","localized":"","hint":""}, + {"id":"","label":"Attempt VAE roll back when produced NaN values (experimental)","localized":"","hint":"Requires Torch 2.1 and NaN check enabled"}, {"id":"","label":"Use channels last as torch memory format ","localized":"","hint":""}, {"id":"","label":"Enable full-depth cuDNN benchmark feature","localized":"","hint":""}, {"id":"","label":"Allow TF32 math ops","localized":"","hint":""}, @@ -339,18 +339,18 @@ {"id":"","label":"Do not save grids consisting of one picture","localized":"","hint":""}, {"id":"","label":"Prevent empty spots in grid (when set to autodetect)","localized":"","hint":""}, {"id":"","label":"Grid row count","localized":"","hint":"Use -1 for autodetect and 0 for it to be same as batch size"}, - {"id":"","label":"Create a text file next to every image with generation parameters","localized":"","hint":""}, - {"id":"","label":"Create a JSON log file for each saved image","localized":"","hint":"Save image information to a JSON file"}, - {"id":"","label":"Save a copy of image before doing face restoration","localized":"","hint":""}, - {"id":"","label":"Save a copy of image before applying highres fix","localized":"","hint":""}, - {"id":"","label":"Save a copy of image before applying color correction to img2img results","localized":"","hint":""}, - {"id":"","label":"Save a copy of the inpainting greyscale mask","localized":"","hint":""}, - {"id":"","label":"Save a copy of inpainting masked composite","localized":"","hint":""}, - {"id":"","label":"Save a copy of processing init images","localized":"","hint":""}, + {"id":"","label":"Create text file next to every image with generation parameters","localized":"","hint":""}, + {"id":"","label":"Create JSON log file for each saved image","localized":"","hint":"Save image information to a JSON file"}, + {"id":"","label":"Save copy of image before doing face restoration","localized":"","hint":""}, + {"id":"","label":"Save copy of image before applying highres fix","localized":"","hint":""}, + {"id":"","label":"Save copy of image before applying color correction","localized":"","hint":""}, + {"id":"","label":"Save copy of the inpainting greyscale mask","localized":"","hint":""}, + {"id":"","label":"Save copy of inpainting masked composite","localized":"","hint":""}, + {"id":"","label":"Save copy of processing init images","localized":"","hint":""}, {"id":"","label":"Quality for saved jpeg images","localized":"","hint":""}, {"id":"","label":"Use lossless compression for webp images","localized":"","hint":""}, {"id":"","label":"Maximum allowed image size in megapixels","localized":"","hint":""}, - {"id":"","label":"Use original name for output filename during batch process in extras tab","localized":"","hint":""}, + {"id":"","label":"Use original name for output filename during batch process","localized":"","hint":""}, {"id":"","label":"Use upscaler name as filename suffix in the extras tab","localized":"","hint":""}, {"id":"","label":"When using 'Save' button, only save a single selected image","localized":"","hint":""}, {"id":"","label":"Save images to a subdirectory","localized":"","hint":""}, @@ -364,11 +364,11 @@ {"id":"","label":"Inpainting conditioning mask strength","localized":"","hint":"Determines how strongly to mask off the original image for inpainting and img2img. 1.0 means fully masked (default). 0.0 means a fully unmasked conditioning. Lower values will help preserve the overall composition of the image, but will struggle with large changes"}, {"id":"","label":"Noise multiplier for image processing","localized":"","hint":""}, {"id":"","label":"Clip skip","localized":"","hint":"Early stopping parameter for CLIP model; 1 is stop at last layer as usual, 2 is stop at penultimate layer, etc"}, - {"id":"","label":"Output directory for images; if empty, defaults to three directories below","localized":"","hint":""}, + {"id":"","label":"Output directory for images","localized":"","hint":"If empty, defaults to three directories below"}, {"id":"","label":"Output directory for txt2img images","localized":"","hint":""}, {"id":"","label":"Output directory for img2img images","localized":"","hint":""}, {"id":"","label":"Output directory for images from extras tab","localized":"","hint":""}, - {"id":"","label":"Output directory for grids; if empty, defaults to two directories below","localized":"","hint":""}, + {"id":"","label":"Output directory for grids","localized":"","hint":"If empty, defaults to two directories below"}, {"id":"","label":"Output directory for txt2img grids","localized":"","hint":""}, {"id":"","label":"Output directory for img2img grids","localized":"","hint":""}, {"id":"","label":"Directory for saving images using the Save button","localized":"","hint":""}, @@ -380,7 +380,7 @@ {"id":"","label":"Show grid in results for web","localized":"","hint":""}, {"id":"","label":"For inpainting, include the greyscale mask in results for web","localized":"","hint":""}, {"id":"","label":"For inpainting, include masked composite in results for web","localized":"","hint":""}, - {"id":"","label":"Do not change the selected model when reading generation parameters","localized":"","hint":""}, + {"id":"","label":"Do not change selected model when reading generation parameters","localized":"","hint":""}, {"id":"","label":"Send seed when sending prompt or image to other interface","localized":"","hint":""}, {"id":"","label":"Send size when sending prompt or image to another interface","localized":"","hint":""}, {"id":"","label":"Font for image grids that have text","localized":"","hint":""}, @@ -451,57 +451,52 @@ {"id":"","label":"Maximum number of images in upscaling cache","localized":"","hint":""}, {"id":"","label":"Move VAE and CLIP to RAM when training if possible","localized":"","hint":""}, {"id":"","label":"Pin training dataset to memory","localized":"","hint":""}, - {"id":"","label":"Saves resumable optimizer state when training embedding or hypernetwork","localized":"","hint":""}, - {"id":"","label":"Save textual inversion and hypernet settings to a text file whenever training starts","localized":"","hint":""}, + {"id":"","label":"Save resumable optimizer state when training","localized":"","hint":""}, + {"id":"","label":"Save training settings to a text file on training start","localized":"","hint":""}, {"id":"","label":"Filename word regex","localized":"","hint":"This regular expression will be used extract words from filename, and they will be joined using the option below into label text used for training. Leave empty to keep filename text as it is"}, {"id":"","label":"Filename join string","localized":"","hint":"This string will be used to join split words into a single line if the option above is enabled"}, {"id":"","label":"Embeddings train templates directory","localized":"","hint":""}, - {"id":"","label":"Number of repeats for a single input image per epoch; used only for displaying epoch number","localized":"","hint":""}, - {"id":"","label":"Save an csv containing the loss to log directory every N steps, 0 to disable","localized":"","hint":""}, + {"id":"","label":"Number of repeats for a single input image per epoch","localized":"","hint":"Used only for displaying epoch number"}, + {"id":"","label":"Save CSV file containing the loss to log directory","localized":"","hint":"Save CSV file containing the loss to log directory every N steps, 0 to disable"}, {"id":"","label":"Enable tensorboard logging","localized":"","hint":""}, {"id":"","label":"Save generated images within tensorboard","localized":"","hint":""}, - {"id":"","label":"How often, in seconds, to flush the pending tensorboard events and summaries to disk","localized":"","hint":""}, + {"id":"","label":"Tensorboard flush period","localized":"","hint":"How often, in seconds, to flush the pending Tensorboard events and summaries to disk"}, {"id":"","label":"Interrogate: keep models in VRAM","localized":"","hint":""}, {"id":"","label":"Interrogate: include ranks of model tags matches in results","localized":"","hint":""}, {"id":"","label":"Interrogate: num_beams for BLIP","localized":"","hint":""}, - {"id":"","label":"Interrogate: minimum description length (excluding artists, etc..)","localized":"","hint":""}, + {"id":"","label":"Interrogate: minimum description length","localized":"","hint":"Interrogate: minimum description length (excluding artists, etc..)"}, {"id":"","label":"Interrogate: maximum description length","localized":"","hint":""}, - {"id":"","label":"CLIP: maximum number of lines in text file (0 = No limit)","localized":"","hint":""}, + {"id":"","label":"CLIP: maximum number of lines in text file","localized":"","hint":"CLIP: maximum number of lines in text file (0 = No limit)"}, {"id":"","label":"flavors","localized":"","hint":""}, {"id":"","label":"artists","localized":"","hint":""}, {"id":"","label":"mediums","localized":"","hint":""}, {"id":"","label":"movements","localized":"","hint":""}, {"id":"","label":"Interrogate: deepbooru score threshold","localized":"","hint":""}, {"id":"","label":"Interrogate: deepbooru sort alphabetically","localized":"","hint":""}, - {"id":"","label":"use spaces for tags in deepbooru","localized":"","hint":""}, - {"id":"","label":"escape (\\) brackets in deepbooru (so they are used as literal brackets and not for emphasis)","localized":"","hint":""}, - {"id":"","label":"filter out those tags from deepbooru output (separated by comma)","localized":"","hint":""}, + {"id":"","label":"Use spaces for tags in deepbooru","localized":"","hint":""}, + {"id":"","label":"Escape brackets in deepbooru","localized":"","hint":"Escape (\\) brackets in deepbooru so they are used as literal brackets and not for emphasis"}, + {"id":"","label":"Filter out tags from deepbooru output","localized":"","hint":"Filter out those tags from deepbooru output (separated by comma)"}, {"id":"","label":"Default upscaler for image resize operations","localized":"","hint":""}, - {"id":"","label":"Tile size for ESRGAN upscalers (0 = no tiling)","localized":"","hint":""}, - {"id":"","label":"Tile overlap in pixels for ESRGAN upscalers","localized":"","hint":""}, - {"id":"","label":"Tile size for SCUNET upscalers. 0 = no tiling","localized":"","hint":""}, - {"id":"","label":"Tile overlap, in pixels for SCUNET upscalers. Low values = visible seam","localized":"","hint":""}, - {"id":"","label":"Hires fix uses width & height to set final resolution rather than first pass","localized":"","hint":""}, + {"id":"","label":"Tile size for ESRGAN upscalers","localized":"","hint":"0 = no tiling"}, + {"id":"","label":"Tile overlap in pixels for ESRGAN upscalers","localized":"","hint":"Low values = visible seam"}, + {"id":"","label":"Tile size for SCUNET upscalers","localized":"","hint":"0 = no tiling"}, + {"id":"","label":"Tile overlap, in pixels for SCUNET upscalers","localized":"","hint":" Low values = visible seam"}, + {"id":"","label":"Hires fix uses width & height to set final resolution","localized":"","hint":"Hires fix uses width & height to set final resolution rather than first pass"}, {"id":"","label":"Do not fix prompt schedule for second order samplers","localized":"","hint":""}, {"id":"","label":"Use LyCoris handler for all Lora types","localized":"","hint":""}, {"id":"","label":"Use Kohya method for handling multiple Loras","localized":"","hint":""}, {"id":"","label":"CodeFormer","localized":"","hint":""}, {"id":"","label":"GFPGAN","localized":"","hint":"Restore low quality faces using GFPGAN neural network"}, - {"id":"","label":"CodeFormer weight parameter; 0 = maximum effect; 1 = minimum effect","localized":"","hint":""}, + {"id":"","label":"CodeFormer weight parameter","localized":"","hint":"0 = maximum effect; 1 = minimum effect"}, {"id":"","label":"Move face restoration model from VRAM into RAM after processing","localized":"","hint":""}, {"id":"","label":"Default view for Extra Networks","localized":"","hint":""}, {"id":"","label":"Multiplier for extra networks","localized":"","hint":"When adding extra network such as Hypernetwork or Lora to prompt, use this multiplier for it"}, {"id":"","label":"Card width for Extra Networks (px)","localized":"","hint":""}, {"id":"","label":"Card height for Extra Networks (px)","localized":"","hint":""}, - {"id":"","label":"Extra text to add before <...> when adding extra network to prompt","localized":"","hint":""}, {"id":"","label":"Add hypernetwork to prompt","localized":"","hint":""}, {"id":"","label":"Token merging ratio","localized":"","hint":"Enable redundant token merging via tomesd for speed and memory improvements, 0=disabled"}, {"id":"","label":"Token merging ratio for img2img","localized":"","hint":"Enable redundant token merging for img2img via tomesd for speed and memory improvements, 0=disabled"}, {"id":"","label":"Token merging ratio for hires pass","localized":"","hint":"Enable redundant token merging for hires pass via tomesd for speed and memory improvements, 0=disabled"}, - {"id":"","label":"Use random perturbations - Can improve outputs for certain samplers. For others, it may cause visual artifacting","localized":"","hint":""}, - {"id":"","label":"Merge attention (Recommend on)","localized":"","hint":""}, - {"id":"","label":"Merge cross attention (Recommend off)","localized":"","hint":""}, - {"id":"","label":"Merge mlp (Strongly recommend off)","localized":"","hint":""}, {"id":"","label":"Stride - X","localized":"","hint":""}, {"id":"","label":"Stride - Y","localized":"","hint":""} ], diff --git a/modules/shared.py b/modules/shared.py index e12d2a0c9..390d40446 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -293,7 +293,7 @@ options_templates.update(options_section(('sd', "Stable Diffusion"), { "sd_vae_checkpoint_cache": OptionInfo(0, "Number of cached VAE checkpoints", gr.Slider, {"minimum": 0, "maximum": 10, "step": 1}), "sd_vae": OptionInfo("Automatic", "Select VAE", gr.Dropdown, lambda: {"choices": shared_items.sd_vae_items()}, refresh=shared_items.refresh_vae_list), "sd_model_dict": OptionInfo('None', "Stable Diffusion checkpoint dict", gr.Dropdown, lambda: {"choices": ['None'] + list_checkpoint_tiles()}, refresh=refresh_checkpoints), - "stream_load": OptionInfo(False, "When loading models attempt stream loading optimized for slow or network storage"), + "stream_load": OptionInfo(False, "Load models using stream loading method"), "model_reuse_dict": OptionInfo(False, "When loading models attempt to reuse previous model dictionary"), "prompt_attention": OptionInfo("Full parser", "Prompt attention parser", gr.Radio, lambda: {"choices": ["Full parser", "Compel parser", "A1111 parser", "Fixed attention"] }), "prompt_mean_norm": OptionInfo(True, "Prompt attention mean normalization"), @@ -322,7 +322,7 @@ options_templates.update(options_section(('cuda', "Compute Settings"), { "upcast_sampling": OptionInfo(True if sys.platform == "darwin" else False, "Enable upcast sampling"), "upcast_attn": OptionInfo(False, "Enable upcast cross attention layer"), "disable_nan_check": OptionInfo(True, "Disable NaN check in produced images/latent spaces"), - "rollback_vae": OptionInfo(False, "Attempt to roll back VAE when produced NaN values, requires NaN check (experimental)"), + "rollback_vae": OptionInfo(False, "Attempt VAE roll back when produced NaN values (experimental)"), "opt_channelslast": OptionInfo(False, "Use channels last as torch memory format "), "cudnn_benchmark": OptionInfo(False, "Enable full-depth cuDNN benchmark feature"), "cuda_allow_tf32": OptionInfo(True, "Allow TF32 math ops"), @@ -368,18 +368,18 @@ options_templates.update(options_section(('saving-images', "Image Options"), { "grid_only_if_multiple": OptionInfo(True, "Do not save grids consisting of one picture"), "grid_prevent_empty_spots": OptionInfo(True, "Prevent empty spots in grid (when set to autodetect)"), "n_rows": OptionInfo(-1, "Grid row count", gr.Slider, {"minimum": -1, "maximum": 16, "step": 1}), - "save_txt": OptionInfo(False, "Create a text file next to every image with generation parameters"), - "save_log_fn": OptionInfo("", "Create a JSON log file for each saved image", component_args=hide_dirs), - "save_images_before_face_restoration": OptionInfo(False, "Save a copy of image before doing face restoration"), - "save_images_before_highres_fix": OptionInfo(False, "Save a copy of image before applying highres fix"), - "save_images_before_color_correction": OptionInfo(False, "Save a copy of image before applying color correction to img2img results"), - "save_mask": OptionInfo(False, "Save a copy of the inpainting greyscale mask"), - "save_mask_composite": OptionInfo(False, "Save a copy of inpainting masked composite"), - "save_init_img": OptionInfo(False, "Save a copy of processing init images"), + "save_txt": OptionInfo(False, "Create text file next to every image with generation parameters"), + "save_log_fn": OptionInfo("", "Create JSON log file for each saved image", component_args=hide_dirs), + "save_images_before_face_restoration": OptionInfo(False, "Save copy of image before doing face restoration"), + "save_images_before_highres_fix": OptionInfo(False, "Save copy of image before applying highres fix"), + "save_images_before_color_correction": OptionInfo(False, "Save copy of image before applying color correction"), + "save_mask": OptionInfo(False, "Save copy of the inpainting greyscale mask"), + "save_mask_composite": OptionInfo(False, "Save copy of inpainting masked composite"), + "save_init_img": OptionInfo(False, "Save copy of processing init images"), "jpeg_quality": OptionInfo(85, "Quality for saved jpeg images", gr.Slider, {"minimum": 1, "maximum": 100, "step": 1}), "webp_lossless": OptionInfo(False, "Use lossless compression for webp images"), "img_max_size_mp": OptionInfo(250, "Maximum allowed image size in megapixels", gr.Number), - "use_original_name_batch": OptionInfo(True, "Use original name for output filename during batch process in extras tab"), + "use_original_name_batch": OptionInfo(True, "Use original name for output filename during batch process"), "use_upscaler_name_as_suffix": OptionInfo(True, "Use upscaler name as filename suffix in the extras tab"), "save_selected_only": OptionInfo(True, "When using 'Save' button, only save a single selected image"), "save_to_dirs": OptionInfo(False, "Save images to a subdirectory"), @@ -400,11 +400,11 @@ options_templates.update(options_section(('image-processing', "Image Processing" options_templates.update(options_section(('saving-paths', "Output Paths"), { - "outdir_samples": OptionInfo("", "Output directory for images; if empty, defaults to three directories below", component_args=hide_dirs), + "outdir_samples": OptionInfo("", "Output directory for images", component_args=hide_dirs), "outdir_txt2img_samples": OptionInfo("outputs/text", 'Output directory for txt2img images', component_args=hide_dirs), "outdir_img2img_samples": OptionInfo("outputs/image", 'Output directory for img2img images', component_args=hide_dirs), "outdir_extras_samples": OptionInfo("outputs/extras", 'Output directory for images from extras tab', component_args=hide_dirs), - "outdir_grids": OptionInfo("", "Output directory for grids; if empty, defaults to two directories below", component_args=hide_dirs), + "outdir_grids": OptionInfo("", "Output directory for grids", component_args=hide_dirs), "outdir_txt2img_grids": OptionInfo("outputs/grids", 'Output directory for txt2img grids', component_args=hide_dirs), "outdir_img2img_grids": OptionInfo("outputs/grids", 'Output directory for img2img grids', component_args=hide_dirs), "outdir_save": OptionInfo("outputs/save", "Directory for saving images using the Save button", component_args=hide_dirs), @@ -418,7 +418,7 @@ options_templates.update(options_section(('ui', "User interface"), { "return_grid": OptionInfo(True, "Show grid in results for web"), "return_mask": OptionInfo(False, "For inpainting, include the greyscale mask in results for web"), "return_mask_composite": OptionInfo(False, "For inpainting, include masked composite in results for web"), - "disable_weights_auto_swap": OptionInfo(True, "Do not change the selected model when reading generation parameters"), + "disable_weights_auto_swap": OptionInfo(True, "Do not change selected model when reading generation parameters"), "send_seed": OptionInfo(True, "Send seed when sending prompt or image to other interface"), "send_size": OptionInfo(True, "Send size when sending prompt or image to another interface"), "font": OptionInfo("", "Font for image grids that have text"), @@ -475,56 +475,56 @@ options_templates.update(options_section(('postprocessing', "Postprocessing"), { options_templates.update(options_section(('training', "Training"), { "unload_models_when_training": OptionInfo(False, "Move VAE and CLIP to RAM when training if possible"), "pin_memory": OptionInfo(True, "Pin training dataset to memory"), - "save_optimizer_state": OptionInfo(False, "Saves resumable optimizer state when training embedding or hypernetwork"), - "save_training_settings_to_txt": OptionInfo(True, "Save textual inversion and hypernet settings to a text file whenever training starts"), + "save_optimizer_state": OptionInfo(False, "Save resumable optimizer state when training"), + "save_training_settings_to_txt": OptionInfo(True, "Save training settings to a text file on training start"), "dataset_filename_word_regex": OptionInfo("", "Filename word regex"), "dataset_filename_join_string": OptionInfo(" ", "Filename join string"), "embeddings_templates_dir": OptionInfo(os.path.join(paths.script_path, 'train', 'templates'), "Embeddings train templates directory"), - "training_image_repeats_per_epoch": OptionInfo(1, "Number of repeats for a single input image per epoch; used only for displaying epoch number", gr.Number, {"precision": 0}), - "training_write_csv_every": OptionInfo(0, "Save an csv containing the loss to log directory every N steps, 0 to disable"), + "training_image_repeats_per_epoch": OptionInfo(1, "Number of repeats for a single input image per epoch", gr.Number, {"precision": 0}), + "training_write_csv_every": OptionInfo(0, "Save CSV file containing the loss to log directory"), "training_enable_tensorboard": OptionInfo(False, "Enable tensorboard logging"), "training_tensorboard_save_images": OptionInfo(False, "Save generated images within tensorboard"), - "training_tensorboard_flush_every": OptionInfo(120, "How often, in seconds, to flush the pending tensorboard events and summaries to disk"), + "training_tensorboard_flush_every": OptionInfo(120, "Tensorboard flush period"), })) options_templates.update(options_section(('interrogate', "Interrogate"), { "interrogate_keep_models_in_memory": OptionInfo(False, "Interrogate: keep models in VRAM"), "interrogate_return_ranks": OptionInfo(True, "Interrogate: include ranks of model tags matches in results"), "interrogate_clip_num_beams": OptionInfo(1, "Interrogate: num_beams for BLIP", gr.Slider, {"minimum": 1, "maximum": 16, "step": 1}), - "interrogate_clip_min_length": OptionInfo(32, "Interrogate: minimum description length (excluding artists, etc..)", gr.Slider, {"minimum": 1, "maximum": 128, "step": 1}), + "interrogate_clip_min_length": OptionInfo(32, "Interrogate: minimum description length", gr.Slider, {"minimum": 1, "maximum": 128, "step": 1}), "interrogate_clip_max_length": OptionInfo(192, "Interrogate: maximum description length", gr.Slider, {"minimum": 1, "maximum": 256, "step": 1}), - "interrogate_clip_dict_limit": OptionInfo(2048, "CLIP: maximum number of lines in text file (0 = No limit)"), + "interrogate_clip_dict_limit": OptionInfo(2048, "CLIP: maximum number of lines in text file"), "interrogate_clip_skip_categories": OptionInfo(["artists", "movements", "flavors"], "CLIP: skip inquire categories", gr.CheckboxGroup, lambda: {"choices": modules.interrogate.category_types()}, refresh=modules.interrogate.category_types), "interrogate_deepbooru_score_threshold": OptionInfo(0.65, "Interrogate: deepbooru score threshold", gr.Slider, {"minimum": 0, "maximum": 1, "step": 0.01}), "deepbooru_sort_alpha": OptionInfo(False, "Interrogate: deepbooru sort alphabetically"), - "deepbooru_use_spaces": OptionInfo(False, "use spaces for tags in deepbooru"), - "deepbooru_escape": OptionInfo(True, "escape (\\) brackets in deepbooru (so they are used as literal brackets and not for emphasis)"), - "deepbooru_filter_tags": OptionInfo("", "filter out those tags from deepbooru output (separated by comma)"), + "deepbooru_use_spaces": OptionInfo(False, "Use spaces for tags in deepbooru"), + "deepbooru_escape": OptionInfo(True, "Escape brackets in deepbooru"), + "deepbooru_filter_tags": OptionInfo("", "Filter out tags from deepbooru output"), })) options_templates.update(options_section(('upscaling', "Upscaling"), { "face_restoration_model": OptionInfo("CodeFormer", "Face restoration model", gr.Radio, lambda: {"choices": [x.name() for x in face_restorers]}), - "code_former_weight": OptionInfo(0.2, "CodeFormer weight parameter; 0 = maximum effect; 1 = minimum effect", gr.Slider, {"minimum": 0, "maximum": 1, "step": 0.01}), + "code_former_weight": OptionInfo(0.2, "CodeFormer weight parameter", gr.Slider, {"minimum": 0, "maximum": 1, "step": 0.01}), "face_restoration_unload": OptionInfo(False, "Move face restoration model from VRAM into RAM after processing"), "upscaler_for_img2img": OptionInfo("None", "Default upscaler for image resize operations", gr.Dropdown, lambda: {"choices": [x.name for x in sd_upscalers]}), "realesrgan_enabled_models": OptionInfo(["R-ESRGAN 4x+", "R-ESRGAN 4x+ Anime6B"], "Real-ESRGAN available models", gr.CheckboxGroup, lambda: {"choices": shared_items.realesrgan_models_names()}), - "ESRGAN_tile": OptionInfo(192, "Tile size for ESRGAN upscalers (0 = no tiling)", gr.Slider, {"minimum": 0, "maximum": 512, "step": 16}), + "ESRGAN_tile": OptionInfo(192, "Tile size for ESRGAN upscalers", gr.Slider, {"minimum": 0, "maximum": 512, "step": 16}), "ESRGAN_tile_overlap": OptionInfo(8, "Tile overlap in pixels for ESRGAN upscalers", gr.Slider, {"minimum": 0, "maximum": 48, "step": 1}), - "SCUNET_tile": OptionInfo(256, "Tile size for SCUNET upscalers (0 = no tiling)", gr.Slider, {"minimum": 0, "maximum": 512, "step": 16}), - "SCUNET_tile_overlap": OptionInfo(8, "Tile overlap, in pixels for SCUNET upscalers (low values = visible seam)", gr.Slider, {"minimum": 0, "maximum": 64, "step": 1}), - "use_old_hires_fix_width_height": OptionInfo(False, "Hires fix uses width & height to set final resolution rather than first pass"), + "SCUNET_tile": OptionInfo(256, "Tile size for SCUNET upscalers", gr.Slider, {"minimum": 0, "maximum": 512, "step": 16}), + "SCUNET_tile_overlap": OptionInfo(8, "Tile overlap, in pixels for SCUNET upscalers", gr.Slider, {"minimum": 0, "maximum": 64, "step": 1}), + "use_old_hires_fix_width_height": OptionInfo(False, "Hires fix uses width & height to set final resolution"), "dont_fix_second_order_samplers_schedule": OptionInfo(False, "Do not fix prompt schedule for second order samplers"), })) options_templates.update(options_section(('extra_networks', "Extra Networks"), { - "lyco_patch_lora": OptionInfo(False, "Use LyCoris handler for all Lora types", gr.Checkbox, { "visible": True }), + "lyco_patch_lora": OptionInfo(False, "Use LyCoris handler for all Lora types", gr.Checkbox), "lora_disable": OptionInfo(False, "Disable built-in Lora handler", gr.Checkbox, { "visible": True }, onchange=lora_disable), - "lora_functional": OptionInfo(False, "Use Kohya method for handling multiple Loras", gr.Checkbox, { "visible": True }), + "lora_functional": OptionInfo(False, "Use Kohya method for handling multiple Loras", gr.Checkbox), "extra_networks_default_view": OptionInfo("cards", "Default view for Extra Networks", gr.Dropdown, {"choices": ["cards", "thumbs"]}), "extra_networks_default_multiplier": OptionInfo(1.0, "Multiplier for extra networks", gr.Slider, {"minimum": 0.0, "maximum": 1.0, "step": 0.01}), "extra_networks_card_width": OptionInfo(0, "Card width for Extra Networks (px)"), "extra_networks_card_height": OptionInfo(0, "Card height for Extra Networks (px)"), - "extra_networks_add_text_separator": OptionInfo(" ", "Extra text to add before <...> when adding extra network to prompt"), + "extra_networks_add_text_separator": OptionInfo(" ", "Extra text to add before <...> when adding extra network to prompt", gr.Text, { "visible": False }), "sd_hypernetwork": OptionInfo("None", "Add hypernetwork to prompt", gr.Dropdown, lambda: {"choices": ["None"] + list(hypernetworks.keys())}, refresh=reload_hypernetworks), })) @@ -834,7 +834,7 @@ def get_version(): githash, updated = ver.split(' ') res = subprocess.run('git remote get-url origin', stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True, check=True) origin = res.stdout.decode(encoding = 'utf8', errors='ignore') if len(res.stdout) > 0 else '' - res = subprocess.run('git branch --show-current', stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True, check=True) + res = subprocess.run('git rev-parse --abbrev-ref HEAD', stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True, check=True) branch = res.stdout.decode(encoding = 'utf8', errors='ignore') if len(res.stdout) > 0 else '' version = { 'app': 'sd.next', diff --git a/scripts/postprocessing_codeformer.py b/scripts/postprocessing_codeformer.py index 6890642f6..9b1644c05 100644 --- a/scripts/postprocessing_codeformer.py +++ b/scripts/postprocessing_codeformer.py @@ -12,14 +12,14 @@ class ScriptPostprocessingCodeFormer(scripts_postprocessing.ScriptPostprocessing def ui(self): with FormRow(): codeformer_visibility = gr.Slider(minimum=0.0, maximum=1.0, step=0.01, label="CodeFormer visibility", value=0.0, elem_id="extras_codeformer_visibility") - codeformer_weight = gr.Slider(minimum=0.0, maximum=1.0, step=0.01, label="CodeFormer weight (0 = max, 1 = min)", value=0.2, elem_id="extras_codeformer_weight") + codeformer_weight = gr.Slider(minimum=0.0, maximum=1.0, step=0.01, label="CodeFormer weight", value=0.2, elem_id="extras_codeformer_weight") return { "codeformer_visibility": codeformer_visibility, "codeformer_weight": codeformer_weight, } - def process(self, pp: scripts_postprocessing.PostprocessedImage, codeformer_visibility, codeformer_weight): + def process(self, pp: scripts_postprocessing.PostprocessedImage, codeformer_visibility, codeformer_weight): # pylint: disable=arguments-differ if codeformer_visibility == 0: return diff --git a/wiki b/wiki index 34913c882..03b91bdef 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit 34913c88242c82302424651f6e44414276886017 +Subproject commit 03b91bdeff8261894b1e47ff5f4ab7f4e0d52cbe