vidgod/patches/cutie-device.patch
type-two 8c84243b61 phase 2: vg-remove (ProPainter), vg-interp (RIFE), vg-cutie, farm ops, zoo mirror
- vg-remove: object/logo/watermark removal via ProPainter on MPS; static --box,
  SAM2-tracked --point for moving objects, or user --mask. Output always scaled
  back to source dims (imageio macro-block-pads ProPainter output).
- vg-interp: RIFE frame interpolation via rife-ncnn-vulkan (universal binary,
  native Metal/MoltenVK, rife-v4.6); smooth (fps x N) or --slowmo.
- vg-cutie: Cutie interactive segmentation GUI launcher (local GUI session).
- setup/fetch_phase2.sh: idempotent clones + weights + deps + patches.
- patches: propainter-cv2-reader (torchvision >= 0.23 removed read_video),
  cutie-device (get_default_model hard-coded .cuda(); now cuda->mps->cpu).
- smoke_test.sh: adds the RIFE lane (skips when not fetched).
- Farm: vidgod_roto/vidgod_index operators live in MODELBEAST (8965d22),
  verified from JING5; weights mirrored to NAS modelzoo/vidgod-weights.

All lanes verified on ultra 2026-08-24: de-logo reconstruction eyeballed clean,
24->48fps interp, Cutie headless propagation PASS, smoke test 4/4.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-24 15:42:52 +10:00

20 lines
831 B
Diff

diff --git a/cutie/utils/get_default_model.py b/cutie/utils/get_default_model.py
index 3fa5e63..bdf91d5 100644
--- a/cutie/utils/get_default_model.py
+++ b/cutie/utils/get_default_model.py
@@ -20,9 +20,11 @@ def get_default_model() -> CUTIE:
cfg['weights'] = os.path.join(weight_dir, 'cutie-base-mega.pth')
get_dataset_cfg(cfg)
- # Load the network weights
- cutie = CUTIE(cfg).cuda().eval()
- model_weights = torch.load(cfg.weights)
+ # Load the network weights (cuda -> mps -> cpu, like interactive_demo.py)
+ device = ('cuda' if torch.cuda.is_available() else
+ 'mps' if torch.backends.mps.is_available() else 'cpu')
+ cutie = CUTIE(cfg).to(device).eval()
+ model_weights = torch.load(cfg.weights, map_location=device)
cutie.load_weights(model_weights)
return cutie