Transformers documentation
EdgeTAMVideo
Este modelo foi publicado no HF papers em 13/01/2025 e contribuído para o Hugging Face Transformers em 29/09/2025.
EdgeTAMVideo
Visão geral
O modelo EdgeTAM foi proposto em EdgeTAM: On-Device Track Anything Model Chong Zhou, Chenchen Zhu, Yunyang Xiong, Saksham Suri, Fanyi Xiao, Lemeng Wu, Raghuraman Krishnamoorthi, Bo Dai, Chen Change Loy, Vikas Chandra, Bilge Soran.
EdgeTAM é uma adaptação eficiente do SAM 2 que introduz uma arquitetura 2D Spatial Perceiver para otimizar os mecanismos de atenção de memória para segmentação de vídeo em tempo real em dispositivos móveis.
O resumo do artigo é o seguinte:
Além do Segment Anything Model (SAM), o SAM 2 estende ainda mais sua capacidade de imagens para entradas de vídeo por meio de um mecanismo de banco de memória e obtém um desempenho notável em comparação com métodos anteriores, tornando-o um modelo de base para a tarefa de segmentação de vídeo. Neste artigo, nosso objetivo é tornar o SAM 2 muito mais eficiente, de modo que ele possa ser executado em dispositivos móveis mantendo um desempenho comparável. Apesar de vários trabalhos que otimizam o SAM para uma melhor eficiência, constatamos que eles não são suficientes para o SAM 2, pois todos se concentram na compressão do codificador de imagem, enquanto nosso benchmark mostra que os novos blocos de atenção de memória introduzidos também são o gargalo de latência. Dada essa observação, propomos o EdgeTAM, que utiliza um novo 2D Spatial Perceiver para reduzir o custo computacional. Em particular, o 2D Spatial Perceiver proposto codifica as memórias de nível de quadro armazenadas de forma densa com um Transformer leve que contém um conjunto fixo de consultas aprendíveis. Dado que a segmentação de vídeo é uma tarefa de predição densa, constatamos que preservar a estrutura espacial das memórias é essencial, de modo que as consultas são divididas em grupos de nível global e de nível de patch. Também propomos um pipeline de destilação que melhora ainda mais o desempenho sem sobrecarga de inferência. Como resultado, o EdgeTAM alcança 87,7, 70,0, 72,3 e 71,7 J&F em DAVIS 2017, MOSE, SA-V val e SA-V test, enquanto é executado a 16 FPS no iPhone 15 Pro Max.
Este modelo foi contribuído por yonigozlan. O código original pode ser encontrado aqui.
Exemplo de uso
Segmentação e Rastreamento de Vídeo
A principal vantagem do EdgeTAM Video é a capacidade de rastrear objetos entre os quadros de um vídeo de forma eficiente em dispositivos móveis. Veja como usá-lo para segmentação de vídeo:
Rastreamento básico de vídeo
from transformers import EdgeTamVideoModel, Sam2VideoProcessor
import torch
model = EdgeTamVideoModel.from_pretrained("yonigozlan/edgetam-video-1", device_map="auto")
processor = Sam2VideoProcessor.from_pretrained("yonigozlan/edgetam-video-1")
# Load video frames (example assumes you have a list of PIL Images)
# video_frames = [Image.open(f"frame_{i:05d}.jpg") for i in range(num_frames)]
# For this example, we'll use the video loading utility
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,
)
# Add click on first frame to select object
ann_frame_idx = 0
ann_obj_id = 1
points = [[[[210, 350]]]]
labels = [[[1]]]
processor.add_inputs_to_inference_session(
inference_session=inference_session,
frame_idx=ann_frame_idx,
obj_ids=ann_obj_id,
input_points=points,
input_labels=labels,
)
# Segment the object on the first frame
outputs = model(
inference_session=inference_session,
frame_idx=ann_frame_idx,
)
video_res_masks = processor.post_process_masks(
[outputs.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
)[0]
print(f"Segmentation shape: {video_res_masks.shape}")
Segmentation shape: torch.Size([1, 1, 540, 960])
# Propagate through the entire video
video_segments = {}
for sam2_video_output in model.propagate_in_video_iterator(inference_session):
video_res_masks = processor.post_process_masks(
[sam2_video_output.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
)[0]
video_segments[sam2_video_output.frame_idx] = video_res_masks
print(f"Tracked object through {len(video_segments)} frames")
Tracked object through 200 framesRastreamento de Vídeo Multi-Objeto
Rastreie vários objetos simultaneamente entre os quadros de um vídeo:
# Reset for new tracking session
inference_session.reset_inference_session()
# Add multiple objects on the first frame
ann_frame_idx = 0
obj_ids = [2, 3]
input_points = [[[[200, 300]], [[400, 150]]]] # Points for two objects (batched)
input_labels = [[[1], [1]]]
processor.add_inputs_to_inference_session(
inference_session=inference_session,
frame_idx=ann_frame_idx,
obj_ids=obj_ids,
input_points=input_points,
input_labels=input_labels,
)
# Get masks for both objects on first frame
outputs = model(
inference_session=inference_session,
frame_idx=ann_frame_idx,
)
# Propagate both objects through video
video_segments = {}
for sam2_video_output in model.propagate_in_video_iterator(inference_session):
video_res_masks = processor.post_process_masks(
[sam2_video_output.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
)[0]
video_segments[sam2_video_output.frame_idx] = {
obj_id: video_res_masks[i]
for i, obj_id in enumerate(inference_session.obj_ids)
}
print(f"Tracked {len(inference_session.obj_ids)} objects through {len(video_segments)} frames")
Tracked 2 objects through 200 framesRefinamento da segmentação de vídeo
Você pode adicionar cliques adicionais em qualquer quadro para refinar o rastreamento:
# Add refinement click on a later frame
refine_frame_idx = 50
ann_obj_id = 2 # Refining first object
points = [[[[220, 280]]]] # Additional point
labels = [[[1]]] # Positive click
processor.add_inputs_to_inference_session(
inference_session=inference_session,
frame_idx=refine_frame_idx,
obj_ids=ann_obj_id,
input_points=points,
input_labels=labels,
)
# Re-propagate with the additional information
video_segments = {}
for sam2_video_output in model.propagate_in_video_iterator(inference_session):
video_res_masks = processor.post_process_masks(
[sam2_video_output.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
)[0]
video_segments[sam2_video_output.frame_idx] = video_res_masksInferência de Vídeo em Streaming
Para aplicações em tempo real, o EdgeTAM Video suporta o processamento de quadros de vídeo à medida que chegam:
# Initialize session for streaming
inference_session = processor.init_video_session(
inference_device=device,
)
# Process frames one by one
for frame_idx, frame in enumerate(video_frames[:10]): # Process first 10 frames
inputs = processor(images=frame, device=device, return_tensors="pt").to(model.device)
...
if frame_idx == 0:
# Add point input on first frame
processor.add_inputs_to_inference_session(
inference_session=inference_session,
frame_idx=0,
obj_ids=1,
input_points=[[[[210, 350], [250, 220]]]],
input_labels=[[[1, 1]]],
original_size=inputs.original_sizes[0], # need to be provided when using streaming video inference
)
...
# Process current frame
sam2_video_output = model(inference_session=inference_session, frame=inputs.pixel_values[0])
...
video_res_masks = processor.post_process_masks(
[sam2_video_output.pred_masks], original_sizes=inputs.original_sizes, binarize=False
)[0]
print(f"Frame {frame_idx}: mask shape {video_res_masks.shape}")
Frame 0: mask shape torch.Size([1, 1, 540, 960])
...Processamento em Lote de Vídeos para Múltiplos Objetos
Rastreie vários objetos simultaneamente em um vídeo adicionando todos de uma vez:
# Initialize video session
inference_session = processor.init_video_session(
video=video_frames,
inference_device=device,
)
# Add multiple objects on the first frame using batch processing
ann_frame_idx = 0
obj_ids = [2, 3] # Track two different objects
input_points = [
[[[200, 300], [230, 250], [275, 175]], [[400, 150]]]
] # Object 2: 3 points (2 positive, 1 negative); Object 3: 1 point
input_labels = [
[[1, 1, 0], [1]]
] # Object 2: positive, positive, negative; Object 3: positive
processor.add_inputs_to_inference_session(
inference_session=inference_session,
frame_idx=ann_frame_idx,
obj_ids=obj_ids,
input_points=input_points,
input_labels=input_labels,
)
# Get masks for all objects on the first frame
outputs = model(
inference_session=inference_session,
frame_idx=ann_frame_idx,
)
video_res_masks = processor.post_process_masks(
[outputs.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
)[0]
print(f"Generated masks for {video_res_masks.shape[0]} objects")
Generated masks for 2 objects
# Propagate all objects through the video
video_segments = {}
for sam2_video_output in model.propagate_in_video_iterator(inference_session):
video_res_masks = processor.post_process_masks(
[sam2_video_output.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
)[0]
video_segments[sam2_video_output.frame_idx] = {
obj_id: video_res_masks[i]
for i, obj_id in enumerate(inference_session.obj_ids)
}
print(f"Tracked {len(inference_session.obj_ids)} objects through {len(video_segments)} frames")
Tracked 2 objects through 200 framesEdgeTamVideoMaskDecoderConfig
classe transformers.EdgeTamVideoMaskDecoderConfig
< source >( 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 = Nonehidden_size: int = 256hidden_act: str = 'gelu'mlp_dim: int = 2048num_hidden_layers: int = 2num_attention_heads: int = 8attention_downsample_rate: int = 2num_multimask_outputs: int = 3iou_head_depth: int = 3iou_head_hidden_dim: int = 256dynamic_multimask_via_stability: bool = Truedynamic_multimask_stability_delta: float = 0.05dynamic_multimask_stability_thresh: float = 0.98 )
Parâmetros
- hidden_size (
int, opcional, padrão256) — Dimensão das representações ocultas. - hidden_act (
str, opcional, padrãogelu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo,"gelu","relu","silu", etc. - mlp_dim (
int, opcional, padrão 2048) — A dimensão do MLP no transformer de duas vias. - num_hidden_layers (
int, opcional, padrão2) — Número de camadas ocultas no decodificador do Transformer. - num_attention_heads (
int, opcional, padrão8) — Número de cabeças de atenção para cada camada de atenção no decodificador do Transformer. - attention_downsample_rate (
int, opcional, padrão 2) — A taxa de downsampling para as camadas de atenção. - num_multimask_outputs (
int, opcional, padrão 3) — O número de saídas multimask. - iou_head_depth (
int, opcional, padrão 3) — A profundidade da cabeça de IoU. - iou_head_hidden_dim (
int, opcional, padrão 256) — A dimensão oculta da cabeça de IoU. - dynamic_multimask_via_stability (
bool, opcional, padrãoTrue) — Se deve usar dynamic multimask via stability. - dynamic_multimask_stability_delta (
float, opcional, padrão 0.05) — O delta de estabilidade para a multimáscara dinâmica. - dynamic_multimask_stability_thresh (
float, opcional, padrão 0.98) — O limiar de estabilidade para a multimask dinâmica.
Esta é a classe de configuração para armazenar a configuração de um EdgeTamVideoModel. Ela é usada para instanciar um modelo Edgetam 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 yonigozlan/EdgeTAM-hf
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.
EdgeTamVideoPromptEncoderConfig
classe transformers.EdgeTamVideoPromptEncoderConfig
< source >( 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 = Nonehidden_size: int = 256image_size: int | list[int] | tuple[int, int] = 1024patch_size: int | list[int] | tuple[int, int] = 16mask_input_channels: int = 16num_point_embeddings: int = 4hidden_act: str = 'gelu'layer_norm_eps: float = 1e-06scale: int = 1 )
Parâmetros
- hidden_size (
int, opcional, padrão256) — Dimensão das representações ocultas. - image_size (
Union[int, list[int], tuple[int, int]], opcional, padrão1024) — O tamanho (resolução) de cada imagem. - patch_size (
Union[int, list[int], tuple[int, int]], opcional, padrão16) — O tamanho (resolução) de cada patch. - mask_input_channels (
int, opcional, padrão 16) — O número de canais a serem fornecidos ao móduloMaskDecoder. - num_point_embeddings (
int, opcional, padrão 4) — O número de incorporações de pontos a serem usadas. - hidden_act (
str, opcional, padrãogelu) — A função de ativação não linear (função ou string) no decodificador. Por exemplo,"gelu","relu","silu", etc. - layer_norm_eps (
float, opcional, padrão1e-06) — O epsilon usado pelas camadas de normalização de camada. - scale (
float, opcional, padrão 1) — Fator de escala para o codificador de prompt.
Esta é a classe de configuração para armazenar a configuração de um EdgeTamVideoModel. Ela é usada para instanciar um modelo Edgetam 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 yonigozlan/EdgeTAM-hf
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.
EdgeTamVideoConfig
classe transformers.EdgeTamVideoConfig
< source >( 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 = Nonevision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneprompt_encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonemask_decoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneinitializer_range: float = 0.02num_maskmem: int = 7image_size: int | list[int] | tuple[int, int] = 1024sigmoid_scale_for_mem_enc: float = 20.0sigmoid_bias_for_mem_enc: float = -10.0enable_occlusion_spatial_embedding: bool = Truemultimask_output_in_sam: bool = Truemultimask_min_pt_num: int = 0multimask_max_pt_num: int = 1multimask_output_for_tracking: bool = Truemax_object_pointers_in_encoder: int = 16max_cond_frame_num: int = -1enable_temporal_pos_encoding_for_object_pointers: bool = Truememory_attention_hidden_size: int = 256memory_attention_num_layers: int = 2memory_attention_num_attention_heads: int = 1memory_attention_downsample_rate: int = 1memory_attention_mlp_hidden_size: int = 2048memory_attention_mlp_hidden_act: str = 'relu'memory_attention_dropout: float | int = 0.1memory_attention_rope_feat_sizes: list | None = Nonememory_attention_rope_k_sizes: list | None = Nonememory_attention_rope_dropout: float | int = 0.1rope_parameters: dict | None = Noneperceiver_resampler_num_latents: int = 256perceiver_resampler_num_latents_2d: int = 256perceiver_resampler_hidden_size: int = 64perceiver_resampler_mlp_intermediate_size: int = 256perceiver_resampler_num_attention_heads: int = 1perceiver_resampler_attention_head_dim: int = 64perceiver_resampler_num_layers: int = 2perceiver_resampler_hidden_dropout: float | int = 0.0perceiver_resampler_attention_dropout: float | int = 0.0memory_encoder_hidden_size: int = 256memory_encoder_output_channels: int = 64mask_downsampler_embed_dim: int = 256memory_fuser_intermediate_dim: int = 1024mask_downsampler_kernel_size: int = 3mask_downsampler_stride: int = 2mask_downsampler_padding: int = 1mask_downsampler_total_stride: int = 16mask_downsampler_hidden_act: str = 'gelu'memory_fuser_num_layers: int = 2memory_fuser_embed_dim: int = 256memory_fuser_kernel_size: int = 7memory_fuser_padding: int = 3memory_fuser_layer_scale_init_value: float = 1e-06memory_fuser_hidden_act: str = 'gelu' )
Parâmetros
- vision_config (
Union[dict, ~configuration_utils.PreTrainedConfig], opcional) — O objeto de configuração ou dicionário do backbone de visão. - prompt_encoder_config (Union[
dict,EdgeTamVideoPromptEncoderConfig], opcional) — Dicionário de opções de configuração usado para inicializar EdgeTamVideoPromptEncoderConfig. - mask_decoder_config (Union[
dict,EdgeTamVideoMaskDecoderConfig], opcional) — Dicionário de opções de configuração usado para inicializar EdgeTamMaskDecoderConfig. - initializer_range (
float, opcional, padrão0.02) — O desvio padrão do truncated_normal_initializer para inicializar todas as matrizes de pesos. - num_maskmem (
int, opcional, padrão 7) — O número de slots de memória para a memória de máscara. - image_size (
Union[int, list[int], tuple[int, int]], opcional, padrão1024) — O tamanho (resolução) de cada imagem. - sigmoid_scale_for_mem_enc (
float, opcional, padrão 20.0) — Fator de escala para a função sigmoid no codificador de memória. - sigmoid_bias_for_mem_enc (
float, opcional, padrão -10.0) — Viés para a função sigmoid no codificador de memória. - enable_occlusion_spatial_embedding (
bool, opcional, padrãoTrue) — Se deve habilitar o embedding espacial para oclusões. - multimask_output_in_sam (
bool, opcional, padrãoTrue) — Se deve gerar múltiplas máscaras a partir da cabeça do SAM. - multimask_min_pt_num (
int, opcional, padrão 0) — O número mínimo de pontos para acionar a saída multimask. - multimask_max_pt_num (
int, opcional, padrão 1) — O número máximo de pontos para acionar a saída multimask. - multimask_output_for_tracking (
bool, opcional, padrãoTrue) — Se deve usar a saída multimask para rastreamento. - max_object_pointers_in_encoder (
int, opcional, padrão 16) — O número máximo de ponteiros de objetos no encoder. - max_cond_frame_num (
int, opcional, padrão -1) — Número máximo de frames de condicionamento a serem usados na atenção de memória. Defina como -1 para usar todos os frames de condicionamento. - enable_temporal_pos_encoding_for_object_pointers (
bool, opcional, padrãoTrue) — Se deve habilitar a codificação posicional temporal para ponteiros de objetos. - memory_attention_hidden_size (
int, opcional, padrão 256) — Dimensão dos estados ocultos da atenção de memória. - memory_attention_num_layers (
int, opcional, padrão 2) — O número de camadas no módulo de atenção de memória. - memory_attention_num_attention_heads (
int, opcional, padrão 1) — Número de cabeças de atenção para cada camada de atenção na memória de atenção. - memory_attention_downsample_rate (
int, opcional, padrão 1) — A taxa de downsampling para as camadas de atenção. - memory_attention_mlp_hidden_size (
int, opcional, padrão 2048) — A dimensão da rede feedforward no módulo de atenção de memória. - memory_attention_mlp_hidden_act (
str, opcional, padrão"relu") — A função de ativação não linear na rede feedforward do módulo de atenção de memória. - memory_attention_dropout (
float, opcional, padrão 0.1) — A taxa de dropout para o módulo de atenção de memória. - memory_attention_rope_feat_sizes (
Tuple[int, int], opcional, padrão[64, 64]) — Os tamanhos dos recursos para a codificação posicional Rope. - memory_attention_rope_k_sizes (
List[int], opcional, padrão[16, 16]) — Os tamanhos das chaves para a codificação posicional RoPE na memória de atenção. - memory_attention_rope_dropout (
float, opcional, padrão 0.1) — A taxa de dropout para a codificação posicional Rope. - rope_parameters (
dict, opcional) — Dicionário contendo os parâmetros de configuração para os embeddings RoPE. O dicionário deve conter um valor pararope_thetae, opcionalmente, parâmetros usados para escalonamento, caso você queira usar RoPE commax_position_embeddingsmaiores. - perceiver_resampler_num_latents (
int, opcional, padrão 256) — O número de tokens latentes 1D no perceiver resampler. - perceiver_resampler_num_latents_2d (
int, opcional, padrão 256) — O número de tokens latentes 2D no perceiver resampler. - perceiver_resampler_hidden_size (
int, opcional, padrão 64) — O tamanho oculto do perceiver resampler. - perceiver_resampler_mlp_intermediate_size (
int, opcional, padrão 256) — O tamanho intermediário da rede feedforward no perceiver resampler. - perceiver_resampler_num_attention_heads (
int, opcional, padrão 1) — O número de cabeças de atenção no perceiver resampler. - perceiver_resampler_attention_head_dim (
int, opcional, padrão 64) — A dimensão de cada cabeça de atenção no perceiver resampler. - perceiver_resampler_num_layers (
int, opcional, padrão 2) — O número de camadas no perceiver resampler. - perceiver_resampler_hidden_dropout (
float, opcional, padrão 0.0) — A taxa de dropout para as camadas ocultas no perceiver resampler. - perceiver_resampler_attention_dropout (
float, opcional, padrão 0.0) — A taxa de dropout para as camadas de atenção no perceiver resampler. - memory_encoder_hidden_size (
int, opcional, padrão 256) — Dimensão dos estados ocultos do codificador de memória. - memory_encoder_output_channels (
int, opcional, padrão 64) — O número de canais de saída para o codificador de memória. - mask_downsampler_embed_dim (
int, opcional, padrão 256) — A dimensão do embedding do downsampler de máscara. - memory_fuser_intermediate_dim (
int, opcional, padrão 1024) — A dimensão intermediária da rede feedforward do memory fuser. - mask_downsampler_kernel_size (
int, opcional, padrão 3) — O tamanho do kernel para o redutor de resolução da máscara. - mask_downsampler_stride (
int, opcional, padrão 2) — O stride para o downsampler de máscara. - mask_downsampler_padding (
int, opcional, padrão 1) — O padding para o downsampler da máscara. - mask_downsampler_total_stride (
int, opcional, padrão 16) — O stride total para o downsampler de máscara. - mask_downsampler_hidden_act (
str, opcional, padrão"gelu") — A função de ativação não linear no redutor de máscara. - memory_fuser_num_layers (
int, opcional, padrão 2) — O número de camadas no memory fuser. - memory_fuser_embed_dim (
int, opcional, padrão 256) — A dimensão do embedding do memory fuser. - memory_fuser_kernel_size (
int, opcional, padrão 7) — O tamanho do kernel para o memory fuser. - memory_fuser_padding (
int, opcional, padrão 3) — O padding para o memory fuser. - memory_fuser_layer_scale_init_value (
float, opcional, padrão 1e-06) — O valor inicial para a escala da camada no memory fuser. - memory_fuser_hidden_act (
str, opcional, padrão"gelu") — A função de ativação não linear no memory fuser.
Esta é a classe de configuração para armazenar a configuração de um EdgeTamVideoModel. Ela é usada para instanciar um modelo Edgetam 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 yonigozlan/EdgeTAM-hf
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 (
... EdgeTamVisionConfig,
... EdgeTamVideoPromptEncoderConfig,
... EdgeTamVideoMaskDecoderConfig,
... EdgeTamVideoModel,
... EdgeTamVideoConfig,
... )
>>> # Initializing a EdgeTamVideoConfig with `"facebook/edgetam.1_hiera_tiny"` style configuration
>>> configuration = EdgeTamVideoConfig()
>>> # Initializing a EdgeTamVideoModel (with random weights) from the `"facebook/edgetam.1_hiera_tiny"` style configuration
>>> model = EdgeTamVideoModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> # We can also initialize a EdgeTamConfig from a EdgeTamVisionConfig, EdgeTamPromptEncoderConfig, and EdgeTamMaskDecoderConfig
>>> # Initializing EDGETAM vision encoder, memory attention, and memory encoder configurations
>>> vision_config = EdgeTamVisionConfig()
>>> prompt_encoder_config = EdgeTamVideoPromptEncoderConfig()
>>> mask_decoder_config = EdgeTamVideoMaskDecoderConfig()
>>> config = EdgeTamVideoConfig(vision_config, prompt_encoder_config, mask_decoder_config)EdgeTamVideoInferenceSession
classe transformers.EdgeTamVideoInferenceSession
< source >( 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.
Adicione entradas de máscara com posicionamento automático de dispositivo.
Adicione um novo frame com posicionamento automático de dispositivo.
Adicione entradas de ponto com posicionamento automático de dispositivo.
Obter quadro do vídeo.
Obtenha o número total de ids de objetos únicos recebidos até o momento nesta sessão.
get_output
< source >( obj_idx: intframe_idx: intoutput_key: stris_conditioning_frame: bool = True )
Obtenha a saída com gerenciamento inteligente de dispositivos.
Mapeia o ID do objeto para o índice, criando uma nova entrada, se necessário.
Mapeia o índice do objeto no lado do modelo para o id do objeto no lado do cliente.
Remova as entradas de máscara.
Remova as entradas de ponto.
Redefinir os dados de rastreamento e o cache.
Redefinir os dados de rastreamento, mas manter o cache.
store_output
< source >( 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.
EdgeTamVideoModel
classe transformers.EdgeTamVideoModel
< source >( config: EdgeTamVideoConfig )
Parâmetros
- config (EdgeTamVideoConfig) — 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 Edgetam Video básico, que produz estados ocultos brutos sem nenhum cabeçalho 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
< source >( inference_session: EdgeTamVideoInferenceSessionframe_idx: int | None = Noneframe: typing.Optional[torch.Tensor] = Nonereverse: bool = False**kwargs ) → EdgeTamVideoSegmentationOutput or tuple(torch.Tensor)
Parâmetros
- inference_session (
~models.edgetam_video.modeling_edgetam_video.EdgeTamVideoInferenceSession) — 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ãoFalse) — Se deve propagar em sentido inverso.
Retorna
EdgeTamVideoSegmentationOutput ou tuple(torch.Tensor)
Um EdgeTamVideoSegmentationOutput 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 (EdgeTamVideoConfig) e das entradas.
Propague os objetos por meio de um quadro de vídeo transmitido.
- object_ids (
list[int], opcional) — Lista dos IDs de objetos rastreados no quadro atual. - pred_masks (
torch.Tensorde forma(batch_size, num_masks, height, width)) — As máscaras previstas armazenadas na resolução do modelo. - object_score_logits (
torch.Tensorde forma(batch_size,), opcional) — Logits para as pontuações dos objetos, indicando se os objetos estão presentes. - frame_idx (
int, opcional) — O índice do quadro do vídeo.
get_image_features
< source >( pixel_values: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → EdgeTamVideoVisionEncoderOutput or tuple(torch.Tensor)
Parâmetros
- pixel_values (
torch.Tensor) — Valores de pixels de entrada com forma(batch_size, num_channels, height, width).
Retorna
EdgeTamVideoVisionEncoderOutput ou tuple(torch.Tensor)
Um EdgeTamVideoVisionEncoderOutput 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 (EdgeTamVideoConfig) e das entradas.
last_hidden_state (
torch.Tensorde forma(batch_size, height, width, hidden_size)) — Sequência de estados ocultos na saída da última camada do modelo.pooler_output (
torch.Tensorde forma(batch_size, hidden_size)) — Estado oculto da última camada do primeiro token da sequência (token de classificação) após processamento adicional através das camadas usadas para a tarefa de pré-treinamento auxiliar. Por exemplo, para a família de modelos BERT, isso retorna o token de classificação após o processamento através de uma camada linear e uma função de ativação tanh. Os pesos da camada linear são treinados a partir do objetivo de previsão da próxima frase (classificação) durante o pré-treinamento.hidden_states (
tuple(torch.Tensor), opcional, retornado quandooutput_hidden_states=Trueé passado ou quandoconfig.output_hidden_states=True) — Tupla detorch.Tensor(um para a saída dos embeddings, se o modelo tiver uma camada de embedding, + um para a saída de cada camada) de forma(batch_size, sequence_length, hidden_size).Estados ocultos do modelo na saída de cada camada, além das saídas opcionais do embedding inicial.
attentions (
tuple(torch.Tensor), opcional, retornado quandooutput_attentions=Trueé passado ou quandoconfig.output_attentions=True) — Tupla detorch.Tensor(um para cada camada) com forma(batch_size, num_heads, sequence_length, sequence_length).Pesos de atenção após o softmax de atenção, usados para calcular a média ponderada nos cabeçalhos de autoatenção.
fpn_hidden_states (
tuple(torch.Tensor)) — Tupla detorch.Tensor(um para cada nível de recurso, da resolução mais alta para a mais baixa) com forma(batch_size, hidden_size, height, width). Mapas de recursos do pescoço da Feature Pyramid Network.fpn_position_encoding (
tuple(torch.Tensor)) — Tupla detorch.Tensor(um para cada nível de recurso, da resolução mais alta para a mais baixa) com forma(batch_size, hidden_size, height, width). Codificações posicionais correspondentes àsfpn_hidden_states.