Salta para o conteúdo

Referência para ultralytics/models/sam/modules/sam.py

Nota

Este ficheiro está disponível em https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/models/ sam/modules/ sam.py. Se encontrares um problema, por favor ajuda a corrigi-lo contribuindo com um Pull Request 🛠️. Obrigado 🙏!



ultralytics.models.sam.modules.sam.Sam

Bases: Module

Sam (Segment Anything Model) foi concebido para tarefas de segmentação de objectos. Utiliza codificadores de imagem para gerar Usa codificadores de imagem para gerar embeddings de imagem, e codificadores de pedidos para codificar vários tipos de pedidos de entrada. Estes encaixes são depois utilizados pelo descodificador de máscaras para prever máscaras de objectos.

Atributos:

Nome Tipo Descrição
mask_threshold float

Valor limiar para a previsão de máscaras.

image_format str

Formato da imagem de entrada, a predefinição é "RGB".

image_encoder ImageEncoderViT

A espinha dorsal utilizada para codificar a imagem em embeddings.

prompt_encoder PromptEncoder

Codifica vários tipos de avisos de entrada.

mask_decoder MaskDecoder

Prevê máscaras de objectos a partir da imagem e de embeddings rápidos.

pixel_mean List[float]

Valores médios de pixel para normalização da imagem.

pixel_std List[float]

Valores de desvio padrão para normalização de imagens.

Código fonte em 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))

Inicializa a classe Sam para prever máscaras de objectos a partir de uma imagem e de prompts de entrada.

Nota

Todas as operações forward() foram transferidas para o SAMPredictor.

Parâmetros:

Nome Tipo Descrição Predefinição
image_encoder ImageEncoderViT

A espinha dorsal utilizada para codificar a imagem em imagens incorporadas.

necessário
prompt_encoder PromptEncoder

Codifica vários tipos de avisos de entrada.

necessário
mask_decoder MaskDecoder

Prevê as máscaras a partir das imagens incorporadas e dos avisos codificados.

necessário
pixel_mean List[float]

Valores médios para normalizar os pixéis na imagem de entrada. Predefinições para (123.675, 116.28, 103.53).

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

Valores padrão para normalizar os pixéis na imagem de entrada. Predefinições para (58.395, 57.12, 57.375).

(58.395, 57.12, 57.375)
Código fonte em 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)





Created 2023-11-12, Updated 2024-06-02
Authors: glenn-jocher (5), Burhan-Q (1)