Transformers documentation

EdgeTAMVideo

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

Model ini dipublikasikan di HF papers pada 2025-01-13 dan disumbangkan ke Hugging Face Transformers pada 2025-09-29.

SDPA FlashAttention

EdgeTAMVideo

Ikhtisar

Model EdgeTAM diusulkan dalam 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 adalah adaptasi efisien dari SAM 2 yang memperkenalkan arsitektur 2D Spatial Perceiver untuk mengoptimalkan mekanisme perhatian memori bagi segmentasi video real-time pada perangkat mobile.

Abstrak dari makalah tersebut adalah sebagai berikut:

Di atas Segment Anything Model (SAM), SAM 2 lebih lanjut memperluas kemampuannya dari input gambar ke input video melalui mekanisme memory bank dan memperoleh kinerja yang luar biasa dibandingkan dengan metode sebelumnya, menjadikannya model fondasi untuk tugas segmentasi video. Dalam makalah ini, kami bertujuan untuk membuat SAM 2 jauh lebih efisien sehingga bahkan dapat berjalan pada perangkat seluler sambil mempertahankan kinerja yang sebanding. Meskipun ada beberapa karya yang mengoptimalkan SAM untuk efisiensi yang lebih baik, kami menemukan bahwa mereka tidak cukup untuk SAM 2 karena semuanya berfokus pada kompresi image encoder, sementara benchmark kami menunjukkan bahwa blok memory attention yang baru diperkenalkan juga merupakan bottleneck latensi. Mengingat observasi ini, kami mengusulkan EdgeTAM, yang memanfaatkan 2D Spatial Perceiver baru untuk mengurangi biaya komputasi. Secara khusus, 2D Spatial Perceiver yang diusulkan mengkodekan memori tingkat frame yang disimpan secara padat dengan Transformer ringan yang berisi himpunan tetap dari query yang dapat dipelajari. Mengingat segmentasi video adalah tugas prediksi padat, kami menemukan bahwa mempertahankan struktur spasial dari memori sangat penting sehingga query dipecah menjadi kelompok tingkat global dan tingkat patch. Kami juga mengusulkan pipeline distilasi yang lebih lanjut meningkatkan kinerja tanpa overhead inferensi. Akibatnya, EdgeTAM mencapai 87,7, 70,0, 72,3, dan 71,7 J&F pada DAVIS 2017, MOSE, SA-V val, dan SA-V test, sambil berjalan pada 16 FPS di iPhone 15 Pro Max.

Model ini disumbangkan oleh yonigozlan. Kode aslinya dapat ditemukan di sini.

Contoh penggunaan

Segmentasi dan Pelacakan Video

Kekuatan utama EdgeTAM Video adalah kemampuannya untuk melacak objek di antara bingkai video secara efisien pada perangkat mobile. Berikut cara menggunakannya untuk segmentasi video:

Pelacakan Video Dasar

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 frames

Pelacakan Video Multi-Objek

Lacak beberapa objek secara bersamaan di antara bingkai video:

# 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 frames

Menyempurnakan Segmentasi Video

Anda dapat menambahkan klik tambahan pada frame mana pun untuk menyempurnakan pelacakan:

# 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_masks

Inferensi Video Streaming

Untuk aplikasi real-time, EdgeTAM Video mendukung pemrosesan bingkai video saat mereka tiba:

# 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])
...

Pemrosesan Batch Video untuk Beberapa Objek

Lacak beberapa objek secara bersamaan dalam video dengan menambahkan semuanya sekaligus:

# 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 frames

EdgeTamVideoMaskDecoderConfig

kelas transformers.EdgeTamVideoMaskDecoderConfig

< >

( 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 )

Parameter

  • hidden_size (int, opsional, default 256) — Dimensi dari representasi tersembunyi.
  • hidden_act (str, opsional, defaultnya gelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya, "gelu", "relu", "silu", dan sebagainya.
  • mlp_dim (int, opsional, default 2048) — Dimensi dari MLP dalam transformer dua arah.
  • num_hidden_layers (int, opsional, default 2) — Jumlah lapisan tersembunyi dalam decoder Transformer.
  • num_attention_heads (int, opsional, default 8) — Jumlah attention heads untuk setiap lapisan attention di decoder Transformer.
  • attention_downsample_rate (int, opsional, default 2) — Rasio downsample untuk lapisan attention.
  • num_multimask_outputs (int, opsional, defaultnya 3) — Jumlah output multimask.
  • iou_head_depth (int, opsional, defaultnya 3) — Kedalaman dari IoU head.
  • iou_head_hidden_dim (int, opsional, default 256) — Dimensi tersembunyi dari kepala IoU.
  • dynamic_multimask_via_stability (bool, opsional, defaultnya True) — Apakah akan menggunakan dynamic multimask via stability.
  • dynamic_multimask_stability_delta (float, opsional, default 0.05) — Delta stabilitas untuk dynamic multimask.
  • dynamic_multimask_stability_thresh (float, opsional, default 0.98) — Ambang batas stabilitas untuk dynamic multimask.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari EdgeTamVideoModel. Kelas ini digunakan untuk membuat model Edgetam Video sesuai dengan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari yonigozlan/EdgeTAM-hf

Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.

EdgeTamVideoPromptEncoderConfig

kelas transformers.EdgeTamVideoPromptEncoderConfig

< >

( 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 )

Parameter

  • hidden_size (int, opsional, default 256) — Dimensi dari representasi tersembunyi.
  • image_size (Union[int, list[int], tuple[int, int]], opsional, defaultnya 1024) — Ukuran (resolusi) dari setiap gambar.
  • patch_size (Union[int, list[int], tuple[int, int]], opsional, defaultnya 16) — Ukuran (resolusi) dari setiap patch.
  • mask_input_channels (int, opsional, default 16) — Jumlah channel yang akan diberikan ke modul MaskDecoder.
  • num_point_embeddings (int, opsional, defaultnya 4) — Jumlah point embeddings yang akan digunakan.
  • hidden_act (str, opsional, defaultnya gelu) — Fungsi aktivasi non-linear (fungsi atau string) di decoder. Misalnya, "gelu", "relu", "silu", dan sebagainya.
  • layer_norm_eps (float, opsional, defaultnya 1e-06) — Epsilon yang digunakan oleh lapisan normalisasi lapisan.
  • scale (float, opsional, default 1) — Faktor skala untuk prompt encoder.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari EdgeTamVideoModel. Kelas ini digunakan untuk membuat model Edgetam Video sesuai dengan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari yonigozlan/EdgeTAM-hf

Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.

EdgeTamVideoConfig

kelas transformers.EdgeTamVideoConfig

< >

( 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' )

Parameter

  • vision_config (Union[dict, ~configuration_utils.PreTrainedConfig], opsional) — Objek config atau dictionary dari vision backbone.
  • prompt_encoder_config (Union[dict, EdgeTamVideoPromptEncoderConfig], opsional) — Kamus opsi konfigurasi yang digunakan untuk menginisialisasi EdgeTamVideoPromptEncoderConfig.
  • mask_decoder_config (Union[dict, EdgeTamVideoMaskDecoderConfig], opsional) — Kamus opsi konfigurasi yang digunakan untuk menginisialisasi EdgeTamMaskDecoderConfig.
  • initializer_range (float, opsional, defaultnya 0.02) — Standar deviasi dari truncated_normal_initializer untuk menginisialisasi semua matriks bobot.
  • num_maskmem (int, opsional, defaultnya 7) — Jumlah slot memori untuk memori mask.
  • image_size (Union[int, list[int], tuple[int, int]], opsional, defaultnya 1024) — Ukuran (resolusi) dari setiap gambar.
  • sigmoid_scale_for_mem_enc (float, opsional, default 20.0) — Faktor skala untuk fungsi sigmoid dalam memory encoder.
  • sigmoid_bias_for_mem_enc (float, opsional, default -10.0) — Bias untuk fungsi sigmoid dalam memory encoder.
  • enable_occlusion_spatial_embedding (bool, opsional, default True) — Apakah akan mengaktifkan spatial embedding untuk oklusi.
  • multimask_output_in_sam (bool, opsional, default True) — Apakah akan mengoutputkan beberapa mask dari head SAM.
  • multimask_min_pt_num (int, opsional, default 0) — Jumlah minimum titik untuk memicu output multimask.
  • multimask_max_pt_num (int, opsional, default 1) — Jumlah maksimum titik untuk memicu output multimask.
  • multimask_output_for_tracking (bool, opsional, defaultnya True) — Apakah akan menggunakan output multimask untuk pelacakan.
  • max_object_pointers_in_encoder (int, opsional, defaultnya 16) — Jumlah maksimum pointer objek dalam encoder.
  • max_cond_frame_num (int, opsional, default -1) — Jumlah maksimum frame conditioning yang digunakan dalam memori attention. Atur ke -1 untuk menggunakan semua frame conditioning.
  • enable_temporal_pos_encoding_for_object_pointers (bool, opsional, default True) — Apakah akan mengaktifkan temporal positional encoding untuk object pointers.
  • memory_attention_hidden_size (int, opsional, default 256) — Dimensi dari hidden states memori attention.
  • memory_attention_num_layers (int, opsional, defaultnya 2) — Jumlah lapisan dalam modul memory attention.
  • memory_attention_num_attention_heads (int, opsional, default 1) — Jumlah attention head untuk setiap lapisan attention dalam memory attention.
  • memory_attention_downsample_rate (int, opsional, default 1) — Laju downsample untuk lapisan attention.
  • memory_attention_mlp_hidden_size (int, opsional, default 2048) — Dimensi dari jaringan feedforward dalam modul memori perhatian.
  • memory_attention_mlp_hidden_act (str, opsional, defaultnya "relu") — Fungsi aktivasi non-linear dalam jaringan feedforward di modul memory attention.
  • memory_attention_dropout (float, opsional, default 0.1) — Tingkat dropout untuk modul memory attention.
  • memory_attention_rope_feat_sizes (Tuple[int, int], opsional, default [64, 64]) — Ukuran fitur untuk encoding posisi Rope.
  • memory_attention_rope_k_sizes (List[int], opsional, default [16, 16]) — Ukuran fitur kunci untuk encoding posisi RoPE dalam memory attention.
  • memory_attention_rope_dropout (float, opsional, default 0.1) — Tingkat dropout untuk pengkodean posisi Rope.
  • rope_parameters (dict, opsional) — Kamus yang berisi parameter konfigurasi untuk embedding RoPE. Kamus tersebut harus berisi nilai untuk rope_theta dan secara opsional parameter yang digunakan untuk penskalaan jika Anda ingin menggunakan RoPE dengan max_position_embeddings yang lebih panjang.
  • perceiver_resampler_num_latents (int, opsional, default 256) — Jumlah token laten 1D dalam perceiver resampler.
  • perceiver_resampler_num_latents_2d (int, opsional, defaultnya 256) — Jumlah token laten 2D dalam perceiver resampler.
  • perceiver_resampler_hidden_size (int, opsional, default 64) — Ukuran tersembunyi dari perceiver resampler.
  • perceiver_resampler_mlp_intermediate_size (int, opsional, default 256) — Ukuran intermediate dari jaringan feedforward dalam perceiver resampler.
  • perceiver_resampler_num_attention_heads (int, opsional, default 1) — Jumlah kepala perhatian dalam perceiver resampler.
  • perceiver_resampler_attention_head_dim (int, opsional, default 64) — Dimensi setiap kepala perhatian dalam perceiver resampler.
  • perceiver_resampler_num_layers (int, opsional, defaultnya 2) — Jumlah lapisan dalam perceiver resampler.
  • perceiver_resampler_hidden_dropout (float, opsional, default 0.0) — Tingkat dropout untuk lapisan tersembunyi dalam perceiver resampler.
  • perceiver_resampler_attention_dropout (float, opsional, default 0.0) — Tingkat dropout untuk lapisan attention dalam perceiver resampler.
  • memory_encoder_hidden_size (int, opsional, default 256) — Dimensi dari hidden states memory encoder.
  • memory_encoder_output_channels (int, opsional, defaultnya 64) — Jumlah saluran keluar untuk memory encoder.
  • mask_downsampler_embed_dim (int, opsional, default 256) — Dimensi dari embedding mask downsampler.
  • memory_fuser_intermediate_dim (int, opsional, default 1024) — Dimensi antara dari jaringan feedforward memory fuser.
  • mask_downsampler_kernel_size (int, opsional, default 3) — Ukuran kernel untuk downsampler mask.
  • mask_downsampler_stride (int, opsional, defaultnya 2) — Stride untuk mask downsampler.
  • mask_downsampler_padding (int, opsional, defaultnya 1) — Padding untuk mask downsampler.
  • mask_downsampler_total_stride (int, opsional, default 16) — Stride total untuk mask downsampler.
  • mask_downsampler_hidden_act (str, opsional, defaultnya "gelu") — Fungsi aktivasi non-linear pada mask downsampler.
  • memory_fuser_num_layers (int, opsional, defaultnya 2) — Jumlah lapisan dalam memory fuser.
  • memory_fuser_embed_dim (int, opsional, default 256) — Dimensi dari embedding memory fuser.
  • memory_fuser_kernel_size (int, opsional, defaultnya 7) — Ukuran kernel untuk memory fuser.
  • memory_fuser_padding (int, opsional, defaultnya 3) — Padding untuk memory fuser.
  • memory_fuser_layer_scale_init_value (float, opsional, default 1e-06) — Nilai awal untuk skala layer dalam memory fuser.
  • memory_fuser_hidden_act (str, opsional, default "gelu") — Fungsi aktivasi non-linear dalam memory fuser.

Ini adalah kelas konfigurasi untuk menyimpan konfigurasi dari EdgeTamVideoModel. Kelas ini digunakan untuk membuat model Edgetam Video sesuai dengan argumen yang ditentukan, yang mendefinisikan arsitektur model. Membuat konfigurasi dengan nilai bawaan akan menghasilkan konfigurasi yang serupa dengan konfigurasi dari yonigozlan/EdgeTAM-hf

Objek konfigurasi mewarisi dari PreTrainedConfig dan dapat digunakan untuk mengontrol output model. Baca dokumentasi dari PreTrainedConfig untuk informasi lebih lanjut.

Contoh:

>>> 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

kelas transformers.EdgeTamVideoInferenceSession

< >

( 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 )

Parameter

  • video (torch.Tensor, opsional) — Video yang akan diproses. Tidak perlu disediakan saat streaming.
  • video_height (int, opsional) — Tinggi video.
  • video_width (int, opsional) — Lebar video.
  • inference_device (torch.device, opsional, default "cpu") — Perangkat yang digunakan untuk inferensi.
  • inference_state_device (torch.device, opsional, default "cpu") — Perangkat untuk menyimpan state inferensi.
  • video_storage_device (torch.device, opsional, default "cpu") — Perangkat untuk menyimpan video.
  • dtype (torch.dtype, opsional, defaultnya "float32") — dtype yang akan digunakan untuk video.
  • max_vision_features_cache_size (int, opsional, default 1) — Jumlah maksimum fitur visual yang akan di-cache.

Mengelola parameter, status, dan cache sesi inferensi video.

add_mask_inputs

< >

( obj_idx: intframe_idx: intinputs: Tensor )

Tambahkan input mask dengan penempatan perangkat otomatis.

add_new_frame

< >

( pixel_values: Tensorframe_idx: int | None = None )

Tambahkan frame baru dengan penempatan perangkat otomatis.

add_point_inputs

< >

( obj_idx: intframe_idx: intinputs: dict )

Tambahkan input titik dengan penempatan perangkat otomatis.

get_frame

< >

( frame_idx: int )

Ambil frame dari video.

get_obj_num

< >

( )

Dapatkan jumlah total id objek unik yang diterima sejauh ini dalam sesi ini.

get_output

< >

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

Parameter

  • obj_idx (int) — Indeks dari objek.
  • frame_idx (int) — Indeks dari frame.
  • output_key (str) — Kunci dari output.
  • is_conditioning_frame (bool) — Apakah output tersebut untuk frame conditioning.

Dapatkan output dengan manajemen perangkat pintar.

obj_id_to_idx

< >

( obj_id: int )

Petakan ID objek ke indeks, buat entri baru jika diperlukan.

obj_idx_to_id

< >

( obj_idx: int )

Petakan indeks objek sisi model ke id objek sisi klien.

remove_mask_inputs

< >

( obj_idx: intframe_idx: int )

Hapus input mask.

remove_point_inputs

< >

( obj_idx: intframe_idx: int )

Hapus input titik.

reset_inference_session

< >

( )

Reset data pelacakan dan cache.

reset_tracking_data

< >

( )

Reset data pelacakan tetapi pertahankan cache.

store_output

< >

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

Parameter

  • obj_idx (int) — Indeks dari objek.
  • frame_idx (int) — Indeks dari frame.
  • output_key (Optional[str]) — Kunci dari output. Jika None, output disimpan sebagai kamus.
  • output_value (Optional[Union[torch.Tensor, dict]]) — Nilai dari output.
  • is_conditioning_frame (bool) — Apakah output tersebut untuk frame conditioning.

Simpan output dengan manajemen perangkat yang cerdas. Jika output_key adalah None, output disimpan sebagai kamus.

EdgeTamVideoModel

kelas transformers.EdgeTamVideoModel

< >

( config: EdgeTamVideoConfig )

Parameter

  • config (EdgeTamVideoConfig) — Kelas konfigurasi model dengan semua parameter model. Inisialisasi dengan file konfigurasi tidak memuat bobot yang terkait dengan model, hanya konfigurasinya. Lihat metode from_pretrained() untuk memuat bobot model.

Model Edgetam Video polos yang menghasilkan hidden-states mentah tanpa head spesifik di atasnya.

Model ini mewarisi dari PreTrainedModel. Periksa dokumentasi kelas induk untuk metode generik yang diimplementasikan oleh pustaka untuk semua model (seperti mengunduh atau menyimpan, mengubah ukuran embedding input, memangkas kepala, dll.)

Model ini juga merupakan subclass dari torch.nn.Module PyTorch. Gunakan sebagai PyTorch Module biasa dan merujuk ke dokumentasi PyTorch untuk semua hal yang berkaitan dengan penggunaan dan perilaku umum.

forward

< >

( inference_session: EdgeTamVideoInferenceSessionframe_idx: int | None = Noneframe: typing.Optional[torch.Tensor] = Nonereverse: bool = False**kwargs ) → EdgeTamVideoSegmentationOutput or tuple(torch.Tensor)

Parameter

  • inference_session (~models.edgetam_video.modeling_edgetam_video.EdgeTamVideoInferenceSession) — Objek sesi inferensi video.
  • frame_idx (int, opsional) — Indeks frame tempat inferensi dijalankan. Tidak perlu disediakan saat melakukan inferensi pada frame streaming baru.
  • frame (torch.Tensor, opsional) — Frame yang akan diproses. Berikan saat streaming.
  • reverse (bool, opsional, default False) — Apakah akan melakukan propagasi secara terbalik.

Mengembalikan

EdgeTamVideoSegmentationOutput atau tuple(torch.Tensor)

EdgeTamVideoSegmentationOutput atau tuple dari torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (EdgeTamVideoConfig) dan input.

Propagasi objek melalui bingkai video yang dialirkan.

  • object_ids (list[int], opsional) — Daftar ID objek yang dilacak pada frame saat ini.
  • pred_masks (torch.Tensor dengan bentuk (batch_size, num_masks, height, width)) — Mask yang diprediksi dan disimpan pada resolusi model.
  • object_score_logits (torch.Tensor dengan bentuk (batch_size,), opsional) — Logits untuk skor objek, yang menunjukkan apakah objek hadir.
  • frame_idx (int, opsional) — Indeks frame dari video.

get_image_features

< >

( pixel_values: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → EdgeTamVideoVisionEncoderOutput or tuple(torch.Tensor)

Parameter

  • pixel_values (torch.Tensor) — Nilai piksel input dengan bentuk (batch_size, num_channels, height, width).

Mengembalikan

EdgeTamVideoVisionEncoderOutput atau tuple(torch.Tensor)

EdgeTamVideoVisionEncoderOutput atau tuple dari torch.Tensor (jika return_dict=False diteruskan atau ketika config.return_dict=False) yang terdiri dari berbagai elemen tergantung pada konfigurasi (EdgeTamVideoConfig) dan input.

  • last_hidden_state (torch.Tensor dengan bentuk (batch_size, height, width, hidden_size)) — Urutan hidden-states pada output dari lapisan terakhir model.

  • pooler_output (torch.Tensor dengan bentuk (batch_size, hidden_size)) — Hidden-state lapisan terakhir dari token pertama dalam urutan (token klasifikasi) setelah diproses lebih lanjut melalui lapisan yang digunakan untuk tugas pra-pelatihan tambahan. Misalnya, untuk keluarga model BERT, ini mengembalikan token klasifikasi setelah diproses melalui lapisan linear dan fungsi aktivasi tanh. Bobot lapisan linear dilatih dari tujuan prediksi kalimat berikutnya (klasifikasi) selama pra-pelatihan.

  • hidden_states (tuple(torch.Tensor), opsional, dikembalikan saat output_hidden_states=True dilewatkan atau saat config.output_hidden_states=True) — Tuple dari torch.Tensor (satu untuk output dari embeddings, jika model memiliki lapisan embedding, + satu untuk output dari setiap lapisan) dengan bentuk (batch_size, sequence_length, hidden_size).

    Hidden-states model pada output setiap layer ditambah output embedding awal yang opsional.

  • attentions (tuple(torch.Tensor), opsional, dikembalikan saat output_attentions=True dilewatkan atau saat config.output_attentions=True) — Tuple dari torch.Tensor (satu untuk setiap layer) dengan bentuk (batch_size, num_heads, sequence_length, sequence_length).

    Bobot perhatian setelah softmax perhatian, digunakan untuk menghitung rata-rata berbobot di kepala perhatian diri (self-attention).

  • fpn_hidden_states (tuple(torch.Tensor)) — Tuple dari torch.Tensor (satu untuk setiap level fitur, dari resolusi tinggi ke rendah) dengan bentuk (batch_size, hidden_size, height, width). Peta fitur dari leher Feature Pyramid Network.

  • fpn_position_encoding (tuple(torch.Tensor)) — Tuple dari torch.Tensor (satu untuk setiap level fitur, dari resolusi tinggi ke rendah) dengan bentuk (batch_size, hidden_size, height, width). Encoding posisi yang sesuai dengan fpn_hidden_states.

Update on GitHub