Transformers documentation

SAM3 Vídeo

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
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