# SAM3 Tracker Video

    
        
        
    

## نظرة عامة

SAM3 تم تقديم (Segment Anything Model 3) في [SAM 3: Segment Anything with Concepts](https://ai.meta.com/research/publications/sam-3-segment-anything-with-concepts/).

يُنفّذ Sam3TrackerVideo عملية **التجزئة البصرية القابلة للتوجيه (PVS)** على مقاطع الفيديو. تعتمد PVS على تلميحات بصرية تفاعلية (نقاط، صناديق، أقنعة) أو مدخلات نصية لتتبع **كائن محدد** لكل تلميح عبر إطارات الفيديو.

Sam3TrackerVideo هو إصدار محدّث من SAM2 Video يحافظ على نفس واجهة البرمجة (API) مع توفير أداء وقدرات محسّنة.

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

*نقدّم نموذج Segment Anything Model (SAM) 3، وهو نموذج موحّد يكشف ويقسّم ويتتبع الكائنات في الصور والفيديوهات بناءً على محفّزات المفاهيم، والتي نعرّفها إما على أنها عبارات اسمية قصيرة (مثل "حافلة مدرسية صفراء")، أو أمثلة مصوّرة، أو مزيج من الاثنين. يستقبل تقسيم المفاهيم القابل للمحفّز (PCS) هذه المحفّزات ويعيد أقنعة التقسيم والهويات الفريدة لجميع حالات الكائنات المطابقة. ولتطوير PCS، بنينا محرك بيانات قابل للتوسع ينتج مجموعة بيانات عالية الجودة تحتوي على 4 ملايين تسمية مفهوم فريدة، بما في ذلك السلبية الصعبة، عبر الصور والفيديوهات. يتكوّن نموذجنا من كاشف على مستوى الصورة ومتتبع فيديو قائم على الذاكرة يتشاركان عمودًا فقريًا واحدًا. يتم فصل التعرف والتحديد برأس حضور، مما يعزز دقة الكشف. يضاعف SAM 3 دقة الأنظمة الحالية في كل من PCS للصور والفيديوهات، ويحسّن قدرات SAM السابقة في مهام التقسيم البصري. نفتح مصدر SAM 3 مع معيارنا الجديد Segment Anything with Concepts (SA-Co) لتقسيم المفاهيم القابل للمحفّز.*

تمت مساهمة هذا النموذج من قِبل [yonigozlan](https://huggingface.co/yonigozlan) و[ronghanghu](https://huggingface.co/ronghanghu).

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

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

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

```python
from transformers import Sam3TrackerVideoModel, Sam3TrackerVideoProcessor
import torch

model = Sam3TrackerVideoModel.from_pretrained("facebook/sam3", device_map="auto")
processor = Sam3TrackerVideoProcessor.from_pretrained("facebook/sam3")

# 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 (optional, you can also propagate the masks through the video directly)
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 sam3_tracker_video_output in model.propagate_in_video_iterator(inference_session):
    video_res_masks = processor.post_process_masks(
        [sam3_tracker_video_output.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
    )[0]
    video_segments[sam3_tracker_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 (optional, you can also propagate the masks through the video directly)
outputs = model(
    inference_session=inference_session,
    frame_idx=ann_frame_idx,
)

# Propagate both objects through video
video_segments = {}
for sam3_tracker_video_output in model.propagate_in_video_iterator(inference_session):
    video_res_masks = processor.post_process_masks(
        [sam3_tracker_video_output.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
    )[0]
    video_segments[sam3_tracker_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 sam3_tracker_video_output in model.propagate_in_video_iterator(inference_session):
    video_res_masks = processor.post_process_masks(
        [sam3_tracker_video_output.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
    )[0]
    video_segments[sam3_tracker_video_output.frame_idx] = video_res_masks
```

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

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

```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
    sam3_tracker_video_output = model(inference_session=inference_session, frame=inputs.pixel_values[0])
...
    video_res_masks = processor.post_process_masks(
        [sam3_tracker_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 sam3_tracker_video_output in model.propagate_in_video_iterator(inference_session):
    video_res_masks = processor.post_process_masks(
        [sam3_tracker_video_output.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
    )[0]
    video_segments[sam3_tracker_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
```

## Sam3TrackerVideoConfig[[transformers.Sam3TrackerVideoConfig]]

#### transformers.Sam3TrackerVideoConfig[[transformers.Sam3TrackerVideoConfig]]

```python
transformers.Sam3TrackerVideoConfig(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, 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 = 4, 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 | 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/sam3_tracker_video/configuration_sam3_tracker_video.py#L99)

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

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

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

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

initializer_range (`float`، *اختياري*، القيمة الافتراضية 0.02) : الانحراف المعياري لتهيئة المعلمات.

num_maskmem (`int`، *اختياري*، القيمة الافتراضية 7) : عدد فتحات الذاكرة لذاكرة القناع.

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

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]`، *اختياري*، القيمة الافتراضية `[72, 72]`) : أحجام الميزات لتشفير المواقع 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"`) : دالة التنشيط غير الخطية في مدمج الذاكرة.

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

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

مثال:

```python
>>> from transformers import (
...     Sam3VisionConfig,
...     Sam3TrackerVideoPromptEncoderConfig,
...     Sam3TrackerVideoMaskDecoderConfig,
...     Sam3TrackerVideoModel,
... )

>>> # Initializing a Sam3TrackerVideoConfig with `"facebook/sam3"` style configuration
>>> configuration = Sam3TrackerVideoConfig()

>>> # Initializing a Sam3TrackerVideoModel (with random weights) from the `"facebook/sam3"` style configuration
>>> model = Sam3TrackerVideoModel(configuration)

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

>>> # We can also initialize a Sam3TrackerVideoConfig from a Sam3TrackerVideoVisionConfig, Sam3TrackerVideoPromptEncoderConfig, and Sam3TrackerVideoMaskDecoderConfig

>>> # Initializing SAM3 tracker video vision encoder, memory attention, and memory encoder configurations
>>> vision_config = Sam3TrackerVideoVisionConfig()
>>> prompt_encoder_config = Sam3TrackerVideoPromptEncoderConfig()
>>> mask_decoder_config = Sam3TrackerVideoMaskDecoderConfig()

>>> config = Sam3TrackerVideoConfig(vision_config, prompt_encoder_config, mask_decoder_config)
```

## Sam3TrackerVideoMaskDecoderConfig[[transformers.Sam3TrackerVideoMaskDecoderConfig]]

#### transformers.Sam3TrackerVideoMaskDecoderConfig[[transformers.Sam3TrackerVideoMaskDecoderConfig]]

```python
transformers.Sam3TrackerVideoMaskDecoderConfig(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/sam3_tracker_video/configuration_sam3_tracker_video.py#L60)

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

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) : عتبة الاستقرار للقناع متعدد الطبقات الديناميكي.

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

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

## Sam3TrackerVideoPromptEncoderConfig[[transformers.Sam3TrackerVideoPromptEncoderConfig]]

#### transformers.Sam3TrackerVideoPromptEncoderConfig[[transformers.Sam3TrackerVideoPromptEncoderConfig]]

```python
transformers.Sam3TrackerVideoPromptEncoderConfig(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] = 1008, patch_size: int | list[int] | tuple[int, int] = 14, 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/sam3_tracker_video/configuration_sam3_tracker_video.py#L34)

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

hidden_size (`int`، *اختياري*، القيمة الافتراضية `256`) : بُعد التمثيلات المخفية.

image_size (`Union[int, list[int], tuple[int, int]]`، *اختياري*، القيمة الافتراضية `1008`) : حجم (دقة) كل صورة.

patch_size (`Union[int, list[int], tuple[int, int]]`، *اختياري*، القيمة الافتراضية `14`) : حجم (دقة) كل رقعة.

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) : معامل المقياس لمشفّر الاستدعاء.

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

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

## Sam3TrackerVideoProcessor[[transformers.Sam3TrackerVideoProcessor]]

#### transformers.Sam3TrackerVideoProcessor[[transformers.Sam3TrackerVideoProcessor]]

```python
transformers.Sam3TrackerVideoProcessor(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/sam3_tracker_video/processing_sam3_tracker_video.py#L39)

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

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

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

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

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

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

يوفر [Sam3TrackerVideoProcessor](/docs/transformers/main/ar/model_doc/sam3_tracker_video#transformers.Sam3TrackerVideoProcessor) جميع وظائف [Sam3ImageProcessor](/docs/transformers/main/ar/model_doc/sam3#transformers.Sam3ImageProcessor) و`video_processor_class`. راجع [~Sam3ImageProcessor](/docs/transformers/main/ar/model_doc/sam3#transformers.Sam3ImageProcessor) و`~video_processor_class` لمزيد من المعلومات.

#### __call__[[transformers.Sam3TrackerVideoProcessor.__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/sam3_tracker_video/processing_sam3_tracker_video.py#L57)

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

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.Sam3TrackerVideoProcessor.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/sam3_tracker_video/processing_sam3_tracker_video.py#L463)

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

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.Sam3TrackerVideoProcessor.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/sam3_tracker_video/processing_sam3_tracker_video.py#L514)

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

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.Sam3TrackerVideoProcessor.add_inputs_to_inference_session]]

```python
add_inputs_to_inference_session(inference_session: Sam3TrackerVideoInferenceSession, 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/sam3_tracker_video/processing_sam3_tracker_video.py#L567)

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

inference_session (`Sam3TrackerVideoInferenceSession`) : جلسة الاستدلال الخاصة بالفيديو.

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`) : ما إذا كان سيتم مسح المدخلات القديمة للكائن.

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

## Sam3TrackerVideoInferenceSession[[transformers.Sam3TrackerVideoInferenceSession]]

#### transformers.Sam3TrackerVideoInferenceSession[[transformers.Sam3TrackerVideoInferenceSession]]

```python
transformers.Sam3TrackerVideoInferenceSession(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/sam3_tracker_video/modeling_sam3_tracker_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.Sam3TrackerVideoInferenceSession.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/sam3_tracker_video/modeling_sam3_tracker_video.py#L229)

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

#### add_new_frame[[transformers.Sam3TrackerVideoInferenceSession.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/sam3_tracker_video/modeling_sam3_tracker_video.py#L304)

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

#### add_point_inputs[[transformers.Sam3TrackerVideoInferenceSession.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/sam3_tracker_video/modeling_sam3_tracker_video.py#L215)

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

#### get_frame[[transformers.Sam3TrackerVideoInferenceSession.get_frame]]

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

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

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

#### get_obj_num[[transformers.Sam3TrackerVideoInferenceSession.get_obj_num]]

```python
get_obj_num()
```

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

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

#### get_output[[transformers.Sam3TrackerVideoInferenceSession.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/sam3_tracker_video/modeling_sam3_tracker_video.py#L277)

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

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

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

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

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

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

#### obj_id_to_idx[[transformers.Sam3TrackerVideoInferenceSession.obj_id_to_idx]]

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

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

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

#### obj_idx_to_id[[transformers.Sam3TrackerVideoInferenceSession.obj_idx_to_id]]

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

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

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

#### remove_mask_inputs[[transformers.Sam3TrackerVideoInferenceSession.remove_mask_inputs]]

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

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

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

#### remove_point_inputs[[transformers.Sam3TrackerVideoInferenceSession.remove_point_inputs]]

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

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

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

#### reset_inference_session[[transformers.Sam3TrackerVideoInferenceSession.reset_inference_session]]

```python
reset_inference_session()
```

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

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

#### reset_tracking_data[[transformers.Sam3TrackerVideoInferenceSession.reset_tracking_data]]

```python
reset_tracking_data()
```

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

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

#### store_output[[transformers.Sam3TrackerVideoInferenceSession.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/sam3_tracker_video/modeling_sam3_tracker_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، يتم تخزين المخرجات كقاموس.

## Sam3TrackerVideoModel[[transformers.Sam3TrackerVideoModel]]

#### transformers.Sam3TrackerVideoModel[[transformers.Sam3TrackerVideoModel]]

```python
transformers.Sam3TrackerVideoModel(config: Sam3TrackerVideoConfig, remove_vision_encoder: bool = False)
```

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

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

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

remove_vision_encoder (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب إزالة مُشفِّر الرؤية. إذا كان True، فسيتم تعيين مُشفِّر الرؤية إلى None.

نموذج Sam3 Tracker 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.Sam3TrackerVideoModel.forward]]

```python
forward(inference_session: Sam3TrackerVideoInferenceSession, 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/sam3_tracker_video/modeling_sam3_tracker_video.py#L1789)

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

inference_session (`~models.sam3_tracker_video.modeling_sam3_tracker_video.Sam3TrackerVideoInferenceSession`) : كائن جلسة الاستدلال على الفيديو.

frame_idx (`int`, *اختياري*) : فهرس الإطار الذي سيتم تشغيل الاستدلال عليه. لا حاجة إلى تقديمه عند الاستدلال على إطار جديد تم بثه.

frame (`torch.Tensor`، *اختياري*) : الإطار الذي سيتم معالجته. يُقدَّم عند البث.

reverse (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب نشر القيم في الاتجاه العكسي.

run_mem_encoder (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم تشغيل مُشفِّر الذاكرة على الأقنعة المتوقعة. يتم تجميع مُشفِّر الذاكرة عبر جميع الكائنات من أجل الكفاءة.

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

`Sam3TrackerVideoSegmentationOutput` أو مجموعة مرتبة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([Sam3TrackerVideoConfig](/docs/transformers/main/ar/model_doc/sam3_tracker_video#transformers.Sam3TrackerVideoConfig)) والمدخلات.

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

- **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.Sam3TrackerVideoModel.propagate_in_video_iterator]]

```python
propagate_in_video_iterator(inference_session: Sam3TrackerVideoInferenceSession, 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/sam3_tracker_video/modeling_sam3_tracker_video.py#L2812)

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

inference_session (`~models.sam3_tracker_video.modeling_sam3_tracker_video.Sam3TrackerVideoInferenceSession`) : كائن جلسة الاستدلال على الفيديو.

start_frame_idx (`int`, *اختياري*) : فهرس الإطار الابتدائي للانتشار. يجب تقديمه إذا لم يُستدعَ `forward` بعد على مدخلات جديدة. إذا لم يُقدَّم، سيكون فهرس الإطار الابتدائي هو أقدم إطار يحتوي على نقاط مدخلات.

max_frame_num_to_track (`int`، *اختياري*) : الحد الأقصى لعدد الإطارات التي يجب تتبعها.

reverse (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب نشر القيم في الاتجاه العكسي.

show_progress_bar (`bool`، *اختياري*، الافتراضي `False`) : ما إذا كان يجب عرض شريط تقدّم أثناء الانتشار.

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

`Sam3TrackerVideoSegmentationOutput` أو مجموعة مرتبة من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([Sam3TrackerVideoConfig](/docs/transformers/main/ar/model_doc/sam3_tracker_video#transformers.Sam3TrackerVideoConfig)) والمدخلات.

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

- **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.Sam3TrackerVideoModel.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/sam3_tracker_video/modeling_sam3_tracker_video.py#L1914)

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

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

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

`Sam3TrackerVideoVisionEncoderOutput` أو مجموعة (tuple) من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتماداً على الإعداد ([Sam3TrackerVideoConfig](/docs/transformers/main/ar/model_doc/sam3_tracker_video#transformers.Sam3TrackerVideoConfig)) والمدخلات.

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

