# SAM2 فيديو

    
        
        
    

## نظرة عامة

SAM2 قُدِّم (Segment Anything Model 2) في [Segment Anything in Images and Videos](https://ai.meta.com/research/publications/sam-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](https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/sam2_header.gif)

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

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

نصائح:

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

تمت مساهمة هذا النموذج من قِبَل [sangbumchoi](https://github.com/SangbumChoi) و [yonigozlan](https://huggingface.co/yonigozlan). يمكن العثور على الكود الأصلي [هنا](https://github.com/facebookresearch/sam2/tree/main).

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

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

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

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

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

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

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

```python
# 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
```

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

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

```python
# 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، في التطبيقات الفورية، معالجة إطارات الفيديو لحظة وصولها:

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

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

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

```python
# 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.

- [دفتر ملاحظات تجريبي 🌎](https://colab.research.google.com/drive/1Z0NGLE7p8qnc9UpuI8KBETHd2xBbOEhv?usp=sharing) لاستخدام النموذج، ساهم به [Sangbum Choi](https://github.com/SangbumChoi).

## Sam2VideoConfig[[transformers.Sam2VideoConfig]]

#### transformers.Sam2VideoConfig[[transformers.Sam2VideoConfig]]

```python
transformers.Sam2VideoConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, prompt_encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, mask_decoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, initializer_range: float = 0.02, num_maskmem: int = 7, image_size: int | list[int] | tuple[int, int] = 1024, sigmoid_scale_for_mem_enc: float = 20.0, sigmoid_bias_for_mem_enc: float = -10.0, enable_occlusion_spatial_embedding: bool = True, multimask_output_in_sam: bool = True, multimask_min_pt_num: int = 0, multimask_max_pt_num: int = 1, multimask_output_for_tracking: bool = True, max_object_pointers_in_encoder: int = 16, max_cond_frame_num: int = -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 | int = 0.1, memory_attention_rope_feat_sizes: list[int] | None = None, memory_attention_rope_dropout: float | int = 0.1, memory_encoder_hidden_size: int = 256, memory_encoder_output_channels: int = 64, rope_parameters: dict | None = None, 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, memory_fuser_padding: int = 3, memory_fuser_layer_scale_init_value: float = 1e-06, memory_fuser_hidden_act: str = 'gelu')
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/configuration_sam2_video.py#L96)

**المعاملات:**

vision_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`، *اختياري*) : كائن الإعداد أو قاموس العمود الفقري البصري.

prompt_encoder_config (Union[`dict`, `Sam2PromptEncoderConfig`], *اختياري*) : قاموس لخيارات التهيئة المستخدمة لتبني [Sam2PromptEncoderConfig](/docs/transformers/main/ar/model_doc/sam2#transformers.Sam2PromptEncoderConfig).

mask_decoder_config (Union[`dict`, `Sam2MaskDecoderConfig`], *اختياري*) : قاموس لخيارات التهيئة المستخدمة لتبني [Sam2MaskDecoderConfig](/docs/transformers/main/ar/model_doc/sam2#transformers.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) : انحياز لدالة سيجمويد في مُشفِّر الذاكرة.

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`، ومعاملات اختيارية تُستخدم للتصعيد في حال رغبتك في استخدام RoPE مع `max_position_embeddings` أطول.

mask_downsampler_embed_dim (`int`، *اختياري*، القيمة الافتراضية 256) : بُعد تضمين مُصغِّر القناع.

mask_downsampler_kernel_size (`int`، *اختياري*، القيمة الافتراضية 3) : حجم النواة (kernel) لمُصغِّر القناع (mask downsampler).

mask_downsampler_stride (`int`، *اختياري*، القيمة الافتراضية 2) : خطوة (stride) لمُصغِّر القناع (mask downsampler).

mask_downsampler_padding (`int`، *اختياري*، القيمة الافتراضية 1) : الحشو الخاص بمُصغِّر القناع.

mask_downsampler_total_stride (`int`، *اختياري*، القيمة الافتراضية 16) : إجمالي الخطوة (stride) لمُصغِّر القناع (mask downsampler).

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) : حجم النواة لمدمج الذاكرة.

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](https://huggingface.co/facebook/sam2.1-hiera-tiny)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

مثال:

```python
>>> 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.Sam2VideoMaskDecoderConfig[[transformers.Sam2VideoMaskDecoderConfig]]

```python
transformers.Sam2VideoMaskDecoderConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, hidden_size: int = 256, hidden_act: str = 'gelu', mlp_dim: int = 2048, num_hidden_layers: int = 2, num_attention_heads: int = 8, attention_downsample_rate: int = 2, num_multimask_outputs: int = 3, iou_head_depth: int = 3, iou_head_hidden_dim: int = 256, dynamic_multimask_via_stability: bool = True, dynamic_multimask_stability_delta: float = 0.05, dynamic_multimask_stability_thresh: float = 0.98)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/configuration_sam2_video.py#L57)

**المعاملات:**

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_delta (`float`، *اختياري*، القيمة الافتراضية 0.05) : دلتا الاستقرار للقناع متعدد الطبقات الديناميكي.

dynamic_multimask_stability_thresh (`float`، *اختياري*، القيمة الافتراضية 0.98) : عتبة الاستقرار للقناع متعدد الطبقات الديناميكي.

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

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

## Sam2VideoPromptEncoderConfig[[transformers.Sam2VideoPromptEncoderConfig]]

#### transformers.Sam2VideoPromptEncoderConfig[[transformers.Sam2VideoPromptEncoderConfig]]

```python
transformers.Sam2VideoPromptEncoderConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, hidden_size: int = 256, image_size: int | list[int] | tuple[int, int] = 1024, patch_size: int | list[int] | tuple[int, int] = 16, mask_input_channels: int = 16, num_point_embeddings: int = 4, hidden_act: str = 'gelu', layer_norm_eps: float = 1e-06, scale: int = 1)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/configuration_sam2_video.py#L32)

**المعاملات:**

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](https://huggingface.co/facebook/sam2_video.1-hiera-tiny)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

## Sam2VideoProcessor[[transformers.Sam2VideoProcessor]]

#### transformers.Sam2VideoProcessor[[transformers.Sam2VideoProcessor]]

```python
transformers.Sam2VideoProcessor(image_processor, video_processor, target_size: int | None = None, point_pad_value: int = -10, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/processing_sam2_video.py#L37)

**المعاملات:**

image_processor (`Sam2ImageProcessor`) : مُعالج الصور هو مدخل مطلوب.

video_processor (`Sam2VideoVideoProcessor`) : معالج الفيديو هو مدخل مطلوب.

target_size (`int`, *اختياري*) : الحجم المستهدف (بالبكسل) لتطبيع نقاط الإدخال وصناديق الحدود. إذا لم يُقدَّم، فسيتم افتراضيًا استخدام إعداد الحجم الخاص بمعالج الصور. تُطبَّع جميع إحداثيات الإدخال (النقاط والصناديق) إلى هذا الحجم قبل تمريرها إلى النموذج. يضمن ذلك تمثيلًا متسقًا للإحداثيات بغض النظر عن أبعاد الصورة الأصلية.

point_pad_value (`int`, *اختياري*، القيمة الافتراضية -10) : القيمة المستخدمة لحشو نقاط الإدخال عند تجميع تسلسلات بطول مختلف. تُستخدم هذه القيمة لتمييز المواضع المحشوة وتُحافظ عليها أثناء تطبيع الإحداثيات.

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

يوفر [Sam2VideoProcessor](/docs/transformers/main/ar/model_doc/sam2_video#transformers.Sam2VideoProcessor) جميع وظائف [Sam2ImageProcessor](/docs/transformers/main/ar/model_doc/sam2#transformers.Sam2ImageProcessor) و[Sam2VideoVideoProcessor](/docs/transformers/main/ar/model_doc/sam2_video#transformers.Sam2VideoVideoProcessor). راجع [~Sam2ImageProcessor](/docs/transformers/main/ar/model_doc/sam2#transformers.Sam2ImageProcessor) و[~Sam2VideoVideoProcessor](/docs/transformers/main/ar/model_doc/sam2_video#transformers.Sam2VideoVideoProcessor) لمزيد من المعلومات.

#### __call__[[transformers.Sam2VideoProcessor.__call__]]

```python
__call__(images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None, segmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None, input_points: typing.Union[list[list[list[list[float]]]], torch.Tensor, NoneType] = None, input_labels: typing.Union[list[list[list[int]]], torch.Tensor, NoneType] = None, input_boxes: typing.Union[list[list[list[float]]], torch.Tensor, NoneType] = None, original_sizes: typing.Union[list[list[float]], torch.Tensor, NoneType] = None, return_tensors: str | transformers.utils.generic.TensorType | None = None, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/processing_sam2_video.py#L55)

**المعاملات:**

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](/docs/transformers/main/ar/main_classes/tokenizer#transformers.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[[transformers.Sam2VideoProcessor.post_process_masks]]

```python
post_process_masks(masks, original_sizes, mask_threshold = 0.0, binarize = True, max_hole_area = 0.0, max_sprinkle_area = 0.0, apply_non_overlapping_constraints = False, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/processing_sam2_video.py#L461)

**المعاملات:**

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[[transformers.Sam2VideoProcessor.init_video_session]]

```python
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] = None, inference_device: typing.Union[str, ForwardRef('torch.device')] = 'cpu', inference_state_device: typing.Union[str, ForwardRef('torch.device'), NoneType] = None, processing_device: typing.Union[str, ForwardRef('torch.device'), NoneType] = None, video_storage_device: typing.Union[str, ForwardRef('torch.device'), NoneType] = None, max_vision_features_cache_size: int = 1, dtype: dtype = torch.float32)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/processing_sam2_video.py#L512)

**المعاملات:**

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[[transformers.Sam2VideoProcessor.add_inputs_to_inference_session]]

```python
add_inputs_to_inference_session(inference_session: Sam2VideoInferenceSession, frame_idx: int, obj_ids: list[int] | int, input_points: typing.Union[list[list[list[list[float]]]], torch.Tensor, NoneType] = None, input_labels: typing.Union[list[list[list[int]]], torch.Tensor, NoneType] = None, input_boxes: typing.Union[list[list[list[float]]], torch.Tensor, NoneType] = None, input_masks: typing.Union[numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor], NoneType] = None, original_size: tuple[int, int] | None = None, clear_old_inputs: bool = True)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/processing_sam2_video.py#L565)

**المعاملات:**

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

#### transformers.Sam2VideoVideoProcessor[[transformers.Sam2VideoVideoProcessor]]

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

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/video_processing_sam2_video.py#L27)

**المعاملات:**

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`) : ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كان الحجم من نوع عدد صحيح.

resample (`Annotated[Union[int, PILImageResampling, NoneType], None]`، *kwargs*، القيمة الافتراضية `2`) : مرشح إعادة العينة المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعداد `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`: صورة بتنسيق (height, width, num_channels). - `"none"` أو `ChannelDimension.NONE`: صورة بتنسيق (height, width).

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`) : ما إذا كان يجب إرجاع بيانات وصفية للفيديو أم لا. بيانات الوصفية للفيديو هي كائن يحتوي على معلومات حول مدة الفيديو، ومعدل الإطارات، وخلفية فك الترميز، وما إلى ذلك.

return_tensors (`Annotated[str | ~utils.generic.TensorType | None, None]`, *kwargs*) : إذا تم ضبطه، فسيُرجع تينسورات من إطار عمل محدد. القيم المقبولة هي: - `'pt'`: يُرجع كائنات `torch.Tensor` من PyTorch. - `'np'`: يُرجع كائنات `np.ndarray` من NumPy.

- ****kwargs** ([VideosKwargs](/docs/transformers/main/ar/main_classes/processors#transformers.VideosKwargs)، *اختياري*) : خيارات معالجة إضافية لكل نمط (نص، صور، مقاطع فيديو، صوت). تُدرج المعلمات الخاصة بالنموذج أعلاه؛ راجع فئة TypedDict للحصول على القائمة الكاملة للحجج المدعومة.

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

#### post_process_masks[[transformers.Sam2VideoVideoProcessor.post_process_masks]]

```python
post_process_masks(masks, original_sizes, reshaped_input_sizes, mask_threshold = 0.0, binarize = True, pad_size = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/video_processing_sam2_video.py#L58)

**المعاملات:**

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`) : الحجم المستهدف الذي تمت توسيطه الصور إليه قبل تمريرها إلى النموذج. إذا كانت القيمة None، يُفترض أن الحجم المستهدف هو `pad_size` الخاص بالمعالج.

**يعيد:** (`torch.Tensor`)

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

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

## Sam2VideoInferenceSession[[transformers.Sam2VideoInferenceSession]]

#### transformers.Sam2VideoInferenceSession[[transformers.Sam2VideoInferenceSession]]

```python
transformers.Sam2VideoInferenceSession(video: typing.Optional[torch.Tensor] = None, video_height: int | None = None, video_width: int | None = None, inference_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)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L109)

**المعاملات:**

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[[transformers.Sam2VideoInferenceSession.add_mask_inputs]]

```python
add_mask_inputs(obj_idx: int, frame_idx: int, inputs: Tensor)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L229)

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

#### add_new_frame[[transformers.Sam2VideoInferenceSession.add_new_frame]]

```python
add_new_frame(pixel_values: Tensor, frame_idx: int | None = None)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L304)

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

#### add_point_inputs[[transformers.Sam2VideoInferenceSession.add_point_inputs]]

```python
add_point_inputs(obj_idx: int, frame_idx: int, inputs: dict)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L215)

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

#### get_frame[[transformers.Sam2VideoInferenceSession.get_frame]]

```python
get_frame(frame_idx: int)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L320)

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

#### get_obj_num[[transformers.Sam2VideoInferenceSession.get_obj_num]]

```python
get_obj_num()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L210)

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

#### get_output[[transformers.Sam2VideoInferenceSession.get_output]]

```python
get_output(obj_idx: int, frame_idx: int, output_key: str, is_conditioning_frame: bool = True)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L277)

**المعاملات:**

obj_idx (int) : فهرس الكائن.

frame_idx (int) : فهرس الإطار.

output_key (str) : مفتاح المخرجات.

is_conditioning_frame (bool) : ما إذا كان المخرج مخصصًا لإطار تكييف.

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

#### obj_id_to_idx[[transformers.Sam2VideoInferenceSession.obj_id_to_idx]]

```python
obj_id_to_idx(obj_id: int)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L184)

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

#### obj_idx_to_id[[transformers.Sam2VideoInferenceSession.obj_idx_to_id]]

```python
obj_idx_to_id(obj_idx: int)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L206)

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

#### remove_mask_inputs[[transformers.Sam2VideoInferenceSession.remove_mask_inputs]]

```python
remove_mask_inputs(obj_idx: int, frame_idx: int)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L235)

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

#### remove_point_inputs[[transformers.Sam2VideoInferenceSession.remove_point_inputs]]

```python
remove_point_inputs(obj_idx: int, frame_idx: int)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L225)

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

#### reset_inference_session[[transformers.Sam2VideoInferenceSession.reset_inference_session]]

```python
reset_inference_session()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L336)

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

#### reset_tracking_data[[transformers.Sam2VideoInferenceSession.reset_tracking_data]]

```python
reset_tracking_data()
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L324)

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

#### store_output[[transformers.Sam2VideoInferenceSession.store_output]]

```python
store_output(obj_idx: int, frame_idx: int, output_key: str | None = None, output_value: typing.Union[torch.Tensor, dict, NoneType] = None, is_conditioning_frame: bool = True)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L240)

**المعاملات:**

obj_idx (int) : فهرس الكائن.

frame_idx (int) : فهرس الإطار.

output_key (Optional[str]) : مفتاح المخرجات. إذا كان None، تُخزَّن المخرجات كقاموس.

output_value (Optional[Union[torch.Tensor, dict]]) : قيمة المخرجات.

is_conditioning_frame (bool) : ما إذا كان المخرج مخصصًا لإطار تكييف.

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

## Sam2VideoModel[[transformers.Sam2VideoModel]]

#### transformers.Sam2VideoModel[[transformers.Sam2VideoModel]]

```python
transformers.Sam2VideoModel(config: Sam2VideoConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L1643)

**المعاملات:**

config ([Sam2VideoConfig](/docs/transformers/main/ar/model_doc/sam2_video#transformers.Sam2VideoConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

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

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.Sam2VideoModel.forward]]

```python
forward(inference_session: Sam2VideoInferenceSession, frame_idx: int | None = None, frame: typing.Optional[torch.Tensor] = None, reverse: bool = False, run_mem_encoder: bool = True, **kwargs)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L1776)

**المعاملات:**

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](/docs/transformers/main/ar/model_doc/sam2_video#transformers.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[[transformers.Sam2VideoModel.propagate_in_video_iterator]]

```python
propagate_in_video_iterator(inference_session: Sam2VideoInferenceSession, start_frame_idx: int | None = None, max_frame_num_to_track: int | None = None, reverse: bool = False, show_progress_bar: bool = False)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L2797)

**المعاملات:**

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](/docs/transformers/main/ar/model_doc/sam2_video#transformers.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[[transformers.Sam2VideoModel.get_image_features]]

```python
get_image_features(pixel_values: Tensor, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/sam2_video/modeling_sam2_video.py#L1901)

**المعاملات:**

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

**يعيد:** `Sam2VideoVisionEncoderOutput` أو `tuple(torch.Tensor)`

A `Sam2VideoVisionEncoderOutput` or a tuple of `torch.Tensor` (if `return_dict=False` is passed or when `config.return_dict=False`) comprising various elements depending on the configuration ([Sam2VideoConfig](/docs/transformers/main/ar/model_doc/sam2_video#transformers.Sam2VideoConfig)) and inputs.

- **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`.

