Spaces:
Build error
Build error
import tempfile | |
import os | |
import gradio as gr | |
from easygui import msgbox | |
from library.custom_logging import setup_logging | |
# Set up logging | |
log = setup_logging() | |
folder_symbol = '\U0001f4c2' # π | |
refresh_symbol = '\U0001f504' # π | |
save_style_symbol = '\U0001f4be' # πΎ | |
document_symbol = '\U0001F4C4' # π | |
### | |
### Gradio common sampler GUI section | |
### | |
def sample_gradio_config(): | |
with gr.Accordion('Sample images config', open=False): | |
with gr.Row(): | |
sample_every_n_steps = gr.Number( | |
label='Sample every n steps', | |
value=0, | |
precision=0, | |
interactive=True, | |
) | |
sample_every_n_epochs = gr.Number( | |
label='Sample every n epochs', | |
value=0, | |
precision=0, | |
interactive=True, | |
) | |
sample_sampler = gr.Dropdown( | |
label='Sample sampler', | |
choices=[ | |
'ddim', | |
'pndm', | |
'lms', | |
'euler', | |
'euler_a', | |
'heun', | |
'dpm_2', | |
'dpm_2_a', | |
'dpmsolver', | |
'dpmsolver++', | |
'dpmsingle', | |
'k_lms', | |
'k_euler', | |
'k_euler_a', | |
'k_dpm_2', | |
'k_dpm_2_a', | |
], | |
value='euler_a', | |
interactive=True, | |
) | |
with gr.Row(): | |
sample_prompts = gr.Textbox( | |
lines=5, | |
label='Sample prompts', | |
interactive=True, | |
placeholder='masterpiece, best quality, 1girl, in white shirts, upper body, looking at viewer, simple background --n low quality, worst quality, bad anatomy,bad composition, poor, low effort --w 768 --h 768 --d 1 --l 7.5 --s 28', | |
info='Enter one sample prompt per line to generate multiple samples per cycle. Optional specifiers include: --w (width), --h (height), --d (seed), --l (cfg scale), --s (sampler steps) and --n (negative prompt). To modify sample prompts during training, edit the prompt.txt file in the samples directory.' | |
) | |
return ( | |
sample_every_n_steps, | |
sample_every_n_epochs, | |
sample_sampler, | |
sample_prompts, | |
) | |
def run_cmd_sample( | |
sample_every_n_steps, | |
sample_every_n_epochs, | |
sample_sampler, | |
sample_prompts, | |
output_dir, | |
): | |
output_dir = os.path.join(output_dir, 'sample') | |
if not os.path.exists(output_dir): | |
os.makedirs(output_dir) | |
run_cmd = '' | |
if sample_every_n_epochs == 0 and sample_every_n_steps == 0: | |
return run_cmd | |
# Create the prompt file and get its path | |
sample_prompts_path = os.path.join(output_dir, 'prompt.txt') | |
with open(sample_prompts_path, 'w') as f: | |
f.write(sample_prompts) | |
run_cmd += f' --sample_sampler={sample_sampler}' | |
run_cmd += f' --sample_prompts="{sample_prompts_path}"' | |
if not sample_every_n_epochs == 0: | |
run_cmd += f' --sample_every_n_epochs="{sample_every_n_epochs}"' | |
if not sample_every_n_steps == 0: | |
run_cmd += f' --sample_every_n_steps="{sample_every_n_steps}"' | |
return run_cmd | |
class SampleImages: | |
def __init__( | |
self, | |
): | |
with gr.Accordion('Sample images config', open=False): | |
with gr.Row(): | |
self.sample_every_n_steps = gr.Number( | |
label='Sample every n steps', | |
value=0, | |
precision=0, | |
interactive=True, | |
) | |
self.sample_every_n_epochs = gr.Number( | |
label='Sample every n epochs', | |
value=0, | |
precision=0, | |
interactive=True, | |
) | |
self.sample_sampler = gr.Dropdown( | |
label='Sample sampler', | |
choices=[ | |
'ddim', | |
'pndm', | |
'lms', | |
'euler', | |
'euler_a', | |
'heun', | |
'dpm_2', | |
'dpm_2_a', | |
'dpmsolver', | |
'dpmsolver++', | |
'dpmsingle', | |
'k_lms', | |
'k_euler', | |
'k_euler_a', | |
'k_dpm_2', | |
'k_dpm_2_a', | |
], | |
value='euler_a', | |
interactive=True, | |
) | |
with gr.Row(): | |
self.sample_prompts = gr.Textbox( | |
lines=5, | |
label='Sample prompts', | |
interactive=True, | |
placeholder='masterpiece, best quality, 1girl, in white shirts, upper body, looking at viewer, simple background --n low quality, worst quality, bad anatomy,bad composition, poor, low effort --w 768 --h 768 --d 1 --l 7.5 --s 28', | |
info='Enter one sample prompt per line to generate multiple samples per cycle. Optional specifiers include: --w (width), --h (height), --d (seed), --l (cfg scale), --s (sampler steps) and --n (negative prompt). To modify sample prompts during training, edit the prompt.txt file in the samples directory.' | |
) | |