Vai al contenuto

Riferimento per ultralytics/models/sam/modules/sam.py

Nota

Questo file è disponibile all'indirizzo https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/models/ sam/modules/ sam.py. Se riscontri un problema, contribuisci a risolverlo inviando una Pull Request 🛠️. Grazie 🙏!



ultralytics.models.sam.modules.sam.Sam

Basi: Module

Sam (Segment Anything Model) è stato progettato per le attività di segmentazione degli oggetti. Utilizza codificatori di immagini per generare e codificatori di messaggi per codificare vari tipi di messaggi di input. Queste incorporazioni vengono poi utilizzate dal decodificatore di maschere per predire le maschere degli oggetti. per prevedere le maschere degli oggetti.

Attributi:

Nome Tipo Descrizione
mask_threshold float

Valore di soglia per la previsione della maschera.

image_format str

Formato dell'immagine in ingresso, l'impostazione predefinita è "RGB".

image_encoder ImageEncoderViT

La struttura portante utilizzata per codificare l'immagine in embedding.

prompt_encoder PromptEncoder

Codifica vari tipi di richieste di input.

mask_decoder MaskDecoder

Prevede le maschere degli oggetti dall'immagine e dalle incorporazioni richieste.

pixel_mean List[float]

Valori medi dei pixel per la normalizzazione dell'immagine.

pixel_std List[float]

Valori di deviazione standard per la normalizzazione delle immagini.

Codice sorgente in ultralytics/models/sam/modules/sam.py
class Sam(nn.Module):
    """
    Sam (Segment Anything Model) is designed for object segmentation tasks. It uses image encoders to generate image
    embeddings, and prompt encoders to encode various types of input prompts. These embeddings are then used by the mask
    decoder to predict object masks.

    Attributes:
        mask_threshold (float): Threshold value for mask prediction.
        image_format (str): Format of the input image, default is 'RGB'.
        image_encoder (ImageEncoderViT): The backbone used to encode the image into embeddings.
        prompt_encoder (PromptEncoder): Encodes various types of input prompts.
        mask_decoder (MaskDecoder): Predicts object masks from the image and prompt embeddings.
        pixel_mean (List[float]): Mean pixel values for image normalization.
        pixel_std (List[float]): Standard deviation values for image normalization.
    """

    mask_threshold: float = 0.0
    image_format: str = "RGB"

    def __init__(
        self,
        image_encoder: ImageEncoderViT,
        prompt_encoder: PromptEncoder,
        mask_decoder: MaskDecoder,
        pixel_mean: List[float] = (123.675, 116.28, 103.53),
        pixel_std: List[float] = (58.395, 57.12, 57.375),
    ) -> None:
        """
        Initialize the Sam class to predict object masks from an image and input prompts.

        Note:
            All forward() operations moved to SAMPredictor.

        Args:
            image_encoder (ImageEncoderViT): The backbone used to encode the image into image embeddings.
            prompt_encoder (PromptEncoder): Encodes various types of input prompts.
            mask_decoder (MaskDecoder): Predicts masks from the image embeddings and encoded prompts.
            pixel_mean (List[float], optional): Mean values for normalizing pixels in the input image. Defaults to
                (123.675, 116.28, 103.53).
            pixel_std (List[float], optional): Std values for normalizing pixels in the input image. Defaults to
                (58.395, 57.12, 57.375).
        """
        super().__init__()
        self.image_encoder = image_encoder
        self.prompt_encoder = prompt_encoder
        self.mask_decoder = mask_decoder
        self.register_buffer("pixel_mean", torch.Tensor(pixel_mean).view(-1, 1, 1), False)
        self.register_buffer("pixel_std", torch.Tensor(pixel_std).view(-1, 1, 1), False)

__init__(image_encoder, prompt_encoder, mask_decoder, pixel_mean=(123.675, 116.28, 103.53), pixel_std=(58.395, 57.12, 57.375))

Inizializza la classe Sam per prevedere le maschere degli oggetti a partire da un'immagine e dalle richieste di input.

Nota

Tutte le operazioni forward() sono state spostate in SAMPredictor.

Parametri:

Nome Tipo Descrizione Predefinito
image_encoder ImageEncoderViT

La struttura portante utilizzata per codificare l'immagine in embedding.

richiesto
prompt_encoder PromptEncoder

Codifica vari tipi di richieste di input.

richiesto
mask_decoder MaskDecoder

Prevede le maschere dalle incorporazioni delle immagini e dai suggerimenti codificati.

richiesto
pixel_mean List[float]

Valori medi per normalizzare i pixel dell'immagine di input. Il valore predefinito è (123.675, 116.28, 103.53).

(123.675, 116.28, 103.53)
pixel_std List[float]

Valori standard per normalizzare i pixel dell'immagine di input. I valori predefiniti sono (58.395, 57.12, 57.375).

(58.395, 57.12, 57.375)
Codice sorgente in ultralytics/models/sam/modules/sam.py
def __init__(
    self,
    image_encoder: ImageEncoderViT,
    prompt_encoder: PromptEncoder,
    mask_decoder: MaskDecoder,
    pixel_mean: List[float] = (123.675, 116.28, 103.53),
    pixel_std: List[float] = (58.395, 57.12, 57.375),
) -> None:
    """
    Initialize the Sam class to predict object masks from an image and input prompts.

    Note:
        All forward() operations moved to SAMPredictor.

    Args:
        image_encoder (ImageEncoderViT): The backbone used to encode the image into image embeddings.
        prompt_encoder (PromptEncoder): Encodes various types of input prompts.
        mask_decoder (MaskDecoder): Predicts masks from the image embeddings and encoded prompts.
        pixel_mean (List[float], optional): Mean values for normalizing pixels in the input image. Defaults to
            (123.675, 116.28, 103.53).
        pixel_std (List[float], optional): Std values for normalizing pixels in the input image. Defaults to
            (58.395, 57.12, 57.375).
    """
    super().__init__()
    self.image_encoder = image_encoder
    self.prompt_encoder = prompt_encoder
    self.mask_decoder = mask_decoder
    self.register_buffer("pixel_mean", torch.Tensor(pixel_mean).view(-1, 1, 1), False)
    self.register_buffer("pixel_std", torch.Tensor(pixel_std).view(-1, 1, 1), False)





Creato 2023-11-12, Aggiornato 2023-11-25
Autori: glenn-jocher (3)