Adityadn commited on
Commit
0706462
1 Parent(s): b6f6829

Update webui.py

Browse files
Files changed (1) hide show
  1. webui.py +270 -269
webui.py CHANGED
@@ -253,284 +253,285 @@ with shared.gradio_root:
253
  ip_tab.select(lambda: 'ip', outputs=current_tab, queue=False, _js=down_js, show_progress=False)
254
  desc_tab.select(lambda: 'desc', outputs=current_tab, queue=False, _js=down_js, show_progress=False)
255
 
256
- with gr.Column(scale=1, visible=False, elem_id="advancedSettingDC") as advanced_column:
257
- with gr.Tab(label='Setting'):
258
- performance_selection = gr.Radio(label='Performance',
259
- choices=modules.flags.performance_selections,
260
- value=modules.config.default_performance)
261
- aspect_ratios_selection = gr.Radio(label='Aspect Ratios', choices=modules.config.available_aspect_ratios,
262
- value=modules.config.default_aspect_ratio, info='width × height',
263
- elem_classes='aspect_ratios')
264
- image_number = gr.Slider(label='Image Number', minimum=1, maximum=modules.config.default_max_image_number, step=1, value=1)
265
-
266
- output_format = gr.Radio(label='Output Format',
267
- choices=modules.flags.output_formats,
268
- value=modules.config.default_output_format)
269
-
270
- negative_prompt = gr.Textbox(label='Negative Prompt', show_label=True, placeholder="Type prompt here.",
271
- info='Describing what you do not want to see.', lines=2,
272
- elem_id='negative_prompt',
273
- value=modules.config.default_prompt_negative,
274
- show_copy_button=True)
275
- seed_random = gr.Checkbox(label='Random', value=True)
276
- image_seed = gr.Textbox(label='Seed', value=0, max_lines=1, visible=False, show_copy_button=True) # workaround for https://github.com/gradio-app/gradio/issues/5354
277
-
278
- def random_checked(r):
279
- return gr.update(visible=not r)
280
-
281
- def refresh_seed(r, seed_string):
282
- if r:
283
- return random.randint(constants.MIN_SEED, constants.MAX_SEED)
284
- else:
285
- try:
286
- seed_value = int(seed_string)
287
- if constants.MIN_SEED <= seed_value <= constants.MAX_SEED:
288
- return seed_value
289
- except ValueError:
290
- pass
291
- return random.randint(constants.MIN_SEED, constants.MAX_SEED)
292
-
293
- seed_random.change(random_checked, inputs=[seed_random], outputs=[image_seed],
294
- queue=False, show_progress=False)
295
-
296
- def update_history_link():
297
- if args_manager.args.disable_image_log:
298
- return gr.update(value='')
299
-
300
- return gr.update(value=f'<a href="file={get_current_html_path(output_format)}" target="_blank">\U0001F4DA History Log</a>')
301
-
302
- history_link = gr.HTML()
303
- shared.gradio_root.load(update_history_link, outputs=history_link, queue=False, show_progress=False)
304
-
305
- with gr.Tab(label='Style'):
306
- style_sorter.try_load_sorted_styles(
307
- style_names=legal_style_names,
308
- default_selected=modules.config.default_styles)
309
-
310
- style_search_bar = gr.Textbox(show_label=False, container=False,
311
- placeholder="\U0001F50E Type here to search styles ...",
312
- value="",
313
- label='Search Styles',
314
- show_copy_button=True)
315
- style_selections = gr.CheckboxGroup(show_label=False, container=False,
316
- choices=copy.deepcopy(style_sorter.all_styles),
317
- value=copy.deepcopy(modules.config.default_styles),
318
- label='Selected Styles',
319
- elem_classes=['style_selections'])
320
- gradio_receiver_style_selections = gr.Textbox(elem_id='gradio_receiver_style_selections', visible=False, show_copy_button=True)
321
-
322
- shared.gradio_root.load(lambda: gr.update(choices=copy.deepcopy(style_sorter.all_styles)),
323
- outputs=style_selections)
324
-
325
- style_search_bar.change(style_sorter.search_styles,
326
- inputs=[style_selections, style_search_bar],
327
- outputs=style_selections,
328
- queue=False,
329
- show_progress=False).then(
330
- lambda: None, _js='()=>{refresh_style_localization();}')
331
-
332
- gradio_receiver_style_selections.input(style_sorter.sort_styles,
333
- inputs=style_selections,
334
- outputs=style_selections,
335
- queue=False,
336
- show_progress=False).then(
337
- lambda: None, _js='()=>{refresh_style_localization();}')
338
-
339
- with gr.Tab(label='Model'):
340
- with gr.Group():
341
- with gr.Row():
342
- base_model = gr.Dropdown(label='Base Model (SDXL only)', choices=modules.config.model_filenames, value=modules.config.default_base_model_name, show_label=True)
343
- refiner_model = gr.Dropdown(label='Refiner (SDXL or SD 1.5)', choices=['None'] + modules.config.model_filenames, value=modules.config.default_refiner_model_name, show_label=True)
344
-
345
- refiner_switch = gr.Slider(label='Refiner Switch At', minimum=0.1, maximum=1.0, step=0.0001,
346
- info='Use 0.4 for SD1.5 realistic models; '
347
- 'or 0.667 for SD1.5 anime models; '
348
- 'or 0.8 for XL-refiners; '
349
- 'or any value for switching two SDXL models.',
350
- value=modules.config.default_refiner_switch,
351
- visible=modules.config.default_refiner_model_name != 'None')
352
 
353
- refiner_model.change(lambda x: gr.update(visible=x != 'None'),
354
- inputs=refiner_model, outputs=refiner_switch, show_progress=False, queue=False)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
355
 
356
- with gr.Group():
357
- lora_ctrls = []
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
358
 
359
- for i, (n, v) in enumerate(modules.config.default_loras):
360
- with gr.Row():
361
- lora_enabled = gr.Checkbox(label='Enable', value=True,
362
- elem_classes=['lora_enable', 'min_check'], scale=1)
363
- lora_model = gr.Dropdown(label=f'LoRA {i + 1}',
364
- choices=['None'] + modules.config.lora_filenames, value=n,
365
- elem_classes='lora_model', scale=5)
366
- lora_weight = gr.Slider(label='Weight', minimum=modules.config.default_loras_min_weight,
367
- maximum=modules.config.default_loras_max_weight, step=0.01, value=v,
368
- elem_classes='lora_weight', scale=5)
369
- lora_ctrls += [lora_enabled, lora_model, lora_weight]
370
-
371
- with gr.Row():
372
- model_refresh = gr.Button(label='Refresh', value='\U0001f504 Refresh All Files', variant='secondary', elem_classes='refresh_button')
373
-
374
- with gr.Column(visible=False):
375
- with gr.Tab(label='Advanced', elem_id="advancedAdvancedSettings"):
376
- guidance_scale = gr.Slider(label='Guidance Scale', minimum=1.0, maximum=30.0, step=0.01,
377
- value=modules.config.default_cfg_scale,
378
- info='Higher value means style is cleaner, vivider, and more artistic.')
379
- sharpness = gr.Slider(label='Image Sharpness', minimum=0.0, maximum=30.0, step=0.001,
380
- value=modules.config.default_sample_sharpness,
381
- info='Higher value means image and texture are sharper.')
382
- dev_mode = gr.Checkbox(label='Developer Debug Mode', value=True, container=True)
383
-
384
- with gr.Column(visible=True) as dev_tools:
385
- with gr.Tab(label='Debug Tools'):
386
- adm_scaler_positive = gr.Slider(label='Positive ADM Guidance Scaler', minimum=0.1, maximum=3.0,
387
- step=0.001, value=1.5, info='The scaler multiplied to positive ADM (use 1.0 to disable). ')
388
- adm_scaler_negative = gr.Slider(label='Negative ADM Guidance Scaler', minimum=0.1, maximum=3.0,
389
- step=0.001, value=0.8, info='The scaler multiplied to negative ADM (use 1.0 to disable). ')
390
- adm_scaler_end = gr.Slider(label='ADM Guidance End At Step', minimum=0.0, maximum=1.0,
391
- step=0.001, value=0.3,
392
- info='When to end the guidance from positive/negative ADM. ')
393
-
394
- refiner_swap_method = gr.Dropdown(label='Refiner swap method', value=flags.refiner_swap_method,
395
- choices=['joint', 'separate', 'vae'])
396
-
397
- adaptive_cfg = gr.Slider(label='CFG Mimicking from TSNR', minimum=1.0, maximum=30.0, step=0.01,
398
- value=modules.config.default_cfg_tsnr,
399
- info='Enabling Image\'s implementation of CFG mimicking for TSNR '
400
- '(effective when real CFG > mimicked CFG).')
401
- sampler_name = gr.Dropdown(label='Sampler', choices=flags.sampler_list,
402
- value=modules.config.default_sampler)
403
- scheduler_name = gr.Dropdown(label='Scheduler', choices=flags.scheduler_list,
404
- value=modules.config.default_scheduler)
405
-
406
- generate_image_grid = gr.Checkbox(label='Generate Image Grid for Each Batch',
407
- info='(Experimental) This may cause performance problems on some computers and certain internet conditions.',
408
- value=False)
409
-
410
- overwrite_step = gr.Slider(label='Forced Overwrite of Sampling Step',
411
- minimum=-1, maximum=200, step=1,
412
- value=modules.config.default_overwrite_step,
413
- info='Set as -1 to disable. For developer debugging.')
414
- overwrite_switch = gr.Slider(label='Forced Overwrite of Refiner Switch Step',
415
  minimum=-1, maximum=200, step=1,
416
- value=modules.config.default_overwrite_switch,
417
  info='Set as -1 to disable. For developer debugging.')
418
- overwrite_width = gr.Slider(label='Forced Overwrite of Generating Width',
419
- minimum=-1, maximum=2048, step=1, value=-1,
420
- info='Set as -1 to disable. For developer debugging. '
421
- 'Results will be worse for non-standard numbers that SDXL is not trained on.')
422
- overwrite_height = gr.Slider(label='Forced Overwrite of Generating Height',
423
- minimum=-1, maximum=2048, step=1, value=-1,
424
- info='Set as -1 to disable. For developer debugging. '
425
- 'Results will be worse for non-standard numbers that SDXL is not trained on.')
426
- overwrite_vary_strength = gr.Slider(label='Forced Overwrite of Denoising Strength of "Vary"',
427
- minimum=-1, maximum=1.0, step=0.001, value=-1,
428
- info='Set as negative number to disable. For developer debugging.')
429
- overwrite_upscale_strength = gr.Slider(label='Forced Overwrite of Denoising Strength of "Upscale"',
430
- minimum=-1, maximum=1.0, step=0.001, value=-1,
431
- info='Set as negative number to disable. For developer debugging.')
432
- disable_preview = gr.Checkbox(label='Disable Preview', value=False,
433
- info='Disable preview during generation.')
434
- disable_intermediate_results = gr.Checkbox(label='Disable Intermediate Results',
435
- value=modules.config.default_performance == 'Extreme Speed',
436
- interactive=modules.config.default_performance != 'Extreme Speed',
437
- info='Disable intermediate results during generation, only show final gallery.')
438
- disable_seed_increment = gr.Checkbox(label='Disable seed increment',
439
- info='Disable automatic seed increment when image number is > 1.',
440
- value=False)
441
-
442
- if not args_manager.args.disable_metadata:
443
- save_metadata_to_images = gr.Checkbox(label='Save Metadata to Images', value=True,
444
- info='Adds parameters to generated images allowing manual regeneration.')
445
- metadata_scheme = gr.Radio(label='Metadata Scheme', choices=flags.metadata_scheme, value=modules.config.default_metadata_scheme,
446
- info='Image Prompt parameters are not included. Use png and a1111 for compatibility with Civitai.',
447
- visible=True)
448
-
449
- save_metadata_to_images.change(lambda x: gr.update(visible=x), inputs=[save_metadata_to_images], outputs=[metadata_scheme],
450
- queue=False, show_progress=False)
451
-
452
- with gr.Tab(label='Control'):
453
- debugging_cn_preprocessor = gr.Checkbox(label='Debug Preprocessors', value=True,
454
- info='See the results from preprocessors.')
455
- skipping_cn_preprocessor = gr.Checkbox(label='Skip Preprocessors', value=True,
456
- info='Do not preprocess images. (Inputs are already canny/depth/cropped-face/etc.)')
457
-
458
- mixing_image_prompt_and_vary_upscale = gr.Checkbox(label='Mixing Image Prompt and Vary/Upscale',
 
 
 
 
 
 
459
  value=True)
460
- mixing_image_prompt_and_inpaint = gr.Checkbox(label='Mixing Image Prompt and Inpaint',
461
- value=True)
462
-
463
- controlnet_softness = gr.Slider(label='Softness of ControlNet', minimum=0.0, maximum=1.0,
464
- step=0.001, value=0.25,
465
- info='Similar to the Control Mode in A1111 (use 0.0 to disable). ')
466
-
467
- with gr.Tab(label='Canny'):
468
- canny_low_threshold = gr.Slider(label='Canny Low Threshold', minimum=1, maximum=255,
469
- step=1, value=64)
470
- canny_high_threshold = gr.Slider(label='Canny High Threshold', minimum=1, maximum=255,
471
- step=1, value=128)
472
-
473
- with gr.Tab(label='Inpaint'):
474
- debugging_inpaint_preprocessor = gr.Checkbox(label='Debug Inpaint Preprocessing', value=False)
475
- inpaint_disable_initial_latent = gr.Checkbox(label='Disable initial latent in inpaint', value=False)
476
- inpaint_engine = gr.Dropdown(label='Inpaint Engine',
477
- value=modules.config.default_inpaint_engine_version,
478
- choices=flags.inpaint_engine_versions,
479
- info='Version of inpaint model')
480
- inpaint_strength = gr.Slider(label='Inpaint Denoising Strength',
481
- minimum=0.0, maximum=1.0, step=0.001, value=1.0,
482
- info='Same as the denoising strength in A1111 inpaint. '
483
- 'Only used in inpaint, not used in outpaint. '
484
- '(Outpaint always use 1.0)')
485
- inpaint_respective_field = gr.Slider(label='Inpaint Respective Field',
486
- minimum=0.0, maximum=1.0, step=0.001, value=0.618,
487
- info='The area to inpaint. '
488
- 'Value 0 is same as "Only Masked" in A1111. '
489
- 'Value 1 is same as "Whole Image" in A1111. '
490
- 'Only used in inpaint, not used in outpaint. '
491
- '(Outpaint always use 1.0)')
492
- inpaint_erode_or_dilate = gr.Slider(label='Mask Erode or Dilate',
493
- minimum=-64, maximum=64, step=1, value=0,
494
- info='Positive value will make white area in the mask larger, '
495
- 'negative value will make white area smaller.'
496
- '(default is 0, always process before any mask invert)')
497
- # inpaint_mask_upload_checkbox = gr.Checkbox(label='Enable Mask Upload', value=False)
498
- # invert_mask_checkbox = gr.Checkbox(label='Invert Mask', value=False)
499
-
500
- inpaint_ctrls = [debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine,
501
- inpaint_strength, inpaint_respective_field,
502
- inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate]
503
-
504
- inpaint_mask_upload_checkbox.change(lambda x: gr.update(visible=x),
505
- inputs=inpaint_mask_upload_checkbox,
506
- outputs=inpaint_mask_image, queue=False, show_progress=False)
507
-
508
- with gr.Tab(label='FreeU'):
509
- freeu_enabled = gr.Checkbox(label='Enabled', value=False)
510
- freeu_b1 = gr.Slider(label='B1', minimum=0, maximum=2, step=0.01, value=1.01)
511
- freeu_b2 = gr.Slider(label='B2', minimum=0, maximum=2, step=0.01, value=1.02)
512
- freeu_s1 = gr.Slider(label='S1', minimum=0, maximum=4, step=0.01, value=0.99)
513
- freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95)
514
- freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2]
515
-
516
- def dev_mode_checked(r):
517
- return gr.update(visible=r)
518
-
519
-
520
- dev_mode.change(dev_mode_checked, inputs=[dev_mode], outputs=[dev_tools],
521
- queue=False, show_progress=False)
522
 
523
- def model_refresh_clicked():
524
- modules.config.update_all_model_names()
525
- results = [gr.update(choices=modules.config.model_filenames)]
526
- results += [gr.update(choices=['None'] + modules.config.model_filenames)]
527
- for i in range(modules.config.default_max_lora_number):
528
- results += [gr.update(interactive=True), gr.update(choices=['None'] + modules.config.lora_filenames), gr.update()]
529
- return results
530
-
531
- model_refresh.click(model_refresh_clicked, [], [base_model, refiner_model] + lora_ctrls,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
532
  queue=False, show_progress=False)
533
 
 
 
 
 
 
 
 
 
 
 
 
534
  performance_selection.change(lambda x: [gr.update(interactive=x != 'Extreme Speed')] * 11 +
535
  [gr.update(visible=x != 'Extreme Speed')] * 1 +
536
  [gr.update(interactive=x != 'Extreme Speed', value=x == 'Extreme Speed', )] * 1,
 
253
  ip_tab.select(lambda: 'ip', outputs=current_tab, queue=False, _js=down_js, show_progress=False)
254
  desc_tab.select(lambda: 'desc', outputs=current_tab, queue=False, _js=down_js, show_progress=False)
255
 
256
+ with gr.Column(scale=1, visible=False) as advanced_column:
257
+ with gr.Tab(elem_id="advancedSettingDC"):
258
+ with gr.Tab(label='Setting'):
259
+ performance_selection = gr.Radio(label='Performance',
260
+ choices=modules.flags.performance_selections,
261
+ value=modules.config.default_performance)
262
+ aspect_ratios_selection = gr.Radio(label='Aspect Ratios', choices=modules.config.available_aspect_ratios,
263
+ value=modules.config.default_aspect_ratio, info='width × height',
264
+ elem_classes='aspect_ratios')
265
+ image_number = gr.Slider(label='Image Number', minimum=1, maximum=modules.config.default_max_image_number, step=1, value=1)
266
+
267
+ output_format = gr.Radio(label='Output Format',
268
+ choices=modules.flags.output_formats,
269
+ value=modules.config.default_output_format)
270
+
271
+ negative_prompt = gr.Textbox(label='Negative Prompt', show_label=True, placeholder="Type prompt here.",
272
+ info='Describing what you do not want to see.', lines=2,
273
+ elem_id='negative_prompt',
274
+ value=modules.config.default_prompt_negative,
275
+ show_copy_button=True)
276
+ seed_random = gr.Checkbox(label='Random', value=True)
277
+ image_seed = gr.Textbox(label='Seed', value=0, max_lines=1, visible=False, show_copy_button=True) # workaround for https://github.com/gradio-app/gradio/issues/5354
278
+
279
+ def random_checked(r):
280
+ return gr.update(visible=not r)
281
+
282
+ def refresh_seed(r, seed_string):
283
+ if r:
284
+ return random.randint(constants.MIN_SEED, constants.MAX_SEED)
285
+ else:
286
+ try:
287
+ seed_value = int(seed_string)
288
+ if constants.MIN_SEED <= seed_value <= constants.MAX_SEED:
289
+ return seed_value
290
+ except ValueError:
291
+ pass
292
+ return random.randint(constants.MIN_SEED, constants.MAX_SEED)
293
+
294
+ seed_random.change(random_checked, inputs=[seed_random], outputs=[image_seed],
295
+ queue=False, show_progress=False)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
296
 
297
+ def update_history_link():
298
+ if args_manager.args.disable_image_log:
299
+ return gr.update(value='')
300
+
301
+ return gr.update(value=f'<a href="file={get_current_html_path(output_format)}" target="_blank">\U0001F4DA History Log</a>')
302
+
303
+ history_link = gr.HTML()
304
+ shared.gradio_root.load(update_history_link, outputs=history_link, queue=False, show_progress=False)
305
+
306
+ with gr.Tab(label='Style'):
307
+ style_sorter.try_load_sorted_styles(
308
+ style_names=legal_style_names,
309
+ default_selected=modules.config.default_styles)
310
+
311
+ style_search_bar = gr.Textbox(show_label=False, container=False,
312
+ placeholder="\U0001F50E Type here to search styles ...",
313
+ value="",
314
+ label='Search Styles',
315
+ show_copy_button=True)
316
+ style_selections = gr.CheckboxGroup(show_label=False, container=False,
317
+ choices=copy.deepcopy(style_sorter.all_styles),
318
+ value=copy.deepcopy(modules.config.default_styles),
319
+ label='Selected Styles',
320
+ elem_classes=['style_selections'])
321
+ gradio_receiver_style_selections = gr.Textbox(elem_id='gradio_receiver_style_selections', visible=False, show_copy_button=True)
322
+
323
+ shared.gradio_root.load(lambda: gr.update(choices=copy.deepcopy(style_sorter.all_styles)),
324
+ outputs=style_selections)
325
+
326
+ style_search_bar.change(style_sorter.search_styles,
327
+ inputs=[style_selections, style_search_bar],
328
+ outputs=style_selections,
329
+ queue=False,
330
+ show_progress=False).then(
331
+ lambda: None, _js='()=>{refresh_style_localization();}')
332
+
333
+ gradio_receiver_style_selections.input(style_sorter.sort_styles,
334
+ inputs=style_selections,
335
+ outputs=style_selections,
336
+ queue=False,
337
+ show_progress=False).then(
338
+ lambda: None, _js='()=>{refresh_style_localization();}')
339
+
340
+ with gr.Tab(label='Model'):
341
+ with gr.Group():
342
+ with gr.Row():
343
+ base_model = gr.Dropdown(label='Base Model (SDXL only)', choices=modules.config.model_filenames, value=modules.config.default_base_model_name, show_label=True)
344
+ refiner_model = gr.Dropdown(label='Refiner (SDXL or SD 1.5)', choices=['None'] + modules.config.model_filenames, value=modules.config.default_refiner_model_name, show_label=True)
345
+
346
+ refiner_switch = gr.Slider(label='Refiner Switch At', minimum=0.1, maximum=1.0, step=0.0001,
347
+ info='Use 0.4 for SD1.5 realistic models; '
348
+ 'or 0.667 for SD1.5 anime models; '
349
+ 'or 0.8 for XL-refiners; '
350
+ 'or any value for switching two SDXL models.',
351
+ value=modules.config.default_refiner_switch,
352
+ visible=modules.config.default_refiner_model_name != 'None')
353
+
354
+ refiner_model.change(lambda x: gr.update(visible=x != 'None'),
355
+ inputs=refiner_model, outputs=refiner_switch, show_progress=False, queue=False)
356
+
357
+ with gr.Group():
358
+ lora_ctrls = []
359
+
360
+ for i, (n, v) in enumerate(modules.config.default_loras):
361
+ with gr.Row():
362
+ lora_enabled = gr.Checkbox(label='Enable', value=True,
363
+ elem_classes=['lora_enable', 'min_check'], scale=1)
364
+ lora_model = gr.Dropdown(label=f'LoRA {i + 1}',
365
+ choices=['None'] + modules.config.lora_filenames, value=n,
366
+ elem_classes='lora_model', scale=5)
367
+ lora_weight = gr.Slider(label='Weight', minimum=modules.config.default_loras_min_weight,
368
+ maximum=modules.config.default_loras_max_weight, step=0.01, value=v,
369
+ elem_classes='lora_weight', scale=5)
370
+ lora_ctrls += [lora_enabled, lora_model, lora_weight]
371
 
372
+ with gr.Row():
373
+ model_refresh = gr.Button(label='Refresh', value='\U0001f504 Refresh All Files', variant='secondary', elem_classes='refresh_button')
374
+
375
+ with gr.Column(visible=False):
376
+ with gr.Tab(label='Advanced', elem_id="advancedAdvancedSettings"):
377
+ guidance_scale = gr.Slider(label='Guidance Scale', minimum=1.0, maximum=30.0, step=0.01,
378
+ value=modules.config.default_cfg_scale,
379
+ info='Higher value means style is cleaner, vivider, and more artistic.')
380
+ sharpness = gr.Slider(label='Image Sharpness', minimum=0.0, maximum=30.0, step=0.001,
381
+ value=modules.config.default_sample_sharpness,
382
+ info='Higher value means image and texture are sharper.')
383
+ dev_mode = gr.Checkbox(label='Developer Debug Mode', value=True, container=True)
384
+
385
+ with gr.Column(visible=True) as dev_tools:
386
+ with gr.Tab(label='Debug Tools'):
387
+ adm_scaler_positive = gr.Slider(label='Positive ADM Guidance Scaler', minimum=0.1, maximum=3.0,
388
+ step=0.001, value=1.5, info='The scaler multiplied to positive ADM (use 1.0 to disable). ')
389
+ adm_scaler_negative = gr.Slider(label='Negative ADM Guidance Scaler', minimum=0.1, maximum=3.0,
390
+ step=0.001, value=0.8, info='The scaler multiplied to negative ADM (use 1.0 to disable). ')
391
+ adm_scaler_end = gr.Slider(label='ADM Guidance End At Step', minimum=0.0, maximum=1.0,
392
+ step=0.001, value=0.3,
393
+ info='When to end the guidance from positive/negative ADM. ')
394
+
395
+ refiner_swap_method = gr.Dropdown(label='Refiner swap method', value=flags.refiner_swap_method,
396
+ choices=['joint', 'separate', 'vae'])
397
+
398
+ adaptive_cfg = gr.Slider(label='CFG Mimicking from TSNR', minimum=1.0, maximum=30.0, step=0.01,
399
+ value=modules.config.default_cfg_tsnr,
400
+ info='Enabling Image\'s implementation of CFG mimicking for TSNR '
401
+ '(effective when real CFG > mimicked CFG).')
402
+ sampler_name = gr.Dropdown(label='Sampler', choices=flags.sampler_list,
403
+ value=modules.config.default_sampler)
404
+ scheduler_name = gr.Dropdown(label='Scheduler', choices=flags.scheduler_list,
405
+ value=modules.config.default_scheduler)
406
+
407
+ generate_image_grid = gr.Checkbox(label='Generate Image Grid for Each Batch',
408
+ info='(Experimental) This may cause performance problems on some computers and certain internet conditions.',
409
+ value=False)
410
 
411
+ overwrite_step = gr.Slider(label='Forced Overwrite of Sampling Step',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
412
  minimum=-1, maximum=200, step=1,
413
+ value=modules.config.default_overwrite_step,
414
  info='Set as -1 to disable. For developer debugging.')
415
+ overwrite_switch = gr.Slider(label='Forced Overwrite of Refiner Switch Step',
416
+ minimum=-1, maximum=200, step=1,
417
+ value=modules.config.default_overwrite_switch,
418
+ info='Set as -1 to disable. For developer debugging.')
419
+ overwrite_width = gr.Slider(label='Forced Overwrite of Generating Width',
420
+ minimum=-1, maximum=2048, step=1, value=-1,
421
+ info='Set as -1 to disable. For developer debugging. '
422
+ 'Results will be worse for non-standard numbers that SDXL is not trained on.')
423
+ overwrite_height = gr.Slider(label='Forced Overwrite of Generating Height',
424
+ minimum=-1, maximum=2048, step=1, value=-1,
425
+ info='Set as -1 to disable. For developer debugging. '
426
+ 'Results will be worse for non-standard numbers that SDXL is not trained on.')
427
+ overwrite_vary_strength = gr.Slider(label='Forced Overwrite of Denoising Strength of "Vary"',
428
+ minimum=-1, maximum=1.0, step=0.001, value=-1,
429
+ info='Set as negative number to disable. For developer debugging.')
430
+ overwrite_upscale_strength = gr.Slider(label='Forced Overwrite of Denoising Strength of "Upscale"',
431
+ minimum=-1, maximum=1.0, step=0.001, value=-1,
432
+ info='Set as negative number to disable. For developer debugging.')
433
+ disable_preview = gr.Checkbox(label='Disable Preview', value=False,
434
+ info='Disable preview during generation.')
435
+ disable_intermediate_results = gr.Checkbox(label='Disable Intermediate Results',
436
+ value=modules.config.default_performance == 'Extreme Speed',
437
+ interactive=modules.config.default_performance != 'Extreme Speed',
438
+ info='Disable intermediate results during generation, only show final gallery.')
439
+ disable_seed_increment = gr.Checkbox(label='Disable seed increment',
440
+ info='Disable automatic seed increment when image number is > 1.',
441
+ value=False)
442
+
443
+ if not args_manager.args.disable_metadata:
444
+ save_metadata_to_images = gr.Checkbox(label='Save Metadata to Images', value=True,
445
+ info='Adds parameters to generated images allowing manual regeneration.')
446
+ metadata_scheme = gr.Radio(label='Metadata Scheme', choices=flags.metadata_scheme, value=modules.config.default_metadata_scheme,
447
+ info='Image Prompt parameters are not included. Use png and a1111 for compatibility with Civitai.',
448
+ visible=True)
449
+
450
+ save_metadata_to_images.change(lambda x: gr.update(visible=x), inputs=[save_metadata_to_images], outputs=[metadata_scheme],
451
+ queue=False, show_progress=False)
452
+
453
+ with gr.Tab(label='Control'):
454
+ debugging_cn_preprocessor = gr.Checkbox(label='Debug Preprocessors', value=True,
455
+ info='See the results from preprocessors.')
456
+ skipping_cn_preprocessor = gr.Checkbox(label='Skip Preprocessors', value=True,
457
+ info='Do not preprocess images. (Inputs are already canny/depth/cropped-face/etc.)')
458
+
459
+ mixing_image_prompt_and_vary_upscale = gr.Checkbox(label='Mixing Image Prompt and Vary/Upscale',
460
+ value=True)
461
+ mixing_image_prompt_and_inpaint = gr.Checkbox(label='Mixing Image Prompt and Inpaint',
462
  value=True)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
463
 
464
+ controlnet_softness = gr.Slider(label='Softness of ControlNet', minimum=0.0, maximum=1.0,
465
+ step=0.001, value=0.25,
466
+ info='Similar to the Control Mode in A1111 (use 0.0 to disable). ')
467
+
468
+ with gr.Tab(label='Canny'):
469
+ canny_low_threshold = gr.Slider(label='Canny Low Threshold', minimum=1, maximum=255,
470
+ step=1, value=64)
471
+ canny_high_threshold = gr.Slider(label='Canny High Threshold', minimum=1, maximum=255,
472
+ step=1, value=128)
473
+
474
+ with gr.Tab(label='Inpaint'):
475
+ debugging_inpaint_preprocessor = gr.Checkbox(label='Debug Inpaint Preprocessing', value=False)
476
+ inpaint_disable_initial_latent = gr.Checkbox(label='Disable initial latent in inpaint', value=False)
477
+ inpaint_engine = gr.Dropdown(label='Inpaint Engine',
478
+ value=modules.config.default_inpaint_engine_version,
479
+ choices=flags.inpaint_engine_versions,
480
+ info='Version of inpaint model')
481
+ inpaint_strength = gr.Slider(label='Inpaint Denoising Strength',
482
+ minimum=0.0, maximum=1.0, step=0.001, value=1.0,
483
+ info='Same as the denoising strength in A1111 inpaint. '
484
+ 'Only used in inpaint, not used in outpaint. '
485
+ '(Outpaint always use 1.0)')
486
+ inpaint_respective_field = gr.Slider(label='Inpaint Respective Field',
487
+ minimum=0.0, maximum=1.0, step=0.001, value=0.618,
488
+ info='The area to inpaint. '
489
+ 'Value 0 is same as "Only Masked" in A1111. '
490
+ 'Value 1 is same as "Whole Image" in A1111. '
491
+ 'Only used in inpaint, not used in outpaint. '
492
+ '(Outpaint always use 1.0)')
493
+ inpaint_erode_or_dilate = gr.Slider(label='Mask Erode or Dilate',
494
+ minimum=-64, maximum=64, step=1, value=0,
495
+ info='Positive value will make white area in the mask larger, '
496
+ 'negative value will make white area smaller.'
497
+ '(default is 0, always process before any mask invert)')
498
+ # inpaint_mask_upload_checkbox = gr.Checkbox(label='Enable Mask Upload', value=False)
499
+ # invert_mask_checkbox = gr.Checkbox(label='Invert Mask', value=False)
500
+
501
+ inpaint_ctrls = [debugging_inpaint_preprocessor, inpaint_disable_initial_latent, inpaint_engine,
502
+ inpaint_strength, inpaint_respective_field,
503
+ inpaint_mask_upload_checkbox, invert_mask_checkbox, inpaint_erode_or_dilate]
504
+
505
+ inpaint_mask_upload_checkbox.change(lambda x: gr.update(visible=x),
506
+ inputs=inpaint_mask_upload_checkbox,
507
+ outputs=inpaint_mask_image, queue=False, show_progress=False)
508
+
509
+ with gr.Tab(label='FreeU'):
510
+ freeu_enabled = gr.Checkbox(label='Enabled', value=False)
511
+ freeu_b1 = gr.Slider(label='B1', minimum=0, maximum=2, step=0.01, value=1.01)
512
+ freeu_b2 = gr.Slider(label='B2', minimum=0, maximum=2, step=0.01, value=1.02)
513
+ freeu_s1 = gr.Slider(label='S1', minimum=0, maximum=4, step=0.01, value=0.99)
514
+ freeu_s2 = gr.Slider(label='S2', minimum=0, maximum=4, step=0.01, value=0.95)
515
+ freeu_ctrls = [freeu_enabled, freeu_b1, freeu_b2, freeu_s1, freeu_s2]
516
+
517
+ def dev_mode_checked(r):
518
+ return gr.update(visible=r)
519
+
520
+
521
+ dev_mode.change(dev_mode_checked, inputs=[dev_mode], outputs=[dev_tools],
522
  queue=False, show_progress=False)
523
 
524
+ def model_refresh_clicked():
525
+ modules.config.update_all_model_names()
526
+ results = [gr.update(choices=modules.config.model_filenames)]
527
+ results += [gr.update(choices=['None'] + modules.config.model_filenames)]
528
+ for i in range(modules.config.default_max_lora_number):
529
+ results += [gr.update(interactive=True), gr.update(choices=['None'] + modules.config.lora_filenames), gr.update()]
530
+ return results
531
+
532
+ model_refresh.click(model_refresh_clicked, [], [base_model, refiner_model] + lora_ctrls,
533
+ queue=False, show_progress=False)
534
+
535
  performance_selection.change(lambda x: [gr.update(interactive=x != 'Extreme Speed')] * 11 +
536
  [gr.update(visible=x != 'Extreme Speed')] * 1 +
537
  [gr.update(interactive=x != 'Extreme Speed', value=x == 'Extreme Speed', )] * 1,