Transformers documentation
SAM3 فيديو
تمت مساهمة هذا النموذج في Hugging Face Transformers في 2025-11-19.
SAM3 فيديو
نظرة عامة
تم تقديم SAM3 (نموذج تقسيم أي شيء 3) في SAM 3: Segment Anything with Concepts.
يُنفّذ SAM3 Video تجزئة المفاهيم القابلة للتوجيه (PCS) على مقاطع الفيديو. حيث يستقبل PCS نصاً كمدخل (مثل "حافلة مدرسية صفراء")، ويتنبأ بأقنعة كائنات وأقنعة دلالية لكل كائن فردي يطابق المفهوم، مع الحفاظ على هويات الكائنات عبر إطارات الفيديو.
يجمع النموذج بين وحدة كشف (SAM3) ووحدة تتبع (متتبع بنمط SAM2) لتمكين التتبع القوي للأهداف عبر إطارات الفيديو باستخدام أوامر نصية.
المستخلص من الورقة البحثية هو كالتالي:
نقدّم نموذج Segment Anything Model (SAM) 3، وهو نموذج موحّد يكشف عن الكائنات ويقسّمها ويتتبّعها في الصور والفيديوهات بناءً على محفّزات المفاهيم، والتي نعرّفها إما على أنها عبارات اسمية قصيرة (مثل "حافلة مدرسية صفراء")، أو أمثلة مصوّرة، أو مزيج من الاثنين معاً. يستقبل تقسيم المفاهيم القابل للمحفّز (PCS) هذه المحفّزات ويعيد أقنعة التقسيم والهويات الفريدة لجميع حالات الكائنات المطابقة. ولتطوير PCS، بنينا محرك بيانات قابل للتوسّع ينتج مجموعة بيانات عالية الجودة تحتوي على 4 ملايين تسمية مفهوم فريدة، بما في ذلك السلبات الصعبة، عبر الصور والفيديوهات. يتكوّن نموذجنا من كاشف على مستوى الصورة ومتتبّع فيديو يعتمد على الذاكرة، يتشاركان في عمود فقري واحد. يتم فصل التعرّف عن تحديد الموقع بواسطة رأس حضور، مما يعزّز دقة الكشف. يضاعف SAM 3 دقة الأنظمة الحالية في كل من PCS للصور والفيديوهات، ويحسّن قدرات SAM السابقة في مهام التقسيم البصري. نفتح مصدر SAM 3 مع معيارنا الجديد Segment Anything with Concepts (SA-Co) لتقسيم المفاهيم القابل للمحفّز.
تمت مساهمة هذا النموذج من قِبل yonigozlan وronghanghu.
مثال على الاستخدام
تجزئة الفيديو وتتبعه
استدلال الفيديو المُحمَّل مسبقًا
معالجة فيديو تكون جميع إطاراته متاحة مسبقًا باستخدام أوامر نصية:
from transformers import Sam3VideoModel, Sam3VideoProcessor
import torch
model = Sam3VideoModel.from_pretrained("facebook/sam3", device_map="auto")
processor = Sam3VideoProcessor.from_pretrained("facebook/sam3")
# Load video frames
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,
processing_device="cpu",
video_storage_device="cpu",
)
# Add text prompt to detect and track objects
text = "person"
inference_session = processor.add_text_prompt(
inference_session=inference_session,
text=text,
)
# Process all frames in the video
outputs_per_frame = {}
# Pass show_progress_bar=True to display a tqdm progress bar.
for model_outputs in model.propagate_in_video_iterator(
inference_session=inference_session, max_frame_num_to_track=50
):
processed_outputs = processor.postprocess_outputs(inference_session, model_outputs)
outputs_per_frame[model_outputs.frame_idx] = processed_outputs
print(f"Processed {len(outputs_per_frame)} frames")
Processed 51 frames
# Access results for a specific frame
frame_0_outputs = outputs_per_frame[0]
print(f"Detected {len(frame_0_outputs['object_ids'])} objects")
print(f"Object IDs: {frame_0_outputs['object_ids'].tolist()}")
print(f"Scores: {frame_0_outputs['scores'].tolist()}")
print(f"Boxes shape (XYXY format, absolute coordinates): {frame_0_outputs['boxes'].shape}")
print(f"Masks shape: {frame_0_outputs['masks'].shape}")يمكنك أيضًا تتبع فئات متعددة من الكائنات في الوقت نفسه من خلال تقديم عدة أوامر. يعيد النموذج استخدام ميزات الرؤية بكفاءة عبر جميع الأوامر:
# Add multiple text prompts (or use a list in add_text_prompt)
multi_prompt_session = processor.init_video_session(
video=video_frames,
inference_device=device,
processing_device="cpu",
video_storage_device="cpu",
)
>>>
prompts = ["person", "bed", "lamp"]
processor.add_text_prompt(multi_prompt_session, prompts)
>>>
# Process video - detects objects from ALL prompts in a single pass
multi_outputs_per_frame = {}
# Pass show_progress_bar=True to display a tqdm progress bar.
for model_outputs in model.propagate_in_video_iterator(
inference_session=multi_prompt_session, max_frame_num_to_track=50
):
processed_outputs = processor.postprocess_outputs(multi_prompt_session, model_outputs)
multi_outputs_per_frame[model_outputs.frame_idx] = processed_outputs
>>>
# Check which objects were detected by each prompt
frame_0_outputs = multi_outputs_per_frame[0]
prompt_to_obj_ids = frame_0_outputs["prompt_to_obj_ids"]
for prompt, obj_ids in prompt_to_obj_ids.items():
print(f"{prompt}: {len(obj_ids)} objects")
person: 2 objects
bed: 1 objects
lamp: 1 objectsالاستدلال على الفيديو عبر البث
لتطبيقات الوقت الفعلي، يدعم SAM3 Video معالجة إطارات الفيديو لحظة وصولها:
# Initialize session for streaming
streaming_inference_session = processor.init_video_session(
inference_device=device,
processing_device="cpu",
video_storage_device="cpu",
)
# Add text prompt
text = "person"
streaming_inference_session = processor.add_text_prompt(
inference_session=streaming_inference_session,
text=text,
)
# Process frames one by one (streaming mode)
streaming_outputs_per_frame = {}
for frame_idx, frame in enumerate(video_frames[:50]): # Process first 50 frames
# First, process the frame using the processor
inputs = processor(images=frame, device=device, return_tensors="pt").to(model.device)
...
# Process frame using streaming inference - pass the processed pixel_values
model_outputs = model(
inference_session=streaming_inference_session,
frame=inputs.pixel_values[0], # Provide processed frame - this enables streaming mode
reverse=False,
)
...
# Post-process outputs with original_sizes for proper resolution handling
processed_outputs = processor.postprocess_outputs(
streaming_inference_session,
model_outputs,
original_sizes=inputs.original_sizes, # Required for streaming inference
)
streaming_outputs_per_frame[frame_idx] = processed_outputs
...
if (frame_idx + 1) % 10 == 0:
print(f"Processed {frame_idx + 1} frames...")
print(f"✓ Streaming inference complete! Processed {len(streaming_outputs_per_frame)} frames")
✓ Streaming inference complete! Processed 50 frames
# Access results
frame_0_outputs = streaming_outputs_per_frame[0]
print(f"Detected {len(frame_0_outputs['object_ids'])} objects in first frame")
print(f"Boxes are in XYXY format (absolute pixel coordinates): {frame_0_outputs['boxes'].shape}")
print(f"Masks are at original video resolution: {frame_0_outputs['masks'].shape}")الاستدلال بدقة مخصصة
للحصول على استنتاج أسرع أو استخدام أقل للذاكرة:
config = Sam3VideoConfig.from_pretrained("facebook/sam3")
config.image_size = 560
model = Sam3VideoModel.from_pretrained("facebook/sam3", config=config, device_map="auto")
processor = Sam3VideoProcessor.from_pretrained("facebook/sam3", size={"height": 560, "width": 560})Sam3VideoConfig
فئة transformers.Sam3VideoConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonedetector_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetracker_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneinitializer_range: float = 0.02low_res_mask_size: int = 288score_threshold_detection: float = 0.5det_nms_thresh: float = 0.1assoc_iou_thresh: float = 0.1trk_assoc_iou_thresh: float = 0.5new_det_thresh: float = 0.7recondition_on_trk_masks: bool = Truehotstart_delay: int = 15hotstart_unmatch_thresh: int = 8hotstart_dup_thresh: int = 8suppress_unmatched_only_within_hotstart: bool = Trueinit_trk_keep_alive: int = 30max_trk_keep_alive: int = 30min_trk_keep_alive: int = -1suppress_overlapping_based_on_recent_occlusion_threshold: float = 0.7decrease_trk_keep_alive_for_empty_masklets: bool = Falsefill_hole_area: int = 16max_num_objects: int = 10000recondition_every_nth_frame: int = 16high_conf_thresh: float = 0.8high_iou_thresh: float = 0.8 )
المعاملات
- detector_config (
dictأوSam3Config، اختياري) — إعدادات نموذج كاشف Sam3. إذا لم يتم تقديمها، فسيتم استخدام Sam3Config الافتراضي. - tracker_config (
dictأوSam2VideoConfig، اختياري) — إعدادات نموذج التتبع Sam2Video. إذا لم يتم تقديمها، فسيتم استخدام Sam2VideoConfig الافتراضي. - initializer_range (
float، اختياري، القيمة الافتراضية 0.02) — انحراف المعيار لـ truncated_normal_initializer المستخدم في تهيئة مصفوفات الأوزان. - low_res_mask_size (
int، اختياري، القيمة الافتراضية 288) — الحجم (الارتفاع والعرض) لمخرجات الأقنعة منخفضة الدقة من المتتبع قبل تكبيرها إلى دقة الفيديو. - score_threshold_detection (
float، اختياري، القيمة الافتراضية 0.5) — حدّ الاحتمال لمخرجات الكشف - يُحتفظ فقط بالكشوفات التي تتجاوز هذا الحدّ. - det_nms_thresh (
float, اختياري، القيمة الافتراضية 0.1) — حد IoU لعملية NMS (كبح غير الأقصى) للكشف. - assoc_iou_thresh (
float, اختياري، القيمة الافتراضية 0.1) — حد IoU لمطابقة الكشف مع المسار. يُعتبر الكشف "مطابقًا" لمقطع المسار إذا تداخل معه فوق هذا الحد. غالبًا ما يكون الحد فضفاضًا مثل 0.1. - trk_assoc_iou_thresh (
float, اختياري، القيمة الافتراضية 0.5) — حد عتبة IoU لمطابقة الكشف مع التتبع، يُستخدم لتحديد ما إذا كان masklet "غير مطابق" لأي من عمليات الكشف. غالباً ما تكون العتبة الأكثر صرامة مثل 0.5. - new_det_thresh (
float، اختياري، القيمة الافتراضية 0.7) — حدّ الاحتمال الذي يجب أن تتجاوزه عملية الكشف حتى يُضاف كائن جديد. - recondition_on_trk_masks (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب استخدام الأقنعة المتتبَّعة (True) أم أقنعة الكشف (False) لإعادة التكييف. استخدم True عندما تكون الأقنعة المتتبَّعة أعلى جودة، ويعمل الكاشف كإشارة تحقق لتعزيز الذاكرة ومنع الانحراف. - hotstart_delay (
int, اختياري، القيمة الافتراضية 15) — عدد الإطارات التي يتم تخزينها مؤقتًا للمخرجات أثناء التشغيل السريع. نؤخر المخرجات لمدةhotstart_delayإطارًا، ثم نزيل المسارات الجزئية (tracklets) بناءً على قواعد التشغيل السريع. - hotstart_unmatch_thresh (
int، اختياري، القيمة الافتراضية 8) — عدد الإطارات غير المطابقة المطلوبة لإزالة المسار (tracklet) خلال فترة التشغيل السريع (hotstart). - hotstart_dup_thresh (
int، اختياري، القيمة الافتراضية 8) — عدد الإطارات المتداخلة المطلوبة لإزالة مسار مكرر خلال فترة التشغيل السريع. - suppress_unmatched_only_within_hotstart (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب كبت الأقنعة فقط خلال فترة الإقلاع السريع. إذا كانت القيمة False، فيمكننا كبت الأقنعة حتى لو بدأت قبل فترة الإقلاع السريع. - init_trk_keep_alive (
int, اختياري، القيمة الافتراضية 30) — عداد البقاء الأولي للمسارات الجديدة. - max_trk_keep_alive (
int، اختياري، القيمة الافتراضية 30) — القيمة القصوى لعداد البقاء. تُزاد قيمة العداد للمسارات التي تتطابق مع اكتشافات حتى تصل إلى هذه القيمة. - min_trk_keep_alive (
int، اختياري، القيمة الافتراضية -1) — القيمة الدنيا لعداد البقاء. تُخفَّض قيمة العدّاد للمسارات التي لا توجد لها كشفات مطابقة إلى هذه القيمة. - suppress_overlapping_based_on_recent_occlusion_threshold (
float، اختياري، القيمة الافتراضية 0.7) — الحدّ العُرفي لإخفاء الكائنات المتداخلة بناءً على الإخفاء الأخير. تُخفى الأقنعة المتداخلة التي يتجاوز فيها IoU هذا الحدّ بناءً على أيّها كان أخفياً في آخر مرة. - decrease_trk_keep_alive_for_empty_masklets (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم تقليل عداد البقاء (keep-alive) للمناطق (masklets) ذات المساحة الصفرية في تنبؤ SAM2. - fill_hole_area (
int، اختياري، القيمة الافتراضية 16) — الحد الأدنى للمساحة (بالبكسل) لملء الثقوب في الأقنعة وإزالة البقع الصغيرة. - max_num_objects (
int، اختياري، القيمة الافتراضية 10000) — الحد الأقصى لعدد الكائنات المراد تتبعها. القيمة الافتراضية 10000 تعطل هذا الحد فعليًا. - recondition_every_nth_frame (
int، اختياري، القيمة الافتراضية 16) — تكرار إعادة ضبط القناع (بالإطارات). اضبطه على 0 لتعطيل إعادة الضبط. - high_conf_thresh (
float، اختياري، القيمة الافتراضية 0.8) — حد الثقة العالي لإعادة الضبط. لا يمكن إلا للكشفات التي تتجاوز هذا الحد إعادة ضبط مسارات التتبع. - high_iou_thresh (
float، اختياري، القيمة الافتراضية 0.8) — حد عتبة IoU المرتفع لإعادة الضبط. لا يمكن للكشفات التي تتجاوز قيمتها IoU هذا الحد فقط إعادة ضبط مسارات التتبع.
هذه فئة الإعدادات المخزنة لإعدادات نموذج Sam3VideoModel. تُستخدم لاستحداث نموذج Sam3 Video وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ facebook/sam3
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
مثال:
>>> from transformers import Sam3VideoConfig, Sam3VideoModel
>>> # Initializing a SAM3 Video configuration with default detector and tracker
>>> configuration = Sam3VideoConfig()
>>> # Changing image size for custom resolution inference (automatically propagates to all nested configs)
>>> configuration.image_size = 560
>>> # Initializing a model from the configuration
>>> model = Sam3VideoModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> detector_config = configuration.detector_config
>>> tracker_config = configuration.tracker_configSam3VideoProcessor
فئة transformers.Sam3VideoProcessor
< source >( image_processorvideo_processortokenizertarget_size: int | None = None**kwargs )
المعاملات
ينشئ Sam3VideoProcessor الذي يجمع معالج الصور ومعالج الفيديو ومجزئ الرموز في معالج واحد.
يوفر Sam3VideoProcessor جميع وظائف Sam3ImageProcessor وvideo_processor_class وCLIPTokenizer. راجع ~Sam3ImageProcessor و~video_processor_class و~CLIPTokenizer لمزيد من المعلومات.
__call__
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonesegmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = Noneoriginal_sizes: typing.Union[list[list[float]], torch.Tensor, NoneType] = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = None**kwargs ) → A BatchEncoding with the following fields
المعاملات
- images (
ImageInput، اختياري) — الصورة أو الصور المراد معالجتها. - segmentation_maps (
ImageInput، اختياري) — خرائط التقسيم المراد معالجتها (اختياري، لمعالج الصور). - original_sizes (
list[list[float]]،torch.Tensor، اختياري) — الأحجام الأصلية للصور. يُستخدم فقط عندما لا يتم تقديم الصور. - return_tensors (
Union[str, ~utils.generic.TensorType], اختياري) — إذا تم تعيينه، فسيُرجع مُتجهات (tensors) لإطار عمل معين. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن NumPy.
يعيد
BatchEncoding يحتوي على الحقول التالية
pixel_values(torch.Tensor): الصورة المعالجة أو الصور.original_sizes(list[list[float]]): الأبعاد الأصلية للصور.labels(torch.Tensor، اختياري): خرائط التقطيع المعالجة (إذا تم توفيرها).
postprocess_outputs
< source >( inference_sessionmodel_outputsoriginal_sizes: typing.Union[list[list[float]], torch.Tensor, NoneType] = None ) → dict
المعاملات
- inference_session (
Sam3VideoInferenceSession) — كائن جلسة الاستدلال. - model_outputs (
Sam3VideoSegmentationOutput) — المخرجات الخام للنموذج منSam3VideoModel.forward(). - original_sizes (
list[list[float]]أوtorch.Tensor، اختياري) — أحجام الإطارات الأصلية الاختيارية [الارتفاع، العرض]. مطلوب للاستدلال البثي عندما لا تكون video_height/video_width مضبوطة في الجلسة.
يعيد
dict
قاموس يحتوي على المفاتيح التالية:
- object_ids (
torch.Tensorمن الشكل(num_objects,)): معرّفات الكائنات لكل كائن تم اكتشافه. - النتائج (
torch.Tensorبأبعاد(num_objects,)): نتائج الكشف عن كل كائن. - boxes (
torch.Tensorمن الشكل(num_objects, 4)): صناديق الإحاطة بصيغة XYXY (top_left_x, top_left_y, bottom_right_x, bottom_right_y). - أقنعة (
torch.Tensorبأبعاد(num_objects, height, width)): أقنعة تجزئة ثنائية لكل كائن عند دقة الفيديو الأصلية. - prompt_to_obj_ids (
dict[str, list[int]]): تعيين من نص الموجّه إلى قائمة معرّفات الكائنات التي اكتشفها ذلك الموجّه.
معالجة مخرجات النموذج بعد المعالجة للحصول على الأقنعة والعلب والدرجات النهائية.
init_video_session
< source >( video: typing.Union[list['PIL.Image.Image'], numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], list[list['PIL.Image.Image']], list[list[numpy.ndarray]], list[list['torch.Tensor']], transformers.video_utils.URL, list[transformers.video_utils.URL], list[list[transformers.video_utils.URL]], transformers.video_utils.Path, list[transformers.video_utils.Path], list[list[transformers.video_utils.Path]], NoneType] = Noneinference_device: typing.Union[str, ForwardRef('torch.device')] = 'cpu'inference_state_device: typing.Union[str, ForwardRef('torch.device'), NoneType] = Noneprocessing_device: typing.Union[str, ForwardRef('torch.device'), NoneType] = Nonevideo_storage_device: typing.Union[str, ForwardRef('torch.device'), NoneType] = Nonemax_vision_features_cache_size: int = 1dtype: dtype = torch.float32 )
المعاملات
- video (
VideoInput، اختياري) — الفيديو المراد معالجته. لا حاجة إلى تقديمه عند البث. - inference_device (
strأوtorch.device، اختياري، القيمة الافتراضية هي “cpu”) — الجهاز المستخدم للاستدلال. - inference_state_device (
strأوtorch.device، اختياري) — الجهاز الذي يُحفظ عليه حالة الاستدلال. - processing_device (
strأوtorch.device، اختياري) — الجهاز المستخدم لمعالجة الفيديو. - video_storage_device (
strأوtorch.device، اختياري) — الجهاز الذي تُخزَّن عليه إطارات الفيديو بعد المعالجة. - max_vision_features_cache_size (
int، اختياري، القيمة الافتراضية 1) — الحد الأقصى لعدد ميزات الرؤية التي يجب تخزينها مؤقتًا. - dtype (
torch.dtype، اختياري، القيمة الافتراضيةtorch.float32) — نوع البيانات torch الذي سيُستخدم للجلسة بأكملها.
يُهيّئ جلسة فيديو للاستدلال.
إذا تم توفير فيديو (استدلال غير متزامن)، فسيتم معالجة الفيديو وتخزينه على video_storage_device.
add_text_prompt
< source >( inference_session: Sam3VideoInferenceSessiontext: str | list[str] ) → Sam3VideoInferenceSession
أضف موجهات نصية إلى جلسة الاستدلال.
Sam3VideoInferenceSession
فئة transformers.Sam3VideoInferenceSession
< source >( video: typing.Optional[torch.Tensor] = Nonevideo_height: int | None = Nonevideo_width: int | None = Noneinference_device: typing.Union[torch.device, str] = 'cpu'inference_state_device: typing.Union[torch.device, str] = 'cpu'video_storage_device: typing.Union[torch.device, str] = 'cpu'dtype: typing.Union[torch.dtype, str] = 'float32'max_vision_features_cache_size: int = 1 )
المعاملات
- 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) — الحد الأقصى لعدد ميزات الرؤية التي يجب تخزينها مؤقتًا.
يدير معاملات جلسة الاستدلال على الفيديو وحالتها والذاكرة المؤقتة.
أضف مدخلات الأقنعة مع تحديد تلقائي للأجهزة.
إضافة إطار جديد مع وضع تلقائي للأجهزة.
أضف موجهًا نصيًا إلى الجلسة وأعد معرّفه الفريد. إذا كان الموجه موجودًا مسبقًا، يُعاد المعرّف الموجود.
الحصول على إطار من الفيديو.
احصل على العدد الإجمالي للمعرّفات الفريدة للأهداف التي تم استلامها حتى الآن في هذه الجلسة.
get_output
< source >( obj_idx: intframe_idx: intoutput_key: stris_conditioning_frame: bool = True )
احصل على المخرجات مع إدارة ذكية للأجهزة.
تعيين معرّف الكائن إلى الفهرس، مع إنشاء إدخال جديد عند الحاجة.
تعيين فهرس الكائن على جانب النموذج إلى معرّف الكائن على جانب العميل.
إزالة مدخلات القناع.
remove_object
< source >( obj_id: intstrict: bool = False )
إزالة كائن من جلسة الاستدلال. يؤدي هذا إلى إزالة الكائن من جميع الإطارات في الفيديو.
إعادة تعيين بيانات التتبع والذاكرة المؤقتة.
إعادة تعيين حالة جلسة الاستدلال.
إعادة تعيين بيانات التتبع مع الاحتفاظ بالذاكرة المؤقتة.
store_output
< source >( obj_idx: intframe_idx: intoutput_key: str | None = Noneoutput_value: typing.Union[torch.Tensor, dict, NoneType] = Noneis_conditioning_frame: bool = True )
احفظ المخرجات مع إدارة ذكية للأجهزة. إذا كانت output_key تساوي None، يتم حفظ المخرجات كقاموس.
Sam3VideoSegmentationOutput
فئة transformers.Sam3VideoSegmentationOutput
< source >( object_ids: list[int] | None = Noneobj_id_to_mask: dict[int, torch.Tensor] | None = Noneobj_id_to_score: dict[int, float] | None = Noneobj_id_to_tracker_score: dict[int, float] | None = Noneremoved_obj_ids: set[int] | None = Nonesuppressed_obj_ids: set[int] | None = Noneframe_idx: int | None = None )
المعاملات
- object_ids (
list[int], اختياري) — قائمة معرّفات الكائنات التي يتم تتبّعها في الإطار الحالي. - obj_id_to_mask (
dict[int, torch.Tensor], اختياري) — قاموس يربط معرّفات الكائنات بأقنعتها المتوقعة منخفضة الدقة. كل قناع له الشكل(1, H_low, W_low). - obj_id_to_score (
dict[int, float]، اختياري) — قاموس يربط معرّفات الكائنات بنقاط اكتشافها. - obj_id_to_tracker_score (
dict[int, float]، اختياري) — قاموس يربط معرّفات الكائنات (object IDs) بدرجة المتتبع (tracker score) الخاصة بها في الإطار الحالي. - removed_obj_ids (
set[int]، اختياري) — مجموعة من معرّفات الكائنات التي تم حذفها (على سبيل المثال، عبر خوارزميات البدء السريع). - suppressed_obj_ids (
set[int]، اختياري) — مجموعة من معرّفات الكائنات التي تم كتمها في الإطار الحالي. - frame_idx (
int, اختياري) — مؤشر الإطار في الفيديو.
الفئة الأساسية لمخرجات نموذج Sam3Video.
Sam3VideoModel
فئة transformers.Sam3VideoModel
< source >( config: Sam3VideoConfig )
المعاملات
- config (Sam3VideoConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Sam3 Video الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( inference_session: Sam3VideoInferenceSessionframe_idx: int | None = Noneframe: typing.Optional[torch.Tensor] = Nonereverse: bool = False**kwargs )
المعاملات
- inference_session (
~models.sam3_video.modeling_sam3_video.Sam3VideoInferenceSession) — كائن جلسة الاستدلال على الفيديو. - frame_idx (
int, اختياري) — مؤشر الإطار الذي سيتم عليه تشغيل الاستدلال. لا حاجة إلى تقديمه عند الاستدلال على إطار جديد تم بثه. - frame (
torch.Tensor، اختياري) — الإطار المراد معالجته. يُقدَّم عند البث. - reverse (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب أن يتم التوزيع في الاتجاه العكسي.
نشر الكائنات عبر إطار فيديو مُبَثّ.
propagate_in_video_iterator
< source >( inference_session: Sam3VideoInferenceSessionstart_frame_idx: int = 0max_frame_num_to_track: int | None = Nonereverse: bool = Falseshow_progress_bar: bool = False ) → Sam3VideoSegmentationOutput or tuple(torch.Tensor)
المعاملات
- inference_session (
~models.sam3_video.modeling_sam3_video.Sam3VideoInferenceSession) — كائن جلسة الاستدلال بالفيديو. - start_frame_idx (
int، اختياري، القيمة الافتراضية0) — مؤشر الإطار الابتدائي للانتشار. - max_frame_num_to_track (
int, اختياري) — الحد الأقصى لعدد الإطارات التي يجب تتبعها. إذا لم يُحدد، فسيتم تتبع جميع الإطارات في الفيديو. - reverse (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب أن يتم التوزيع في الاتجاه العكسي. - show_progress_bar (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب عرض شريط تقدّم أثناء الانتشار.
يعيد
Sam3VideoSegmentationOutput أو tuple(torch.Tensor)
Sam3VideoSegmentationOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعدادات (Sam3VideoConfig) والمدخلات.
نشر المُوجِّهات للحصول على نتائج التثبيت (Grounding) للفيديو بأكمله. يُستخدم عند تهيئة جلسة استنتاج (Inference) تتضمن فيديو كاملاً. يُنتج Sam3VideoSegmentationOutput لكل إطار.
- object_ids (
list[int]، اختياري) — قائمة بمعرّفات الكائنات التي يتم تتبعها في الإطار الحالي. - obj_id_to_mask (
dict[int, torch.Tensor]، اختياري) — قاموس يربط معرّفات الكائنات بأقنعتها المتنبأ بها منخفضة الدقة. كل قناع له الشكل(1, H_low, W_low). - obj_id_to_score (
dict[int, float], اختياري) — قاموس يربط معرّفات الكائنات بنقاط اكتشافها. - obj_id_to_tracker_score (
dict[int, float], اختياري) — قاموس يربط معرّفات الكائنات بدرجة المتتبّع الخاصة بها في الإطار الحالي. - removed_obj_ids (
set[int]، اختياري) — مجموعة من معرّفات الكائنات التي تم حذفها (على سبيل المثال، عبر خوارزميات البدء السريع). - suppressed_obj_ids (
set[int]، اختياري) — مجموعة من معرّفات الكائنات التي تم كتمها في الإطار الحالي. - frame_idx (
int, اختياري) — فهرس الإطار في الفيديو.