Transformers documentation
EdgeTAMVideo
نُشر هذا النموذج في أوراق HF في 13 يناير 2025، وأُضيف إلى مكتبة Hugging Face Transformers في 29 سبتمبر 2025.
EdgeTAMVideo
نظرة عامة
قُدِّم نموذج EdgeTAM في EdgeTAM: On-Device Track Anything Model Chong Zhou, Chenchen Zhu, Yunyang Xiong, Saksham Suri, Fanyi Xiao, Lemeng Wu, Raghuraman Krishnamoorthi, Bo Dai, Chen Change Loy, Vikas Chandra, Bilge Soran.
EdgeTAM هو تكييف فعّال لـ SAM 2 يُدخل بنية Perceiver مكانية ثنائية الأبعاد لتحسين آليات الانتباه في الذاكرة من أجل تجزئة الفيديو في الوقت الفعلي على الأجهزة المحمولة.
المستخلص من الورقة البحثية هو كالتالي:
بالإضافة إلى نموذج Segment Anything Model (SAM)، يوسّع SAM 2 قدرته من مدخلات الصور إلى مدخلات الفيديو من خلال آلية بنك الذاكرة، ويحقق أداءً ملحوظًا مقارنةً بالطرق السابقة، مما يجعله نموذجًا أساسيًا لمهمة تجزئة الفيديو. في هذه الورقة، نهدف إلى جعل SAM 2 أكثر كفاءة بكثير بحيث يعمل حتى على الأجهزة المحمولة مع الحفاظ على أداء مماثل. على الرغم من وجود عدة أعمال تهدف إلى تحسين كفاءة SAM، نجد أنها غير كافية لـ SAM 2 لأنها تركز جميعها على ضغط مشفّر الصورة، بينما تُظهر معاييرنا المرجعية أن كتل الانتباه الذاكري الجديدة المُدخلة هي أيضًا عنق الزجاجة في زمن الاستجابة. بناءً على هذه الملاحظة، نقترح EdgeTAM، الذي يستفيد من Perceiver مكاني ثنائي الأبعاد جديد لتقليل التكلفة الحسابية. على وجه التحديد، يُشفّر Perceiver المكاني ثنائي الأبعاد المقترح الذاكرات على مستوى الإطار المخزنة بكثافة باستخدام Transformer خفيف يحتوي على مجموعة ثابتة من الاستعلامات القابلة للتعلم. ونظرًا لأن تجزئة الفيديو مهمة تنبؤ كثيف، نجد أن الحفاظ على البنية المكانية للذاكرات أمر جوهري، لذا يتم تقسيم الاستعلامات إلى مجموعات على مستوى عام ومجموعات على مستوى الباتش. كما نقترح خط أنابيب تقطير يحسّن الأداء بشكل أكبر دون أي عبء على الاستدلال. ونتيجةً لذلك، يحقق EdgeTAM قيم J&F تبلغ 87.7 و70.0 و72.3 و71.7 على DAVIS 2017 وMOSE وSA-V val وSA-V test، بينما يعمل بسرعة 16 إطارًا في الثانية على iPhone 15 Pro Max.
تمت مساهمة هذا النموذج من قِبل yonigozlan. يمكن العثور على الكود الأصلي هنا.
مثال على الاستخدام
تجزئة الفيديو وتتبعه
تتمثل القوة الرئيسية لـ EdgeTAM Video في قدرته على تتبع الكائنات عبر إطارات الفيديو بكفاءة على الأجهزة المحمولة. فيما يلي كيفية استخدامه لتجزئة الفيديو:
تتبع الفيديو الأساسي
from transformers import EdgeTamVideoModel, Sam2VideoProcessor
import torch
model = EdgeTamVideoModel.from_pretrained("yonigozlan/edgetam-video-1", device_map="auto")
processor = Sam2VideoProcessor.from_pretrained("yonigozlan/edgetam-video-1")
# Load video frames (example assumes you have a list of PIL Images)
# video_frames = [Image.open(f"frame_{i:05d}.jpg") for i in range(num_frames)]
# For this example, we'll use the video loading utility
from transformers.video_utils import load_video
video_url = "https://huggingface.co/datasets/hf-internal-testing/sam2-fixtures/resolve/main/bedroom.mp4"
video_frames, _ = load_video(video_url)
# Initialize video inference session
inference_session = processor.init_video_session(
video=video_frames,
inference_device=device,
)
# Add click on first frame to select object
ann_frame_idx = 0
ann_obj_id = 1
points = [[[[210, 350]]]]
labels = [[[1]]]
processor.add_inputs_to_inference_session(
inference_session=inference_session,
frame_idx=ann_frame_idx,
obj_ids=ann_obj_id,
input_points=points,
input_labels=labels,
)
# Segment the object on the first frame
outputs = model(
inference_session=inference_session,
frame_idx=ann_frame_idx,
)
video_res_masks = processor.post_process_masks(
[outputs.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
)[0]
print(f"Segmentation shape: {video_res_masks.shape}")
Segmentation shape: torch.Size([1, 1, 540, 960])
# Propagate through the entire video
video_segments = {}
for sam2_video_output in model.propagate_in_video_iterator(inference_session):
video_res_masks = processor.post_process_masks(
[sam2_video_output.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
)[0]
video_segments[sam2_video_output.frame_idx] = video_res_masks
print(f"Tracked object through {len(video_segments)} frames")
Tracked object through 200 framesتتبع الفيديو متعدد الأهداف
تتبع عدة كائنات في وقت واحد عبر إطارات الفيديو:
# Reset for new tracking session
inference_session.reset_inference_session()
# Add multiple objects on the first frame
ann_frame_idx = 0
obj_ids = [2, 3]
input_points = [[[[200, 300]], [[400, 150]]]] # Points for two objects (batched)
input_labels = [[[1], [1]]]
processor.add_inputs_to_inference_session(
inference_session=inference_session,
frame_idx=ann_frame_idx,
obj_ids=obj_ids,
input_points=input_points,
input_labels=input_labels,
)
# Get masks for both objects on first frame
outputs = model(
inference_session=inference_session,
frame_idx=ann_frame_idx,
)
# Propagate both objects through video
video_segments = {}
for sam2_video_output in model.propagate_in_video_iterator(inference_session):
video_res_masks = processor.post_process_masks(
[sam2_video_output.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
)[0]
video_segments[sam2_video_output.frame_idx] = {
obj_id: video_res_masks[i]
for i, obj_id in enumerate(inference_session.obj_ids)
}
print(f"Tracked {len(inference_session.obj_ids)} objects through {len(video_segments)} frames")
Tracked 2 objects through 200 framesتحسين تجزئة الفيديو
يمكنك إضافة نقرات إضافية على أي إطار لتحسين التتبع:
# 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الاستدلال على الفيديو عبر البث
لتطبيقات الوقت الحقيقي، يدعم EdgeTAM Video معالجة إطارات الفيديو عند وصولها:
# Initialize session for streaming
inference_session = processor.init_video_session(
inference_device=device,
)
# Process frames one by one
for frame_idx, frame in enumerate(video_frames[:10]): # Process first 10 frames
inputs = processor(images=frame, device=device, return_tensors="pt").to(model.device)
...
if frame_idx == 0:
# Add point input on first frame
processor.add_inputs_to_inference_session(
inference_session=inference_session,
frame_idx=0,
obj_ids=1,
input_points=[[[[210, 350], [250, 220]]]],
input_labels=[[[1, 1]]],
original_size=inputs.original_sizes[0], # need to be provided when using streaming video inference
)
...
# Process current frame
sam2_video_output = model(inference_session=inference_session, frame=inputs.pixel_values[0])
...
video_res_masks = processor.post_process_masks(
[sam2_video_output.pred_masks], original_sizes=inputs.original_sizes, binarize=False
)[0]
print(f"Frame {frame_idx}: mask shape {video_res_masks.shape}")
Frame 0: mask shape torch.Size([1, 1, 540, 960])
...معالجة الدُفعات من الفيديو لعدة كائنات
تتبّع عدة كائنات في نفس الوقت داخل الفيديو عن طريق إضافتها جميعًا دفعة واحدة:
# Initialize video session
inference_session = processor.init_video_session(
video=video_frames,
inference_device=device,
)
# Add multiple objects on the first frame using batch processing
ann_frame_idx = 0
obj_ids = [2, 3] # Track two different objects
input_points = [
[[[200, 300], [230, 250], [275, 175]], [[400, 150]]]
] # Object 2: 3 points (2 positive, 1 negative); Object 3: 1 point
input_labels = [
[[1, 1, 0], [1]]
] # Object 2: positive, positive, negative; Object 3: positive
processor.add_inputs_to_inference_session(
inference_session=inference_session,
frame_idx=ann_frame_idx,
obj_ids=obj_ids,
input_points=input_points,
input_labels=input_labels,
)
# Get masks for all objects on the first frame
outputs = model(
inference_session=inference_session,
frame_idx=ann_frame_idx,
)
video_res_masks = processor.post_process_masks(
[outputs.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
)[0]
print(f"Generated masks for {video_res_masks.shape[0]} objects")
Generated masks for 2 objects
# Propagate all objects through the video
video_segments = {}
for sam2_video_output in model.propagate_in_video_iterator(inference_session):
video_res_masks = processor.post_process_masks(
[sam2_video_output.pred_masks], original_sizes=[[inference_session.video_height, inference_session.video_width]], binarize=False
)[0]
video_segments[sam2_video_output.frame_idx] = {
obj_id: video_res_masks[i]
for i, obj_id in enumerate(inference_session.obj_ids)
}
print(f"Tracked {len(inference_session.obj_ids)} objects through {len(video_segments)} frames")
Tracked 2 objects through 200 framesEdgeTamVideoMaskDecoderConfig
فئة transformers.EdgeTamVideoMaskDecoderConfig
< 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 = Nonehidden_size: int = 256hidden_act: str = 'gelu'mlp_dim: int = 2048num_hidden_layers: int = 2num_attention_heads: int = 8attention_downsample_rate: int = 2num_multimask_outputs: int = 3iou_head_depth: int = 3iou_head_hidden_dim: int = 256dynamic_multimask_via_stability: bool = Truedynamic_multimask_stability_delta: float = 0.05dynamic_multimask_stability_thresh: float = 0.98 )
المعاملات
- hidden_size (
int، اختياري، القيمة الافتراضية256) — أبعاد التمثيلات المخفية. - hidden_act (
str، اختياري، القيمة الافتراضيةgelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وما إلى ذلك. - mlp_dim (
int، اختياري، القيمة الافتراضية 2048) — أبعاد شبكة MLP في محوّل الاتجاهين. - num_hidden_layers (
int، اختياري، القيمة الافتراضية2) — عدد الطبقات المخفية في مُفكِّك Transformer. - num_attention_heads (
int، اختياري، القيمة الافتراضية8) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - attention_downsample_rate (
int, اختياري، القيمة الافتراضية 2) — معدل تقليل الدقة لطبقات الانتباه. - num_multimask_outputs (
int، اختياري، القيمة الافتراضية 3) — عدد مخرجات multimask. - iou_head_depth (
int، اختياري، القيمة الافتراضية 3) — عمق رأس IoU. - iou_head_hidden_dim (
int، اختياري، القيمة الافتراضية 256) — البُعد الخفي لرأس IoU. - dynamic_multimask_via_stability (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم استخدام dynamic multimask عبر stability. - dynamic_multimask_stability_delta (
float، اختياري، القيمة الافتراضية 0.05) — قيمة دلتا الاستقرار الخاصة بالقناع متعدد الطبقات الديناميكي. - dynamic_multimask_stability_thresh (
float، اختياري، القيمة الافتراضية 0.98) — حد الاستقرار الخاص بـ dynamic multimask.
هذه فئة الإعدادات المخزنة لإعدادات نموذج EdgeTamVideoModel. تُستخدم لاستحداث نموذج Edgetam Video وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيُنتج إعدادات مشابهة لتلك الخاصة بـ yonigozlan/EdgeTAM-hf
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
EdgeTamVideoPromptEncoderConfig
فئة transformers.EdgeTamVideoPromptEncoderConfig
< 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 = Nonehidden_size: int = 256image_size: int | list[int] | tuple[int, int] = 1024patch_size: int | list[int] | tuple[int, int] = 16mask_input_channels: int = 16num_point_embeddings: int = 4hidden_act: str = 'gelu'layer_norm_eps: float = 1e-06scale: int = 1 )
المعاملات
- hidden_size (
int، اختياري، القيمة الافتراضية256) — أبعاد التمثيلات المخفية. - image_size (
Union[int, list[int], tuple[int, int]]، اختياري، القيمة الافتراضية1024) — حجم (دقة) كل صورة. - patch_size (
Union[int, list[int], tuple[int, int]]، اختياري، القيمة الافتراضية16) — حجم (دقة) كل رقعة. - mask_input_channels (
int، اختياري، القيمة الافتراضية 16) — عدد القنوات التي تُمرَّر إلى وحدةMaskDecoder. - num_point_embeddings (
int، اختياري، القيمة الافتراضية 4) — عدد تضمينات النقاط التي سيتم استخدامها. - hidden_act (
str، اختياري، القيمة الافتراضيةgelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وما إلى ذلك. - layer_norm_eps (
float, اختياري، القيمة الافتراضية1e-06) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة. - scale (
float، اختياري، القيمة الافتراضية 1) — معامل المقياس لمُشفِّر المُوجِّه.
هذه فئة الإعدادات المخزنة لإعدادات نموذج EdgeTamVideoModel. تُستخدم لاستحداث نموذج Edgetam Video وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيُنتج إعدادات مشابهة لتلك الخاصة بـ yonigozlan/EdgeTAM-hf
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
EdgeTamVideoConfig
فئة transformers.EdgeTamVideoConfig
< 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 = Nonevision_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneprompt_encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonemask_decoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Noneinitializer_range: float = 0.02num_maskmem: int = 7image_size: int | list[int] | tuple[int, int] = 1024sigmoid_scale_for_mem_enc: float = 20.0sigmoid_bias_for_mem_enc: float = -10.0enable_occlusion_spatial_embedding: bool = Truemultimask_output_in_sam: bool = Truemultimask_min_pt_num: int = 0multimask_max_pt_num: int = 1multimask_output_for_tracking: bool = Truemax_object_pointers_in_encoder: int = 16max_cond_frame_num: int = -1enable_temporal_pos_encoding_for_object_pointers: bool = Truememory_attention_hidden_size: int = 256memory_attention_num_layers: int = 2memory_attention_num_attention_heads: int = 1memory_attention_downsample_rate: int = 1memory_attention_mlp_hidden_size: int = 2048memory_attention_mlp_hidden_act: str = 'relu'memory_attention_dropout: float | int = 0.1memory_attention_rope_feat_sizes: list | None = Nonememory_attention_rope_k_sizes: list | None = Nonememory_attention_rope_dropout: float | int = 0.1rope_parameters: dict | None = Noneperceiver_resampler_num_latents: int = 256perceiver_resampler_num_latents_2d: int = 256perceiver_resampler_hidden_size: int = 64perceiver_resampler_mlp_intermediate_size: int = 256perceiver_resampler_num_attention_heads: int = 1perceiver_resampler_attention_head_dim: int = 64perceiver_resampler_num_layers: int = 2perceiver_resampler_hidden_dropout: float | int = 0.0perceiver_resampler_attention_dropout: float | int = 0.0memory_encoder_hidden_size: int = 256memory_encoder_output_channels: int = 64mask_downsampler_embed_dim: int = 256memory_fuser_intermediate_dim: int = 1024mask_downsampler_kernel_size: int = 3mask_downsampler_stride: int = 2mask_downsampler_padding: int = 1mask_downsampler_total_stride: int = 16mask_downsampler_hidden_act: str = 'gelu'memory_fuser_num_layers: int = 2memory_fuser_embed_dim: int = 256memory_fuser_kernel_size: int = 7memory_fuser_padding: int = 3memory_fuser_layer_scale_init_value: float = 1e-06memory_fuser_hidden_act: str = 'gelu' )
المعاملات
- vision_config (
Union[dict, ~configuration_utils.PreTrainedConfig], اختياري) — كائن الإعدادات أو قاموس العمود الفقري البصري. - prompt_encoder_config (Union[
dict,EdgeTamVideoPromptEncoderConfig], اختياري) — قائمة خيارات الإعدادات المستخدمة لتهيئة EdgeTamVideoPromptEncoderConfig. - mask_decoder_config (Union[
dict,EdgeTamVideoMaskDecoderConfig], اختياري) — قائمة خيارات الإعدادات المستخدمة لتبويب EdgeTamMaskDecoderConfig. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - num_maskmem (
int، اختياري، القيمة الافتراضية 7) — عدد فتحات الذاكرة لذاكرة القناع. - image_size (
Union[int, list[int], tuple[int, int]]، اختياري، القيمة الافتراضية1024) — حجم (دقة) كل صورة. - sigmoid_scale_for_mem_enc (
float, اختياري، القيمة الافتراضية 20.0) — معامل المقياس لدالة سيجمويد في مشفّر الذاكرة. - sigmoid_bias_for_mem_enc (
float, اختياري، القيمة الافتراضية -10.0) — انحياز لدالة sigmoid في مشفّر الذاكرة. - enable_occlusion_spatial_embedding (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم تفعيل التضمين المكاني للإخفاءات. - multimask_output_in_sam (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم إخراج أقنعة متعددة من رأس SAM. - multimask_min_pt_num (
int، اختياري، القيمة الافتراضية 0) — الحد الأدنى لعدد النقاط اللازمة لتفعيل إخراج multimask. - multimask_max_pt_num (
int، اختياري، القيمة الافتراضية 1) — الحد الأقصى لعدد النقاط التي تُطلق إخراج multimask. - multimask_output_for_tracking (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم استخدام مخرجات الأقنعة المتعددة للتتبع. - max_object_pointers_in_encoder (
int، اختياري، القيمة الافتراضية 16) — الحد الأقصى لعدد مؤشرات الكائنات في المُشفِّر. - max_cond_frame_num (
int، اختياري، القيمة الافتراضية -1) — الحد الأقصى لعدد إطارات الشرط المستخدمة في انتباه الذاكرة. اضبطه على -1 لاستخدام جميع إطارات الشرط. - enable_temporal_pos_encoding_for_object_pointers (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم تفعيل الترميز الموضعي الزمني لمؤشرات الكائنات. - memory_attention_hidden_size (
int, اختياري، القيمة الافتراضية 256) — أبعاد حالات الإخفاء لانتباه الذاكرة. - memory_attention_num_layers (
int, اختياري، القيمة الافتراضية 2) — عدد الطبقات في وحدة انتباه الذاكرة. - memory_attention_num_attention_heads (
int، اختياري، القيمة الافتراضية 1) — عدد رؤوس الانتباه لكل طبقة انتباه في انتباه الذاكرة. - memory_attention_downsample_rate (
int، اختياري، القيمة الافتراضية 1) — معدل تقليل الدقة لطبقات الانتباه. - memory_attention_mlp_hidden_size (
int، اختياري، القيمة الافتراضية 2048) — أبعاد الشبكة الأمامية في وحدة انتباه الذاكرة. - memory_attention_mlp_hidden_act (
str، اختياري، القيمة الافتراضية"relu") — دالة التنشيط غير الخطية في الشبكة الأمامية داخل وحدة انتباه الذاكرة. - memory_attention_dropout (
float, اختياري، القيمة الافتراضية 0.1) — معدل الإسقاط (dropout) لوحدة الانتباه الذاكري. - memory_attention_rope_feat_sizes (
Tuple[int, int]، اختياري، القيمة الافتراضية[64, 64]) — حجم الميزات لتشفير الموضع Rope. - memory_attention_rope_k_sizes (
List[int]، اختياري، القيمة الافتراضية[16, 16]) — حجم الميزات الرئيسية لتشفير المواقع RoPE في انتباه الذاكرة. - memory_attention_rope_dropout (
float, اختياري، القيمة الافتراضية 0.1) — معدل الإسقاط (dropout) لتشفير المواقع في Rope. - rope_parameters (
dict, اختياري) — قاموس يحتوي على معاملات التهيئة الخاصة بتضمينات RoPE. يجب أن يحتوي القاموس على قيمة لـrope_theta، ومعاملات اختيارية تُستخدم للتصحيح (scaling) في حال رغبتَ في استخدام RoPE معmax_position_embeddingsأطول. - perceiver_resampler_num_latents (
int, اختياري، القيمة الافتراضية 256) — عدد الرموز الكامنة أحادية البعد في مُعيد تشكيل Perceiver. - perceiver_resampler_num_latents_2d (
int, اختياري، القيمة الافتراضية 256) — عدد الرموز الكامنة ثنائية الأبعاد في مُعيد تشكيل Perceiver. - perceiver_resampler_hidden_size (
int، اختياري، القيمة الافتراضية 64) — حجم الطبقة المخفية لمُعيد عينة Perceiver. - perceiver_resampler_mlp_intermediate_size (
int، اختياري، القيمة الافتراضية 256) — الحجم الوسيط للشبكة الأمامية في مُعيد عينة perceiver. - perceiver_resampler_num_attention_heads (
int، اختياري، القيمة الافتراضية 1) — عدد رؤوس الانتباه في مُعيد تشكيل perceiver. - perceiver_resampler_attention_head_dim (
int، اختياري، القيمة الافتراضية 64) — أبعاد كل رأس انتباه في مُعيد تشكيل Perceiver. - perceiver_resampler_num_layers (
int، اختياري، القيمة الافتراضية 2) — عدد الطبقات في مُعيد تشكيل perceiver. - perceiver_resampler_hidden_dropout (
float, اختياري، القيمة الافتراضية 0.0) — معدل الإسقاط (dropout) للطبقات المخفية في مُعيد تشكيل Perceiver. - perceiver_resampler_attention_dropout (
float, اختياري، القيمة الافتراضية 0.0) — معدل الإسقاط (dropout) لطبقات الانتباه في مُعيد تشكيل Perceiver. - memory_encoder_hidden_size (
int, اختياري، القيمة الافتراضية 256) — أبعاد حالات المخفي لمُشفِّر الذاكرة. - memory_encoder_output_channels (
int، اختياري، القيمة الافتراضية 64) — عدد قنوات المخرج لمشفّر الذاكرة. - mask_downsampler_embed_dim (
int، اختياري، القيمة الافتراضية 256) — أبعاد تضمين مُصغِّر القناع. - memory_fuser_intermediate_dim (
int, اختياري، القيمة الافتراضية 1024) — البُعد الوسيط لشبكة التغذية الأمامية في مدمج الذاكرة. - 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_kernel_size (
int، اختياري، القيمة الافتراضية 7) — حجم النواة (kernel) لمدمج الذاكرة. - memory_fuser_padding (
int, اختياري، القيمة الافتراضية 3) — الحشو الخاص بمدمج الذاكرة. - memory_fuser_layer_scale_init_value (
float, اختياري، القيمة الافتراضية 1e-06) — القيمة الأولية لمقياس الطبقة في مدمج الذاكرة. - memory_fuser_hidden_act (
str، اختياري، القيمة الافتراضية"gelu") — دالة التنشيط غير الخطية في مدمج الذاكرة.
هذه فئة الإعدادات المخزنة لإعدادات نموذج EdgeTamVideoModel. تُستخدم لاستحداث نموذج Edgetam Video وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيُنتج إعدادات مشابهة لتلك الخاصة بـ yonigozlan/EdgeTAM-hf
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
مثال:
>>> from transformers import (
... EdgeTamVisionConfig,
... EdgeTamVideoPromptEncoderConfig,
... EdgeTamVideoMaskDecoderConfig,
... EdgeTamVideoModel,
... EdgeTamVideoConfig,
... )
>>> # Initializing a EdgeTamVideoConfig with `"facebook/edgetam.1_hiera_tiny"` style configuration
>>> configuration = EdgeTamVideoConfig()
>>> # Initializing a EdgeTamVideoModel (with random weights) from the `"facebook/edgetam.1_hiera_tiny"` style configuration
>>> model = EdgeTamVideoModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> # We can also initialize a EdgeTamConfig from a EdgeTamVisionConfig, EdgeTamPromptEncoderConfig, and EdgeTamMaskDecoderConfig
>>> # Initializing EDGETAM vision encoder, memory attention, and memory encoder configurations
>>> vision_config = EdgeTamVisionConfig()
>>> prompt_encoder_config = EdgeTamVideoPromptEncoderConfig()
>>> mask_decoder_config = EdgeTamVideoMaskDecoderConfig()
>>> config = EdgeTamVideoConfig(vision_config, prompt_encoder_config, mask_decoder_config)EdgeTamVideoInferenceSession
فئة transformers.EdgeTamVideoInferenceSession
< 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 )
احصل على المخرجات مع إدارة ذكية للأجهزة.
تعيين معرّف الكائن إلى الفهرس، مع إنشاء إدخال جديد عند الحاجة.
تعيين فهرس الكائن على جانب النموذج إلى معرّف الكائن على جانب العميل.
إزالة مدخلات القناع.
إزالة مدخلات النقاط.
إعادة تعيين بيانات التتبع والذاكرة المؤقتة.
إعادة تعيين بيانات التتبع مع الاحتفاظ بالذاكرة المؤقتة.
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، يتم حفظ المخرجات كقاموس.
EdgeTamVideoModel
فئة transformers.EdgeTamVideoModel
< source >( config: EdgeTamVideoConfig )
المعاملات
- config (EdgeTamVideoConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Edgetam Video الأساسي الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( inference_session: EdgeTamVideoInferenceSessionframe_idx: int | None = Noneframe: typing.Optional[torch.Tensor] = Nonereverse: bool = False**kwargs ) → EdgeTamVideoSegmentationOutput or tuple(torch.Tensor)
المعاملات
- inference_session (
~models.edgetam_video.modeling_edgetam_video.EdgeTamVideoInferenceSession) — كائن جلسة الاستدلال للفيديو. - frame_idx (
int, اختياري) — مؤشر الإطار الذي سيتم عليه تشغيل الاستدلال. لا حاجة إلى تقديمه عند الاستدلال على إطار جديد تم بثه. - frame (
torch.Tensor، اختياري) — الإطار المراد معالجته. يُقدَّم عند البث. - reverse (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب أن يتم التوزيع في الاتجاه العكسي.
يعيد
EdgeTamVideoSegmentationOutput أو tuple(torch.Tensor)
EdgeTamVideoSegmentationOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (EdgeTamVideoConfig) والمدخلات.
نشر الكائنات عبر إطار فيديو مُبَثّ.
- 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
< source >( pixel_values: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → EdgeTamVideoVisionEncoderOutput or tuple(torch.Tensor)
المعاملات
- pixel_values (
torch.Tensor) — قيم البكسلات المدخلة ذات الشكل(batch_size, num_channels, height, width).
يعيد
EdgeTamVideoVisionEncoderOutput أو tuple(torch.Tensor)
EdgeTamVideoVisionEncoderOutput أو مجموعة (tuple) من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (EdgeTamVideoConfig) والمدخلات.
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.