Transformers documentation

SAM2 فيديو

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

تمت مساهمة هذا النموذج في Hugging Face Transformers في 2025-08-14.

SAM2 فيديو

SDPA FlashAttention

نظرة عامة

قُدِّم نموذج SAM2 (Segment Anything Model 2) في Segment Anything in Images and Videos من قِبل Nikhila Ravi وValentin Gabeur وYuan-Ting Hu وRonghang Hu وChaitanya Ryali وTengyu Ma وHaitham Khedr وRoman Rädle وChloe Rolland وLaura Gustafson وEric Mintun وJunting Pan وKalyan Vasudev Alwala وNicolas Carion وChao-Yuan Wu وRoss Girshick وPiotr Dollár وChristoph Feichtenhofer.

يمكن استخدام النموذج للتنبؤ بأقنعة التقسيم لأي كائن ذي اهتمام، وذلك بناءً على صورة أو فيديو مُدخل، ونقاط أو صناديق محيطة مُدخلة.

example image

المستخلص من الورقة البحثية هو كالتالي:

نقدّم نموذج Segment Anything Model 2 (SAM 2)، وهو نموذج أساسي يهدف إلى حل مشكلة التقطيع البصري التفاعلي في الصور والفيديوهات. قمنا ببناء محرك بيانات يحسّن النموذج والبيانات عبر تفاعل المستخدم، لجمع أكبر مجموعة بيانات للتقطيع الفيديوي حتى الآن. يعتمد نموذجنا على بنية تحويلية بسيطة مع ذاكرة تدفقية لمعالجة الفيديو في الوقت الفعلي. يوفر SAM 2 المدرَّب على بياناتنا أداءً قويًا عبر مجموعة واسعة من المهام. في التقطيع الفيديوي، نلاحظ دقة أعلى باستخدام تفاعلات أقل بثلاث مرات مقارنةً بالأساليب السابقة. وفي التقطيع الصوري، يكون نموذجنا أدق وأسرع بست مرات من نموذج Segment Anything Model (SAM). نعتقد أن بياناتنا ونموذجنا ورؤانا ستشكل محطة مهمة للتقطيع الفيديوي ومهام الإدراك ذات الصلة. سننشر نسخة من نموذجنا، ومجموعة البيانات، وعرضًا تفاعليًا.

نصائح:

  • دعم الدفعات والمقاطع المرئية: يدعم SAM2 معالجة الدفعات والتجزئة السلسة للمقاطع المرئية بشكل أصلي، بينما صُمم SAM الأصلي للصور الثابتة ومسارات العمل الأبسط التي تعالج صورة واحدة في كل مرة.
  • الدقة والتعميم: يُظهر SAM2 تحسناً في جودة التقطيع، والمتانة، والتعميم بدون تدريب مسبق على مجالات جديدة مقارنةً بالنموذج الأصلي SAM، لا سيما عند استخدام تلميحات مختلطة.

تمت مساهمة هذا النموذج من قِبَل sangbumchoi وyonigozlan. يمكن العثور على الكود الأصلي هنا.

مثال على الاستخدام

تجزئة الفيديو وتتبعه

تتمثل القوة الرئيسية لـ SAM2 في قدرته على تتبع الكائنات عبر إطارات الفيديو. فيما يلي كيفية استخدامه لتجزئة الفيديو:

تتبع الفيديو الأساسي

from transformers import Sam2VideoModel, Sam2VideoProcessor
import torch

model = Sam2VideoModel.from_pretrained("facebook/sam2.1-hiera-tiny", device_map="auto")
processor = Sam2VideoProcessor.from_pretrained("facebook/sam2.1-hiera-tiny")

# 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, 480, 854])

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

تتبع الفيديو متعدد الأهداف

تتبع عدة كائنات في وقت واحد عبر إطارات الفيديو:

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

تحسين تجزئة الفيديو

يمكنك إضافة نقرات إضافية على أي إطار لتحسين التتبع:

# 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

الاستدلال على الفيديو عبر البث

تدعم SAM2، في التطبيقات الفورية، معالجة إطارات الفيديو لحظة وصولها:

# 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}")

معالجة الدُفعات من الفيديو لعدة كائنات

تتبّع عدة كائنات في نفس الوقت داخل الفيديو عن طريق إضافتها جميعًا دفعة واحدة:

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

الموارد

قائمة بموارد رسمية من Hugging Face وموارد مجتمعية (مشار إليها بـ 🌎) لمساعدتك على البدء مع SAM.

Sam2VideoConfig

فئة transformers.Sam2VideoConfig

< >

( 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 = 4memory_attention_num_attention_heads: int = 1memory_attention_downsample_rate: int = 1memory_attention_feed_forward_hidden_size: int = 2048memory_attention_feed_forward_hidden_act: str = 'relu'memory_attention_dropout: float | int = 0.1memory_attention_rope_feat_sizes: list[int] | None = Nonememory_attention_rope_dropout: float | int = 0.1memory_encoder_hidden_size: int = 256memory_encoder_output_channels: int = 64rope_parameters: dict | None = Nonemask_downsampler_embed_dim: int = 256mask_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_intermediate_dim: int = 1024memory_fuser_kernel_size: int = 7memory_fuser_padding: int = 3memory_fuser_layer_scale_init_value: float = 1e-06memory_fuser_hidden_act: str = 'gelu' )

المعاملات

  • vision_config (Union[dict, ~configuration_utils.PreTrainedConfig], اختياري) — كائن الإعدادات أو قاموس العمود الفقري البصري.
  • prompt_encoder_config (Union[dict, Sam2PromptEncoderConfig], اختياري) — قاموس لخيارات التهيئة المستخدمة في تهيئة Sam2PromptEncoderConfig.
  • mask_decoder_config (Union[dict, Sam2MaskDecoderConfig], اختياري) — قائمة خيارات الإعدادات المستخدمة لتهيئة Sam2MaskDecoderConfig.
  • initializer_range (float، اختياري، القيمة الافتراضية 0.02) — الانحراف المعياري لتهيئة المعاملات.
  • num_maskmem (int، اختياري، القيمة الافتراضية 7) — عدد فتحات الذاكرة لذاكرة القناع.
  • image_size (Union[int, list[int], tuple[int, int]]، اختياري، القيمة الافتراضية 1024) — حجم (دقة) كل صورة.
  • sigmoid_scale_for_mem_enc (float, اختياري، القيمة الافتراضية 20.0) — معامل المقياس لدالة سيجمويد في مشفّر الذاكرة.
  • sigmoid_bias_for_mem_enc (float, اختياري، القيمة الافتراضية -10.0) — انحياز لدالة sigmoid في مشفّر الذاكرة.
  • enable_occlusion_spatial_embedding (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تفعيل التضمين المكاني للإخفاءات.
  • multimask_output_in_sam (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم إخراج أقنعة متعددة من رأس SAM.
  • multimask_min_pt_num (int، اختياري، القيمة الافتراضية 0) — الحد الأدنى لعدد النقاط اللازمة لتفعيل إخراج multimask.
  • multimask_max_pt_num (int، اختياري، القيمة الافتراضية 1) — الحد الأقصى لعدد النقاط التي تُطلق إخراج multimask.
  • multimask_output_for_tracking (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم استخدام مخرجات الأقنعة المتعددة للتتبع.
  • max_object_pointers_in_encoder (int، اختياري، القيمة الافتراضية 16) — الحد الأقصى لعدد مؤشرات الكائنات في المُشفِّر.
  • max_cond_frame_num (int، اختياري، القيمة الافتراضية -1) — الحد الأقصى لعدد إطارات الشرط المستخدمة في انتباه الذاكرة. اضبطه على -1 لاستخدام جميع إطارات الشرط.
  • enable_temporal_pos_encoding_for_object_pointers (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تفعيل الترميز الموضعي الزمني لمؤشرات الكائنات.
  • memory_attention_hidden_size (int, اختياري، القيمة الافتراضية 256) — أبعاد حالات الإخفاء لانتباه الذاكرة.
  • memory_attention_num_layers (int, اختياري، القيمة الافتراضية 4) — عدد الطبقات في وحدة انتباه الذاكرة.
  • memory_attention_num_attention_heads (int، اختياري، القيمة الافتراضية 1) — عدد رؤوس الانتباه لكل طبقة انتباه في انتباه الذاكرة.
  • memory_attention_downsample_rate (int، اختياري، القيمة الافتراضية 1) — معدل تقليل الدقة لطبقات الانتباه.
  • memory_attention_feed_forward_hidden_size (int, اختياري، القيمة الافتراضية 2048) — أبعاد الشبكة الأمامية في وحدة انتباه الذاكرة.
  • memory_attention_feed_forward_hidden_act (str، اختياري، القيمة الافتراضية "relu") — دالة التنشيط غير الخطية في الشبكة الأمامية داخل وحدة انتباه الذاكرة.
  • memory_attention_dropout (float, اختياري، القيمة الافتراضية 0.1) — معدل الإسقاط (dropout) لوحدة الانتباه الذاكري.
  • memory_attention_rope_feat_sizes (list[int]، اختياري، القيمة الافتراضية [64, 64]) — حجم الميزات لتشفير الموضع Rope.
  • memory_attention_rope_dropout (float, اختياري، القيمة الافتراضية 0.1) — معدل الإسقاط (dropout) لتشفير المواقع في Rope.
  • memory_encoder_hidden_size (int, اختياري، القيمة الافتراضية 256) — أبعاد حالات المخفي لمُشفِّر الذاكرة.
  • memory_encoder_output_channels (int، اختياري، القيمة الافتراضية 64) — عدد قنوات المخرج لمشفّر الذاكرة.
  • rope_parameters (dict, اختياري) — قاموس يحتوي على معاملات التهيئة الخاصة بتضمينات RoPE. يجب أن يحتوي القاموس على قيمة لـ rope_theta، ومعاملات اختيارية تُستخدم للتصحيح (scaling) في حال رغبتَ في استخدام RoPE مع max_position_embeddings أطول.
  • mask_downsampler_embed_dim (int، اختياري، القيمة الافتراضية 256) — أبعاد تضمين مُصغِّر القناع.
  • mask_downsampler_kernel_size (int, اختياري، القيمة الافتراضية 3) — حجم النواة لمُصغِّر القناع.
  • mask_downsampler_stride (int، اختياري، القيمة الافتراضية 2) — خطوة مُصغِّر القناع.
  • mask_downsampler_padding (int، اختياري، القيمة الافتراضية 1) — الحشو الخاص بمُصغِّر القناع.
  • mask_downsampler_total_stride (int، اختياري، القيمة الافتراضية 16) — الخطوة الكلية لمُصغِّر القناع.
  • mask_downsampler_hidden_act (str، اختياري، القيمة الافتراضية "gelu") — دالة التنشيط غير الخطية في مُصغِّر الأقنعة.
  • memory_fuser_num_layers (int, اختياري، القيمة الافتراضية 2) — عدد الطبقات في مدمج الذاكرة.
  • memory_fuser_embed_dim (int, اختياري، القيمة الافتراضية 256) — أبعاد طبقة التضمين في مدمج الذاكرة.
  • memory_fuser_intermediate_dim (int, اختياري، القيمة الافتراضية 1024) — أبعاد الطبقة الوسيطة في مدمج الذاكرة.
  • memory_fuser_kernel_size (int، اختياري، القيمة الافتراضية 7) — حجم النواة (kernel) لمدمج الذاكرة.
  • memory_fuser_padding (int, اختياري، القيمة الافتراضية 3) — الحشو الخاص بمدمج الذاكرة.
  • memory_fuser_layer_scale_init_value (float, اختياري، القيمة الافتراضية 1e-06) — القيمة الأولية لمقياس الطبقة في مدمج الذاكرة.
  • memory_fuser_hidden_act (str، اختياري، القيمة الافتراضية "gelu") — دالة التنشيط غير الخطية في مدمج الذاكرة.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Sam2VideoModel. تُستخدم لاستحداث نموذج Sam2 Video بناءً على الحُجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيُنتج إعدادات مشابهة لتلك الخاصة بـ facebook/sam2.1-hiera-tiny

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

مثال:

>>> from transformers import (
...     Sam2VisionConfig,
...     Sam2PromptEncoderConfig,
...     Sam2MaskDecoderConfig,
...     Sam2Model,
... )

>>> # Initializing a Sam2Config with `"facebook/sam2.1_hiera_tiny"` style configuration
>>> configuration = Sam2Config()

>>> # Initializing a Sam2Model (with random weights) from the `"facebook/sam2.1_hiera_tiny"` style configuration
>>> model = Sam2Model(configuration)

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

>>> # We can also initialize a Sam2Config from a Sam2VisionConfig, Sam2PromptEncoderConfig, and Sam2MaskDecoderConfig

>>> # Initializing SAM2 vision encoder, memory attention, and memory encoder configurations
>>> vision_config = Sam2VisionConfig()
>>> prompt_encoder_config = Sam2PromptEncoderConfig()
>>> mask_decoder_config = Sam2MaskDecoderConfig()

>>> config = Sam2Config(vision_config, prompt_encoder_config, mask_decoder_config)

Sam2VideoMaskDecoderConfig

فئة transformers.Sam2VideoMaskDecoderConfig

< >

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

المعاملات

  • hidden_size (int، اختياري، القيمة الافتراضية 256) — أبعاد التمثيلات المخفية.
  • hidden_act (str، اختياري، القيمة الافتراضية gelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، "gelu"، "relu"، "silu"، وما إلى ذلك.
  • mlp_dim (int، اختياري، القيمة الافتراضية 2048) — أبعاد شبكة MLP في محوّل الاتجاهين.
  • num_hidden_layers (int، اختياري، القيمة الافتراضية 2) — عدد الطبقات المخفية في مُفكِّك Transformer.
  • num_attention_heads (int، اختياري، القيمة الافتراضية 8) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer.
  • attention_downsample_rate (int, اختياري، القيمة الافتراضية 2) — معدل تقليل الدقة لطبقات الانتباه.
  • num_multimask_outputs (int، اختياري، القيمة الافتراضية 3) — عدد مخرجات multimask.
  • iou_head_depth (int، اختياري، القيمة الافتراضية 3) — عمق رأس IoU.
  • iou_head_hidden_dim (int، اختياري، القيمة الافتراضية 256) — البُعد الخفي لرأس IoU.
  • dynamic_multimask_via_stability (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم استخدام dynamic multimask عبر stability.
  • dynamic_multimask_stability_delta (float، اختياري، القيمة الافتراضية 0.05) — قيمة دلتا الاستقرار الخاصة بالقناع متعدد الطبقات الديناميكي.
  • dynamic_multimask_stability_thresh (float، اختياري، القيمة الافتراضية 0.98) — حد الاستقرار الخاص بـ dynamic multimask.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Sam2VideoModel. تُستخدم لاستحداث نموذج Sam2 Video وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ facebook/sam2_video.1-hiera-tiny

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

Sam2VideoPromptEncoderConfig

فئة transformers.Sam2VideoPromptEncoderConfig

< >

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

المعاملات

  • hidden_size (int، اختياري، القيمة الافتراضية 256) — أبعاد التمثيلات المخفية.
  • image_size (Union[int, list[int], tuple[int, int]]، اختياري، القيمة الافتراضية 1024) — حجم (دقة) كل صورة.
  • patch_size (Union[int, list[int], tuple[int, int]]، اختياري، القيمة الافتراضية 16) — حجم (دقة) كل رقعة.
  • mask_input_channels (int، اختياري، القيمة الافتراضية 16) — عدد القنوات التي تُمرَّر إلى وحدة MaskDecoder.
  • num_point_embeddings (int، اختياري، القيمة الافتراضية 4) — عدد تضمينات النقاط التي سيتم استخدامها.
  • hidden_act (str، اختياري، القيمة الافتراضية gelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، "gelu"، "relu"، "silu"، وما إلى ذلك.
  • layer_norm_eps (float, اختياري، القيمة الافتراضية 1e-06) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة.
  • scale (float، اختياري، القيمة الافتراضية 1) — معامل المقياس لمُشفِّر المُوجِّه.

هذه فئة الإعدادات المخزنة لإعدادات نموذج Sam2VideoModel. تُستخدم لاستحداث نموذج Sam2 Video وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ facebook/sam2_video.1-hiera-tiny

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

Sam2VideoProcessor

فئة transformers.Sam2VideoProcessor

< >

( image_processorvideo_processortarget_size: int | None = Nonepoint_pad_value: int = -10**kwargs )

المعاملات

  • image_processor (Sam2ImageProcessor) — معالج الصور هو مدخل إلزامي.
  • video_processor (Sam2VideoVideoProcessor) — معالج الفيديو هو مدخل إلزامي.
  • target_size (int, اختياري) — الحجم المستهدف (بالبكسل) لتطبيع نقاط الإدخال وصناديق الحدود. إذا لم يُقدَّم، فسيُستخدم حجم مُعالِج الصور الافتراضي. تُطبَّع جميع إحداثيات الإدخال (النقاط والصناديق) على هذا الحجم قبل تمريرها إلى النموذج. يضمن ذلك تمثيلاً متسقاً للإحداثيات بغض النظر عن أبعاد الصورة الأصلية.
  • point_pad_value (int، اختياري، القيمة الافتراضية -10) — القيمة المستخدمة لحشو نقاط الإدخال عند تجميع تسلسلات ذات أطوال مختلفة. تُستخدم هذه القيمة لتمييز المواضع المحشوّة وتُحافظ عليها أثناء تطبيع الإحداثيات.

ينشئ Sam2VideoProcessor الذي يجمع معالج الصور ومعالج الفيديو في معالج واحد.

يوفر Sam2VideoProcessor جميع وظائف Sam2ImageProcessor وSam2VideoVideoProcessor. راجع ~Sam2ImageProcessor و~Sam2VideoVideoProcessor لمزيد من المعلومات.

__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] = Noneinput_points: typing.Union[list[list[list[list[float]]]], torch.Tensor, NoneType] = Noneinput_labels: typing.Union[list[list[list[int]]], torch.Tensor, NoneType] = Noneinput_boxes: typing.Union[list[list[list[float]]], 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

المعاملات

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], اختياري) — الصورة التي سيتم معالجتها مسبقًا. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صورًا بقيم بكسل بين 0 و1، فاضبط do_rescale=False.
  • segmentation_maps (ImageInput، اختياري) — خرائط التقسيم المراد معالجتها.
  • input_points (list[list[list[list[float]]]]، torch.Tensor، اختياري) — النقاط التي يجب إضافتها إلى الإطار.
  • input_labels (list[list[list[int]]]، torch.Tensor، اختياري) — التسميات الخاصة بالنقاط.
  • input_boxes (list[list[list[float]]]، torch.Tensor، اختياري) — صناديق الحدود المراد إضافتها إلى الإطار.
  • original_sizes (list[list[float]]، torch.Tensor، اختياري) — الأحجام الأصلية للصور.
  • return_tensors (Union[str, ~utils.generic.TensorType], اختياري) — إذا تم تعيينه، فسيُرجع مُتجهات (tensors) لإطار عمل معين. القيم المقبولة هي:
    • 'pt': إرجاع كائنات torch.Tensor من PyTorch.
    • 'np': إرجاع كائنات np.ndarray من NumPy.

يعيد

BatchEncoding يحتوي على الحقول التالية

  • pixel_values (torch.Tensor): الصورة المعالجة أو الصور.
  • original_sizes (list[list[float]]): الأبعاد الأصلية للصور.
  • labels (torch.Tensor): خرائط التقسيم المعالجة (إذا تم توفيرها).
  • input_points (torch.Tensor): النقاط المعالجة.
  • input_labels (torch.Tensor): التسميات المعالجة.
  • input_boxes (torch.Tensor): صناديق الحدود المعالجة.

post_process_masks

< >

( masksoriginal_sizesmask_threshold = 0.0binarize = Truemax_hole_area = 0.0max_sprinkle_area = 0.0apply_non_overlapping_constraints = False**kwargs ) → (torch.Tensor)

المعاملات

  • masks (Union[List[torch.Tensor], List[np.ndarray]]) — أقنعة مُجمَّعة من mask_decoder بصيغة (batch_size, num_channels, height, width).
  • original_sizes (Union[torch.Tensor, List[Tuple[int,int]]]) — الأحجام الأصلية لكل صورة قبل إعادة تحجيمها إلى شكل الإدخال المتوقع للنموذج، بصيغة (الارتفاع، العرض).
  • mask_threshold (float, اختياري، القيمة الافتراضية 0.0) — العتبة الخاصة بعمليات التحويل إلى ثنائي ومعالجة ما بعد المعالجة.
  • binarize (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تحويل الأقنعة إلى قيم ثنائية.
  • max_hole_area (float، اختياري، القيمة الافتراضية 0.0) — الحد الأقصى لمساحة الثقب الذي سيتم ملؤه.
  • max_sprinkle_area (float، اختياري، القيمة الافتراضية 0.0) — الحد الأقصى لمساحة الرش التي يجب ملؤها.
  • apply_non_overlapping_constraints (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم تطبيق قيود عدم التداخل على الأقنعة.

يعيد

(torch.Tensor)

أقنعة مجمّعة (Batched masks) بصيغة batch_size, num_channels, height, width، حيث يُحدَّد (height, width) بواسطة original_size.

إزالة الحشو وتكبير الأقنعة إلى حجم الصورة الأصلي.

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 )

المعاملات

  • video (VideoInput، اختياري) — الفيديو المراد معالجته. لا حاجة إلى تقديمه عند البث.
  • inference_device (str أو torch.device، اختياري، القيمة الافتراضية هي “cpu”) — الجهاز المستخدم للاستدلال.
  • inference_state_device (str أو torch.device، اختياري) — الجهاز الذي يُحفظ عليه حالة الاستدلال.
  • processing_device (str أو torch.device، اختياري) — الجهاز المستخدم لمعالجة الفيديو.
  • video_storage_device (str أو torch.device، اختياري) — الجهاز الذي تُخزَّن عليه إطارات الفيديو بعد المعالجة.
  • max_vision_features_cache_size (int، اختياري، القيمة الافتراضية 1) — الحد الأقصى لعدد ميزات الرؤية التي يجب تخزينها مؤقتًا.
  • dtype (torch.dtype، اختياري، القيمة الافتراضية torch.float32) — نوع البيانات torch الذي سيُستخدم للجلسة بأكملها.

يُهيّئ جلسة فيديو للاستدلال. إذا تم توفير فيديو (استدلال غير متزامن)، فسيتم معالجة الفيديو وتخزينه على video_storage_device.

add_inputs_to_inference_session

< >

( inference_session: Sam2VideoInferenceSessionframe_idx: intobj_ids: list[int] | intinput_points: typing.Union[list[list[list[list[float]]]], torch.Tensor, NoneType] = Noneinput_labels: typing.Union[list[list[list[int]]], torch.Tensor, NoneType] = Noneinput_boxes: typing.Union[list[list[list[float]]], torch.Tensor, NoneType] = Noneinput_masks: typing.Union[numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor], NoneType] = Noneoriginal_size: tuple[int, int] | None = Noneclear_old_inputs: bool = True )

المعاملات

  • inference_session (Sam2VideoInferenceSession) — جلسة الاستدلال الخاصة بالفيديو.
  • frame_idx (int) — مؤشر الإطار المراد معالجته.
  • obj_ids (list[int] أو int) — المعرّف أو المعرّفات (object ID) التي يجب ربطها بالنقاط أو الصندوق. يمكن أن تكون هذه أرقامًا صحيحة أيًا كانت، ويمكن إعادة استخدامها لاحقًا لتحديد كائن معين.
  • input_points (list[list[list[list[float]]]]، torch.Tensor، اختياري) — النقاط التي يجب إضافتها إلى الإطار.
  • input_labels (list[list[list[int]]]، torch.Tensor، اختياري) — التسميات الخاصة بالنقاط.
  • input_boxes (list[list[list[float]]]، torch.Tensor، اختياري) — صناديق الحدود المراد إضافتها إلى الإطار.
  • input_masks (np.ndarray، أو torch.Tensor، أو list[np.ndarray]، أو list[torch.Tensor]، اختياري) — القناع (أو الأقنعة) الذي يُضاف إلى الإطار.
  • original_size (tuple[int, int]، اختياري) — الحجم الأصلي للفيديو. يُقدَّم عند البث.
  • clear_old_inputs (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم مسح المدخلات القديمة للكائن.

معالجة نقاط أو صناديق أو أقنعة جديدة لإطار فيديو وإضافتها إلى جلسة الاستدلال.

Sam2VideoVideoProcessor

فئة transformers.Sam2VideoVideoProcessor

< >

( **kwargs: *<class 'transformers.processing_utils.VideosKwargs'> )

المعاملات

  • do_convert_rgb (bool، kwargs، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تحويل الصورة إلى RGB.
  • do_resize (bool، kwargs، اختياري، القيمة الافتراضية True) — ما إذا كان يجب تغيير حجم الصورة.
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]، kwargs، القيمة الافتراضية {'height' -- 1024, 'width': 1024}): يصف الأبعاد القصوى للمدخلات إلى النموذج.
  • default_to_square (bool، kwargs، اختياري، القيمة الافتراضية True) — ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كانت قيمة size من نوع int.
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None]، kwargs، القيمة الافتراضية 2) — مرشّح إعادة العينة (Resampling filter) المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعداد PILImageResampling. لا يكون له أي تأثير إلا إذا كانت قيمة do_resize هي True.
  • do_rescale (bool، kwargs، اختياري، القيمة الافتراضية True) — ما إذا كان يجب إعادة تحجيم الصورة.
  • rescale_factor (float، kwargs، اختياري، القيمة الافتراضية 0.00392156862745098) — عامل إعادة التحجيم لإعادة تحجيم الصورة إذا كان do_rescale مضبوطًا على True.
  • do_normalize (bool، kwargs، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تطبيع الصورة.
  • image_mean (Union[float, list[float], tuple[float, ...]]، kwargs، اختياري، القيمة الافتراضية [0.485, 0.456, 0.406]) — متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين do_normalize إلى True.
  • image_std (Union[float, list[float], tuple[float, ...]]، kwargs، اختياري، القيمة الافتراضية [0.229, 0.224, 0.225]) — الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيين do_normalize إلى True.
  • do_center_crop (bool، kwargs، اختياري) — ما إذا كان يجب قص الصورة من المنتصف.
  • do_pad (bool، kwargs، اختياري) — ما إذا كان سيتم توسيط الصورة. يتم التوسيط إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية التوسيط الدقيقة على النموذج.
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — حجم الصورة الناتجة بعد تطبيق center_crop.
  • data_format (Union[str, ~image_utils.ChannelDimension]، kwargs، اختياري) — يُؤمَّن دعم ChannelDimension.FIRST فقط. أُضيف من أجل التوافق مع المعالجات البطيئة.
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, اختياري) — تنسيق بُعد القناة للصورة المدخلة. إذا لم يُضبط، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي:
    • "channels_first" أو ChannelDimension.FIRST: صورة بتنسيق (num_channels, height, width).
    • "channels_last" أو ChannelDimension.LAST: صورة بصيغة (الارتفاع، العرض، عدد القنوات).
    • "none" أو ChannelDimension.NONE: صورة بصيغة (الارتفاع، العرض).
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم تعيينه، يُستنتج الجهاز من مقاطع الفيديو المدخلة.
  • do_sample_frames (bool، kwargs، اختياري) — ما إذا كان يجب أخذ عينات من الإطارات من الفيديو قبل المعالجة، أم معالجة الفيديو بالكامل.
  • video_metadata (Annotated[~video_utils.VideoMetadata | dict | list[dict | ~video_utils.VideoMetadata] | list[list[dict | ~video_utils.VideoMetadata]] | None, None], kwargs) — بيانات وصفية للفيديو تتضمن معلومات عن المدة الإجمالية، ومعدل الإطارات في الثانية (fps)، والإجمالي عدد الإطارات. ستُستخدم هذه البيانات لعينة الإطارات من الفيديو أو لحساب الطوابع الزمنية. لا تقم بتمرير أي بيانات وصفية إلا إذا كنت تحاول فك ترميز الفيديو يدوياً قبل المعالجة.
  • fps (Annotated[int | float | None, None], kwargs) — عدد الإطارات المستهدفة التي يجب أخذها كل ثانية عند تعيين do_sample_frames=True.
  • num_frames (Annotated[int | None, None]، kwargs) — الحد الأقصى لعدد الإطارات التي يجب أخذها عينة عند تعيين do_sample_frames=True.
  • return_metadata (bool، kwargs، اختياري، القيمة الافتراضية False) — ما إذا كان يجب إرجاع بيانات وصفية للفيديو أم لا. بيانات الوصفية للفيديو هي كائن يحتوي على معلومات حول مدة الفيديو، ومعدل الإطارات في الثانية (fps)، وخلفية فك الترميز، وما إلى ذلك.
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — إذا تم ضبطه، فسيُعاد تينسورات من إطار عمل محدد. القيم المقبولة هي:
    • 'pt': إرجاع كائنات torch.Tensor من PyTorch.
    • 'np': إرجاع كائنات np.ndarray من NumPy.
  • **kwargs (VideosKwargs، اختياري) — خيارات معالجة إضافية لكل نمط (نص، صور، مقاطع فيديو، صوت). تُدرج المعلمات الخاصة بالنموذج أعلاه؛ راجع فئة TypedDict للحصول على القائمة الكاملة للحجج المدعومة.

ينشئ معالج فيديو من نوع Sam2VideoVideoProcessor.

post_process_masks

< >

( masksoriginal_sizesreshaped_input_sizesmask_threshold = 0.0binarize = Truepad_size = None ) → (torch.Tensor)

المعاملات

  • masks (Union[List[torch.Tensor], List[np.ndarray]]) — أقنعة مُجمَّعة من mask_decoder بصيغة (batch_size, num_channels, height, width).
  • original_sizes (Union[torch.Tensor, List[Tuple[int,int]]]) — الأحجام الأصلية لكل صورة قبل إعادة تحجيمها إلى شكل الإدخال المتوقع للنموذج، بصيغة (الارتفاع، العرض).
  • reshaped_input_sizes (Union[torch.Tensor, List[Tuple[int,int]]]) — حجم كل صورة كما تُغذّى إلى النموذج، بصيغة (الارتفاع، العرض). يُستخدم لإزالة الحشو.
  • mask_threshold (float، اختياري، القيمة الافتراضية 0.0) — العتبة المستخدمة لتحويل الأقنعة إلى قيم ثنائية.
  • binarize (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تحويل الأقنعة إلى قيم ثنائية.
  • pad_size (int، اختياري، القيمة الافتراضية self.pad_size) — الحجم المستهدف الذي تمت توسيطه (padding) إليه الصور قبل تمريرها إلى النموذج. إذا كانت القيمة None، يُفترض أن الحجم المستهدف هو pad_size الخاص بمعالج الصور.

يعيد

(torch.Tensor)

أقنعة مجمّعة (Batched masks) بصيغة batch_size, num_channels, height, width، حيث يُحدَّد (height, width) بواسطة original_size.

إزالة الحشو وتكبير الأقنعة إلى حجم الصورة الأصلي.

Sam2VideoInferenceSession

فئة transformers.Sam2VideoInferenceSession

< >

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

المعاملات

  • video (torch.Tensor، اختياري) — الفيديو المراد معالجته. لا حاجة إلى تقديمه عند البث.
  • video_height (int, اختياري) — ارتفاع الفيديو.
  • video_width (int، اختياري) — عرض الفيديو.
  • inference_device (torch.device، اختياري، القيمة الافتراضية "cpu") — الجهاز المستخدم للاستدلال.
  • inference_state_device (torch.device، اختياري، القيمة الافتراضية "cpu") — الجهاز الذي يُحفظ عليه حالة الاستدلال.
  • video_storage_device (torch.device، اختياري، القيمة الافتراضية "cpu") — الجهاز الذي يتم تخزين الفيديو عليه.
  • dtype (torch.dtype، اختياري، القيمة الافتراضية "float32") — نوع البيانات (dtype) المستخدم للفيديو.
  • max_vision_features_cache_size (int، اختياري، القيمة الافتراضية 1) — الحد الأقصى لعدد ميزات الرؤية التي يجب تخزينها مؤقتًا.

يدير معاملات جلسة الاستدلال على الفيديو وحالتها والذاكرة المؤقتة.

add_mask_inputs

< >

( obj_idx: intframe_idx: intinputs: Tensor )

أضف مدخلات الأقنعة مع تحديد تلقائي للأجهزة.

add_new_frame

< >

( pixel_values: Tensorframe_idx: int | None = None )

إضافة إطار جديد مع وضع تلقائي للأجهزة.

add_point_inputs

< >

( obj_idx: intframe_idx: intinputs: dict )

أضف مدخلات نقاط مع وضع تلقائي للأجهزة.

get_frame

< >

( frame_idx: int )

الحصول على إطار من الفيديو.

get_obj_num

< >

( )

احصل على العدد الإجمالي للمعرّفات الفريدة للأهداف التي تم استلامها حتى الآن في هذه الجلسة.

get_output

< >

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

المعاملات

  • obj_idx (int) — فهرس الكائن.
  • frame_idx (int) — فهرس الإطار.
  • output_key (str) — مفتاح المخرجات.
  • is_conditioning_frame (bool) — ما إذا كان المخرج مخصصًا لإطار تكييف.

احصل على المخرجات مع إدارة ذكية للأجهزة.

obj_id_to_idx

< >

( obj_id: int )

تعيين معرّف الكائن إلى الفهرس، مع إنشاء إدخال جديد عند الحاجة.

obj_idx_to_id

< >

( obj_idx: int )

تعيين فهرس الكائن على جانب النموذج إلى معرّف الكائن على جانب العميل.

remove_mask_inputs

< >

( obj_idx: intframe_idx: int )

إزالة مدخلات القناع.

remove_point_inputs

< >

( obj_idx: intframe_idx: int )

إزالة مدخلات النقاط.

reset_inference_session

< >

( )

إعادة تعيين بيانات التتبع والذاكرة المؤقتة.

reset_tracking_data

< >

( )

إعادة تعيين بيانات التتبع مع الاحتفاظ بالذاكرة المؤقتة.

store_output

< >

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

المعاملات

  • obj_idx (int) — فهرس الكائن.
  • frame_idx (int) — فهرس الإطار.
  • output_key (اختياري، str) — مفتاح المخرجات. إذا كان None، تُخزَّن المخرجات كقاموس.
  • output_value (Optional[Union[torch.Tensor, dict]]) — قيمة المخرجات.
  • is_conditioning_frame (bool) — ما إذا كان المخرج مخصصًا لإطار تكييف.

احفظ المخرجات مع إدارة ذكية للأجهزة. إذا كانت output_key تساوي None، يتم حفظ المخرجات كقاموس.

Sam2VideoModel

فئة transformers.Sam2VideoModel

< >

( config: Sam2VideoConfig )

المعاملات

  • config (Sam2VideoConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج Sam2 Video الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( inference_session: Sam2VideoInferenceSessionframe_idx: int | None = Noneframe: typing.Optional[torch.Tensor] = Nonereverse: bool = Falserun_mem_encoder: bool = True**kwargs ) → Sam2VideoSegmentationOutput or tuple(torch.Tensor)

المعاملات

  • inference_session (~models.sam2_video.modeling_sam2_video.Sam2VideoInferenceSession) — كائن جلسة الاستدلال على الفيديو.
  • frame_idx (int, اختياري) — مؤشر الإطار الذي سيتم عليه تشغيل الاستدلال. لا حاجة إلى تقديمه عند الاستدلال على إطار جديد تم بثه.
  • frame (torch.Tensor، اختياري) — الإطار المراد معالجته. يُقدَّم عند البث.
  • reverse (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب أن يتم التوزيع في الاتجاه العكسي.
  • run_mem_encoder (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تشغيل مُشفِّر الذاكرة على الأقنعة المتوقعة. يتم تجميع مُشفِّر الذاكرة عبر جميع الكائنات من أجل الكفاءة.

يعيد

Sam2VideoSegmentationOutput أو tuple(torch.Tensor)

Sam2VideoSegmentationOutput أو مجموعة مرتبة من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (Sam2VideoConfig) والمدخلات.

نشر الكائنات عبر إطار فيديو مُبَثّ.

  • object_ids (list[int]، اختياري) — قائمة بمعرّفات الكائنات التي يتم تتبعها في الإطار الحالي.
  • pred_masks (torch.Tensor من الشكل (batch_size, num_masks, height, width)) — الأقنعة المتوقعة المخزنة بدقة النموذج.
  • object_score_logits (torch.Tensor من الشكل (batch_size,)، اختياري) — قيم اللوجيت الخاصة بنقاط الكائنات، والتي تشير إلى ما إذا كانت الكائنات موجودة أم لا.
  • frame_idx (int, اختياري) — فهرس الإطار في الفيديو.

propagate_in_video_iterator

< >

( inference_session: Sam2VideoInferenceSessionstart_frame_idx: int | None = Nonemax_frame_num_to_track: int | None = Nonereverse: bool = Falseshow_progress_bar: bool = False ) → Sam2VideoSegmentationOutput or tuple(torch.Tensor)

المعاملات

  • inference_session (~models.sam2_video.modeling_sam2_video.Sam2VideoInferenceSession) — كائن جلسة الاستدلال على الفيديو.
  • start_frame_idx (int, اختياري) — مؤشر الإطار الابتدائي للانتشار. يجب تقديمه إذا لم يُستدعَ forward بعد على مدخلات جديدة. إذا لم يُقدَّم، فسيكون مؤشر الإطار الابتدائي هو الإطار الأقدم الذي يحتوي على نقاط مدخلات.
  • max_frame_num_to_track (int، اختياري) — الحد الأقصى لعدد الإطارات التي يجب تتبعها.
  • reverse (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب أن يتم التوزيع في الاتجاه العكسي.
  • show_progress_bar (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب عرض شريط تقدّم أثناء الانتشار.

يعيد

Sam2VideoSegmentationOutput أو tuple(torch.Tensor)

Sam2VideoSegmentationOutput أو مجموعة مرتبة من torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على الإعداد (Sam2VideoConfig) والمدخلات.

نشر الكائنات عبر إطارات الفيديو. يُستخدم عند تهيئة جلسة استنتاج مع فيديو كامل. يُنتج Sam2VideoSegmentationOutput لكل إطار.

  • object_ids (list[int]، اختياري) — قائمة بمعرّفات الكائنات التي يتم تتبعها في الإطار الحالي.
  • pred_masks (torch.Tensor من الشكل (batch_size, num_masks, height, width)) — الأقنعة المتوقعة المخزنة بدقة النموذج.
  • object_score_logits (torch.Tensor من الشكل (batch_size,)، اختياري) — قيم اللوجيت الخاصة بنقاط الكائنات، والتي تشير إلى ما إذا كانت الكائنات موجودة أم لا.
  • frame_idx (int, اختياري) — فهرس الإطار في الفيديو.

get_image_features

< >

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

المعاملات

  • pixel_values (torch.Tensor) — قيم البكسلات المدخلة ذات الشكل (batch_size, num_channels, height, width).

يعيد

Sam2VideoVisionEncoderOutput أو tuple(torch.Tensor)

Sam2VideoVisionEncoderOutput أو مجموعة مرتبة من torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على الإعدادات (Sam2VideoConfig) والمدخلات.

  • last_hidden_state (torch.Tensor من الشكل (batch_size, height, width, hidden_size)) — تسلسل من حالات الإخفاء عند مخرجات الطبقة الأخيرة من النموذج.

  • pooler_output (torch.Tensor من الشكل (batch_size, hidden_size)) — حالة الطبقة المخفية الأخيرة للرمز الأول من التسلسل (رمز التصنيف) بعد المعالجة الإضافية عبر الطبقات المستخدمة في مهمة ما قبل التدريب المساعدة. على سبيل المثال، بالنسبة لعائلة نماذج BERT، تُرجع هذه الخاصية رمز التصنيف بعد معالجته عبر طبقة خطية ودالة تفعيل tanh. تُدرَّب أوزان الطبقة الخطية من هدف التنبؤ بالجملة التالية (التصنيف) أثناء ما قبل التدريب.

  • hidden_states (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_hidden_states=True أو عند تعيين config.output_hidden_states=True) — مجموعة من torch.Tensor (واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) من الشكل (batch_size, sequence_length, hidden_size).

    حالات النموذج المخفية عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

  • attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  • fpn_hidden_states (tuple(torch.Tensor)) — مجموعة من torch.Tensor (واحدة لكل مستوى من مستويات الميزات، من الدقة العالية إلى المنخفضة) بأبعاد (batch_size, hidden_size, height, width). خرائط الميزات القادمة من عنق شبكة هرم الميزات (Feature Pyramid Network).

  • fpn_position_encoding (tuple(torch.Tensor)) — مجموعة من torch.Tensor (واحدة لكل مستوى من مستويات الميزات، من الدقة العالية إلى المنخفضة) بأبعاد (batch_size, hidden_size, height, width). ترميزات موضعية تتوافق مع fpn_hidden_states.

Update on GitHub