Spaces:
Running
on
Zero
Running
on
Zero
Commit
·
1568073
1
Parent(s):
af1cc2b
deepcopy model and processor
Browse files
app.py
CHANGED
|
@@ -509,11 +509,10 @@ def on_image_click(
|
|
| 509 |
@spaces.GPU()
|
| 510 |
def propagate_masks(GLOBAL_STATE: gr.State):
|
| 511 |
if GLOBAL_STATE is None or GLOBAL_STATE.inference_session is None:
|
| 512 |
-
|
| 513 |
-
return GLOBAL_STATE, "Load a video first.", gr.update()
|
| 514 |
|
| 515 |
-
processor = GLOBAL_STATE.processor
|
| 516 |
-
model = GLOBAL_STATE.model
|
| 517 |
inference_session = deepcopy(GLOBAL_STATE.inference_session)
|
| 518 |
# set inference device to cuda to use zero gpu
|
| 519 |
inference_session.inference_device = "cuda"
|
|
@@ -524,7 +523,7 @@ def propagate_masks(GLOBAL_STATE: gr.State):
|
|
| 524 |
processed = 0
|
| 525 |
|
| 526 |
# Initial status; no slider change yet
|
| 527 |
-
|
| 528 |
|
| 529 |
last_frame_idx = 0
|
| 530 |
with torch.inference_mode():
|
|
@@ -547,25 +546,15 @@ def propagate_masks(GLOBAL_STATE: gr.State):
|
|
| 547 |
|
| 548 |
processed += 1
|
| 549 |
# Every 15th frame (or last), move slider to current frame to update preview via slider binding
|
| 550 |
-
|
| 551 |
-
|
| 552 |
-
|
| 553 |
-
|
| 554 |
-
|
| 555 |
-
model.to("cpu")
|
| 556 |
-
inference_session.inference_device = "cpu"
|
| 557 |
-
inference_session.cache.inference_device = "cpu"
|
| 558 |
-
gc.collect()
|
| 559 |
-
torch.cuda.empty_cache()
|
| 560 |
text = f"Propagated masks across {processed} frames for {len(inference_session.obj_ids)} objects."
|
| 561 |
|
| 562 |
# Final status; ensure slider points to last processed frame
|
| 563 |
-
|
| 564 |
-
# f"Propagated masks across {processed} frames for {len(inference_session.obj_ids)} objects.",
|
| 565 |
-
# gr.update(value=last_frame_idx),
|
| 566 |
-
# )
|
| 567 |
-
print("global state", GLOBAL_STATE)
|
| 568 |
-
return GLOBAL_STATE, text, gr.update(value=last_frame_idx)
|
| 569 |
|
| 570 |
|
| 571 |
def reset_session(GLOBAL_STATE: gr.State) -> tuple[AppState, Image.Image, int, int, str]:
|
|
|
|
| 509 |
@spaces.GPU()
|
| 510 |
def propagate_masks(GLOBAL_STATE: gr.State):
|
| 511 |
if GLOBAL_STATE is None or GLOBAL_STATE.inference_session is None:
|
| 512 |
+
yield GLOBAL_STATE, "Load a video first.", gr.update()
|
|
|
|
| 513 |
|
| 514 |
+
processor = deepcopy(GLOBAL_STATE.processor)
|
| 515 |
+
model = deepcopy(GLOBAL_STATE.model)
|
| 516 |
inference_session = deepcopy(GLOBAL_STATE.inference_session)
|
| 517 |
# set inference device to cuda to use zero gpu
|
| 518 |
inference_session.inference_device = "cuda"
|
|
|
|
| 523 |
processed = 0
|
| 524 |
|
| 525 |
# Initial status; no slider change yet
|
| 526 |
+
yield GLOBAL_STATE, f"Propagating masks: {processed}/{total}", gr.update()
|
| 527 |
|
| 528 |
last_frame_idx = 0
|
| 529 |
with torch.inference_mode():
|
|
|
|
| 546 |
|
| 547 |
processed += 1
|
| 548 |
# Every 15th frame (or last), move slider to current frame to update preview via slider binding
|
| 549 |
+
if processed % 15 == 0 or processed == total:
|
| 550 |
+
yield GLOBAL_STATE, f"Propagating masks: {processed}/{total}", gr.update(value=frame_idx)
|
| 551 |
+
else:
|
| 552 |
+
yield GLOBAL_STATE, f"Propagating masks: {processed}/{total}", gr.update()
|
| 553 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 554 |
text = f"Propagated masks across {processed} frames for {len(inference_session.obj_ids)} objects."
|
| 555 |
|
| 556 |
# Final status; ensure slider points to last processed frame
|
| 557 |
+
yield GLOBAL_STATE, text, gr.update(value=last_frame_idx)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 558 |
|
| 559 |
|
| 560 |
def reset_session(GLOBAL_STATE: gr.State) -> tuple[AppState, Image.Image, int, int, str]:
|