Spaces:
Running
on
Zero
Running
on
Zero
update gpu
Browse files
app.py
CHANGED
|
@@ -13,7 +13,6 @@ import gradio as gr
|
|
| 13 |
import spaces
|
| 14 |
|
| 15 |
USE_CUDA = torch.cuda.is_available()
|
| 16 |
-
|
| 17 |
print("CUDA is available:", USE_CUDA)
|
| 18 |
|
| 19 |
def transform_images(images, resolution=(1024, 1024)):
|
|
@@ -142,7 +141,6 @@ class MobileSAM(nn.Module):
|
|
| 142 |
|
| 143 |
mobilesam = MobileSAM()
|
| 144 |
|
| 145 |
-
@spaces.GPU(duration=60)
|
| 146 |
def image_mobilesam_feature(
|
| 147 |
images,
|
| 148 |
node_type="block",
|
|
@@ -172,10 +170,9 @@ def image_mobilesam_feature(
|
|
| 172 |
}
|
| 173 |
out = out_dict[node_type]
|
| 174 |
out = out[layer]
|
| 175 |
-
outputs.append(out
|
| 176 |
outputs = torch.cat(outputs, dim=0)
|
| 177 |
|
| 178 |
-
mobilesam = mobilesam.cpu()
|
| 179 |
return outputs
|
| 180 |
|
| 181 |
|
|
@@ -246,7 +243,6 @@ class SAM(torch.nn.Module):
|
|
| 246 |
|
| 247 |
sam = SAM()
|
| 248 |
|
| 249 |
-
@spaces.GPU(duration=120)
|
| 250 |
def image_sam_feature(
|
| 251 |
images,
|
| 252 |
node_type="block",
|
|
@@ -274,10 +270,9 @@ def image_sam_feature(
|
|
| 274 |
}
|
| 275 |
out = out_dict[node_type]
|
| 276 |
out = out[layer]
|
| 277 |
-
outputs.append(out
|
| 278 |
outputs = torch.cat(outputs, dim=0)
|
| 279 |
|
| 280 |
-
sam = sam.cpu()
|
| 281 |
|
| 282 |
return outputs
|
| 283 |
|
|
@@ -326,7 +321,6 @@ class DiNOv2(torch.nn.Module):
|
|
| 326 |
|
| 327 |
dinov2 = DiNOv2()
|
| 328 |
|
| 329 |
-
@spaces.GPU(duration=60)
|
| 330 |
def image_dino_feature(images, node_type="block", layer=-1):
|
| 331 |
global USE_CUDA
|
| 332 |
if USE_CUDA:
|
|
@@ -350,11 +344,10 @@ def image_dino_feature(images, node_type="block", layer=-1):
|
|
| 350 |
}
|
| 351 |
out = out_dict[node_type]
|
| 352 |
out = out[layer]
|
| 353 |
-
outputs.append(out
|
| 354 |
outputs = torch.cat(outputs, dim=0)
|
| 355 |
outputs = rearrange(outputs[:, 5:, :], "b (h w) c -> b h w c", h=32, w=32)
|
| 356 |
|
| 357 |
-
dinov2 = dinov2.cpu()
|
| 358 |
return outputs
|
| 359 |
|
| 360 |
|
|
@@ -423,7 +416,6 @@ class CLIP(torch.nn.Module):
|
|
| 423 |
|
| 424 |
clip = CLIP()
|
| 425 |
|
| 426 |
-
@spaces.GPU(duration=60)
|
| 427 |
def image_clip_feature(
|
| 428 |
images, node_type="block", layer=-1
|
| 429 |
):
|
|
@@ -449,10 +441,9 @@ def image_clip_feature(
|
|
| 449 |
}
|
| 450 |
out = out_dict[node_type]
|
| 451 |
out = out[layer]
|
| 452 |
-
outputs.append(out
|
| 453 |
outputs = torch.cat(outputs, dim=0)
|
| 454 |
|
| 455 |
-
clip = clip.cpu()
|
| 456 |
return outputs
|
| 457 |
|
| 458 |
|
|
@@ -514,7 +505,6 @@ def run_model_on_image(images, model_name="sam", node_type="block", layer=-1):
|
|
| 514 |
else:
|
| 515 |
raise ValueError(f"Model {model_name} not supported.")
|
| 516 |
|
| 517 |
-
USE_CUDA = False
|
| 518 |
return result
|
| 519 |
|
| 520 |
def extract_features(images, model_name="MobileSAM", node_type="block", layer=-1):
|
|
@@ -550,14 +540,14 @@ def compute_ncut(
|
|
| 550 |
knn_tsne=10,
|
| 551 |
num_sample_tsne=1000,
|
| 552 |
perplexity=500,
|
| 553 |
-
):
|
| 554 |
from ncut_pytorch import NCUT, rgb_from_tsne_3d
|
| 555 |
|
| 556 |
start = time.time()
|
| 557 |
eigvecs, eigvals = NCUT(
|
| 558 |
num_eig=num_eig,
|
| 559 |
num_sample=num_sample_ncut,
|
| 560 |
-
device="cpu",
|
| 561 |
affinity_focal_gamma=affinity_focal_gamma,
|
| 562 |
knn=knn_ncut,
|
| 563 |
).fit_transform(features.reshape(-1, features.shape[-1]))
|
|
@@ -595,7 +585,7 @@ def to_pil_images(images):
|
|
| 595 |
for image in images
|
| 596 |
]
|
| 597 |
|
| 598 |
-
|
| 599 |
def main_fn(
|
| 600 |
images,
|
| 601 |
model_name="SAM(sam_vit_b)",
|
|
|
|
| 13 |
import spaces
|
| 14 |
|
| 15 |
USE_CUDA = torch.cuda.is_available()
|
|
|
|
| 16 |
print("CUDA is available:", USE_CUDA)
|
| 17 |
|
| 18 |
def transform_images(images, resolution=(1024, 1024)):
|
|
|
|
| 141 |
|
| 142 |
mobilesam = MobileSAM()
|
| 143 |
|
|
|
|
| 144 |
def image_mobilesam_feature(
|
| 145 |
images,
|
| 146 |
node_type="block",
|
|
|
|
| 170 |
}
|
| 171 |
out = out_dict[node_type]
|
| 172 |
out = out[layer]
|
| 173 |
+
outputs.append(out)
|
| 174 |
outputs = torch.cat(outputs, dim=0)
|
| 175 |
|
|
|
|
| 176 |
return outputs
|
| 177 |
|
| 178 |
|
|
|
|
| 243 |
|
| 244 |
sam = SAM()
|
| 245 |
|
|
|
|
| 246 |
def image_sam_feature(
|
| 247 |
images,
|
| 248 |
node_type="block",
|
|
|
|
| 270 |
}
|
| 271 |
out = out_dict[node_type]
|
| 272 |
out = out[layer]
|
| 273 |
+
outputs.append(out)
|
| 274 |
outputs = torch.cat(outputs, dim=0)
|
| 275 |
|
|
|
|
| 276 |
|
| 277 |
return outputs
|
| 278 |
|
|
|
|
| 321 |
|
| 322 |
dinov2 = DiNOv2()
|
| 323 |
|
|
|
|
| 324 |
def image_dino_feature(images, node_type="block", layer=-1):
|
| 325 |
global USE_CUDA
|
| 326 |
if USE_CUDA:
|
|
|
|
| 344 |
}
|
| 345 |
out = out_dict[node_type]
|
| 346 |
out = out[layer]
|
| 347 |
+
outputs.append(out)
|
| 348 |
outputs = torch.cat(outputs, dim=0)
|
| 349 |
outputs = rearrange(outputs[:, 5:, :], "b (h w) c -> b h w c", h=32, w=32)
|
| 350 |
|
|
|
|
| 351 |
return outputs
|
| 352 |
|
| 353 |
|
|
|
|
| 416 |
|
| 417 |
clip = CLIP()
|
| 418 |
|
|
|
|
| 419 |
def image_clip_feature(
|
| 420 |
images, node_type="block", layer=-1
|
| 421 |
):
|
|
|
|
| 441 |
}
|
| 442 |
out = out_dict[node_type]
|
| 443 |
out = out[layer]
|
| 444 |
+
outputs.append(out)
|
| 445 |
outputs = torch.cat(outputs, dim=0)
|
| 446 |
|
|
|
|
| 447 |
return outputs
|
| 448 |
|
| 449 |
|
|
|
|
| 505 |
else:
|
| 506 |
raise ValueError(f"Model {model_name} not supported.")
|
| 507 |
|
|
|
|
| 508 |
return result
|
| 509 |
|
| 510 |
def extract_features(images, model_name="MobileSAM", node_type="block", layer=-1):
|
|
|
|
| 540 |
knn_tsne=10,
|
| 541 |
num_sample_tsne=1000,
|
| 542 |
perplexity=500,
|
| 543 |
+
):
|
| 544 |
from ncut_pytorch import NCUT, rgb_from_tsne_3d
|
| 545 |
|
| 546 |
start = time.time()
|
| 547 |
eigvecs, eigvals = NCUT(
|
| 548 |
num_eig=num_eig,
|
| 549 |
num_sample=num_sample_ncut,
|
| 550 |
+
device="cuda" if USE_CUDA else "cpu",
|
| 551 |
affinity_focal_gamma=affinity_focal_gamma,
|
| 552 |
knn=knn_ncut,
|
| 553 |
).fit_transform(features.reshape(-1, features.shape[-1]))
|
|
|
|
| 585 |
for image in images
|
| 586 |
]
|
| 587 |
|
| 588 |
+
@spaces.GPU(duration=60)
|
| 589 |
def main_fn(
|
| 590 |
images,
|
| 591 |
model_name="SAM(sam_vit_b)",
|