Spaces:
Running on Zero
Running on Zero
| import torch | |
| import numpy as np | |
| from huggingface_hub import hf_hub_download | |
| from segmentation import SegmentationModule | |
| MODEL = None | |
| DEVICE = torch.device("cpu") | |
| def load_model(use_box=False): | |
| global MODEL, DEVICE | |
| MODEL = SegmentationModule(use_box=use_box) | |
| ckpt_path = hf_hub_download( | |
| repo_id="phoebe777777/111", | |
| filename="microscopy_matching_seg.pth", | |
| token=None, | |
| force_download=False | |
| ) | |
| MODEL.load_state_dict(torch.load(ckpt_path, map_location="cpu"), strict=False) | |
| MODEL.eval() | |
| if torch.cuda.is_available(): | |
| DEVICE = torch.device("cuda") | |
| MODEL.move_to_device(DEVICE) | |
| print("✅ Model moved to CUDA") | |
| else: | |
| DEVICE = torch.device("cpu") | |
| MODEL.move_to_device(DEVICE) | |
| print("✅ Model on CPU") | |
| return MODEL, DEVICE | |
| def run(model, img_path, box=None, device="cpu"): | |
| print("DEVICE:", device) | |
| model.move_to_device(device) | |
| model.eval() | |
| with torch.no_grad(): | |
| if box is not None: | |
| use_box = True | |
| else: | |
| use_box = False | |
| model.use_box = use_box | |
| output = model(img_path, box=box) | |
| mask = output | |
| return mask | |