Spaces:
Running
on
Zero
Running
on
Zero
update UI
Browse files
app.py
CHANGED
|
@@ -1,13 +1,13 @@
|
|
| 1 |
# Author: Huzheng Yang
|
| 2 |
# %%
|
| 3 |
-
|
| 4 |
BATCH_SIZE = 4
|
| 5 |
|
| 6 |
-
if
|
| 7 |
try:
|
| 8 |
import spaces
|
| 9 |
except ImportError:
|
| 10 |
-
|
| 11 |
BATCH_SIZE = 1
|
| 12 |
|
| 13 |
import os
|
|
@@ -309,7 +309,7 @@ def _ncut_run(*args, **kwargs):
|
|
| 309 |
torch.cuda.empty_cache()
|
| 310 |
return [], "Error: " + str(e)
|
| 311 |
|
| 312 |
-
if
|
| 313 |
@spaces.GPU(duration=20)
|
| 314 |
def quick_run(*args, **kwargs):
|
| 315 |
return _ncut_run(*args, **kwargs)
|
|
@@ -326,7 +326,7 @@ if USE_SPACES:
|
|
| 326 |
def super_duper_long_run(*args, **kwargs):
|
| 327 |
return _ncut_run(*args, **kwargs)
|
| 328 |
|
| 329 |
-
if not
|
| 330 |
def quick_run(*args, **kwargs):
|
| 331 |
return _ncut_run(*args, **kwargs)
|
| 332 |
|
|
@@ -582,7 +582,7 @@ def make_parameters_section():
|
|
| 582 |
from backbone import get_all_model_names
|
| 583 |
model_names = get_all_model_names()
|
| 584 |
model_dropdown = gr.Dropdown(model_names, label="Backbone", value="DiNO(dino_vitb8)", elem_id="model_name")
|
| 585 |
-
layer_slider = gr.Slider(1, 12, step=1, label="Backbone: Layer index", value=
|
| 586 |
node_type_dropdown = gr.Dropdown(["attn: attention output", "mlp: mlp output", "block: sum of residual"], label="Backbone: Layer type", value="block: sum of residual", elem_id="node_type", info="which feature to take from each layer?")
|
| 587 |
num_eig_slider = gr.Slider(1, 1000, step=1, label="NCUT: Number of eigenvectors", value=100, elem_id="num_eig", info='increase for more clusters')
|
| 588 |
|
|
@@ -827,7 +827,7 @@ with gr.Blocks() as demo:
|
|
| 827 |
with gr.Tab('Compare'):
|
| 828 |
def add_one_model(i_model=1):
|
| 829 |
with gr.Column(scale=5, min_width=200) as col:
|
| 830 |
-
gr.Markdown(f'### Output
|
| 831 |
output_gallery = gr.Gallery(value=[], label="NCUT Embedding", show_label=False, elem_id=f"ncut{i_model}", columns=[3], rows=[1], object_fit="contain", height="auto")
|
| 832 |
submit_button = gr.Button("🔴RUN", elem_id=f"submit_button{i_model}")
|
| 833 |
[
|
|
@@ -864,29 +864,44 @@ with gr.Blocks() as demo:
|
|
| 864 |
load_images_button.click(lambda x: default_images, outputs=input_gallery)
|
| 865 |
|
| 866 |
|
| 867 |
-
for i in range(
|
| 868 |
-
add_one_model(
|
| 869 |
|
| 870 |
-
|
| 871 |
-
|
| 872 |
-
|
| 873 |
-
slot = gr.Button("Add model", elem_id=f"add_model_button{i}")
|
| 874 |
-
col = add_one_model(i+2)
|
| 875 |
-
col.visible = False
|
| 876 |
-
|
| 877 |
-
slot.click(
|
| 878 |
-
fn=lambda x: gr.update(visible=True),
|
| 879 |
-
outputs=col
|
| 880 |
-
)
|
| 881 |
-
slot.click(
|
| 882 |
-
fn=lambda x: gr.update(visible=False),
|
| 883 |
-
outputs=slot
|
| 884 |
-
)
|
| 885 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 886 |
|
|
|
|
|
|
|
| 887 |
|
| 888 |
-
|
| 889 |
-
|
| 890 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 891 |
|
| 892 |
# %%
|
|
|
|
| 1 |
# Author: Huzheng Yang
|
| 2 |
# %%
|
| 3 |
+
HUGGINGFACE_SPACE = True
|
| 4 |
BATCH_SIZE = 4
|
| 5 |
|
| 6 |
+
if HUGGINGFACE_SPACE: # huggingface ZeroGPU, dynamic GPU allocation
|
| 7 |
try:
|
| 8 |
import spaces
|
| 9 |
except ImportError:
|
| 10 |
+
HUGGINGFACE_SPACE = False # run on local machine
|
| 11 |
BATCH_SIZE = 1
|
| 12 |
|
| 13 |
import os
|
|
|
|
| 309 |
torch.cuda.empty_cache()
|
| 310 |
return [], "Error: " + str(e)
|
| 311 |
|
| 312 |
+
if HUGGINGFACE_SPACE:
|
| 313 |
@spaces.GPU(duration=20)
|
| 314 |
def quick_run(*args, **kwargs):
|
| 315 |
return _ncut_run(*args, **kwargs)
|
|
|
|
| 326 |
def super_duper_long_run(*args, **kwargs):
|
| 327 |
return _ncut_run(*args, **kwargs)
|
| 328 |
|
| 329 |
+
if not HUGGINGFACE_SPACE:
|
| 330 |
def quick_run(*args, **kwargs):
|
| 331 |
return _ncut_run(*args, **kwargs)
|
| 332 |
|
|
|
|
| 582 |
from backbone import get_all_model_names
|
| 583 |
model_names = get_all_model_names()
|
| 584 |
model_dropdown = gr.Dropdown(model_names, label="Backbone", value="DiNO(dino_vitb8)", elem_id="model_name")
|
| 585 |
+
layer_slider = gr.Slider(1, 12, step=1, label="Backbone: Layer index", value=10, elem_id="layer")
|
| 586 |
node_type_dropdown = gr.Dropdown(["attn: attention output", "mlp: mlp output", "block: sum of residual"], label="Backbone: Layer type", value="block: sum of residual", elem_id="node_type", info="which feature to take from each layer?")
|
| 587 |
num_eig_slider = gr.Slider(1, 1000, step=1, label="NCUT: Number of eigenvectors", value=100, elem_id="num_eig", info='increase for more clusters')
|
| 588 |
|
|
|
|
| 827 |
with gr.Tab('Compare'):
|
| 828 |
def add_one_model(i_model=1):
|
| 829 |
with gr.Column(scale=5, min_width=200) as col:
|
| 830 |
+
gr.Markdown(f'### Output Images')
|
| 831 |
output_gallery = gr.Gallery(value=[], label="NCUT Embedding", show_label=False, elem_id=f"ncut{i_model}", columns=[3], rows=[1], object_fit="contain", height="auto")
|
| 832 |
submit_button = gr.Button("🔴RUN", elem_id=f"submit_button{i_model}")
|
| 833 |
[
|
|
|
|
| 864 |
load_images_button.click(lambda x: default_images, outputs=input_gallery)
|
| 865 |
|
| 866 |
|
| 867 |
+
for i in range(2):
|
| 868 |
+
add_one_model()
|
| 869 |
|
| 870 |
+
# Create rows and buttons in a loop
|
| 871 |
+
rows = []
|
| 872 |
+
buttons = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 873 |
|
| 874 |
+
for i in range(4):
|
| 875 |
+
row = gr.Row(visible=False)
|
| 876 |
+
rows.append(row)
|
| 877 |
+
|
| 878 |
+
with row:
|
| 879 |
+
for j in range(3):
|
| 880 |
+
with gr.Column(scale=5, min_width=200):
|
| 881 |
+
add_one_model()
|
| 882 |
|
| 883 |
+
button = gr.Button("Add Compare", elem_id=f"add_button_{i}", visible=False if i > 0 else True)
|
| 884 |
+
buttons.append(button)
|
| 885 |
|
| 886 |
+
if i > 0:
|
| 887 |
+
# Reveal the current row and next button
|
| 888 |
+
buttons[i - 1].click(fn=lambda x: gr.update(visible=True), outputs=row)
|
| 889 |
+
buttons[i - 1].click(fn=lambda x: gr.update(visible=True), outputs=button)
|
| 890 |
+
|
| 891 |
+
# Hide the current button
|
| 892 |
+
buttons[i - 1].click(fn=lambda x: gr.update(visible=False), outputs=buttons[i - 1])
|
| 893 |
+
|
| 894 |
+
# Last button only reveals the last row and hides itself
|
| 895 |
+
buttons[-1].click(fn=lambda x: gr.update(visible=True), outputs=rows[-1])
|
| 896 |
+
buttons[-1].click(fn=lambda x: gr.update(visible=False), outputs=buttons[-1])
|
| 897 |
+
|
| 898 |
+
|
| 899 |
+
|
| 900 |
+
if HUGGINGFACE_SPACE:
|
| 901 |
+
download_all_models()
|
| 902 |
+
download_all_datasets()
|
| 903 |
+
demo.launch()
|
| 904 |
+
else:
|
| 905 |
+
demo.launch(share=True)
|
| 906 |
|
| 907 |
# %%
|