Spaces:
Sleeping
Sleeping
| from typing import NamedTuple, Optional, Sequence, List | |
| import numpy as np | |
| class SegmentationResult(NamedTuple): | |
| """Result from segmentation inference.""" | |
| masks: np.ndarray # NxHxW binary or soft masks | |
| scores: Optional[np.ndarray] = None # Confidence scores | |
| boxes: Optional[np.ndarray] = None # Bounding boxes (xyxy) | |
| class Segmenter: | |
| """Base interface for segmentation models.""" | |
| name: str | |
| supports_batch: bool = False | |
| max_batch_size: int = 1 | |
| def predict(self, frame: np.ndarray, text_prompts: Optional[list] = None) -> SegmentationResult: | |
| """ | |
| Run segmentation on a single frame. | |
| Args: | |
| frame: Input image as numpy array (HxWxC) | |
| text_prompts: Optional list of text prompts for segmentation | |
| Returns: | |
| SegmentationResult with masks and optional metadata | |
| """ | |
| raise NotImplementedError | |
| def predict_batch(self, frames: Sequence[np.ndarray], text_prompts: Optional[list] = None) -> Sequence[SegmentationResult]: | |
| return [self.predict(f, text_prompts) for f in frames] | |