implement power
Browse files
.DS_Store
CHANGED
|
Binary files a/.DS_Store and b/.DS_Store differ
|
|
|
app.py
CHANGED
|
@@ -21,6 +21,7 @@ max_tabs = 10
|
|
| 21 |
input_images = [None for i in range(max_tabs)]
|
| 22 |
input_prompts = [None for i in range(max_tabs)]
|
| 23 |
embedding_plots = [None for i in range(max_tabs)]
|
|
|
|
| 24 |
# global embedding_base64s
|
| 25 |
embedding_base64s = [None for i in range(max_tabs)]
|
| 26 |
# embedding_base64s = gr.State(value=[None for i in range(max_tabs)])
|
|
@@ -136,19 +137,14 @@ def on_prompt_change_update_embeddings(prompt):
|
|
| 136 |
embeddings_b64 = embedding_to_base64(embeddings)
|
| 137 |
return gr.Text.update(embeddings_b64)
|
| 138 |
|
| 139 |
-
|
| 140 |
-
# def on_embeddings_changed_update_average_embeddings(embedding_base64s):
|
| 141 |
-
def on_embeddings_changed_update_average_embeddings(embedding_base64s_state, embedding_base64, idx):
|
| 142 |
-
# global embedding_base64s
|
| 143 |
final_embedding = None
|
| 144 |
num_embeddings = 0
|
| 145 |
-
|
| 146 |
-
# for textbox in embedding_base64s:
|
| 147 |
-
# embedding_base64 = textbox.value
|
| 148 |
-
for embedding_base64 in embedding_base64s_state:
|
| 149 |
if embedding_base64 is None or embedding_base64 == "":
|
| 150 |
continue
|
| 151 |
embedding = base64_to_embedding(embedding_base64)
|
|
|
|
| 152 |
if final_embedding is None:
|
| 153 |
final_embedding = embedding
|
| 154 |
else:
|
|
@@ -161,6 +157,16 @@ def on_embeddings_changed_update_average_embeddings(embedding_base64s_state, emb
|
|
| 161 |
return gr.Text.update('')
|
| 162 |
final_embedding = final_embedding / num_embeddings
|
| 163 |
embeddings_b64 = embedding_to_base64(final_embedding)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 164 |
return gr.Text.update(embeddings_b64)
|
| 165 |
|
| 166 |
def on_embeddings_changed_update_plot(embeddings_b64):
|
|
@@ -328,8 +334,13 @@ Try uploading a few images and/or add some text prompts and click generate image
|
|
| 328 |
with gr.Column(scale=2, min_width=240):
|
| 329 |
input_prompts[i] = gr.Textbox(label="Text Prompt", show_label=True)
|
| 330 |
with gr.Column(scale=3, min_width=600):
|
| 331 |
-
with gr.
|
| 332 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 333 |
for idx, (tab_title, examples) in enumerate(tabbed_examples.items()):
|
| 334 |
with gr.Tab(tab_title):
|
| 335 |
with gr.Row():
|
|
@@ -372,15 +383,14 @@ Try uploading a few images and/or add some text prompts and click generate image
|
|
| 372 |
output = gr.Gallery(label="Generated variations")
|
| 373 |
|
| 374 |
embedding_base64s_state = gr.State(value=[None for i in range(max_tabs)])
|
|
|
|
| 375 |
for i in range(max_tabs):
|
| 376 |
input_images[i].change(on_image_load_update_embeddings, input_images[i], [embedding_base64s[i]])
|
| 377 |
-
# input_prompts[i].submit(on_prompt_change_update_embeddings, input_prompts[i], [embedding_base64s[i]])
|
| 378 |
input_prompts[i].change(on_prompt_change_update_embeddings, input_prompts[i], [embedding_base64s[i]])
|
| 379 |
embedding_base64s[i].change(on_embeddings_changed_update_plot, embedding_base64s[i], [embedding_plots[i]])
|
| 380 |
-
# embedding_plots[i].change(on_plot_changed, embedding_base64s[i], average_embedding_base64)
|
| 381 |
-
# embedding_plots[i].change(on_embeddings_changed_update_average_embeddings, embedding_base64s[i], average_embedding_base64)
|
| 382 |
idx_state = gr.State(value=i)
|
| 383 |
-
embedding_base64s[i].change(on_embeddings_changed_update_average_embeddings, [embedding_base64s_state, embedding_base64s[i], idx_state], average_embedding_base64)
|
|
|
|
| 384 |
|
| 385 |
average_embedding_base64.change(on_embeddings_changed_update_plot, average_embedding_base64, average_embedding_plot)
|
| 386 |
|
|
|
|
| 21 |
input_images = [None for i in range(max_tabs)]
|
| 22 |
input_prompts = [None for i in range(max_tabs)]
|
| 23 |
embedding_plots = [None for i in range(max_tabs)]
|
| 24 |
+
embedding_powers = [1. for i in range(max_tabs)]
|
| 25 |
# global embedding_base64s
|
| 26 |
embedding_base64s = [None for i in range(max_tabs)]
|
| 27 |
# embedding_base64s = gr.State(value=[None for i in range(max_tabs)])
|
|
|
|
| 137 |
embeddings_b64 = embedding_to_base64(embeddings)
|
| 138 |
return gr.Text.update(embeddings_b64)
|
| 139 |
|
| 140 |
+
def update_average_embeddings(embedding_base64s_state, embedding_powers):
|
|
|
|
|
|
|
|
|
|
| 141 |
final_embedding = None
|
| 142 |
num_embeddings = 0
|
| 143 |
+
for i, embedding_base64 in enumerate(embedding_base64s_state):
|
|
|
|
|
|
|
|
|
|
| 144 |
if embedding_base64 is None or embedding_base64 == "":
|
| 145 |
continue
|
| 146 |
embedding = base64_to_embedding(embedding_base64)
|
| 147 |
+
embedding = embedding * embedding_powers[i]
|
| 148 |
if final_embedding is None:
|
| 149 |
final_embedding = embedding
|
| 150 |
else:
|
|
|
|
| 157 |
return gr.Text.update('')
|
| 158 |
final_embedding = final_embedding / num_embeddings
|
| 159 |
embeddings_b64 = embedding_to_base64(final_embedding)
|
| 160 |
+
return embeddings_b64
|
| 161 |
+
|
| 162 |
+
def on_power_change_update_average_embeddings(embedding_base64s_state, embedding_power_state, power, idx):
|
| 163 |
+
embedding_power_state[idx] = power
|
| 164 |
+
embeddings_b64 = update_average_embeddings(embedding_base64s_state, embedding_power_state)
|
| 165 |
+
return gr.Text.update(embeddings_b64)
|
| 166 |
+
|
| 167 |
+
def on_embeddings_changed_update_average_embeddings(embedding_base64s_state, embedding_power_state, embedding_base64, idx):
|
| 168 |
+
embedding_base64s_state[idx] = embedding_base64 if embedding_base64 != '' else None
|
| 169 |
+
embeddings_b64 = update_average_embeddings(embedding_base64s_state, embedding_power_state)
|
| 170 |
return gr.Text.update(embeddings_b64)
|
| 171 |
|
| 172 |
def on_embeddings_changed_update_plot(embeddings_b64):
|
|
|
|
| 334 |
with gr.Column(scale=2, min_width=240):
|
| 335 |
input_prompts[i] = gr.Textbox(label="Text Prompt", show_label=True)
|
| 336 |
with gr.Column(scale=3, min_width=600):
|
| 337 |
+
with gr.Row():
|
| 338 |
+
# with gr.Slider(min=-5, max=5, value=1, label="Power", show_label=True):
|
| 339 |
+
# embedding_powers[i] = gr.Slider.value
|
| 340 |
+
embedding_powers[i] = gr.Slider(minimum=-3, maximum=3, value=1, label="Power", show_label=True, interactive=True)
|
| 341 |
+
with gr.Row():
|
| 342 |
+
with gr.Accordion(f"Embeddings (base64)", open=False):
|
| 343 |
+
embedding_base64s[i] = gr.Textbox(show_label=False)
|
| 344 |
for idx, (tab_title, examples) in enumerate(tabbed_examples.items()):
|
| 345 |
with gr.Tab(tab_title):
|
| 346 |
with gr.Row():
|
|
|
|
| 383 |
output = gr.Gallery(label="Generated variations")
|
| 384 |
|
| 385 |
embedding_base64s_state = gr.State(value=[None for i in range(max_tabs)])
|
| 386 |
+
embedding_power_state = gr.State(value=[1. for i in range(max_tabs)])
|
| 387 |
for i in range(max_tabs):
|
| 388 |
input_images[i].change(on_image_load_update_embeddings, input_images[i], [embedding_base64s[i]])
|
|
|
|
| 389 |
input_prompts[i].change(on_prompt_change_update_embeddings, input_prompts[i], [embedding_base64s[i]])
|
| 390 |
embedding_base64s[i].change(on_embeddings_changed_update_plot, embedding_base64s[i], [embedding_plots[i]])
|
|
|
|
|
|
|
| 391 |
idx_state = gr.State(value=i)
|
| 392 |
+
embedding_base64s[i].change(on_embeddings_changed_update_average_embeddings, [embedding_base64s_state, embedding_power_state, embedding_base64s[i], idx_state], average_embedding_base64)
|
| 393 |
+
embedding_powers[i].change(on_power_change_update_average_embeddings, [embedding_base64s_state, embedding_power_state, embedding_powers[i], idx_state], average_embedding_base64)
|
| 394 |
|
| 395 |
average_embedding_base64.change(on_embeddings_changed_update_plot, average_embedding_base64, average_embedding_plot)
|
| 396 |
|