Transformers documentation

SAM3 Vídeo

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Este modelo foi contribuído para o Hugging Face Transformers em 19/11/2025.

SAM3 Vídeo

SDPA FlashAttention

Visão geral

O SAM3 (Segment Anything Model 3) foi introduzido em SAM 3: Segment Anything with Concepts.

O SAM3 Video executa Segmentação de Conceitos Promptáveis (PCS) em vídeos. A PCS recebe texto como entrada (por exemplo, “ônibus escolar amarelo”) e prevê máscaras de instância e semânticas para cada objeto que corresponda ao conceito, preservando as identidades dos objetos entre os quadros do vídeo.

O modelo combina um módulo de detecção (SAM3) com um módulo de rastreamento (rastreador no estilo SAM2) para permitir o rastreamento robusto de objetos entre os quadros de um vídeo usando prompts de texto.

O resumo do artigo é o seguinte:

Apresentamos o Segment Anything Model (SAM) 3, um modelo unificado que detecta, segmenta e rastreia objetos em imagens e vídeos com base em prompts de conceito, que definimos como frases nominais curtas (por exemplo, “yellow school bus”), exemplares de imagem ou uma combinação de ambos. A Segmentação de Conceito Promptável (PCS) recebe esses prompts e retorna máscaras de segmentação e identidades únicas para todas as instâncias de objetos correspondentes. Para avançar a PCS, construímos um motor de dados escalável que produz um conjunto de dados de alta qualidade com 4M de rótulos de conceito únicos, incluindo negativos difíceis, em imagens e vídeos. Nosso modelo consiste em um detector de nível de imagem e um rastreador de vídeo baseado em memória que compartilham um único backbone. O reconhecimento e a localização são desacoplados por meio de uma presença head, o que aumenta a precisão da detecção. O SAM 3 dobra a precisão dos sistemas existentes tanto na PCS de imagem quanto na de vídeo, e melhora as capacidades anteriores do SAM em tarefas de segmentação visual. Abre o código-fonte do SAM 3 junto com nosso novo benchmark Segment Anything with Concepts (SA-Co) para segmentação de conceito promptável.

Este modelo foi contribuído por yonigozlan e ronghanghu.

Exemplo de uso

Segmentação e Rastreamento de Vídeo

Inferência de vídeo pré-carregado

Processe um vídeo com todos os quadros já disponíveis usando prompts de texto:

from transformers import Sam3VideoModel, Sam3VideoProcessor
import torch

model = Sam3VideoModel.from_pretrained("facebook/sam3", device_map="auto")
processor = Sam3VideoProcessor.from_pretrained("facebook/sam3")

# Load video frames
from transformers.video_utils import load_video
video_url = "https://huggingface.co/datasets/hf-internal-testing/sam2-fixtures/resolve/main/bedroom.mp4"
video_frames, _ = load_video(video_url)

# Initialize video inference session
inference_session = processor.init_video_session(
    video=video_frames,
    inference_device=device,
    processing_device="cpu",
    video_storage_device="cpu",
)

# Add text prompt to detect and track objects
text = "person"
inference_session = processor.add_text_prompt(
    inference_session=inference_session,
    text=text,
)

# Process all frames in the video
outputs_per_frame = {}
# Pass show_progress_bar=True to display a tqdm progress bar.
for model_outputs in model.propagate_in_video_iterator(
    inference_session=inference_session, max_frame_num_to_track=50
):
    processed_outputs = processor.postprocess_outputs(inference_session, model_outputs)
    outputs_per_frame[model_outputs.frame_idx] = processed_outputs

print(f"Processed {len(outputs_per_frame)} frames")
Processed 51 frames

# Access results for a specific frame
frame_0_outputs = outputs_per_frame[0]
print(f"Detected {len(frame_0_outputs['object_ids'])} objects")
print(f"Object IDs: {frame_0_outputs['object_ids'].tolist()}")
print(f"Scores: {frame_0_outputs['scores'].tolist()}")
print(f"Boxes shape (XYXY format, absolute coordinates): {frame_0_outputs['boxes'].shape}")
print(f"Masks shape: {frame_0_outputs['masks'].shape}")

Você também pode rastrear múltiplas categorias de objetos simultaneamente fornecendo múltiplos prompts. O modelo reutiliza de forma eficiente os recursos visuais entre todos os prompts:

# Add multiple text prompts (or use a list in add_text_prompt)
multi_prompt_session = processor.init_video_session(
    video=video_frames,
    inference_device=device,
    processing_device="cpu",
    video_storage_device="cpu",
)
>>>
prompts = ["person", "bed", "lamp"]
processor.add_text_prompt(multi_prompt_session, prompts)
>>>
# Process video - detects objects from ALL prompts in a single pass
multi_outputs_per_frame = {}
# Pass show_progress_bar=True to display a tqdm progress bar.
for model_outputs in model.propagate_in_video_iterator(
    inference_session=multi_prompt_session, max_frame_num_to_track=50
):
    processed_outputs = processor.postprocess_outputs(multi_prompt_session, model_outputs)
    multi_outputs_per_frame[model_outputs.frame_idx] = processed_outputs
>>>
# Check which objects were detected by each prompt
frame_0_outputs = multi_outputs_per_frame[0]
prompt_to_obj_ids = frame_0_outputs["prompt_to_obj_ids"]
for prompt, obj_ids in prompt_to_obj_ids.items():
    print(f"{prompt}: {len(obj_ids)} objects")
person: 2 objects
bed: 1 objects
lamp: 1 objects

Inferência de Vídeo em Streaming

⚠️ **Nota sobre a qualidade da inferência em streaming**: A inferência em streaming desativa as heurísticas de hotstart que removem objetos não correspondentes e duplicados, pois essas exigem acesso a quadros futuros para tomar decisões informadas. Isso pode resultar em mais detecções falsas positivas e rastreamentos de objetos duplicados em comparação com a inferência em vídeo pré-carregado. Para obter os melhores resultados, use a inferência em vídeo pré-carregado quando todos os quadros estiverem disponíveis.

Para aplicações em tempo real, o SAM3 Video suporta o processamento dos quadros de vídeo à medida que chegam:

# Initialize session for streaming
streaming_inference_session = processor.init_video_session(
    inference_device=device,
    processing_device="cpu",
    video_storage_device="cpu",
)

# Add text prompt
text = "person"
streaming_inference_session = processor.add_text_prompt(
    inference_session=streaming_inference_session,
    text=text,
)

# Process frames one by one (streaming mode)
streaming_outputs_per_frame = {}
for frame_idx, frame in enumerate(video_frames[:50]):  # Process first 50 frames
    # First, process the frame using the processor
    inputs = processor(images=frame, device=device, return_tensors="pt").to(model.device)
...
    # Process frame using streaming inference - pass the processed pixel_values
    model_outputs = model(
        inference_session=streaming_inference_session,
        frame=inputs.pixel_values[0],  # Provide processed frame - this enables streaming mode
        reverse=False,
    )
...
    # Post-process outputs with original_sizes for proper resolution handling
    processed_outputs = processor.postprocess_outputs(
        streaming_inference_session,
        model_outputs,
        original_sizes=inputs.original_sizes,  # Required for streaming inference
    )
    streaming_outputs_per_frame[frame_idx] = processed_outputs
...
    if (frame_idx + 1) % 10 == 0:
        print(f"Processed {frame_idx + 1} frames...")

print(f"✓ Streaming inference complete! Processed {len(streaming_outputs_per_frame)} frames")
✓ Streaming inference complete! Processed 50 frames

# Access results
frame_0_outputs = streaming_outputs_per_frame[0]
print(f"Detected {len(frame_0_outputs['object_ids'])} objects in first frame")
print(f"Boxes are in XYXY format (absolute pixel coordinates): {frame_0_outputs['boxes'].shape}")
print(f"Masks are at original video resolution: {frame_0_outputs['masks'].shape}")

Inferência com Resolução Personalizada

⚠️ **Nota de desempenho**: Resoluções personalizadas podem degradar a precisão. O modelo foi projetado para ser usado em resolução de 1008px.

Para inferência mais rápida ou menor uso de memória:

config = Sam3VideoConfig.from_pretrained("facebook/sam3")
config.image_size = 560
model = Sam3VideoModel.from_pretrained("facebook/sam3", config=config, device_map="auto")
processor = Sam3VideoProcessor.from_pretrained("facebook/sam3", size={"height": 560, "width": 560})

Sam3VideoConfig

classe transformers.Sam3VideoConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonedetector_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetracker_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneinitializer_range: float = 0.02low_res_mask_size: int = 288score_threshold_detection: float = 0.5det_nms_thresh: float = 0.1assoc_iou_thresh: float = 0.1trk_assoc_iou_thresh: float = 0.5new_det_thresh: float = 0.7recondition_on_trk_masks: bool = Truehotstart_delay: int = 15hotstart_unmatch_thresh: int = 8hotstart_dup_thresh: int = 8suppress_unmatched_only_within_hotstart: bool = Trueinit_trk_keep_alive: int = 30max_trk_keep_alive: int = 30min_trk_keep_alive: int = -1suppress_overlapping_based_on_recent_occlusion_threshold: float = 0.7decrease_trk_keep_alive_for_empty_masklets: bool = Falsefill_hole_area: int = 16max_num_objects: int = 10000recondition_every_nth_frame: int = 16high_conf_thresh: float = 0.8high_iou_thresh: float = 0.8 )

Parâmetros

  • detector_config (dict ou Sam3Config, opcional) — Configuração para o modelo de detector Sam3. Se não for fornecida, a Sam3Config padrão será utilizada.
  • tracker_config (dict ou Sam2VideoConfig, opcional) — Configuração para o modelo de rastreamento Sam2Video. Se não for fornecida, a Sam2VideoConfig padrão será utilizada.
  • initializer_range (float, opcional, padrão 0.02) — O desvio padrão do truncated_normal_initializer para inicializar as matrizes de pesos.
  • low_res_mask_size (int, opcional, padrão 288) — Tamanho (altura e largura) das máscaras de baixa resolução geradas pelo tracker antes do redimensionamento para a resolução do vídeo.
  • score_threshold_detection (float, opcional, padrão 0,5) — Limiar de probabilidade para as saídas de detecção — mantém apenas as detecções acima desse limiar.
  • det_nms_thresh (float, opcional, padrão 0.1) — Limiar de IoU para NMS (Non-Maximum Suppression) de detecção.
  • assoc_iou_thresh (float, opcional, padrão 0.1) — Limiar de IoU para o pareamento entre detecção e trilha. Uma detecção é considerada “pareada” a um tracklet se sobrepor ao tracklet acima deste limiar. Frequentemente, um limiar frouxo como 0.1.
  • trk_assoc_iou_thresh (float, opcional, padrão 0,5) — Limiar de IoU para o pareamento entre detecções e rastros, usado para determinar se um masklet é “não correspondido” por nenhuma detecção. Frequentemente, um limiar mais estrito, como 0,5, é utilizado.
  • new_det_thresh (float, opcional, padrão 0.7) — Limiar de probabilidade para uma detecção ser adicionada como um novo objeto.
  • recondition_on_trk_masks (bool, opcional, padrão True) — Se deve usar máscaras rastreadas (True) ou máscaras de detecção (False) para recondicionamento. Use True quando as máscaras rastreadas tiverem maior qualidade e o detector servir como sinal de validação para fortalecer a memória e prevenir deriva.
  • hotstart_delay (int, opcional, padrão 15) — Número de quadros para armazenar em buffer as saídas durante o hotstart. Retemos as saídas por hotstart_delay quadros e removemos tracklets com base em heurísticas de hotstart.
  • hotstart_unmatch_thresh (int, opcional, padrão 8) — Número de quadros não correspondidos necessários para remover um tracklet durante o período de hotstart.
  • hotstart_dup_thresh (int, opcional, padrão 8) — Número de quadros sobrepostos necessários para remover um tracklet duplicado durante o período de hotstart.
  • suppress_unmatched_only_within_hotstart (bool, opcional, padrão True) — Se deve suprimir máscaras apenas dentro do período de hotstart. Se False, é possível suprimir máscaras mesmo que comecem antes do período de hotstart.
  • init_trk_keep_alive (int, opcional, padrão 30) — Contador inicial de keep-alive para novas trilhas.
  • max_trk_keep_alive (int, opcional, padrão 30) — Valor máximo do contador de keep-alive. Rastros com detecções correspondentes têm seu contador incrementado até esse valor.
  • min_trk_keep_alive (int, opcional, padrão -1) — Valor mínimo do contador de keep-alive. Rastreadores com detecções não correspondentes têm seu contador reduzido para esse valor.
  • suppress_overlapping_based_on_recent_occlusion_threshold (float, opcional, padrão 0.7) — Limiar para suprimir objetos sobrepostos com base na oclusão recente. Máscaras sobrepostas com IoU acima deste limiar são suprimidas com base em qual foi ocluída mais recentemente.
  • decrease_trk_keep_alive_for_empty_masklets (bool, opcional, padrão False) — Se deve diminuir o contador de keep-alive para masklets com área zero na previsão do SAM2.
  • fill_hole_area (int, opcional, padrão 16) — Área mínima (em pixels) para preencher buracos nas máscaras e remover pequenas manchas.
  • max_num_objects (int, opcional, padrão 10000) — Número máximo de objetos a serem rastreados. O padrão 10000 efetivamente desativa esse limite.
  • recondition_every_nth_frame (int, opcional, padrão 16) — Frequência de recondicionamento da máscara (em frames). Defina como 0 para desativar o recondicionamento.
  • high_conf_thresh (float, opcional, padrão 0.8) — Limiar de alta confiança para recondicionamento. Somente detecções acima deste limiar podem recondicionar tracklets.
  • high_iou_thresh (float, opcional, padrão 0.8) — Limite superior de IoU para recondicionamento. Somente detecções com IoU acima desse limite podem recondicionar tracklets.

Esta é a classe de configuração para armazenar a configuração de um Sam3VideoModel. Ela é usada para instanciar um modelo Sam3 Video de acordo com os argumentos especificados, definindo a arquitetura do modelo. Instanciar uma configuração com os padrões resultará em uma configuração semelhante à do facebook/sam3

Os objetos de configuração herdam de PreTrainedConfig e podem ser usados para controlar as saídas do modelo. Consulte a documentação de PreTrainedConfig para mais informações.

Exemplo:

>>> from transformers import Sam3VideoConfig, Sam3VideoModel

>>> # Initializing a SAM3 Video configuration with default detector and tracker
>>> configuration = Sam3VideoConfig()

>>> # Changing image size for custom resolution inference (automatically propagates to all nested configs)
>>> configuration.image_size = 560

>>> # Initializing a model from the configuration
>>> model = Sam3VideoModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
>>> detector_config = configuration.detector_config
>>> tracker_config = configuration.tracker_config

Sam3VideoProcessor

classe transformers.Sam3VideoProcessor

< >

( image_processorvideo_processortokenizertarget_size: int | None = None**kwargs )

Parâmetros

  • image_processor (Sam3ImageProcessor) — O processador de imagem é uma entrada obrigatória.
  • video_processor (video_processor_class) — O processador de vídeo é uma entrada obrigatória.
  • tokenizer (CLIPTokenizer) — O tokenizer é uma entrada obrigatória.
  • target_size (int, opcional) — O tamanho alvo (target_size, target_size) para o qual a imagem será redimensionada.

Constrói um Sam3VideoProcessor que encapsula um processador de imagem, um processador de vídeo e um tokenizer em um único processador.

Sam3VideoProcessor oferece todas as funcionalidades de Sam3ImageProcessor, video_processor_class e CLIPTokenizer. Consulte ~Sam3ImageProcessor, ~video_processor_class e ~CLIPTokenizer para mais informações.

__call__

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonesegmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Noneoriginal_sizes: typing.Union[list[list[float]], torch.Tensor, NoneType] = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = None**kwargs ) → A BatchEncoding with the following fields

Parâmetros

  • images (ImageInput, opcional) — A(s) imagem(ns) a ser processada(s).
  • segmentation_maps (ImageInput, opcional) — Os mapas de segmentação a serem processados (opcional, para o processador de imagem).
  • original_sizes (list[list[float]], torch.Tensor, opcional) — Os tamanhos originais das imagens. Usado apenas quando images não é fornecido.
  • return_tensors (Union[str, ~utils.generic.TensorType], opcional) — Se definido, retornará tensors de um framework específico. Os valores aceitos são:
    • 'pt': Retorna objetos torch.Tensor do PyTorch.
    • 'np': Retorna objetos np.ndarray do NumPy.

Retorna

Um BatchEncoding com os seguintes campos

  • pixel_values (torch.Tensor): A(s) imagem(ns) processada(s).
  • original_sizes (list[list[float]]): Os tamanhos originais das imagens.
  • labels (torch.Tensor, opcional): Os mapas de segmentação processados (se fornecidos).

postprocess_outputs

< >

( inference_sessionmodel_outputsoriginal_sizes: typing.Union[list[list[float]], torch.Tensor, NoneType] = None ) → dict

Parâmetros

  • inference_session (Sam3VideoInferenceSession) — O objeto de sessão de inferência.
  • model_outputs (Sam3VideoSegmentationOutput) — A saída bruta do modelo de Sam3VideoModel.forward().
  • original_sizes (list[list[float]] ou torch.Tensor, opcional) — Tamanhos originais opcionais dos quadros [altura, largura]. Obrigatório para inferência em streaming quando video_height/video_width não estão definidos na sessão.

Retorna

dict

Um dicionário contendo as seguintes chaves:

  • object_ids (torch.Tensor de forma (num_objects,)): IDs dos objetos para cada objeto detectado.
  • scores (torch.Tensor de forma (num_objects,)): Pontuações de detecção para cada objeto.
  • boxes (torch.Tensor de forma (num_objects, 4)): Caixas delimitadoras no formato XYXY (top_left_x, top_left_y, bottom_right_x, bottom_right_y).
  • máscaras (torch.Tensor de forma (num_objects, height, width)): Máscaras de segmentação binárias para cada objeto na resolução original do vídeo.
  • prompt_to_obj_ids (dict[str, list[int]]): Mapeamento do texto do prompt para a lista de IDs de objetos detectados por esse prompt.

Pós-processe as saídas do modelo para obter as máscaras, caixas e pontuações finais.

init_video_session

< >

( video: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]], NoneType] = Noneinference_device: typing.Union[str, ForwardRef('torch.device')] = 'cpu'inference_state_device: typing.Union[str, ForwardRef('torch.device'), NoneType] = Noneprocessing_device: typing.Union[str, ForwardRef('torch.device'), NoneType] = Nonevideo_storage_device: typing.Union[str, ForwardRef('torch.device'), NoneType] = Nonemax_vision_features_cache_size: int = 1dtype: dtype = torch.float32 )

Parâmetros

  • video (VideoInput, opcional) — O vídeo a ser processado. Não é necessário fornecer durante o streaming.
  • inference_device (str ou torch.device, opcional, padrão “cpu”) — O dispositivo a ser usado para inferência.
  • inference_state_device (str ou torch.device, opcional) — O dispositivo em que o estado de inferência será armazenado.
  • processing_device (str ou torch.device, opcional) — O dispositivo a ser usado para o processamento de vídeo.
  • video_storage_device (str ou torch.device, opcional) — O dispositivo em que os quadros de vídeo processados serão armazenados.
  • max_vision_features_cache_size (int, opcional, padrão 1) — O número máximo de recursos visuais a serem armazenados em cache.
  • dtype (torch.dtype, opcional, padrão torch.float32) — O dtype do torch a ser usado para toda a sessão.

Inicializa uma sessão de vídeo para inferência. Se um vídeo for fornecido (inferência assíncrona), o vídeo será processado e armazenado no video_storage_device.

add_text_prompt

< >

( inference_session: Sam3VideoInferenceSessiontext: str | list[str] ) → Sam3VideoInferenceSession

Parâmetros

  • inference_session (Sam3VideoInferenceSession) — A sessão de inferência.
  • text (str ou list[str]) — O(s) prompt(s) de texto a adicionar.

Retorna

Sam3VideoInferenceSession

A sessão de inferência com o(s) prompt(s) de texto adicionado(s).

Adicione prompt(s) de texto à sessão de inferência.

Sam3VideoInferenceSession

classe transformers.Sam3VideoInferenceSession

< >

( video: typing.Optional[torch.Tensor] = Nonevideo_height: int | None = Nonevideo_width: int | None = Noneinference_device: typing.Union[torch.device, str] = 'cpu'inference_state_device: typing.Union[torch.device, str] = 'cpu'video_storage_device: typing.Union[torch.device, str] = 'cpu'dtype: typing.Union[torch.dtype, str] = 'float32'max_vision_features_cache_size: int = 1 )

Parâmetros

  • video (torch.Tensor, opcional) — O vídeo a ser processado. Não é necessário fornecer durante o streaming.
  • video_height (int, opcional) — A altura do vídeo.
  • video_width (int, opcional) — A largura do vídeo.
  • inference_device (torch.device, opcional, padrão "cpu") — O dispositivo a ser usado para inferência.
  • inference_state_device (torch.device, opcional, padrão "cpu") — O dispositivo em que o estado de inferência será armazenado.
  • video_storage_device (torch.device, opcional, padrão "cpu") — O dispositivo em que o vídeo será armazenado.
  • dtype (torch.dtype, opcional, padrão "float32") — O dtype a ser usado para o vídeo.
  • max_vision_features_cache_size (int, opcional, padrão 1) — O número máximo de recursos visuais a serem armazenados em cache.

Gerencia os parâmetros, o estado e o cache da sessão de inferência de vídeo.

add_mask_inputs

< >

( obj_idx: intframe_idx: intinputs: Tensor )

Adicione entradas de máscara com posicionamento automático de dispositivo.

add_new_frame

< >

( pixel_values: Tensorframe_idx: int | None = None )

Adicione um novo frame com posicionamento automático de dispositivo.

add_prompt

< >

( prompt_text: str )

Adiciona um prompt de texto à sessão e retorna seu ID exclusivo. Se o prompt já existir, retorna o ID existente.

get_frame

< >

( frame_idx: int )

Obter quadro do vídeo.

get_obj_num

< >

( )

Obtenha o número total de ids de objetos únicos recebidos até o momento nesta sessão.

get_output

< >

( obj_idx: intframe_idx: intoutput_key: stris_conditioning_frame: bool = True )

Parâmetros

  • obj_idx (int) — O índice do objeto.
  • frame_idx (int) — O índice do quadro.
  • output_key (str) — A chave da saída.
  • is_conditioning_frame (bool) — Indica se a saída é para um quadro de condicionamento.

Obtenha a saída com gerenciamento inteligente de dispositivos.

obj_id_to_idx

< >

( obj_id: int )

Mapeia o ID do objeto para o índice, criando uma nova entrada, se necessário.

obj_idx_to_id

< >

( obj_idx: int )

Mapeia o índice do objeto no lado do modelo para o id do objeto no lado do cliente.

remove_mask_inputs

< >

( obj_idx: intframe_idx: int )

Remova as entradas de máscara.

remove_object

< >

( obj_id: intstrict: bool = False )

Parâmetros

  • obj_id (int) — O ID do objeto a ser removido.
  • strict (bool, opcional, padrão False) — Se deve gerar um erro caso o objeto não exista.

Remove um objeto da sessão de inferência. Isso removeria o objeto de todos os quadros do vídeo.

reset_inference_session

< >

( )

Redefinir os dados de rastreamento e o cache.

reset_state

< >

( )

Redefina o estado da sessão de inferência.

reset_tracking_data

< >

( )

Redefinir os dados de rastreamento, mas manter o cache.

store_output

< >

( obj_idx: intframe_idx: intoutput_key: str | None = Noneoutput_value: typing.Union[torch.Tensor, dict, NoneType] = Noneis_conditioning_frame: bool = True )

Parâmetros

  • obj_idx (int) — O índice do objeto.
  • frame_idx (int) — O índice do quadro.
  • output_key (Optional[str]) — A chave da saída. Se for None, a saída é armazenada como um dicionário.
  • output_value (Optional[Union[torch.Tensor, dict]]) — O valor da saída.
  • is_conditioning_frame (bool) — Indica se a saída é para um quadro de condicionamento.

Armazene a saída com gerenciamento inteligente de dispositivos. Se output_key for None, a saída é armazenada como um dicionário.

Sam3VideoSegmentationOutput

classe transformers.Sam3VideoSegmentationOutput

< >

( object_ids: list[int] | None = Noneobj_id_to_mask: dict[int, torch.Tensor] | None = Noneobj_id_to_score: dict[int, float] | None = Noneobj_id_to_tracker_score: dict[int, float] | None = Noneremoved_obj_ids: set[int] | None = Nonesuppressed_obj_ids: set[int] | None = Noneframe_idx: int | None = None )

Parâmetros

  • object_ids (list[int], opcional) — Lista de IDs de objetos rastreados no quadro atual.
  • obj_id_to_mask (dict[int, torch.Tensor], opcional) — Dicionário que mapeia IDs de objetos para suas máscaras de baixa resolução previstas. Cada máscara tem a forma (1, H_low, W_low).
  • obj_id_to_score (dict[int, float], opcional) — Dicionário que mapeia IDs de objetos para suas pontuações de detecção.
  • obj_id_to_tracker_score (dict[int, float], opcional) — Dicionário que mapeia os IDs dos objetos para as suas pontuações do rastreador no frame atual.
  • removed_obj_ids (set[int], opcional) — Conjunto de IDs de objetos que foram removidos (por exemplo, por meio de heurísticas de hotstart).
  • suppressed_obj_ids (set[int], opcional) — Conjunto de IDs de objetos que foram suprimidos no frame atual.
  • frame_idx (int, opcional) — O índice do quadro do vídeo.

Classe base para a saída do modelo Sam3Video.

Sam3VideoModel

classe transformers.Sam3VideoModel

< >

( config: Sam3VideoConfig )

Parâmetros

  • config (Sam3VideoConfig) — Classe de configuração do modelo com todos os parâmetros do modelo. A inicialização com um arquivo de configuração não carrega os pesos associados ao modelo, apenas a configuração. Consulte o método from_pretrained() para carregar os pesos do modelo.

O modelo Sam3 Video básico, que gera os hidden-states brutos sem nenhum head específico no topo.

Este modelo herda de PreTrainedModel. Consulte a documentação da classe pai para os métodos genéricos que a biblioteca implementa para todos os seus modelos (como download ou salvamento, redimensionamento dos embeddings de entrada, poda de cabeças, etc.)

Este modelo também é uma subclasse de torch.nn.Module do PyTorch. Use-o como um Módulo PyTorch regular e consulte a documentação do PyTorch para todos os assuntos relacionados ao uso geral e ao comportamento.

forward

< >

( inference_session: Sam3VideoInferenceSessionframe_idx: int | None = Noneframe: typing.Optional[torch.Tensor] = Nonereverse: bool = False**kwargs )

Parâmetros

  • inference_session (~models.sam3_video.modeling_sam3_video.Sam3VideoInferenceSession) — O objeto de sessão de inferência de vídeo.
  • frame_idx (int, opcional) — O índice do quadro em que a inferência será executada. Não é necessário fornecer ao inferir em um novo quadro transmitido.
  • frame (torch.Tensor, opcional) — O frame a ser processado. Forneça durante o streaming.
  • reverse (bool, opcional, padrão False) — Se deve propagar em sentido inverso.

Propague os objetos por meio de um quadro de vídeo transmitido.

propagate_in_video_iterator

< >

( inference_session: Sam3VideoInferenceSessionstart_frame_idx: int = 0max_frame_num_to_track: int | None = Nonereverse: bool = Falseshow_progress_bar: bool = False ) → Sam3VideoSegmentationOutput or tuple(torch.Tensor)

Parâmetros

  • inference_session (~models.sam3_video.modeling_sam3_video.Sam3VideoInferenceSession) — O objeto de sessão de inferência de vídeo.
  • start_frame_idx (int, opcional, padrão 0) — O índice do quadro inicial para a propagação.
  • max_frame_num_to_track (int, opcional) — O número máximo de quadros a serem rastreados. Se não for fornecido, todos os quadros do vídeo serão rastreados.
  • reverse (bool, opcional, padrão False) — Se deve propagar em sentido inverso.
  • show_progress_bar (bool, opcional, padrão False) — Se deve exibir uma barra de progresso durante a propagação.

Retorna

Sam3VideoSegmentationOutput ou tuple(torch.Tensor)

Um Sam3VideoSegmentationOutput ou uma tupla de torch.Tensor (se return_dict=False for passado ou quando config.return_dict=False) contendo vários elementos, dependendo da configuração (Sam3VideoConfig) e das entradas.

Propaga os prompts para obter resultados de grounding para o vídeo inteiro. Usado ao inicializar uma sessão de inferência com um vídeo completo. Gera Sam3VideoSegmentationOutput para cada frame.

  • object_ids (list[int], opcional) — Lista dos IDs de objetos rastreados no quadro atual.
  • obj_id_to_mask (dict[int, torch.Tensor], opcional) — Dicionário que mapeia IDs de objetos para suas máscaras de baixa resolução previstas. Cada máscara tem a forma (1, H_low, W_low).
  • obj_id_to_score (dict[int, float], opcional) — Dicionário que mapeia IDs de objetos para suas pontuações de detecção.
  • obj_id_to_tracker_score (dict[int, float], opcional) — Dicionário que mapeia os IDs dos objetos para as pontuações do rastreador deles no frame atual.
  • removed_obj_ids (set[int], opcional) — Conjunto de IDs de objetos que foram removidos (por exemplo, por meio de heurísticas de hotstart).
  • suppressed_obj_ids (set[int], opcional) — Conjunto de IDs de objetos que foram suprimidos no frame atual.
  • frame_idx (int, opcional) — O índice do quadro do vídeo.
Update on GitHub