Transformers documentation
MM Grounding DINO
نُشر هذا النموذج في أوراق HF في 2024-01-04 وسُهم به في Hugging Face Transformers في 2025-08-01.
MM Grounding DINO
طُرِح نموذج MM Grounding DINO في An Open and Comprehensive Pipeline for Unified Object Grounding and Detection بواسطة Xiangyu Zhao وYicheng Chen وShilin Xu وXiangtai Li وXinjiang Wang وYining Li وHaian Huang.
يحسّن MM Grounding DINO على Grounding DINO من خلال تحسين رأس الفئة التبايني وإزالة مشاركة المعلمات في المُفكِّك، مما يُحسّن أداء الكشف بدون تدريب مسبق على كلٍّ من COCO (50.6(+2.2) AP) وLVIS (31.9(+11.8) val AP و41.4(+12.6) minival AP).
يمكنك العثور على جميع نقاط التفتيش الأصلية لنموذج MM Grounding DINO ضمن مجموعة MM Grounding DINO. كما يدعم هذا النموذج الاستدلال باستخدام LLMDet. يمكنك العثور على نقاط تفتيش LLMDet ضمن مجموعة LLMDet.
انقر على نماذج MM Grounding DINO في الشريط الجانبي الأيمن لمزيد من الأمثلة حول كيفية تطبيق MM Grounding DINO على مهام MM Grounding DINO المختلفة.
يُظهر المثال أدناه كيفية توليد النص بناءً على صورة باستخدام فئة AutoModelForZeroShotObjectDetection.
import torch
from transformers import AutoModelForZeroShotObjectDetection, AutoProcessor
from transformers.image_utils import load_image
# Prepare processor and model
model_id = "openmmlab-community/mm_grounding_dino_tiny_o365v1_goldg_v3det"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForZeroShotObjectDetection.from_pretrained(model_id, device_map="auto")
# Prepare inputs
image_url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = load_image(image_url)
text_labels = [["a cat", "a remote control"]]
inputs = processor(images=image, text=text_labels, return_tensors="pt").to(model.device)
# Run inference
with torch.no_grad():
outputs = model(**inputs)
# Postprocess outputs
results = processor.post_process_grounded_object_detection(
outputs,
threshold=0.4,
target_sizes=[(image.height, image.width)]
)
# Retrieve the first image result
result = results[0]
for box, score, labels in zip(result["boxes"], result["scores"], result["labels"]):
box = [round(x, 2) for x in box.tolist()]
print(f"Detected {labels} with confidence {round(score.item(), 3)} at location {box}")ملاحظات
فيما يلي جدول يعرض النماذج ونتائج أدائها في كشف الكائنات على COCO (النتائج من المستودع الرسمي):
النموذج الهيكل الأساسي بيانات ما قبل التدريب الأسلوب COCO mAP mm_grounding_dino_tiny_o365v1_goldg Swin-T O365,GoldG صفرية 50.4(+2.3) mm_grounding_dino_tiny_o365v1_goldg_grit Swin-T O365،GoldG،GRIT صفرية 50.5(+2.1) mm_grounding_dino_tiny_o365v1_goldg_v3det Swin-T O365,GoldG,V3Det صفرية 50.6(+2.2) mm_grounding_dino_tiny_o365v1_goldg_grit_v3det Swin-T O365,GoldG,GRIT,V3Det صفرية 50.4(+2.0) mm_grounding_dino_base_o365v1_goldg_v3det Swin-B O365,GoldG,V3Det صفرية 52.5 mm_grounding_dino_base_all Swin-B O365,ALL - 59.5 mm_grounding_dino_large_o365v2_oiv6_goldg Swin-L O365V2,OpenImageV6,GoldG صفرية 53.0 mm_grounding_dino_large_all Swin-L O365V2,OpenImageV6,ALL - 60.3 فيما يلي جدول بنماذج MM Grounding DINO الصغيرة وأداءها في كشف الكائنات على LVIS (النتائج من المستودع الرسمي):
النموذج بيانات ما قبل التدريب MiniVal APr MiniVal APc MiniVal APf MiniVal AP Val1.0 APr Val1.0 APc Val1.0 APf Val1.0 AP mm_grounding_dino_tiny_o365v1_goldg O365,GoldG 28.1 30.2 42.0 35.7(+6.9) 17.1 22.4 36.5 27.0(+6.9) mm_grounding_dino_tiny_o365v1_goldg_grit O365،GoldG،GRIT 26.6 32.4 41.8 36.5(+7.7) 17.3 22.6 36.4 27.1(+7.0) mm_grounding_dino_tiny_o365v1_goldg_v3det O365,GoldG,V3Det 33.0 36.0 45.9 40.5(+11.7) 21.5 25.5 40.2 30.6(+10.5) mm_grounding_dino_tiny_o365v1_goldg_grit_v3det O365,GoldG,GRIT,V3Det 34.2 37.4 46.2 41.4(+12.6) 23.6 27.6 40.5 31.9(+11.8) تدعم هذه النسخة أيضاً الاستدلال لـ LLMDet. فيما يلي جدول بنماذج LLMDet وأدائها على LVIS (النتائج من المستودع الرسمي):
النموذج بيانات ما قبل التدريب MiniVal APr MiniVal APc MiniVal APf MiniVal AP Val1.0 APr Val1.0 APc Val1.0 APf Val1.0 AP llmdet_tiny (O365,GoldG,GRIT,V3Det) + GroundingCap-1M 44.7 37.3 39.5 50.7 34.9 26.0 30.1 44.3 llmdet_base (O365,GoldG,V3Det) + GroundingCap-1M 48.3 40.8 43.1 54.3 38.5 28.2 34.3 47.8 llmdet_large (O365V2,OpenImageV6,GoldG) + GroundingCap-1M 51.1 45.1 46.1 56.6 42.0 31.6 38.8 50.2
MMGroundingDinoConfig
فئة transformers.MMGroundingDinoConfig
< 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Truebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonetext_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonenum_queries: int = 900encoder_layers: int = 6encoder_ffn_dim: int = 2048encoder_attention_heads: int = 8decoder_layers: int = 6decoder_ffn_dim: int = 2048decoder_attention_heads: int = 8activation_function: str = 'relu'd_model: int = 256dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0auxiliary_loss: bool = Falseposition_embedding_type: str = 'sine'num_feature_levels: int = 4encoder_n_points: int = 4decoder_n_points: int = 4two_stage: bool = Trueclass_cost: float = 1.0bbox_cost: float = 5.0giou_cost: float = 2.0bbox_loss_coefficient: float = 5.0giou_loss_coefficient: float = 2.0focal_alpha: float = 0.25disable_custom_kernels: bool = Falsemax_text_len: int = 256text_enhancer_dropout: float | int = 0.0fusion_droppath: float | int = 0.1fusion_dropout: float | int = 0.0embedding_init_target: bool = Truequery_dim: int = 4positional_embedding_temperature: int = 20decoder_bbox_embed_share: bool = Truedecoder_cls_embed_share: bool = Trueinit_std: float = 0.02layer_norm_eps: float = 1e-05tie_word_embeddings: bool = True )
المعاملات
- is_encoder_decoder (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا. - backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], اختياري) — إعدادات نموذج الهيكل العظمي. - text_config (
Union[dict, ~configuration_utils.PreTrainedConfig]، اختياري) — كائن الإعدادات أو قاموس العمود الفقري النصي. - num_queries (
int, اختياري، القيمة الافتراضية 900) — عدد استعلامات الكائنات، أي فتحات الكشف. هذا هو الحد الأقصى لعدد الكائنات التي يمكن لنموذج MMGroundingDinoModel اكتشافها في صورة واحدة. - encoder_layers (
int, اختياري، القيمة الافتراضية6) — عدد الطبقات المخفية في مُشفِّر Transformer. سيستخدم القيمة نفسها لـnum_layersإذا لم يتم ضبطه. - encoder_ffn_dim (
int، اختياري، القيمة الافتراضية2048) — أبعاد طبقة "الوسط" (التي تُسمّى غالبًا بطبقة التغذية الأمامية) في المُشفِّر. - encoder_attention_heads (
int، اختياري، القيمة الافتراضية8) — عدد رؤوس الانتباه لكل طبقة انتباه في مُشفِّر Transformer. - decoder_layers (
int, اختياري، القيمة الافتراضية6) — عدد الطبقات المخفية في مُفكِّك Transformer. سيُستخدم نفس قيمةnum_layersإذا لم يتم تعيينه. - decoder_ffn_dim (
int، اختياري، القيمة الافتراضية2048) — أبعاد طبقة "الوسط" (التي تُسمّى غالباً بطبقة التغذية الأمامية) في المُفكِّك. - decoder_attention_heads (
int، اختياري، القيمة الافتراضية8) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - activation_function (
str، اختياري، القيمة الافتراضيةrelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وغيرها. - d_model (
int، اختياري، القيمة الافتراضية256) — حجم طبقات المُشفِّر وطبقة المُجمِّع. - dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.1) — النسبة لجميع طبقات dropout. - attention_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — نسبة إسقاط (dropout) لاحتمالات الانتباه. - activation_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — نسبة dropout للتفعيلات داخل الطبقة المتصلة بالكامل. - auxiliary_loss (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام خسائر فك الترميز المساعدة (الخسارة في كل طبقة من طبقات فك الترميز). - position_embedding_type (
str، اختياري، القيمة الافتراضية"sine") — نوع تضمينات الموضع المستخدمة فوق ميزات الصورة. إما"sine"أو"learned". - num_feature_levels (
int، اختياري، القيمة الافتراضية 4) — عدد مستويات الميزات المدخلة. - encoder_n_points (
int، اختياري، القيمة الافتراضية 4) — عدد المفاتيح المُستخرجة في كل مستوى من مستويات الميزات لكل رأس انتباه في المُشفِّر. - decoder_n_points (
int، اختياري، القيمة الافتراضية 4) — عدد المفاتيح المُعَيَّنَة في كل مستوى من مستويات الميزات لكل رأس انتباه في المُفَكِّك. - two_stage (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم تطبيق نموذج DETR قابل للتشوه على مرحلتين، حيث يتم توليد اقتراحات المناطق أيضًا بواسطة نسخة من Grounding DINO، ثم تُغذّى هذه الاقتراحات إلى المُفكِّك (decoder) لتحسين صناديق الحدود بشكل تكراري. - class_cost (
float، اختياري، القيمة الافتراضية1.0) — الوزن النسبي لخطأ التصنيف في تكلفة المطابقة الهنغارية. - bbox_cost (
float، اختياري، القيمة الافتراضية5.0) — الوزن النسبي لخطأ صندوق الحدود L1 في تكلفة المطابقة الهنغارية. - giou_cost (
float، اختياري، القيمة الافتراضية2.0) — الوزن النسبي لخسارة IoU المعممة في تكلفة المطابقة الهنغارية. - bbox_loss_coefficient (
float, اختياري، القيمة الافتراضية5.0) — الوزن النسبي لخسارة صندوق الحدود L1 في خسارة التقطيع البانورامي. - giou_loss_coefficient (
float, اختياري، القيمة الافتراضية2.0) — الوزن النسبي لخسارة IoU المعممة في خسارة التقطيع البانورامي. - focal_alpha (
float، اختياري، القيمة الافتراضية0.25) — معامل ألفا في دالة الخسارة البؤرية. - disable_custom_kernels (
bool، اختياري، القيمة الافتراضيةFalse) — تعطيل استخدام نواة CUDA وCPU المخصصة. هذا الخيار ضروري للتصدير إلى ONNX، حيث لا تدعم عملية التصدير إلى ONNX في PyTorch النوى المخصصة. - max_text_len (
int، اختياري، القيمة الافتراضية 256) — الحد الأقصى لطول مدخلات النص. - text_enhancer_dropout (
float, اختياري، القيمة الافتراضية 0.0) — نسبة dropout لمُحسِّن النص. - fusion_droppath (
float, اختياري، القيمة الافتراضية 0.1) — نسبة droppath الخاصة بوحدة الدمج. - fusion_dropout (
float, اختياري، القيمة الافتراضية 0.0) — نسبة dropout لوحدة الدمج. - embedding_init_target (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم تهيئة الهدف بأوزان Embedding. - query_dim (
int، اختياري، القيمة الافتراضية 4) — بعد متجه الاستعلام. - positional_embedding_temperature (
float، اختياري، القيمة الافتراضية 20) — درجة الحرارة الخاصة بتضمين الموضع الجيبية (Sine Positional Embedding) التي تُستخدم مع العمود الفقري البصري (vision backbone). - decoder_bbox_embed_share (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم مشاركة رأس انحدار bbox لجميع طبقات المُفكِّك. - decoder_cls_embed_share (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم مشاركة رأس التضمين الفئوي لجميع طبقات المُفكِّك. - init_std (
float، اختياري، القيمة الافتراضية0.02) — انحراف معياري لمُهيّئ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - layer_norm_eps (
float, اختياري، القيمة الافتراضية1e-05) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة. - tie_word_embeddings (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب ربط ترميزات الأوزان (weight embeddings) وفقاً لخريطةtied_weights_keysالخاصة بالنموذج.
هذه فئة الإعدادات المخزنة لإعدادات نموذج Mm Grounding Dino. تُستخدم لاستحداث نموذج Mm Grounding Dino وفقًا للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى إعدادات مشابهة لتلك الخاصة بـ openmmlab-community/mm_grounding_dino_tiny_o365v1_goldg_v3det
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
أمثلة:
>>> from transformers import MMGroundingDinoConfig, MMGroundingDinoModel
>>> # Initializing a MM Grounding DINO configuration
>>> configuration = MMGroundingDinoConfig()
>>> # Initializing a model (with random weights) from the configuration
>>> model = MMGroundingDinoModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configMMGroundingDinoModel
فئة transformers.MMGroundingDinoModel
< source >( config: MMGroundingDinoConfig )
المعاملات
- config (MMGroundingDinoConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Grounding DINO الأساسي (المكوّن من هيكل أساسي وحوّال مُشفِّر-مُفكِّك) الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( pixel_values: Tensorinput_ids: Tensortoken_type_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonepixel_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs = Noneoutput_attentions = Noneoutput_hidden_states = Nonereturn_dict = None**kwargs ) → MMGroundingDinoModelOutput or tuple(torch.Tensor)
المعاملات
- pixel_values (
torch.Tensorمن الشكل(batch_size, num_channels, image_size, image_size)) — المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسل باستخدام GroundingDinoImageProcessor. راجع GroundingDinoImageProcessor.call() للتفاصيل (GroundingDinoProcessor يستخدم GroundingDinoImageProcessor لمعالجة الصور). - input_ids (
torch.LongTensorبشكل(batch_size, text_sequence_length)) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا إذا قمت بتزويده.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع BertTokenizer.call() للحصول على التفاصيل.
- token_type_ids (
torch.LongTensorبشكل(batch_size, text_sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]: 0 تتوافق مع رمزsentence A، و1 تتوافق مع رمزsentence Bرمز - attention_mask (
torch.Tensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع هي[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- pixel_mask (
torch.Tensorبشكل(batch_size, height, width), اختياري) — قناع لتجنب تنفيذ الانتباه على قيم البكسلات المعبأة. قيم القناع المختارة من[0, 1]:- 1 للبيكسلات الحقيقية (أي غير المقنّعة)،
- 0 للبيكسلات التي تمثل حشواً (أي مقنّعة).
- encoder_outputs (`
) -- Tuple consists of (last_hidden_state, *optional*:hidden_states, *optional*:attentions)last_hidden_stateof shape(batch_size, sequence_length, hidden_size)`, optional) هي سلسلة من حالات الإخفاء (hidden-states) عند مخرج الطبقة الأخيرة من المُشفِّر. تُستخدم في الانتباه المتقاطع (cross-attention) داخل المُفكِّك. - output_attentions (`
) -- Whether or not to return the attentions tensors of all attention layers. Seeattentions` under returned tensors for more detail. - output_hidden_states (`
) -- Whether or not to return the hidden states of all layers. Seehidden_states` under returned tensors for more detail. - return_dict (") — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.
يعيد
MMGroundingDinoModelOutput أو tuple(torch.Tensor)
MMGroundingDinoModelOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (MMGroundingDinoConfig) والمدخلات.
تتجاوز طريقة MMGroundingDinoModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
last_hidden_state (
torch.Tensorمن الشكل(batch_size, num_queries, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من فاحص النموذج.init_reference_points (
torch.Tensorمن الشكل(batch_size, num_queries, 4)) — نقاط المرجع الأولية المُرسلة عبر مُفكِّك Transformer.intermediate_hidden_states (
torch.Tensorمن الشكل(batch_size, config.decoder_layers, num_queries, hidden_size)) — حالات مخفية وسيطة مكدسة (مخرجات كل طبقة من فاحم الشيفر).intermediate_reference_points (
torch.Tensorمن الشكل(batch_size, config.decoder_layers, num_queries, 4)) — نقاط مرجعية وسيطة مكدسة (نقاط مرجعية لكل طبقة من طبقات المُفكِّك).decoder_hidden_states (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد(batch_size, sequence_length, hidden_size).حالات المخفية (Hidden states) لمفكّك الترميز (decoder) عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي (initial embedding).
decoder_attentions (
tuple[tuple[torch.Tensor]]، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
encoder_last_hidden_state_vision (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — تسلسل من حالات الإخفاء عند مخرج الطبقة الأخيرة من المُشفِّر في النموذج.encoder_last_hidden_state_text (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات الخفاء عند مخرج الطبقة الأخيرة من مُشفِّر النموذج.encoder_vision_hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج تضمينات الرؤية + واحدة لإخراج كل طبقة) بأبعاد(batch_size, sequence_length, hidden_size). حالات مخفية لمشفّر الرؤية عند إخراج كل طبقة بالإضافة إلى مخرجات التضمين الأولية.encoder_text_hidden_states (
tuple(torch.Tensor)، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج التضمينات النصية + واحدة لإخراج كل طبقة) بشكل(batch_size, sequence_length, hidden_size). حالات المخفية لمشفّر النص عند إخراج كل طبقة بالإضافة إلى مخرجات التضمين الأولية.encoder_attentions (
tuple(tuple(torch.Tensor))، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة من المجموعات منtorch.Tensor(واحدة لكل طبقة من طبقات الانتباه) بأبعاد(batch_size, num_heads, sequence_length, sequence_length). أوزان الانتباه بعد دالة softmax للانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه النص-البصري، والبصري-النصي، ومُعزِّز النص (الانتباه الذاتي)، ورؤوس الانتباه المتشوه متعدد المقاييس. softmax للانتباه، وتُستخدم لحساب المتوسط المرجح في رؤوس الانتباه ثنائي الاتجاه.enc_outputs_class (
torch.Tensorمن الشكل(batch_size, sequence_length, config.num_labels)، اختياري، يُعاد عندconfig.two_stage=True) — درجات الصناديق المحيطة المتوقعة حيث يتم اختيار أعلىconfig.num_queriesصناديق محيطة من حيث الدرجات كإقتراحات مناطق في المرحلة الأولى. مخرجات التصنيف الثنائي للصناديق المحيطة (أي المقدمة والخلفية).enc_outputs_coord_logits (
torch.Tensorمن الشكل(batch_size, sequence_length, 4)، اختياري، يُعاد عندconfig.two_stage=True) — قيم اللوجيتات الخاصة بإحداثيات صناديق الحدود المتوقعة في المرحلة الأولى.encoder_logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.num_labels)، اختياري، يُعاد عندconfig.two_stage=True) — قيم اللوجيتات (Logits) لصناديق الحدود (Bounding boxes) الأعلى تقييماً وعددهاconfig.num_queriesفي المرحلة الأولى.encoder_pred_boxes (
torch.Tensorمن الشكل(batch_size, sequence_length, 4)، اختياري، يُعاد عندconfig.two_stage=True) — إحداثيات صناديق الحدود الأعلى تقييماً وعددهاconfig.num_queriesفي المرحلة الأولى.
أمثلة:
>>> from transformers import AutoProcessor, AutoModel
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> text = "a cat."
>>> processor = AutoProcessor.from_pretrained("IDEA-Research/grounding-dino-tiny")
>>> model = AutoModel.from_pretrained("IDEA-Research/grounding-dino-tiny")
>>> inputs = processor(images=image, text=text, return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 900, 256]MMGroundingDinoForObjectDetection
فئة transformers.MMGroundingDinoForObjectDetection
< source >( config: MMGroundingDinoConfig )
المعاملات
- config (MMGroundingDinoConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج Grounding DINO (المكوّن من هيكل أساسي ومحوّل مُشفِّر-مفكِّك) مع رؤوس كشف كائنات في الأعلى، لمهام مثل كشف COCO.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( pixel_values: Tensorinput_ids: LongTensortoken_type_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonepixel_mask: typing.Optional[torch.BoolTensor] = Noneencoder_outputs: transformers.models.mm_grounding_dino.modeling_mm_grounding_dino.MMGroundingDinoEncoderOutput | tuple | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = Nonelabels: list[dict[str, typing.Union[torch.LongTensor, torch.Tensor]]] | None = None**kwargs )
المعاملات
- pixel_values (
torch.Tensorمن الشكل(batch_size, num_channels, image_size, image_size)) — المصفوفات المقابلة للصور المدخلة. يمكن الحصول على قيم البكسل باستخدام GroundingDinoImageProcessor. راجع GroundingDinoImageProcessor.call() للتفاصيل (GroundingDinoProcessor يستخدم GroundingDinoImageProcessor لمعالجة الصور). - input_ids (
torch.LongTensorبشكل(batch_size, text_sequence_length)) — مؤشرات رموز تسلسل الإدخال في قاموس الكلمات. سيتم تجاهل الحشو افتراضيًا إذا قمت بتزويده.يمكن الحصول على الفهارس باستخدام AutoTokenizer. راجع BertTokenizer.call() للحصول على التفاصيل.
- token_type_ids (
torch.LongTensorبشكل(batch_size, text_sequence_length), اختياري) — مؤشرات رموز المقاطع لتحديد الجزء الأول والثاني من المدخلات. يتم اختيار المؤشرات من[0, 1]: 0 تتوافق مع رمزsentence A، و1 تتوافق مع رمزsentence Bرمز - attention_mask (
torch.LongTensorبشكل(batch_size, sequence_length), اختياري) — قناع لتجنب تنفيذ الانتباه على فهارس رموز الحشو. القيم المختارة للقناع في[0, 1]:- 1 للرموز التي لم تُقنَّع،
- 0 للرموز التي تم إخفاؤها.
- pixel_mask (
torch.BoolTensorبشكل(batch_size, height, width), اختياري) — قناع لتجنب تنفيذ الانتباه على قيم البكسلات المعبأة. قيم القناع المختارة من [0, 1]: 1 للبكسلات الحقيقية (أي غير المقنعة)، و0 للبكسلات المعبأة (أي المقنعة). ما هي أقنعة الانتباه؟[0, 1]:- 1 للبيكسلات الحقيقية (أي غير المقنّعة)،
- 0 للبيكسلات التي تمثل حشواً (أي مقنّعة).
- encoder_outputs (
Union[~models.mm_grounding_dino.modeling_mm_grounding_dino.MMGroundingDinoEncoderOutput, tuple], اختياري) — يتكون الـ Tuple من (last_hidden_state, اختياري:hidden_states, اختياري:attentions)last_hidden_stateذو الشكل(batch_size, sequence_length, hidden_size), اختياري) هو تسلسل من حالات المخفية (hidden-states) عند مخرج الطبقة الأخيرة من المشفر. يُستخدم في الانتباه المتقاطع (cross-attention) لفك التشفير. - output_attentions (
bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجعattentionsضمن tensors المُرجعة لمزيد من التفاصيل. - output_hidden_states (
bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجعhidden_statesضمن الموترات المُرجعة للحصول على مزيد من التفاصيل. - return_dict (
bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي. - labels (
list[Dict]بطول(batch_size,)، اختياري) — التسميات لحساب خسارة المطابقة الثنائية. قائمة من القواميس، يحتوي كل قاموس على الأقل على المفتاحين التاليين: ‘class_labels’ و ‘boxes’ (تسميات الفئات وصناديق الحدود لصورة في الدفعة على التوالي). يجب أن تكون تسميات الفئات نفسهاtorch.LongTensorبطول(number of bounding boxes in the image,)وأن تكون الصناديقtorch.Tensorبشكل(number of bounding boxes in the image, 4).
تتجاوز طريقة MMGroundingDinoForObjectDetection الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
أمثلة:
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> import torch
>>> from PIL import Image
>>> from transformers import AutoProcessor, AutoModelForZeroShotObjectDetection
>>> model_id = "IDEA-Research/grounding-dino-tiny"
>>> device = "cuda"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = AutoModelForZeroShotObjectDetection.from_pretrained(model_id).to(device)
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> # Check for cats and remote controls
>>> text_labels = [["a cat", "a remote control"]]
>>> inputs = processor(images=image, text=text_labels, return_tensors="pt").to(device)
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> results = processor.post_process_grounded_object_detection(
... outputs,
... threshold=0.4,
... text_threshold=0.3,
... target_sizes=[(image.height, image.width)]
... )
>>> # Retrieve the first image result
>>> result = results[0]
>>> for box, score, text_label in zip(result["boxes"], result["scores"], result["text_labels"]):
... box = [round(x, 2) for x in box.tolist()]
... print(f"Detected {text_label} with confidence {round(score.item(), 3)} at location {box}")
Detected a cat with confidence 0.479 at location [344.7, 23.11, 637.18, 374.28]
Detected a cat with confidence 0.438 at location [12.27, 51.91, 316.86, 472.44]
Detected a remote control with confidence 0.478 at location [38.57, 70.0, 176.78, 118.18]