diff --git a/cli/models.py b/cli/models.py index 2cebc6314..289defb22 100755 --- a/cli/models.py +++ b/cli/models.py @@ -57,32 +57,41 @@ async def models(params): excluded.append(m) ok = False break - if len(params.input) > 0: # check if model is included in cmd line - found = m if m in params.input else None - if found is None: - found = [i for i in params.input if m.startswith(i)] - if len(found) == 0: - ok = False - break if ok: short = m.split(' [')[0] short = short.replace('.ckpt', '').replace('.safetensors', '') models.append(short) + if len(params.input) > 0: # check if model is included in cmd line + filtered = [] + for m in params.input: + if m in models: + filtered.append(m) + else: + log.error({ 'model not found': m }) + return + models = filtered log.info({ 'models preview' }) log.info({ 'models': len(models), 'excluded': len(excluded) }) log.info({ 'embeddings': embeddings }) + cmdflags = await get('/sdapi/v1/cmd-flags') + opt = await get('/sdapi/v1/options') + if params.output != '': + dir = params.output + else: + dir = os.path.abspath(os.path.join(cmdflags['hypernetwork_dir'], '..', 'Stable-diffusion')) + log.info({ 'output directory': dir }) log.info({ 'total jobs': len(models) * len(embeddings) * options.generate.batch_size, 'per-model': len(embeddings) * options.generate.batch_size }) log.info(json.dumps(options, indent=2)) - for model in models: - fn = os.path.join(params.output, model + '.jpg') + fn = os.path.join(dir, model + '.png') if os.path.exists(fn) and len(params.input) == 0: # if model preview exists and not manually included log.info({ 'model preview exists': model }) continue log.info({ 'model load': model }) - opt = await get('/sdapi/v1/options') + opt['sd_model_checkpoint'] = model await post('/sdapi/v1/options', opt) + opt = await get('/sdapi/v1/options') images = [] labels = [] t0 = time.time() diff --git a/config.json b/config.json index 0aa462260..8bae0cc44 100644 --- a/config.json +++ b/config.json @@ -60,7 +60,7 @@ "training_enable_tensorboard": false, "training_tensorboard_save_images": false, "training_tensorboard_flush_every": 120, - "sd_model_checkpoint": "sd-v15-runwayml.ckpt [cc6cb27103]", + "sd_model_checkpoint": "zeipher-f222.ckpt [9e2c6ceff3]", "sd_checkpoint_cache": 0, "sd_vae_checkpoint_cache": 0, "sd_vae": "vae-ft-mse-840000-ema-pruned.ckpt", diff --git a/html/extra-networks-card.html b/html/extra-networks-card.html index 8a5e2fbd2..cdeb5164c 100644 --- a/html/extra-networks-card.html +++ b/html/extra-networks-card.html @@ -2,7 +2,7 @@
diff --git a/modules/textual_inversion/textual_inversion.py b/modules/textual_inversion/textual_inversion.py index a1a406c22..72e8e50f5 100644 --- a/modules/textual_inversion/textual_inversion.py +++ b/modules/textual_inversion/textual_inversion.py @@ -282,7 +282,7 @@ def write_loss(log_directory, filename, step, epoch_len, values): if shared.opts.training_write_csv_every == 0: return - if step % shared.opts.training_write_csv_every != 0: + if step % epoch_len != 0: return write_csv_header = False if os.path.exists(os.path.join(log_directory, filename)) else True @@ -364,7 +364,7 @@ def train_embedding(id_task, embedding_name, learn_rate, batch_size, gradient_st filename = os.path.join(shared.cmd_opts.embeddings_dir, f'{embedding_name}.pt') - log_directory = os.path.join(log_directory, datetime.datetime.now().strftime("%Y-%m-%d"), embedding_name) + log_directory = os.path.join(log_directory, embedding_name) unload = shared.opts.unload_models_when_training if save_embedding_every > 0: @@ -514,9 +514,8 @@ def train_embedding(id_task, embedding_name, learn_rate, batch_size, gradient_st steps_done = embedding.step + 1 epoch_num = embedding.step // steps_per_epoch - epoch_step = embedding.step % steps_per_epoch - description = f"Training textual inversion [Epoch {epoch_num}: {epoch_step+1}/{steps_per_epoch}] loss: {loss_step:.7f}" + description = f"Training textual inversion step {embedding.step} loss: {loss_step:.5f} lr: {scheduler.learn_rate:.5f}" pbar.set_description(description) if embedding_dir is not None and steps_done % save_embedding_every == 0: # Before saving, change name to match current checkpoint. @@ -525,7 +524,7 @@ def train_embedding(id_task, embedding_name, learn_rate, batch_size, gradient_st save_embedding(embedding, optimizer, checkpoint, embedding_name_every, last_saved_file, remove_cached_checksum=True) embedding_yet_to_be_embedded = True - write_loss(log_directory, "textual_inversion_loss.csv", embedding.step, steps_per_epoch, { + write_loss(log_directory, "train.csv", embedding.step, steps_per_epoch, { "loss": f"{loss_step:.7f}", "learn_rate": scheduler.learn_rate }) diff --git a/user.css b/user.css index 8e3076b98..3a68b2357 100644 --- a/user.css +++ b/user.css @@ -17,56 +17,59 @@ div.gradio-container.dark > div.w-full.flex.flex-col.min-h-screen > div { backgr .gradio-container { font-family: "Segoe UI"; font-variant: small-caps; --left-column: 540px; --highlight-color: #CE6400; --inactive-color: #4E1400; } /* gradio style classes */ -.tabs { background-color: black; } -.dark { background-color: black; } -.dark .gr-panel { border-radius: 0; background-color: black; } -.dark .gr-compact { border-radius: 0; background-color: black; } -.dark .gr-input-label { color: lightyellow; border-width: 0; background: transparent; padding: 2px !important; } -.dark .gr-input { background-color: #333333 !important; } -.dark .gr-form { border-radius: 0; border-width: 0; } -.dark .gr-check-radio { background-color: var(--inactive-color); border-width: 0; border-radius: 2px; box-shadow: 2px 2px 3px #111111; } -.dark .gr-check-radio:checked { background-color: var(--highlight-color); } -.dark .gr-button { border-radius: 0; font-weight: normal; box-shadow: 2px 2px 3px #111111; font-size: 0.9rem; min-width: 42px; min-height: 42px; } -.dark .gr-box { border-radius: 0 !important; background-color: #111111; box-shadow: 2px 2px 3px #111111; border-width: 0; padding-bottom: 12px; } -.dark .dark\:bg-gray-900 { background-color: black; } -.dark .bg-white { color: lightyellow; border-radius: 0; } -.dark fieldset span.text-gray-500, .dark .gr-block.gr-box span.text-gray-500, .dark label.block span { background-color: #222222; padding: 0 12px 0 12px; } -.dark .bg-gray-200, .dark .\!bg-gray-200 { background-color: transparent; } -.gap-2 { padding-top: 8px; } .border-2 { border-width: 0; } .border-b-2 { border-bottom-width: 2px; border-color: var(--highlight-color) !important; padding-bottom: 2px; margin-bottom: 8px; } +.dark .bg-gray-200, .dark .\!bg-gray-200 { background-color: transparent; } +.dark .bg-white { color: lightyellow; border-radius: 0; } +.dark .dark\:bg-gray-900 { background-color: black; } +.dark .gr-box { border-radius: 0 !important; background-color: #111111; box-shadow: 2px 2px 3px #111111; border-width: 0; padding-bottom: 12px; } +.dark .gr-button { border-radius: 0; font-weight: normal; box-shadow: 2px 2px 3px #111111; font-size: 0.9rem; min-width: 42px; min-height: 42px; } +.dark .gr-check-radio { background-color: var(--inactive-color); border-width: 0; border-radius: 2px; box-shadow: 2px 2px 3px #111111; } +.dark .gr-check-radio:checked { background-color: var(--highlight-color); } +.dark .gr-compact { border-radius: 0; background-color: black; } +.dark .gr-form { border-radius: 0; border-width: 0; } +.dark .gr-input { background-color: #333333 !important; } +.dark .gr-input-label { color: lightyellow; border-width: 0; background: transparent; padding: 2px !important; } +.dark .gr-panel { border-radius: 0; background-color: black; } +.dark { background-color: black; } +.dark fieldset span.text-gray-500, .dark .gr-block.gr-box span.text-gray-500, .dark label.block span { background-color: #222222; padding: 0 12px 0 12px; } +.dark fieldset span.text-gray-500, .dark .gr-block.gr-box span.text-gray-500, .dark label.block span { border-radius: 0;} +.extra-network-cards .card { width: 10em; height: 10em; box-shadow: none; } +.extra-network-cards .card:hover { transform: scale(2); transition: all 0.3s ease; z-index: 99; box-shadow: none; } +.extra-network-cards .card .actions .name { font-weight: 400; font-size: 1.2rem; } +.gap-2 { padding-top: 8px; } +.gr-box > div > div > input.gr-text-input { right: 0.8rem; width: 6em; } +.overflow-hidden .flex .flex-col .relative col .gap-4 { min-width: var(--left-column); max-width: var(--left-column); } /* this is a problematic one */ +.p-2 { padding: 0; } .px-4 { padding-lefT: 1rem; padding-right: 1rem; } .py-6 { padding-bottom: 0; } -.overflow-hidden .flex .flex-col .relative col .gap-4 { min-width: var(--left-column); max-width: var(--left-column); } /* this is a problematic one */ .rounded-lg { border-radius: 0; } -.p-2 { padding: 0; } -.dark fieldset span.text-gray-500, .dark .gr-block.gr-box span.text-gray-500, .dark label.block span { border-radius: 0;} -.gr-box > div > div > input.gr-text-input { right: 0.8rem; width: 6em; } +.tabs { background-color: black; } /* automatic style classes */ .progressDiv .progress { background: var(--highlight-color); border-radius: 2px; } .gallery-item { box-shadow: none !important; } /* gradio elements overrides */ -#txt2img_settings, #img2img_settings { min-width: var(--left-column); max-width: var(--left-column); background-color: #111111; margin-top: 1rem; } -#txt2img_prompt > label > textarea { font-size: 1.2rem; } -#txt2img_neg_prompt > label > textarea { font-size: 1.2rem; } -#img2img_prompt > label > textarea { font-size: 1.2rem; } +#footer { display: none; } +#img2img_label_copy_to_img2img { font-weight: normal; } #img2img_neg_prompt > label > textarea { font-size: 1.2rem; } +#img2img_prompt > label > textarea { font-size: 1.2rem; } +#interrogate, #deepbooru { margin: 0em 0 0 0.25em; } +#open_folder_txt2img, #open_folder_img2img, #open_folder_extras { display: none; } +#refresh_txt2img_styles, #refresh_img2img_styles { display: none; } +#save-animation { border-radius: 0 !important; margin-bottom: 16px; background-color: #111111; } +#style_pos_col, #style_neg_col, #roll_col { display: none; } +#tab_extensions table { background-color: #222222; } +#txt2img_checkboxes, #img2img_checkboxes { background-color: transparent; } +#txt2img_gallery, #img2img_gallery, #extras_gallery { background: black; } #txt2img_generate, #img2img_generate, #txt2img_interrupt, #img2img_interrupt, #txt2img_skip, #img2img_skip { margin-left: 10px; min-height: 2rem; height: 63px; max-width: 200px; } #txt2img_interrupt, #img2img_interrupt, #txt2img_skip, #img2img_skip { background-color: var(--inactive-color); } -#txt2img_gallery, #img2img_gallery, #extras_gallery { background: black; } -#tab_extensions table { background-color: #222222; } -#style_pos_col, #style_neg_col, #roll_col { display: none; } +#txt2img_neg_prompt > label > textarea { font-size: 1.2rem; } #txt2img_progress_row > div { min-width: var(--left-column); max-width: var(--left-column); } -#save-animation { border-radius: 0 !important; margin-bottom: 16px; background-color: #111111; } -#open_folder_txt2img, #open_folder_img2img, #open_folder_extras { display: none; } -#footer { display: none; } +#txt2img_prompt > label > textarea { font-size: 1.2rem; } +#txt2img_results, #img2img_results, #extras_results { background-color: black; } #txt2img_seed_row { padding: 0; margin-top: 8px; } +#txt2img_settings, #img2img_settings { min-width: var(--left-column); max-width: var(--left-column); background-color: #111111; margin-top: 1rem; } #txt2img_subseed_show { min-width: 74px; padding: 0 0 0 6px; } #txtimg_hr_finalres { max-width: 200px; } -#refresh_txt2img_styles, #refresh_img2img_styles { display: none; } -#img2img_label_copy_to_img2img { font-weight: normal; } -#txt2img_results, #img2img_results, #extras_results { background-color: black; } -#txt2img_checkboxes, #img2img_checkboxes { background-color: transparent; } -#interrogate, #deepbooru { margin: 0em 0 0 0.25em; } \ No newline at end of file diff --git a/webui-macos-env.sh b/webui-macos-env.sh deleted file mode 100644 index 37cac4fb0..000000000 --- a/webui-macos-env.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -#################################################################### -# macOS defaults # -# Please modify webui-user.sh to change these instead of this file # -#################################################################### - -if [[ -x "$(command -v python3.10)" ]] -then - python_cmd="python3.10" -fi - -export install_dir="$HOME" -export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --use-cpu interrogate" -export TORCH_COMMAND="pip install torch==1.12.1 torchvision==0.13.1" -export K_DIFFUSION_REPO="https://github.com/brkirch/k-diffusion.git" -export K_DIFFUSION_COMMIT_HASH="51c9778f269cedb55a4d88c79c0246d35bdadb71" -export PYTORCH_ENABLE_MPS_FALLBACK=1 - -####################################################################