#quick dictionary to class object conversion. Its necessary due apply_filename_pattern requiring it
classMyObject:
def__init__(self,d=None):
ifdisnotNone:
forkey,valueind.items():
setattr(self,key,value)
data=json.loads(js_data)
p=MyObject(data)
path=opts.outdir_save
save_to_dirs=opts.use_save_to_dirs_for_ui
extension:str=opts.samples_format
start_index=0
ifindex>-1andopts.save_selected_onlyand(index>=data["index_of_first_image"]):# ensures we are looking at a specific non-grid picture, and we have save_selected_only
returnf"resize: from <span class='resolution'>{p.width}x{p.height}</span> to <span class='resolution'>{p.hr_resize_x or p.hr_upscale_to_x}x{p.hr_resize_y or p.hr_upscale_to_y}</span>"
init_img=gr.Image(label="Image for img2img",elem_id="img2img_image",show_label=False,source="upload",interactive=True,type="pil",tool=cmd_opts.gradio_img2img_tool,image_mode="RGBA").style(height=480)
init_img_with_mask=gr.Image(label="Image for inpainting with mask",show_label=False,elem_id="img2maskimg",source="upload",interactive=True,type="pil",tool=cmd_opts.gradio_inpaint_tool,image_mode="RGBA").style(height=480)
init_img_inpaint=gr.Image(label="Image for img2img",show_label=False,source="upload",interactive=True,type="pil",visible=False,elem_id="img_inpaint_base")
hidden='<br>Disabled when launched with --hide-ui-dir-config.'ifshared.cmd_opts.hide_ui_dir_configelse''
gr.HTML(f"<p class=\"text-gray-500\">Process images in a directory on the same machine where the server is running.<br>Use an empty output directory to save pictures normally instead of writing to the output directory.{hidden}</p>")
withgr.TabItem('Batch from Directory',elem_id="extras_batch_directory_tab"):
extras_batch_input_dir=gr.Textbox(label="Input directory",**shared.hide_dirs,placeholder="A directory on the same machine where the server is running.",elem_id="extras_batch_input_dir")
extras_batch_output_dir=gr.Textbox(label="Output directory",**shared.hide_dirs,placeholder="Leave blank to save images to the default path.",elem_id="extras_batch_output_dir")
show_extras_results=gr.Checkbox(label='Show result images',value=True,elem_id="extras_show_extras_results")
custom_name=gr.Textbox(label="Custom Name (Optional)",elem_id="modelmerger_custom_name")
interp_amount=gr.Slider(minimum=0.0,maximum=1.0,step=0.05,label='Multiplier (M) - set to 0 to get model A',value=0.3,elem_id="modelmerger_interp_amount")
new_hypernetwork_layer_structure=gr.Textbox("1, 2, 1",label="Enter hypernetwork layer structure",placeholder="1st and last digit must be 1. ex:'1, 2, 1'",elem_id="train_new_hypernetwork_layer_structure")
new_hypernetwork_activation_func=gr.Dropdown(value="linear",label="Select activation function of hypernetwork. Recommended : Swish / Linear(none)",choices=modules.hypernetworks.ui.keys,elem_id="train_new_hypernetwork_activation_func")
new_hypernetwork_initialization_option=gr.Dropdown(value="Normal",label="Select Layer weights initialization. Recommended: Kaiming for relu-like, Xavier for sigmoid-like, Normal otherwise",choices=["Normal","KaimingUniform","KaimingNormal","XavierUniform","XavierNormal"],elem_id="train_new_hypernetwork_initialization_option")
new_hypernetwork_dropout_structure=gr.Textbox("0, 0, 0",label="Enter hypernetwork Dropout structure (or empty). Recommended : 0~0.35 incrementing sequence: 0, 0.05, 0.15",placeholder="1st and last digit must be 0 and values should be between 0 and 1. ex:'0, 0.01, 0'")
overwrite_old_hypernetwork=gr.Checkbox(value=False,label="Overwrite Old Hypernetwork",elem_id="train_overwrite_old_hypernetwork")
process_focal_crop_face_weight=gr.Slider(label='Focal point face weight',value=0.9,minimum=0.0,maximum=1.0,step=0.05,elem_id="train_process_focal_crop_face_weight")
process_focal_crop_entropy_weight=gr.Slider(label='Focal point entropy weight',value=0.15,minimum=0.0,maximum=1.0,step=0.05,elem_id="train_process_focal_crop_entropy_weight")
process_focal_crop_edges_weight=gr.Slider(label='Focal point edges weight',value=0.5,minimum=0.0,maximum=1.0,step=0.05,elem_id="train_process_focal_crop_edges_weight")
gr.HTML(value="<p style='margin-bottom: 0.7em'>Train an embedding or Hypernetwork; you must specify a directory with a set of 1:1 ratio images <a href=\"https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Textual-Inversion\" style=\"font-weight:bold;\">[wiki]</a></p>")
dataset_directory=gr.Textbox(label='Dataset directory',placeholder="Path to directory with input images",elem_id="train_dataset_directory")
log_directory=gr.Textbox(label='Log directory',placeholder="Path to directory where to write outputs",value="textual_inversion",elem_id="train_log_directory")
create_image_every=gr.Number(label='Save an image to log directory every N steps, 0 to disable',value=500,precision=0,elem_id="train_create_image_every")
save_embedding_every=gr.Number(label='Save a copy of embedding to log directory every N steps, 0 to disable',value=500,precision=0,elem_id="train_save_embedding_every")
save_image_with_stored_embedding=gr.Checkbox(label='Save images with embedding in PNG chunks',value=True,elem_id="train_save_image_with_stored_embedding")
preview_from_txt2img=gr.Checkbox(label='Read parameters (prompt, etc...) from txt2img tab when making previews',value=False,elem_id="train_preview_from_txt2img")
shuffle_tags=gr.Checkbox(label="Shuffle tags by ',' when creating prompts.",value=False,elem_id="train_shuffle_tags")
tag_drop_out=gr.Slider(minimum=0,maximum=1,step=0.1,label="Drop out tags when creating prompts.",value=0,elem_id="train_tag_drop_out")
assertcomp==dummy_componentoropts.same_type(value,opts.data_labels[key].default),f"Bad value for setting {key}: {value}; expecting {type(opts.data_labels[key].default).__name__}"
reload_script_bodies=gr.Button(value='Reload custom script bodies (No ui updates, No restart)',variant='secondary',elem_id="settings_reload_script_bodies")