Spaces:
Running
on
Zero
Running
on
Zero
update delpoy
Browse files
app.py
CHANGED
|
@@ -1,14 +1,13 @@
|
|
| 1 |
# Author: Huzheng Yang
|
| 2 |
# %%
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
if
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
BATCH_SIZE = 1
|
| 12 |
|
| 13 |
import gradio as gr
|
| 14 |
|
|
@@ -18,7 +17,6 @@ from PIL import Image
|
|
| 18 |
import numpy as np
|
| 19 |
import time
|
| 20 |
import threading
|
| 21 |
-
import os
|
| 22 |
|
| 23 |
from ncut_pytorch.backbone import extract_features, load_model
|
| 24 |
from ncut_pytorch.backbone import MODEL_DICT, LAYER_DICT, RES_DICT
|
|
@@ -257,6 +255,7 @@ def ncut_run(
|
|
| 257 |
logging_str += "Running NCut for each image independently\n"
|
| 258 |
rgb = []
|
| 259 |
for i_image in range(features.shape[0]):
|
|
|
|
| 260 |
feature = features[i_image]
|
| 261 |
_rgb, _logging_str, _ = compute_ncut(
|
| 262 |
feature[None],
|
|
@@ -315,7 +314,7 @@ def _ncut_run(*args, **kwargs):
|
|
| 315 |
torch.cuda.empty_cache()
|
| 316 |
return [], "Error: " + str(e)
|
| 317 |
|
| 318 |
-
if
|
| 319 |
@spaces.GPU(duration=20)
|
| 320 |
def quick_run(*args, **kwargs):
|
| 321 |
return _ncut_run(*args, **kwargs)
|
|
@@ -332,7 +331,7 @@ if USE_HUGGINGFACE_SPACE:
|
|
| 332 |
def super_duper_long_run(*args, **kwargs):
|
| 333 |
return _ncut_run(*args, **kwargs)
|
| 334 |
|
| 335 |
-
if not
|
| 336 |
def quick_run(*args, **kwargs):
|
| 337 |
return _ncut_run(*args, **kwargs)
|
| 338 |
|
|
@@ -739,7 +738,7 @@ with demo:
|
|
| 739 |
with gr.Accordion("➡️ Recursion config", open=True):
|
| 740 |
l1_num_eig_slider = gr.Slider(1, 1000, step=1, label="Recursion #1: N eigenvectors", value=100, elem_id="l1_num_eig")
|
| 741 |
l2_num_eig_slider = gr.Slider(1, 1000, step=1, label="Recursion #2: N eigenvectors", value=50, elem_id="l2_num_eig")
|
| 742 |
-
l3_num_eig_slider = gr.Slider(1, 1000, step=1, label="Recursion #3: N eigenvectors", value=
|
| 743 |
metric_dropdown = gr.Dropdown(["euclidean", "cosine"], label="Recursion distance metric", value="cosine", elem_id="recursion_metric")
|
| 744 |
|
| 745 |
[
|
|
@@ -826,7 +825,7 @@ with demo:
|
|
| 826 |
)
|
| 827 |
|
| 828 |
with gr.Tab('Text'):
|
| 829 |
-
if
|
| 830 |
from app_text import make_demo
|
| 831 |
else:
|
| 832 |
from draft_gradio_app_text import make_demo
|
|
@@ -901,7 +900,7 @@ with demo:
|
|
| 901 |
|
| 902 |
|
| 903 |
|
| 904 |
-
if
|
| 905 |
from ncut_pytorch.backbone import download_all_models
|
| 906 |
threading.Thread(target=download_all_models).start()
|
| 907 |
from ncut_pytorch.backbone_text import download_all_models
|
|
|
|
| 1 |
# Author: Huzheng Yang
|
| 2 |
# %%
|
| 3 |
+
import os
|
| 4 |
+
USE_HUGGINGFACE_ZEROGPU = os.getenv("USE_HUGGINGFACE_ZEROGPU", "False").lower() in ["true", "1", "yes"]
|
| 5 |
+
#%%
|
| 6 |
+
if USE_HUGGINGFACE_ZEROGPU: # huggingface ZeroGPU, dynamic GPU allocation
|
| 7 |
+
import spaces
|
| 8 |
+
BATCH_SIZE = 4
|
| 9 |
+
else: # run on local machine
|
| 10 |
+
BATCH_SIZE = 1
|
|
|
|
| 11 |
|
| 12 |
import gradio as gr
|
| 13 |
|
|
|
|
| 17 |
import numpy as np
|
| 18 |
import time
|
| 19 |
import threading
|
|
|
|
| 20 |
|
| 21 |
from ncut_pytorch.backbone import extract_features, load_model
|
| 22 |
from ncut_pytorch.backbone import MODEL_DICT, LAYER_DICT, RES_DICT
|
|
|
|
| 255 |
logging_str += "Running NCut for each image independently\n"
|
| 256 |
rgb = []
|
| 257 |
for i_image in range(features.shape[0]):
|
| 258 |
+
logging_str += f"Image #{i_image+1}\n"
|
| 259 |
feature = features[i_image]
|
| 260 |
_rgb, _logging_str, _ = compute_ncut(
|
| 261 |
feature[None],
|
|
|
|
| 314 |
torch.cuda.empty_cache()
|
| 315 |
return [], "Error: " + str(e)
|
| 316 |
|
| 317 |
+
if USE_HUGGINGFACE_ZEROGPU:
|
| 318 |
@spaces.GPU(duration=20)
|
| 319 |
def quick_run(*args, **kwargs):
|
| 320 |
return _ncut_run(*args, **kwargs)
|
|
|
|
| 331 |
def super_duper_long_run(*args, **kwargs):
|
| 332 |
return _ncut_run(*args, **kwargs)
|
| 333 |
|
| 334 |
+
if not USE_HUGGINGFACE_ZEROGPU:
|
| 335 |
def quick_run(*args, **kwargs):
|
| 336 |
return _ncut_run(*args, **kwargs)
|
| 337 |
|
|
|
|
| 738 |
with gr.Accordion("➡️ Recursion config", open=True):
|
| 739 |
l1_num_eig_slider = gr.Slider(1, 1000, step=1, label="Recursion #1: N eigenvectors", value=100, elem_id="l1_num_eig")
|
| 740 |
l2_num_eig_slider = gr.Slider(1, 1000, step=1, label="Recursion #2: N eigenvectors", value=50, elem_id="l2_num_eig")
|
| 741 |
+
l3_num_eig_slider = gr.Slider(1, 1000, step=1, label="Recursion #3: N eigenvectors", value=50, elem_id="l3_num_eig")
|
| 742 |
metric_dropdown = gr.Dropdown(["euclidean", "cosine"], label="Recursion distance metric", value="cosine", elem_id="recursion_metric")
|
| 743 |
|
| 744 |
[
|
|
|
|
| 825 |
)
|
| 826 |
|
| 827 |
with gr.Tab('Text'):
|
| 828 |
+
if USE_HUGGINGFACE_ZEROGPU:
|
| 829 |
from app_text import make_demo
|
| 830 |
else:
|
| 831 |
from draft_gradio_app_text import make_demo
|
|
|
|
| 900 |
|
| 901 |
|
| 902 |
|
| 903 |
+
if USE_HUGGINGFACE_ZEROGPU:
|
| 904 |
from ncut_pytorch.backbone import download_all_models
|
| 905 |
threading.Thread(target=download_all_models).start()
|
| 906 |
from ncut_pytorch.backbone_text import download_all_models
|