İçeriğe geç

Referans için ultralytics/models/sam/model.py

Not

Bu dosya https://github.com/ultralytics/ultralytics/blob/main/ ultralytics/models/ sam/model .py adresinde mevcuttur. Bir sorun tespit ederseniz lütfen bir Çekme İsteği 🛠️ ile katkıda bulunarak düzeltilmesine yardımcı olun. Teşekkürler 🙏!



ultralytics.models.sam.model.SAM

Üsler: Model

SAM (Segment Anything Model) arayüz sınıfı.

SAM istenebilir gerçek zamanlı görüntü segmentasyonu için tasarlanmıştır. Aşağıdakiler gibi çeşitli istemlerle kullanılabilir sınırlayıcı kutular, noktalar veya etiketler. Model sıfır atış performansı için yeteneklere sahiptir ve SA-1B üzerinde eğitilmiştir veri kümesi.

Kaynak kodu ultralytics/models/sam/model.py
class SAM(Model):
    """
    SAM (Segment Anything Model) interface class.

    SAM is designed for promptable real-time image segmentation. It can be used with a variety of prompts such as
    bounding boxes, points, or labels. The model has capabilities for zero-shot performance and is trained on the SA-1B
    dataset.
    """

    def __init__(self, model="sam_b.pt") -> None:
        """
        Initializes the SAM model with a pre-trained model file.

        Args:
            model (str): Path to the pre-trained SAM model file. File should have a .pt or .pth extension.

        Raises:
            NotImplementedError: If the model file extension is not .pt or .pth.
        """
        if model and Path(model).suffix not in {".pt", ".pth"}:
            raise NotImplementedError("SAM prediction requires pre-trained *.pt or *.pth model.")
        super().__init__(model=model, task="segment")

    def _load(self, weights: str, task=None):
        """
        Loads the specified weights into the SAM model.

        Args:
            weights (str): Path to the weights file.
            task (str, optional): Task name. Defaults to None.
        """
        self.model = build_sam(weights)

    def predict(self, source, stream=False, bboxes=None, points=None, labels=None, **kwargs):
        """
        Performs segmentation prediction on the given image or video source.

        Args:
            source (str): Path to the image or video file, or a PIL.Image object, or a numpy.ndarray object.
            stream (bool, optional): If True, enables real-time streaming. Defaults to False.
            bboxes (list, optional): List of bounding box coordinates for prompted segmentation. Defaults to None.
            points (list, optional): List of points for prompted segmentation. Defaults to None.
            labels (list, optional): List of labels for prompted segmentation. Defaults to None.

        Returns:
            (list): The model predictions.
        """
        overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024)
        kwargs.update(overrides)
        prompts = dict(bboxes=bboxes, points=points, labels=labels)
        return super().predict(source, stream, prompts=prompts, **kwargs)

    def __call__(self, source=None, stream=False, bboxes=None, points=None, labels=None, **kwargs):
        """
        Alias for the 'predict' method.

        Args:
            source (str): Path to the image or video file, or a PIL.Image object, or a numpy.ndarray object.
            stream (bool, optional): If True, enables real-time streaming. Defaults to False.
            bboxes (list, optional): List of bounding box coordinates for prompted segmentation. Defaults to None.
            points (list, optional): List of points for prompted segmentation. Defaults to None.
            labels (list, optional): List of labels for prompted segmentation. Defaults to None.

        Returns:
            (list): The model predictions.
        """
        return self.predict(source, stream, bboxes, points, labels, **kwargs)

    def info(self, detailed=False, verbose=True):
        """
        Logs information about the SAM model.

        Args:
            detailed (bool, optional): If True, displays detailed information about the model. Defaults to False.
            verbose (bool, optional): If True, displays information on the console. Defaults to True.

        Returns:
            (tuple): A tuple containing the model's information.
        """
        return model_info(self.model, detailed=detailed, verbose=verbose)

    @property
    def task_map(self):
        """
        Provides a mapping from the 'segment' task to its corresponding 'Predictor'.

        Returns:
            (dict): A dictionary mapping the 'segment' task to its corresponding 'Predictor'.
        """
        return {"segment": {"predictor": Predictor}}

task_map property

'Segment' görevinden karşılık gelen 'Tahmin Edici'ye bir eşleme sağlar.

İade:

Tip Açıklama
dict

'Segment' görevini karşılık gelen 'Tahmin Edici' ile eşleyen bir sözlük.

__call__(source=None, stream=False, bboxes=None, points=None, labels=None, **kwargs)

'Tahmin' yöntemi için takma ad.

Parametreler:

İsim Tip Açıklama Varsayılan
source str

Görüntü veya video dosyasının yolu veya bir PIL.Image nesnesi ya da bir numpy.ndarray nesnesi.

None
stream bool

True ise, gerçek zamanlı akışı etkinleştirir. Varsayılan değer False'dir.

False
bboxes list

İstenen segmentasyon için sınırlayıcı kutu koordinatlarının listesi. Varsayılan değer Yok'tur.

None
points list

İstenen segmentasyon için noktaların listesi. Varsayılan değer Yok'tur.

None
labels list

İstenen segmentasyon için etiketlerin listesi. Varsayılan değer Yok'tur.

None

İade:

Tip Açıklama
list

Model tahminleri.

Kaynak kodu ultralytics/models/sam/model.py
def __call__(self, source=None, stream=False, bboxes=None, points=None, labels=None, **kwargs):
    """
    Alias for the 'predict' method.

    Args:
        source (str): Path to the image or video file, or a PIL.Image object, or a numpy.ndarray object.
        stream (bool, optional): If True, enables real-time streaming. Defaults to False.
        bboxes (list, optional): List of bounding box coordinates for prompted segmentation. Defaults to None.
        points (list, optional): List of points for prompted segmentation. Defaults to None.
        labels (list, optional): List of labels for prompted segmentation. Defaults to None.

    Returns:
        (list): The model predictions.
    """
    return self.predict(source, stream, bboxes, points, labels, **kwargs)

__init__(model='sam_b.pt')

SAM modelini önceden eğitilmiş bir model dosyası ile başlatır.

Parametreler:

İsim Tip Açıklama Varsayılan
model str

Önceden eğitilmiş SAM model dosyasının yolu. Dosya .pt veya .pth uzantısına sahip olmalıdır.

'sam_b.pt'

Zamlar:

Tip Açıklama
NotImplementedError

Model dosya uzantısı .pt veya .pth değilse.

Kaynak kodu ultralytics/models/sam/model.py
def __init__(self, model="sam_b.pt") -> None:
    """
    Initializes the SAM model with a pre-trained model file.

    Args:
        model (str): Path to the pre-trained SAM model file. File should have a .pt or .pth extension.

    Raises:
        NotImplementedError: If the model file extension is not .pt or .pth.
    """
    if model and Path(model).suffix not in {".pt", ".pth"}:
        raise NotImplementedError("SAM prediction requires pre-trained *.pt or *.pth model.")
    super().__init__(model=model, task="segment")

info(detailed=False, verbose=True)

SAM modeli hakkındaki bilgileri günlüğe kaydeder.

Parametreler:

İsim Tip Açıklama Varsayılan
detailed bool

True ise, model hakkında ayrıntılı bilgi görüntüler. Varsayılan değer False'dir.

False
verbose bool

True ise, bilgileri konsolda görüntüler. Varsayılan değer True'dur.

True

İade:

Tip Açıklama
tuple

Modelin bilgilerini içeren bir tuple.

Kaynak kodu ultralytics/models/sam/model.py
def info(self, detailed=False, verbose=True):
    """
    Logs information about the SAM model.

    Args:
        detailed (bool, optional): If True, displays detailed information about the model. Defaults to False.
        verbose (bool, optional): If True, displays information on the console. Defaults to True.

    Returns:
        (tuple): A tuple containing the model's information.
    """
    return model_info(self.model, detailed=detailed, verbose=verbose)

predict(source, stream=False, bboxes=None, points=None, labels=None, **kwargs)

Verilen görüntü veya video kaynağı üzerinde segmentasyon tahmini gerçekleştirir.

Parametreler:

İsim Tip Açıklama Varsayılan
source str

Görüntü veya video dosyasının yolu veya bir PIL.Image nesnesi ya da bir numpy.ndarray nesnesi.

gerekli
stream bool

True ise, gerçek zamanlı akışı etkinleştirir. Varsayılan değer False'dir.

False
bboxes list

İstenen segmentasyon için sınırlayıcı kutu koordinatlarının listesi. Varsayılan değer Yok'tur.

None
points list

İstenen segmentasyon için noktaların listesi. Varsayılan değer Yok'tur.

None
labels list

İstenen segmentasyon için etiketlerin listesi. Varsayılan değer Yok'tur.

None

İade:

Tip Açıklama
list

Model tahminleri.

Kaynak kodu ultralytics/models/sam/model.py
def predict(self, source, stream=False, bboxes=None, points=None, labels=None, **kwargs):
    """
    Performs segmentation prediction on the given image or video source.

    Args:
        source (str): Path to the image or video file, or a PIL.Image object, or a numpy.ndarray object.
        stream (bool, optional): If True, enables real-time streaming. Defaults to False.
        bboxes (list, optional): List of bounding box coordinates for prompted segmentation. Defaults to None.
        points (list, optional): List of points for prompted segmentation. Defaults to None.
        labels (list, optional): List of labels for prompted segmentation. Defaults to None.

    Returns:
        (list): The model predictions.
    """
    overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024)
    kwargs.update(overrides)
    prompts = dict(bboxes=bboxes, points=points, labels=labels)
    return super().predict(source, stream, prompts=prompts, **kwargs)





Oluşturma 2023-11-12, Güncelleme 2024-05-18
Yazarlar: glenn-jocher (4), Burhan-Q (1)