Skip to content

Référence pour ultralytics/models/sam/model.py

Note

Ce fichier est disponible à l'adresse https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/models/ sam/model .py. Si tu repères un problème, aide à le corriger en contribuant à une Pull Request 🛠️. Merci 🙏 !



ultralytics.models.sam.model.SAM

Bases : Model

SAM (Segment Anything Model).

SAM est conçu pour la segmentation d'images en temps réel. Il peut être utilisé avec une variété d'invites telles que des boîtes de délimitation, des points ou des étiquettes. Le modèle a des capacités de performance zéro-coup et est entraîné sur l'ensemble de données SA-1B et a été entraîné sur l'ensemble de données SA-1B.

Code source dans 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

Fournit une correspondance entre la tâche "segment" et son "prédicteur" correspondant.

Retourne :

Type Description
dict

Un dictionnaire mettant en correspondance la tâche "segment" et le "prédicteur" correspondant.

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

Alias de la méthode "prédire".

Paramètres :

Nom Type Description DĂ©faut
source str

Chemin d'accès au fichier image ou vidéo, ou un objet PIL.Image, ou un objet numpy.ndarray.

None
stream bool

Si True, active la diffusion en temps réel. La valeur par défaut est False.

False
bboxes list

Liste des coordonnées de la boîte de délimitation pour la segmentation incitée. La valeur par défaut est Aucun.

None
points list

Liste de points pour la segmentation incitée. La valeur par défaut est Aucun.

None
labels list

Liste d'étiquettes pour la segmentation incitée. La valeur par défaut est Aucun.

None

Retourne :

Type Description
list

Les prédictions du modèle.

Code source dans 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')

Initialise le modèle SAM avec un fichier de modèle pré-entraîné.

Paramètres :

Nom Type Description DĂ©faut
model str

Chemin d'accès au fichier du modèle pré-entraîné SAM . Le fichier doit avoir une extension .pt ou .pth.

'sam_b.pt'

Augmente :

Type Description
NotImplementedError

Si l'extension du fichier du modèle n'est pas .pt ou .pth.

Code source dans 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)

Enregistre les informations sur le modèle SAM .

Paramètres :

Nom Type Description DĂ©faut
detailed bool

Si True, affiche des informations détaillées sur le modèle. La valeur par défaut est False.

False
verbose bool

Si True, affiche les informations sur la console. La valeur par défaut est True.

True

Retourne :

Type Description
tuple

Un tuple contenant les informations du modèle.

Code source dans 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)

Effectue une prédiction de segmentation sur l'image ou la source vidéo donnée.

Paramètres :

Nom Type Description DĂ©faut
source str

Chemin d'accès au fichier image ou vidéo, ou un objet PIL.Image, ou un objet numpy.ndarray.

requis
stream bool

Si True, active la diffusion en temps réel. La valeur par défaut est False.

False
bboxes list

Liste des coordonnées de la boîte de délimitation pour la segmentation incitée. La valeur par défaut est Aucun.

None
points list

Liste de points pour la segmentation incitée. La valeur par défaut est Aucun.

None
labels list

Liste d'étiquettes pour la segmentation incitée. La valeur par défaut est Aucun.

None

Retourne :

Type Description
list

Les prédictions du modèle.

Code source dans 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)





Créé le 2023-11-12, Mis à jour le 2023-11-25
Auteurs : glenn-jocher (3)