Spaces:
Running
on
Zero
Running
on
Zero
File size: 1,006 Bytes
24113f1 1834bc0 24113f1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
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)
|