Spaces:
Running
on
Zero
Running
on
Zero
| from segmenters.base_segmenter import BaseSegmenter | |
| # SAM3 is optional; import lazily to avoid crashing when the model is unavailable | |
| try: | |
| from segmenters.sam3 import SAM3Segmenter # type: ignore | |
| except Exception as _sam3_err: # pragma: no cover - best-effort optional import | |
| SAM3Segmenter = None # type: ignore | |
| _SAM3_IMPORT_ERROR = _sam3_err | |
| from segmenters.pca_segmenter import PCASegmenter | |
| """ | |
| Model registry for segmenters | |
| """ | |
| _SEGMENTERS = {} | |
| if SAM3Segmenter is not None: | |
| _SEGMENTERS["sam3"] = SAM3Segmenter | |
| if PCASegmenter is not None: | |
| _SEGMENTERS["pca"] = PCASegmenter | |
| def get_segmenter(name: str, **kwargs): | |
| if name not in _SEGMENTERS: | |
| available = list(_SEGMENTERS) | |
| msg = f"Unknown segmenter '{name}'. Available: {available}" | |
| if name == "sam3" and 'SAM3Segmenter' in globals() and SAM3Segmenter is None: | |
| msg += f". SAM3 import error: {_SAM3_IMPORT_ERROR}" | |
| raise ValueError(msg) | |
| return _SEGMENTERS[name](**kwargs) | |