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
-
-####################################################################