Transformers documentation
SAM2
تمت مساهمة هذا النموذج في Hugging Face Transformers في 2025-08-14.
SAM2
نظرة عامة
قُدِّم نموذج SAM2 (Segment Anything Model 2) في Segment Anything in Images and Videos من قِبل Nikhila Ravi وValentin Gabeur وYuan-Ting Hu وRonghang Hu وChaitanya Ryali وTengyu Ma وHaitham Khedr وRoman Rädle وChloe Rolland وLaura Gustafson وEric Mintun وJunting Pan وKalyan Vasudev Alwala وNicolas Carion وChao-Yuan Wu وRoss Girshick وPiotr Dollár وChristoph Feichtenhofer.
يمكن استخدام النموذج للتنبؤ بأقنعة التقسيم لأي كائن ذي اهتمام، وذلك بناءً على صورة أو فيديو مُدخل، ونقاط أو صناديق محيطة مُدخلة.

المستخلص من الورقة البحثية هو كالتالي:
نقدّم نموذج Segment Anything Model 2 (SAM 2)، وهو نموذج أساسي يهدف إلى حل مشكلة التقطيع البصري التفاعلي في الصور والفيديوهات. قمنا ببناء محرك بيانات يحسّن النموذج والبيانات عبر تفاعل المستخدم، لجمع أكبر مجموعة بيانات للتقطيع الفيديوي حتى الآن. يعتمد نموذجنا على بنية تحويلية بسيطة مع ذاكرة تدفقية لمعالجة الفيديو في الوقت الفعلي. يوفر SAM 2 المدرَّب على بياناتنا أداءً قويًا عبر مجموعة واسعة من المهام. في التقطيع الفيديوي، نلاحظ دقة أعلى باستخدام تفاعلات أقل بثلاث مرات مقارنةً بالأساليب السابقة. وفي التقطيع الصوري، يكون نموذجنا أدق وأسرع بست مرات من نموذج Segment Anything Model (SAM). نعتقد أن بياناتنا ونموذجنا ورؤانا ستشكل محطة مهمة للتقطيع الفيديوي ومهام الإدراك ذات الصلة. سننشر نسخة من نموذجنا، ومجموعة البيانات، وعرضًا تفاعليًا.
نصائح:
- دعم الدفعات والمقاطع المرئية: يدعم SAM2 معالجة الدفعات والتجزئة السلسة للمقاطع المرئية بشكل أصلي، بينما صُمم SAM الأصلي للصور الثابتة ومسارات العمل الأبسط التي تعالج صورة واحدة في كل مرة.
- الدقة والتعميم: يُظهر SAM2 تحسناً في جودة التقطيع، والمتانة، والتعميم بدون تدريب مسبق على مجالات جديدة مقارنةً بالنموذج الأصلي SAM، لا سيما عند استخدام تلميحات مختلطة.
تمت مساهمة هذا النموذج من قِبَل sangbumchoi وyonigozlan. يمكن العثور على الكود الأصلي هنا.
مثال على الاستخدام
إنشاء الأقنعة تلقائيًا باستخدام Pipeline
يمكن استخدام SAM2 لتوليد الأقنعة تلقائيًا لتجزئة جميع الكائنات في صورة باستخدام خط أنابيب mask-generation:
from transformers import pipeline
generator = pipeline("mask-generation", model="facebook/sam2.1-hiera-large", device=0)
image_url = "https://huggingface.co/datasets/hf-internal-testing/sam2-fixtures/resolve/main/truck.jpg"
outputs = generator(image_url, points_per_batch=64)
len(outputs["masks"]) # Number of masks generated
39تقسيم الصور الأساسي
نقرة في نقطة واحدة
يمكنك تجزئة الكائنات من خلال تقديم نقرة نقطة واحدة على الكائن الذي تريد تجزئته:
from transformers import Sam2Processor, Sam2Model
import torch
from PIL import Image
import requests
model = Sam2Model.from_pretrained("facebook/sam2.1-hiera-large", device_map="auto")
processor = Sam2Processor.from_pretrained("facebook/sam2.1-hiera-large")
image_url = "https://huggingface.co/datasets/hf-internal-testing/sam2-fixtures/resolve/main/truck.jpg"
raw_image = Image.open(requests.get(image_url, stream=True).raw).convert("RGB")
input_points = [[[[500, 375]]]] # Single point click, 4 dimensions (image_dim, object_dim, point_per_object_dim, coordinates)
input_labels = [[[1]]] # 1 for positive click, 0 for negative click, 3 dimensions (image_dim, object_dim, point_label)
inputs = processor(images=raw_image, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])[0]
# The model outputs multiple mask predictions ranked by quality score
print(f"Generated {masks.shape[1]} masks with shape {masks.shape}")
Generated 3 masks with shape torch.Size(1, 3, 1500, 2250)نقاط متعددة للتحسين
يمكنك تقديم عدة نقاط لتحسين التقسيم:
# Add both positive and negative points to refine the mask
input_points = [[[[500, 375], [1125, 625]]]] # Multiple points for refinement
input_labels = [[[1, 1]]] # Both positive clicks
inputs = processor(images=raw_image, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])[0]إدخال صندوق الحدود
يدعم SAM2 أيضًا مدخلات صندوق الحدود للتجزئة:
# Define bounding box as [x_min, y_min, x_max, y_max]
input_boxes = [[[75, 275, 1725, 850]]]
inputs = processor(images=raw_image, input_boxes=input_boxes, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])[0]تجزئة كائنات متعددة
يمكنك تجزئة عدة كائنات في الوقت نفسه:
# Define points for two different objects
input_points = [[[[500, 375]], [[650, 750]]]] # Points for two objects in same image
input_labels = [[[1], [1]]] # Positive clicks for both objects
inputs = processor(images=raw_image, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs, multimask_output=False)
# Each object gets its own mask
masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])[0]
print(f"Generated masks for {masks.shape[0]} objects")
Generated masks for 2 objectsالاستدلال الدُفعي
الصور المجمعة
معالجة عدة صور في وقت واحد لتحسين الكفاءة:
from transformers import Sam2Processor, Sam2Model
import torch
from PIL import Image
import requests
model = Sam2Model.from_pretrained("facebook/sam2.1-hiera-large", device_map="auto")
processor = Sam2Processor.from_pretrained("facebook/sam2.1-hiera-large")
# Load multiple images
image_urls = [
"https://huggingface.co/datasets/hf-internal-testing/sam2-fixtures/resolve/main/truck.jpg",
"https://huggingface.co/datasets/hf-internal-testing/transformers-synthetic-assets/resolve/main/images/dog_sam.png"
]
raw_images = [Image.open(requests.get(url, stream=True).raw).convert("RGB") for url in image_urls]
# Single point per image
input_points = [[[[500, 375]]], [[[770, 200]]]] # One point for each image
input_labels = [[[1]], [[1]]] # Positive clicks for both images
inputs = processor(images=raw_images, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs, multimask_output=False)
# Post-process masks for each image
all_masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])
print(f"Processed {len(all_masks)} images, each with {all_masks[0].shape[0]} objects")
Processed 2 images, each with 1 objectsكائنات مُجمّعة لكل صورة
قم بتجزئة عدة كائنات داخل كل صورة باستخدام الاستدلال الدُفعي:
# Multiple objects per image - different numbers of objects per image
input_points = [
[[[500, 375]], [[650, 750]]], # Truck image: 2 objects
[[[770, 200]]] # Dog image: 1 object
]
input_labels = [
[[1], [1]], # Truck image: positive clicks for both objects
[[1]] # Dog image: positive click for the object
]
inputs = processor(images=raw_images, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs, multimask_output=False)
all_masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])الصور المجمعة مع الكائنات المجمعة ونقاط متعددة
التعامل مع سيناريوهات الدفعات المعقدة التي تتضمن عدة نقاط لكل كائن:
# Add groceries image for more complex example
groceries_url = "https://huggingface.co/datasets/hf-internal-testing/sam2-fixtures/resolve/main/groceries.jpg"
groceries_image = Image.open(requests.get(groceries_url, stream=True).raw).convert("RGB")
raw_images = [raw_images[0], groceries_image] # Use truck and groceries images
# Complex batching: multiple images, multiple objects, multiple points per object
input_points = [
[[[500, 375]], [[650, 750]]], # Truck image: 2 objects with 1 point each
[[[400, 300]], [[630, 300], [550, 300]]] # Groceries image: obj1 has 1 point, obj2 has 2 points
]
input_labels = [
[[1], [1]], # Truck image: positive clicks
[[1], [1, 1]] # Groceries image: positive clicks for refinement
]
inputs = processor(images=raw_images, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs, multimask_output=False)
all_masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])صناديق الحدود المجمّعة
معالجة عدة صور مع مدخلات مربعات محيطة:
# Multiple bounding boxes per image (using truck and groceries images)
input_boxes = [
[[75, 275, 1725, 850], [425, 600, 700, 875], [1375, 550, 1650, 800], [1240, 675, 1400, 750]], # Truck image: 4 boxes
[[450, 170, 520, 350], [350, 190, 450, 350], [500, 170, 580, 350], [580, 170, 640, 350]] # Groceries image: 4 boxes
]
# Update images for this example
raw_images = [raw_images[0], groceries_image] # truck and groceries
inputs = processor(images=raw_images, input_boxes=input_boxes, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs, multimask_output=False)
all_masks = processor.post_process_masks(outputs.pred_masks.cpu(), inputs["original_sizes"])
print(f"Processed {len(input_boxes)} images with {len(input_boxes[0])} and {len(input_boxes[1])} boxes respectively")
Processed 2 images with 4 and 4 boxes respectivelyاستخدام الأقنعة السابقة كمدخلات
يمكن لـ SAM2 استخدام الأقنعة من التنبؤات السابقة كمدخلات لتحسين التقطيع:
# Get initial segmentation
input_points = [[[[500, 375]]]]
input_labels = [[[1]]]
inputs = processor(images=raw_image, input_points=input_points, input_labels=input_labels, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
# Use the best mask as input for refinement
mask_input = outputs.pred_masks[:, :, torch.argmax(outputs.iou_scores.squeeze())]
# Add additional points with the mask input
new_input_points = [[[[500, 375], [450, 300]]]]
new_input_labels = [[[1, 1]]]
inputs = processor(
input_points=new_input_points,
input_labels=new_input_labels,
original_sizes=inputs["original_sizes"],
return_tensors="pt",
).to(model.device)
with torch.no_grad():
refined_outputs = model(
**inputs,
input_masks=mask_input,
image_embeddings=outputs.image_embeddings,
multimask_output=False,
)Sam2Config
فئة transformers.Sam2Config
< 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.02 )
المعاملات
- vision_config (
Union[dict, ~configuration_utils.PreTrainedConfig], اختياري) — كائن الإعدادات أو قاموس العمود الفقري البصري. - prompt_encoder_config (Union[
dict,Sam2PromptEncoderConfig], اختياري) — قاموس لخيارات التهيئة المستخدمة في تهيئة Sam2PromptEncoderConfig. - mask_decoder_config (Union[
dict,Sam2MaskDecoderConfig], اختياري) — قائمة خيارات الإعدادات المستخدمة لتهيئة Sam2MaskDecoderConfig. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
هذه فئة الإعدادات المخزنة لإعدادات نموذج Sam2Model. تُستخدم لاستحداث نموذج Sam2 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ facebook/sam2.1-hiera-tiny
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
مثال:
>>> from transformers import (
... Sam2VisionConfig,
... Sam2PromptEncoderConfig,
... Sam2MaskDecoderConfig,
... Sam2Model,
... )
>>> # Initializing a Sam2Config with `"facebook/sam2.1_hiera_tiny"` style configuration
>>> configuration = Sam2Config()
>>> # Initializing a Sam2Model (with random weights) from the `"facebook/sam2.1_hiera_tiny"` style configuration
>>> model = Sam2Model(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
>>> # We can also initialize a Sam2Config from a Sam2VisionConfig, Sam2PromptEncoderConfig, and Sam2MaskDecoderConfig
>>> # Initializing SAM2 vision encoder, memory attention, and memory encoder configurations
>>> vision_config = Sam2VisionConfig()
>>> prompt_encoder_config = Sam2PromptEncoderConfig()
>>> mask_decoder_config = Sam2MaskDecoderConfig()
>>> config = Sam2Config(vision_config, prompt_encoder_config, mask_decoder_config)Sam2HieraDetConfig
فئة transformers.Sam2HieraDetConfig
< 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 = 96num_attention_heads: int = 1num_channels: int = 3image_size: int | list[int] | None = Nonepatch_kernel_size: int | list[int] | None = Nonepatch_stride: int | list[int] | None = Nonepatch_padding: int | list[int] | None = Nonequery_stride: int | list[int] | None = Nonewindow_positional_embedding_background_size: list[int] | None = Nonenum_query_pool_stages: int = 3blocks_per_stage: list[int] | None = Noneembed_dim_per_stage: list[int] | None = Nonenum_attention_heads_per_stage: list[int] | None = Nonewindow_size_per_stage: list[int] | None = Noneglobal_attention_blocks: list[int] | None = Nonemlp_ratio: float = 4.0hidden_act: str = 'gelu'layer_norm_eps: float = 1e-06initializer_range: float = 0.02 )
المعاملات
- hidden_size (
int، اختياري، القيمة الافتراضية96) — أبعاد التمثيلات المخفية. - num_attention_heads (
int، اختياري، القيمة الافتراضية1) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - num_channels (
int، اختياري، القيمة الافتراضية3) — عدد قنوات الإدخال. - image_size (
Union[int, list[int]]، اختياري) — حجم (دقة) كل صورة. - patch_kernel_size (
list[int]، اختياري، القيمة الافتراضية[7, 7]) — حجم النواة (kernel) للرقعة (patch). - patch_stride (
list[int]، اختياري، القيمة الافتراضية[4, 4]) — خطوة الباتش. - patch_padding (
list[int]، اختياري، القيمة الافتراضية[3, 3]) — حشو الباتش. - query_stride (
list[int]، اختياري، القيمة الافتراضية[2, 2]) — خطوة التقليل بين المراحل. - window_positional_embedding_background_size (
list[int]، اختياري، القيمة الافتراضية[7, 7]) — حجم النافذة لكل مرحلة عند عدم استخدام الانتباه الشامل. - num_query_pool_stages (
int, اختياري، القيمة الافتراضية 3) — عدد مراحل استعلامات الاستخراب. - blocks_per_stage (
list[int]، اختياري، القيمة الافتراضية[1, 2, 7, 2]) — عدد الكتل في كل مرحلة. - embed_dim_per_stage (
list[int]، اختياري، القيمة الافتراضية[96, 192, 384, 768]) — أبعاد التضمين لكل مرحلة. - num_attention_heads_per_stage (
list[int]، اختياري، القيمة الافتراضية[1, 2, 4, 8]) — عدد رؤوس الانتباه في كل مرحلة. - window_size_per_stage (
list[int]، اختياري، القيمة الافتراضية[8, 4, 14, 7]) — حجم النافذة لكل مرحلة. - global_attention_blocks (
list[int]، اختياري، القيمة الافتراضية[5, 7, 9]) — الكتل التي يُستخدم فيها الانتباه الشامل. - mlp_ratio (
float، اختياري، القيمة الافتراضية4.0) — نسبة بُعد مخفي MLP إلى بُعد التضمين. - hidden_act (
str، اختياري، القيمة الافتراضيةgelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وما إلى ذلك. - layer_norm_eps (
float, اختياري، القيمة الافتراضية1e-06) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
هذه فئة الإعدادات المخزنة لإعدادات نموذج Sam2Model. تُستخدم لاستحداث نموذج Sam2 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ facebook/sam2.1-hiera-tiny
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
Sam2VisionConfig
فئة transformers.Sam2VisionConfig
< 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 = Nonebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonebackbone_channel_list: list[int] | None = Nonebackbone_feature_sizes: list | None = Nonefpn_hidden_size: int = 256fpn_kernel_size: int = 1fpn_stride: int = 1fpn_padding: int = 0fpn_top_down_levels: list[int] | None = Nonenum_feature_levels: int = 3hidden_act: str = 'gelu'layer_norm_eps: float = 1e-06initializer_range: float = 0.02 )
المعاملات
- backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], اختياري) — إعدادات نموذج الهيكل العظمي. - backbone_channel_list (
List[int]، اختياري، القيمة الافتراضية[768, 384, 192, 96]) — قائمة بأبعاد القنوات الخاصة بالهيكل العظمي (backbone). - backbone_feature_sizes (
List[List[int]]، اختياري، القيمة الافتراضية[[256, 256], [128, 128], [64, 64]]) — الأحجام المكانية لخرائط الميزات الصادرة من الهيكل العظمي. - fpn_hidden_size (
int، اختياري، القيمة الافتراضية 256) — البُعد الخفي لـ FPN. - fpn_kernel_size (
int، اختياري، القيمة الافتراضية 1) — حجم النواة للعمليات التجميعية في العنق (neck). - fpn_stride (
int، اختياري، القيمة الافتراضية 1) — خطوة الالتفاف في العنق. - fpn_padding (
int, اختياري، القيمة الافتراضية 0) — الحشو الخاص باللافحات في العنق. - fpn_top_down_levels (
List[int]، اختياري، القيمة الافتراضية[2, 3]) — المستويات لروابط FPN من الأعلى إلى الأسفل. - num_feature_levels (
int، اختياري، القيمة الافتراضية 3) — عدد مستويات الميزات من FPN التي سيتم استخدامها. - hidden_act (
str، اختياري، القيمة الافتراضيةgelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وما إلى ذلك. - layer_norm_eps (
float, اختياري، القيمة الافتراضية1e-06) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة. - initializer_range (
float، اختياري، القيمة الافتراضية0.02) — الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
هذه فئة الإعدادات المخزنة لإعدادات نموذج Sam2Model. تُستخدم لاستحداث نموذج Sam2 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ facebook/sam2.1-hiera-tiny
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
Sam2MaskDecoderConfig
فئة transformers.Sam2MaskDecoderConfig
< 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.
هذه فئة الإعدادات المخزنة لإعدادات نموذج Sam2Model. تُستخدم لاستحداث نموذج Sam2 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ facebook/sam2.1-hiera-tiny
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
Sam2PromptEncoderConfig
فئة transformers.Sam2PromptEncoderConfig
< 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) — معامل المقياس لمُشفِّر المُوجِّه.
هذه فئة الإعدادات المخزنة لإعدادات نموذج Sam2Model. تُستخدم لاستحداث نموذج Sam2 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ facebook/sam2.1-hiera-tiny
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
Sam2Processor
فئة transformers.Sam2Processor
< source >( image_processortarget_size: int | None = Nonepoint_pad_value: int = -10**kwargs )
المعاملات
- image_processor (
Sam2ImageProcessor) — معالج الصور هو مدخل إلزامي. - target_size (
int, اختياري) — الحجم المستهدف (بالبكسل) لتطبيع نقاط الإدخال وصناديق الحدود. إذا لم يُقدَّم، فسيُستخدم حجم مُعالِج الصور الافتراضي. تُطبَّع جميع إحداثيات الإدخال (النقاط والصناديق) على هذا الحجم قبل تمريرها إلى النموذج. يضمن ذلك تمثيلاً متسقاً للإحداثيات بغض النظر عن أبعاد الصورة الأصلية. - point_pad_value (
int، اختياري، القيمة الافتراضية -10) — القيمة المستخدمة لحشو نقاط الإدخال عند تجميع تسلسلات ذات أطوال مختلفة. تُستخدم هذه القيمة لتمييز المواضع المحشوّة وتُحافظ عليها أثناء تطبيع الإحداثيات.
ينشئ Sam2Processor الذي يغلّف معالج الصور في معالج واحد.
يوفر Sam2Processor جميع وظائف Sam2ImageProcessor. راجع ~Sam2ImageProcessor لمزيد من المعلومات.
__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] = Noneinput_points: typing.Union[list[list[list[list[float]]]], torch.Tensor, NoneType] = Noneinput_labels: typing.Union[list[list[list[int]]], torch.Tensor, NoneType] = Noneinput_boxes: typing.Union[list[list[list[float]]], torch.Tensor, NoneType] = Noneoriginal_sizes: typing.Union[list[list[float]], torch.Tensor, NoneType] = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = None**kwargs ) → A BatchEncoding with the following fields
المعاملات
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], اختياري) — الصورة التي سيتم معالجتها مسبقًا. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صورًا بقيم بكسل بين 0 و1، فاضبطdo_rescale=False. - segmentation_maps (
ImageInput، اختياري) — خرائط التقسيم المراد معالجتها. - input_points (
list[list[list[list[float]]]]،torch.Tensor، اختياري) — النقاط التي يجب إضافتها إلى الإطار. - input_labels (
list[list[list[int]]]،torch.Tensor، اختياري) — التسميات الخاصة بالنقاط. - input_boxes (
list[list[list[float]]]،torch.Tensor، اختياري) — صناديق الحدود المراد إضافتها إلى الإطار. - original_sizes (
list[list[float]]،torch.Tensor، اختياري) — الأحجام الأصلية للصور. - return_tensors (
Union[str, ~utils.generic.TensorType], اختياري) — إذا تم تعيينه، فسيُرجع مُتجهات (tensors) لإطار عمل معين. القيم المقبولة هي:'pt': إرجاع كائناتtorch.Tensorمن PyTorch.'np': إرجاع كائناتnp.ndarrayمن NumPy.
يعيد
BatchEncoding يحتوي على الحقول التالية
pixel_values(torch.Tensor): الصورة المعالجة أو الصور.original_sizes(list[list[float]]): الأبعاد الأصلية للصور.labels(torch.Tensor): خرائط التقسيم المعالجة (إذا تم توفيرها).input_points(torch.Tensor): النقاط المعالجة.input_labels(torch.Tensor): التسميات المعالجة.input_boxes(torch.Tensor): صناديق الحدود المعالجة.
post_process_masks
< source >( masksoriginal_sizesmask_threshold = 0.0binarize = Truemax_hole_area = 0.0max_sprinkle_area = 0.0apply_non_overlapping_constraints = False**kwargs ) → (torch.Tensor)
المعاملات
- masks (
Union[List[torch.Tensor], List[np.ndarray]]) — أقنعة مُجمَّعة من mask_decoder بصيغة (batch_size, num_channels, height, width). - original_sizes (
Union[torch.Tensor, List[Tuple[int,int]]]) — الأحجام الأصلية لكل صورة قبل إعادة تحجيمها إلى شكل الإدخال المتوقع للنموذج، بصيغة (الارتفاع، العرض). - mask_threshold (
float, اختياري، القيمة الافتراضية 0.0) — العتبة الخاصة بعمليات التحويل إلى ثنائي ومعالجة ما بعد المعالجة. - binarize (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم تحويل الأقنعة إلى قيم ثنائية. - max_hole_area (
float، اختياري، القيمة الافتراضية 0.0) — الحد الأقصى لمساحة الثقب الذي سيتم ملؤه. - max_sprinkle_area (
float، اختياري، القيمة الافتراضية 0.0) — الحد الأقصى لمساحة الرش التي يجب ملؤها. - apply_non_overlapping_constraints (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم تطبيق قيود عدم التداخل على الأقنعة.
يعيد
(torch.Tensor)
أقنعة مجمّعة (Batched masks) بصيغة batch_size, num_channels, height, width، حيث يُحدَّد (height, width) بواسطة original_size.
إزالة الحشو وتكبير الأقنعة إلى حجم الصورة الأصلي.
Sam2ImageProcessor
فئة transformers.Sam2ImageProcessor
< source >( **kwargs: *<class 'transformers.models.sam2.image_processing_sam2.Sam2ImageProcessorKwargs'> )
المعاملات
- do_convert_rgb (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب تحويل الصورة إلى RGB. - do_resize (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب تغيير حجم الصورة. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]، kwargs، القيمة الافتراضية{'height' -- 1024, 'width': 1024}): يصف الأبعاد القصوى للمدخلات إلى النموذج. - default_to_square (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كانت قيمة size من نوع int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — حجم الصورة الناتجة بعد تطبيقcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None]، kwargs، القيمة الافتراضية2) — مرشّح إعادة العينة (Resampling filter) المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعدادPILImageResampling. لا يكون له أي تأثير إلا إذا كانت قيمةdo_resizeهيTrue. - do_rescale (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إعادة تحجيم الصورة. - rescale_factor (
float، kwargs، اختياري، القيمة الافتراضية0.00392156862745098) — عامل إعادة التحجيم لإعادة تحجيم الصورة إذا كانdo_rescaleمضبوطًا علىTrue. - do_normalize (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم تطبيع الصورة. - image_mean (
Union[float, list[float], tuple[float, ...]]، kwargs، اختياري، القيمة الافتراضية[0.485, 0.456, 0.406]) — متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيينdo_normalizeإلىTrue. - image_std (
Union[float, list[float], tuple[float, ...]]، kwargs، اختياري، القيمة الافتراضية[0.229, 0.224, 0.225]) — الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيينdo_normalizeإلىTrue. - do_pad (
bool، kwargs، اختياري، القيمة الافتراضيةNone) — ما إذا كان يجب ملء الصورة. يتم الملء إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الملء الدقيقة على النموذج. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]، kwargs، القيمة الافتراضيةNone) — الحجم على شكل{"height": int, "width" int}الذي سيتم توسيط الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّمpad_size، فسيتم توسيط الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكونdo_pad=True. - do_center_crop (
bool، kwargs، اختياري) — ما إذا كان يجب قص الصورة من المنتصف. - data_format (
Union[str, ~image_utils.ChannelDimension]، kwargs، اختياري) — يُؤمَّن دعمChannelDimension.FIRSTفقط. أُضيف من أجل التوافق مع المعالجات البطيئة. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, اختياري) — تنسيق بُعد القناة للصورة المدخلة. إذا لم يُضبط، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي:"channels_first"أوChannelDimension.FIRST: صورة بتنسيق (num_channels, height, width)."channels_last"أوChannelDimension.LAST: صورة بصيغة (الارتفاع، العرض، عدد القنوات)."none"أوChannelDimension.NONE: صورة بصيغة (الارتفاع، العرض).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم تعيينه، يُستنتج الجهاز من مقاطع الفيديو المدخلة. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — تُرجع تينسورات مكدّسة إذا تم ضبطها على'pt'، وإلا تُرجع قائمة من التينسورات. - disable_grouping (
bool، kwargs، اختياري) — ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int، kwargs، اختياري) — عدد رموز الصورة التي سيتم استخدامها لكل صورة في المدخلات. تمت إضافته من أجل التوافق مع الإصدارات السابقة، لكن ينبغي ضبطه كخاصية للمعالج في النماذج المستقبلية. - mask_size (
dict[str, *kwargs*, int]، اختياري) — الحجم{"height": int, "width": int}الذي يجب إعادة تحجيم خرائط التقسيم إليه.
ينشئ معالج صور Sam2ImageProcessor.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]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**kwargs: *<class 'transformers.models.sam2.image_processing_sam2.Sam2ImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
المعاملات
- 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، اختياري) — خرائط التقسيم المراد معالجتها مسبقًا. - do_convert_rgb (
bool، kwargs، اختياري) — ما إذا كان يجب تحويل الصورة إلى RGB. - do_resize (
bool، kwargs، اختياري) — ما إذا كان يجب تغيير حجم الصورة. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — يصف الأبعاد القصوى للمدخلات إلى النموذج. - default_to_square (
bool، kwargs، اختياري) — ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كانت القيمة عددًا صحيحًا. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — حجم الصورة الناتجة بعد تطبيقcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — مرشّح إعادة العينة (Resampling filter) المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعدادPILImageResampling. لا يكون له أي تأثير إلا إذا تم تعيينdo_resizeإلىTrue. - do_rescale (
bool، kwargs، اختياري) — ما إذا كان يجب إعادة تحجيم الصورة. - rescale_factor (
float، kwargs، اختياري) — معامل إعادة التحجيم لإعادة تحجيم الصورة إذا كانdo_rescaleمضبوطاً علىTrue. - do_normalize (
bool، kwargs، اختياري) — ما إذا كان سيتم تطبيع الصورة. - image_mean (
Union[float, list[float], tuple[float, ...]]، kwargs، اختياري) — متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيينdo_normalizeإلىTrue. - image_std (
Union[float, list[float], tuple[float, ...]]، kwargs، اختياري) — انحراف المعيار للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيينdo_normalizeإلىTrue. - do_pad (
bool، kwargs، اختياري) — ما إذا كان سيتم توسيط الصورة. يتم التوسيط إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية التوسيط الدقيقة على النموذج. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — الحجم على شكل{"height": int, "width" int}الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّمpad_size، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكونdo_pad=True. - do_center_crop (
bool، kwargs، اختياري) — ما إذا كان يجب قص الصورة من المنتصف. - data_format (
Union[str, ~image_utils.ChannelDimension]، kwargs، اختياري) — يُؤمَّن دعمChannelDimension.FIRSTفقط. أُضيف من أجل التوافق مع المعالجات البطيئة. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, اختياري) — تنسيق بُعد القناة للصورة المدخلة. إذا لم يُضبط، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي:"channels_first"أوChannelDimension.FIRST: صورة بتنسيق (num_channels, height, width)."channels_last"أوChannelDimension.LAST: صورة بصيغة (الارتفاع، العرض، عدد القنوات)."none"أوChannelDimension.NONE: صورة بصيغة (الارتفاع، العرض).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم تعيينه، يُستنتج الجهاز من مقاطع الفيديو المدخلة. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — تُرجع تينسورات مكدّسة إذا تم ضبطها على'pt'، وإلا تُرجع قائمة من التينسورات. - disable_grouping (
bool، kwargs، اختياري) — ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int، kwargs، اختياري) — عدد رموز الصورة التي سيتم استخدامها لكل صورة في المدخلات. تمت إضافته من أجل التوافق مع الإصدارات السابقة، لكن ينبغي ضبطه كخاصية للمعالج في النماذج المستقبلية. - mask_size (
dict[str, *kwargs*, int]، اختياري) — الحجم{"height": int, "width": int}الذي يجب إعادة تحجيم خرائط التقسيم إليه.
يعيد
~image_processing_base.BatchFeature
- data (
dict) — قاموس من القوائم/المصفوفات/الموترات التي يعيدها أسلوب call (مثل ‘pixel_values’). - tensor_type (
Union[None, str, TensorType]، اختياري) — يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.
Sam2HieraDetModel
forward
< source >( pixel_values: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> )
Sam2VisionModel
فئة transformers.Sam2VisionModel
< source >( config: Sam2VisionConfig )
المعاملات
- config (Sam2VisionConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج الرؤية من Sam دون أي رأس أو إسقاط في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( pixel_values: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> )
Sam2Model
فئة transformers.Sam2Model
< source >( config: Sam2Config )
المعاملات
- config (Sam2Config) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Segment Anything Model 2 (SAM 2) لتوليد أقنعة التقسيم، بناءً على صورة مدخلة ونقاط وسمات مدخلة، أو صناديق، أو أقنعة.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( pixel_values: typing.Optional[torch.Tensor] = Noneinput_points: typing.Optional[torch.Tensor] = Noneinput_labels: typing.Optional[torch.LongTensor] = Noneinput_boxes: typing.Optional[torch.Tensor] = Noneinput_masks: typing.Optional[torch.LongTensor] = Noneimage_embeddings: typing.Optional[torch.Tensor] = Nonemultimask_output: bool = Trueattention_similarity: typing.Optional[torch.Tensor] = Nonetarget_embedding: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Sam2ImageSegmentationOutput or tuple(torch.Tensor)
المعاملات
- pixel_values (
torch.Tensorمن الشكل(batch_size, num_channels, image_size, image_size)، اختياري) — المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسل باستخدام Sam2ImageProcessor. راجع Sam2ImageProcessor.call() للتفاصيل (Sam2Processor يستخدم Sam2ImageProcessor لمعالجة الصور). - input_points (
torch.Tensorمن الشكل(batch_size, num_points, 2)) — نقاط مكانية ثنائية الأبعاد مدخلة، تُستخدم بواسطة مُشفِّر الموجه (prompt encoder) لتشفير الموجه. عادةً ما يؤدي ذلك إلى نتائج أفضل بكثير. يمكن الحصول على النقاط عن طريق تمرير قائمة من قوائم القوائم إلى المُعالِج (processor) الذي سيُنشئtorchtensors المقابلة من البُعد الرابع. البُعد الأول هو حجم دفعة الصور (image batch size)، والبُعد الثاني هو حجم دفعة النقاط (point batch size) (أي عدد أقنعة التقطيع (segmentation masks) التي نريد من النموذج أن يتنبأ بها لكل نقطة مدخلة)، والبُعد الثالث هو عدد النقاط لكل قناع تقطيع (من الممكن تمرير عدة نقاط لقناع واحد)، وآخر بُعد هو إحداثيات x (العمودية) و y (الأفقية) للنقطة. إذا تم تمرير عدد مختلف من النقاط إما لكل صورة، أو لكل قناع، فسيقوم المُعالِج بإنشاء نقاط “PAD” ستُطابق إحداثي (0, 0)، وسيتم تخطي حساب التضمين (embedding) لهذه النقاط باستخدام التسميات (labels). - input_labels (
torch.LongTensorبشكل(batch_size, point_batch_size, num_points)) — التسميات المدخلة للنقاط، تُستخدم هذه التسميات من قِبل مُشفِّر المُوجِّه (prompt encoder) لتشفير المُوجِّه. وفقًا للتنفيذ الرسمي، توجد ثلاثة أنواع من التسميات1: النقطة هي نقطة تحتوي على الكائن محل الاهتمام0: النقطة هي نقطة لا تحتوي على الكائن محل الاهتمام-1: النقطة المقابلة للخلفية
أضفنا التسمية:
-10: النقطة هي نقطة حشو، وبالتالي يجب تجاهلها من قِبل مُشفِّر المُوجِّه
يجب أن يتم ملء التسميات تلقائيًا بواسطة المعالج.
- input_boxes (
torch.Tensorبشكل(batch_size, num_boxes, 4)) — صناديق الإدخال للنقاط، تُستخدم هذه الصناديق بواسطة مُشفِّر المُوجِّه (prompt encoder) لتشفير المُوجِّه. بشكل عام، يؤدي ذلك إلى أقنعة (masks) مولَّدة أفضل بكثير. يمكن الحصول على الصناديق عن طريق تمرير قائمة من قوائم القوائم إلى المُعالِج (processor)، والذي سيولّدtorchمُتغيِّرًا (tensor)، حيث يتوافق كل بُعد على التوالي مع حجم دفعة الصور (batch size)، وعدد الصناديق لكل صورة، وإحداثيات النقطة العلوية اليسرى والنقطة السفلية اليمنى للصندوق. بالترتيب (x1,y1,x2,y2):x1: إحداثي x للنقطة العلوية اليسرى من الصندوق المدخلy1: إحداثي y للنقطة العلوية اليسرى من مربع الإدخالx2: إحداثي x للنقطة السفلية اليمنى من مربع الإدخالy2: إحداثي y للنقطة السفلية اليمنى من مربع الإدخال
- input_masks (
torch.Tensorمن الشكل(batch_size, image_size, image_size)) — يقبل نموذج SAM أيضًا أقنعة التقسيم كمدخلات. سيتم تضمين القناع بواسطة مُشفِّر المُوجِّه لتوليد تضمين مقابل، سيُغذَّى لاحقًا إلى مُفكِّك الأقنعة. يجب على المستخدم تغذية هذه الأقنعة يدويًا، ويجب أن تكون من الشكل (batch_size،image_size،image_size). - image_embeddings (
torch.Tensorمن الشكل(batch_size, output_channels, window_size, window_size)) — تضمينات الصور، تُستخدم من قِبَل مُفكّك الأقنعة لتوليد الأقنعة ودرجات iou. لحساب أكثر كفاءةً في استخدام الذاكرة، يمكن للمستخدمين أولاً استرجاع تضمينات الصور باستخدام طريقةget_image_embeddings، ثم تمريرها إلى طريقةforwardبدلاً من تمريرpixel_values. - multimask_output (
bool، اختياري) — في التنفيذ الأصلي والورقة البحثية، يُخرج النموذج دائمًا 3 أقنعة لكل صورة (أو لكل نقطة / لكل مربع محدد إذا كان ذلك ذا صلة). ومع ذلك، يمكن إخراج قناع واحد فقط، يقابل القناع «الأفضل»، عن طريق تحديدmultimask_output=False. - attention_similarity (
torch.Tensor، اختياري) — مصفوفة تشابه الانتباه، التي يجب تقديمها إلى فاحص الأقنعة (mask decoder) للانتباه الموجَّه بالهدف في حال استخدام النموذج للتخصيص كما تم تقديمه في PerSAM. - target_embedding (
torch.Tensor، اختياري) — تضمين المفهوم المستهدف، ليُقدَّم إلى فكّ الترميز القناعي (mask decoder) للتلميح الدلالي المستهدف في حال استخدام النموذج للتخصيص كما أُدخل في PerSAM.
يعيد
Sam2ImageSegmentationOutput أو tuple(torch.Tensor)
Sam2ImageSegmentationOutput أو مجموعة مرتبة من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعدادات (Sam2Config) والمدخلات.
تتجاوز طريقة Sam2Model الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
- iou_scores (
torch.Tensorمن الشكل(batch_size, point_batch_size, num_masks)) — درجات التقاطع مع الاتحاد (IoU) للأقنعة المتوقعة. - pred_masks (
torch.Tensorمن الشكل(batch_size, point_batch_size, num_masks, height, width)) — الأقنعة منخفضة الدقة المتوقعة. هذا هو اسم بديل لـlow_res_masks. يجب معالجة هذه الأقنعة ما بعد المعالجة بواسطة المعالج لجعلها بحجم الصورة الأصلي. - object_score_logits (
torch.Tensorمن الشكل(batch_size, point_batch_size, 1)) — قيم اللوجيت الخاصة بدرجة الكائن، والتي تشير إلى ما إذا كان الكائن موجودًا أم لا. - image_embeddings (
tuple(torch.Tensor)) — الميزات المستخرجة من FPN، والتي يستخدمها فكّ ترميز الأقنعة. هذا هو tuple منtorch.Tensorحيث يكون شكل كل tensor هو(batch_size, channels, height, width). - vision_hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عندoutput_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لكل مرحلة من مخرجات النموذج) بأبعاد(batch_size, height, width, hidden_size). حالات المخفية لنموذج الرؤية عند مخرج كل مرحلة. - vision_attentions (
tuple(torch.Tensor)، اختياري، يُعاد عندoutput_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) من الشكل(batch_size, num_heads, sequence_length, sequence_length). أوزان الانتباه لنموذج الرؤية. - mask_decoder_attentions (
tuple(torch.Tensor)، اختياري، يُعاد عندoutput_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length). أوزان الانتباه في فك الترميز للقناع.
مثال:
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from transformers import AutoModel, AutoProcessor
>>> model = AutoModel.from_pretrained("danelcsb/sam2.1_hiera_tiny")
>>> processor = AutoProcessor.from_pretrained("danelcsb/sam2.1_hiera_tiny")
>>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/model_doc/sam-car.png"
>>> with httpx.stream("GET", url) as response:
... raw_image = Image.open(BytesIO(response.read())).convert("RGB")
>>> input_points = [[[400, 650]]] # 2D location of a window on the car
>>> inputs = processor(images=raw_image, input_points=input_points, return_tensors="pt")
>>> # Get segmentation mask
>>> outputs = model(**inputs)
>>> # Postprocess masks
>>> masks = processor.post_process_masks(
... outputs.pred_masks, inputs["original_sizes"]
... )get_image_features
< source >( pixel_values: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Sam2VisionEncoderOutput or tuple(torch.Tensor)
المعاملات
- pixel_values (
torch.Tensor) — قيم البكسلات المدخلة ذات الشكل(batch_size, num_channels, height, width).
يعيد
Sam2VisionEncoderOutput أو tuple(torch.Tensor)
Sam2VisionEncoderOutput أو مجموعة (tuple) من
torch.Tensor (في حال تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعدادات (Sam2Config) والمدخلات.
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.