Transformers documentation

DAB-DETR

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

نُشر هذا النموذج في أوراق HF في 28 يناير 2022، وأُضيف إلى مكتبة Hugging Face Transformers في 4 فبراير 2025.

DAB-DETR

نظرة عامة

قُدِّم نموذج DAB-DETR في DAB-DETR: Dynamic Anchor Boxes are Better Queries for DETR من قِبل Shilong Liu وFeng Li وHao Zhang وXiao Yang وXianbiao Qi وHang Su وJun Zhu وLei Zhang. يُعد DAB-DETR نسخة محسّنة من Conditional DETR. فهو يستفيد من صناديق المرساة الديناميكية المُحدَّثة لتوفير نقطة استعلام مرجعية (x, y) وحجم مرساة مرجعي (w, h)، مما يحسّن حساب الانتباه المتقاطع. يحقق هذا النهج الجديد 45.7% AP عند التدريب لمدة 50 دورة باستخدام نموذج ResNet-50 واحد كهيكل أساسي.

drawing

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

نقدّم في هذه الورقة صياغة استعلام جديدة تستخدم صناديق إحداثيات ديناميكية لـ DETR (DEtection TRansformer)، ونقدّم فهماً أعمق لدور الاستعلامات في DETR. تستخدم هذه الصياغة الجديدة إحداثيات الصندوق مباشرةً كاستعلامات في فُكّكات Transformer وتحديثها ديناميكياً طبقةً تلو الأخرى. لا يساعد استخدام إحداثيات الصندوق فقط في توظيف مسبقات موضعية صريحة لتحسين تشابه الاستعلام مع الميزة والقضاء على مشكلة بطء التقارب أثناء التدريب في DETR، بل يتيح لنا أيضاً تعديل خريطة الانتباه الموضعية باستخدام معلومات عرض وارتفاع الصندوق. يجعل هذا التصميم من الواضح أن الاستعلامات في DETR يمكن تنفيذها على أنها طبقة تجميع ROI ناعمة تُنفَّذ طبقةً تلو الأخرى بطريقة متسلسلة. ونتيجةً لذلك، يحقق الأداء الأفضل على معيار MS-COCO بين نماذج الكشف المشابهة لـ DETR في نفس الإعداد، على سبيل المثال، AP 45.7% باستخدام ResNet50-DC5 كهيكل أساسي مُدرَّب على مدى 50 دورة. كما أجرينا تجارب شاملة لتأكيد تحليلنا والتحقق من فعالية أساليبنا.

تمت مساهمة هذا النموذج من قِبل davidhajdu. يمكن العثور على الكود الأصلي هنا.

كيفية البدء بالنموذج

استخدم الكود أدناه للبدء مع النموذج.

import requests
import torch
from PIL import Image

from transformers import AutoImageProcessor, AutoModelForObjectDetection


url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)

image_processor = AutoImageProcessor.from_pretrained("IDEA-Research/dab-detr-resnet-50")
model = AutoModelForObjectDetection.from_pretrained("IDEA-Research/dab-detr-resnet-50", device_map="auto")

inputs = image_processor(images=image, return_tensors="pt").to(model.device)

with torch.no_grad():
    outputs = model(**inputs)

results = image_processor.post_process_object_detection(outputs, target_sizes=torch.tensor([image.size[::-1]]), threshold=0.3)

for result in results:
    for score, label_id, box in zip(result["scores"], result["labels"], result["boxes"]):
        score, label = score.item(), label_id.item()
        box = [round(i, 2) for i in box.tolist()]
        print(f"{model.config.id2label[label]}: {score:.2f} {box}")

يجب أن يُنتج هذا

cat: 0.87 [14.7, 49.39, 320.52, 469.28]
remote: 0.86 [41.08, 72.37, 173.39, 117.2]
cat: 0.86 [344.45, 19.43, 639.85, 367.86]
remote: 0.61 [334.27, 75.93, 367.92, 188.81]
couch: 0.59 [-0.04, 1.34, 639.9, 477.09]

توجد ثلاث طرق أخرى لتوليد نموذج DAB-DETR (حسب تفضيلك):

الخيار 1: إنشاء DAB-DETR بأوزان مُدرَّبة مسبقًا للنموذج بأكمله

from transformers import DabDetrForObjectDetection


model = DabDetrForObjectDetection.from_pretrained("IDEA-Research/dab-detr-resnet-50", device_map="auto")

الخيار 2: إنشاء DAB-DETR بأوزان مهيأة عشوائياً لـ Transformer، لكن بأوزان مدربة مسبقاً للهيكل العظمي

from transformers import DabDetrConfig, DabDetrForObjectDetection


config = DabDetrConfig()
model = DabDetrForObjectDetection(config)

الخيار 3: إنشاء DAB-DETR بأوزان مهيأة عشوائياً للهيكل العظمي + Transformer

config = DabDetrConfig()
model = DabDetrForObjectDetection(config)

DabDetrConfig

فئة transformers.DabDetrConfig

< >

( 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 = Nonenum_queries: int = 300encoder_layers: int = 6encoder_ffn_dim: int = 2048encoder_attention_heads: int = 8decoder_layers: int = 6decoder_ffn_dim: int = 2048decoder_attention_heads: int = 8activation_function: str = 'prelu'hidden_size: int = 256dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0init_std: float = 0.02init_xavier_std: float = 1.0auxiliary_loss: bool = Falsedilation: bool = Falseclass_cost: int = 2bbox_cost: int = 5giou_cost: int = 2cls_loss_coefficient: int = 2bbox_loss_coefficient: int = 5giou_loss_coefficient: int = 2focal_alpha: float = 0.25temperature_height: int = 20temperature_width: int = 20query_dim: int = 4random_refpoints_xy: bool = Falsekeep_query_pos: bool = Falsenum_patterns: int = 0normalize_before: bool = Falsesine_position_embedding_scale: float | None = Noneinitializer_bias_prior_prob: float | None = Nonetie_word_embeddings: bool = True )

المعاملات

  • is_encoder_decoder (bool، اختياري، القيمة الافتراضية True) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا.
  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], اختياري) — إعدادات نموذج الهيكل العظمي.
  • num_queries (int, اختياري، القيمة الافتراضية 300) — عدد استعلامات الكائنات، أي فتحات الكشف. هذا هو الحد الأقصى لعدد الكائنات التي يمكن لنموذج DabDetrModel اكتشافها في صورة واحدة. بالنسبة إلى COCO، نوصي باستخدام 100 استعلام.
  • 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، اختياري، القيمة الافتراضية prelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، "gelu"، "relu"، "silu"، وغيرها.
  • hidden_size (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 للتفعيلات داخل الطبقة المتصلة بالكامل.
  • init_std (float، اختياري، القيمة الافتراضية 0.02) — انحراف معياري لمُهيّئ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
  • init_xavier_std (float، اختياري، القيمة الافتراضية 1.0) — عامل التدرّج المستخدم في تهيئة Xavier لأوزان الانتباه المتقاطع.
  • auxiliary_loss (bool، اختياري، القيمة الافتراضية False) — ما إذا كان سيتم استخدام خسائر فك الترميز المساعدة (الخسائر في كل طبقة من طبقات فك الترميز).
  • dilation (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب استبدال الخطوة (stride) بالتوسيع (dilation) في كتلة الالتفاف الأخيرة (DC5). يُدعم فقط عندما يكون use_timm_backbone = True.
  • class_cost (int، اختياري، القيمة الافتراضية 2) — الوزن النسبي لخطأ التصنيف في تكلفة المطابقة الهنغارية.
  • bbox_cost (int، اختياري، القيمة الافتراضية 5) — الوزن النسبي لخطأ صندوق الحدود L1 في تكلفة المطابقة الهنغارية.
  • giou_cost (int، اختياري، القيمة الافتراضية 2) — الوزن النسبي لخسارة IoU المعممة في تكلفة المطابقة الهنغارية.
  • cls_loss_coefficient (int, اختياري، القيمة الافتراضية 2) — الوزن النسبي لخسارة التصنيف في خسارة التقطيع البانورامي.
  • bbox_loss_coefficient (int، اختياري، القيمة الافتراضية 5) — الوزن النسبي لخسارة صندوق الحدود L1 في خسارة التقطيع البانورامي.
  • giou_loss_coefficient (int, اختياري، القيمة الافتراضية 2) — الوزن النسبي لخسارة IoU المعممة في خسارة التقطيع البانورامي.
  • focal_alpha (float، اختياري، القيمة الافتراضية 0.25) — معامل ألفا في دالة الخسارة البؤرية.
  • temperature_height (int، اختياري، القيمة الافتراضية 20) — معامل درجة الحرارة لضبط مسطحة الانتباه الموضعي (HEIGHT)
  • temperature_width (int، اختياري، القيمة الافتراضية 20) — معامل درجة الحرارة لضبط مسطحة الانتباه الموضعي (WIDTH)
  • query_dim (int، اختياري، القيمة الافتراضية 4) — يمثل معامل بُعد الاستعلام حجم متجه الإخراج.
  • random_refpoints_xy (bool, اختياري، القيمة الافتراضية False) — ما إذا كان يجب تثبيت إحداثيات x و y لعلب المرساة باستخدام تهيئة عشوائية.
  • keep_query_pos (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يجب دمج التضمين الموضعي المُسقط من استعلام الكائن مع الاستعلام الأصلي (المفتاح) في كل طبقة من طبقات المُفكِّك.
  • num_patterns (int، اختياري، القيمة الافتراضية 0) — عدد تضمينات الأنماط.
  • normalize_before (bool، اختياري، القيمة الافتراضية False) — ما إذا كان يتم استخدام طبقة تطبيع في المُشفِّر أم لا.
  • sine_position_embedding_scale (float, اختياري، القيمة الافتراضية هي ‘None’) — معامل التوسيع المطبَّق على الترميزات الموضعية المعيارية.
  • initializer_bias_prior_prob (float, اختياري) — الاحتمال المسبق الذي يستخدمه مُهيّئ الانحياز (bias initializer) لتهيئة الانحيازات الخاصة بـenc_score_head وclass_embed. إذا كان None، يتم حساب prior_prob على النحو prior_prob = 1 / (num_labels + 1) أثناء تهيئة أوزان النموذج.
  • tie_word_embeddings (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب ربط ترميزات الأوزان (weight embeddings) وفقاً لخريطة tied_weights_keys الخاصة بالنموذج.

هذه فئة الإعدادات (Configuration) المخزنة لإعدادات نموذج Dab DetrModel. تُستخدم لاستحداث نموذج Dab Detr وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ IDEA-Research/dab-detr-resnet-50

ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.

أمثلة:

>>> from transformers import DabDetrConfig, DabDetrModel

>>> # Initializing a DAB-DETR IDEA-Research/dab-detr-resnet-50 style configuration
>>> configuration = DabDetrConfig()

>>> # Initializing a model (with random weights) from the IDEA-Research/dab-detr-resnet-50 style configuration
>>> model = DabDetrModel(configuration)

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

DabDetrModel

فئة transformers.DabDetrModel

< >

( config: DabDetrConfig )

المعاملات

  • config (DabDetrConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج DAB-DETR الأساسي (المكوّن من هيكل أساسي وحوّال مُشفِّر-مُفكِّك) الذي يُخرج حالات مخفية خام، وحالات مخفية وسيطة، ونقاط إحالة، وإحداثيات إخراج دون أي رأس محدد في الأعلى.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DabDetrModelOutput or tuple(torch.Tensor)

المعاملات

  • pixel_values (torch.Tensor من الشكل (batch_size, num_channels, image_size, image_size)) — المصفوفات المتناظرة مع الصور المدخلة. يمكن الحصول على قيم البكسلات باستخدام image_processor_class. راجع image_processor_class.__call__ للتفاصيل (processor_class يستخدم image_processor_class لمعالجة الصور).
  • pixel_mask (torch.LongTensor بشكل (batch_size, height, width), اختياري) — قناع لتجنب تنفيذ الانتباه على قيم البكسلات المعبأة. قيم القناع المختارة من [0, 1]: 1 للبكسلات الحقيقية (أي غير المقنعة)، و0 للبكسلات المعبأة (أي المقنعة). ما هي أقنعة الانتباه؟ [0, 1]:
    • 1 للبيكسلات الحقيقية (أي غير المقنّعة)،
    • 0 للبيكسلات التي تمثل حشواً (أي مقنّعة).

    ما هي أقنعة الانتباه؟

  • decoder_attention_mask (torch.Tensor من الشكل (batch_size, num_queries)، اختياري) — غير مستخدم افتراضيًا. يمكن استخدامه لإخفاء استعلامات الكائنات.
  • encoder_outputs (torch.Tensor، اختياري) — مجموعة مرتبة تتكون من (last_hidden_state، اختياري: hidden_states، اختياري: attentions) last_hidden_state من الشكل (batch_size, sequence_length, hidden_size)، اختياري) هو تسلسل من حالات المخفية عند مخرج الطبقة الأخيرة من المشفر. يُستخدم في الانتباه المتقاطع (cross-attention) في المُفكِّك.
  • inputs_embeds (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمرير خريطة الميزات المسطحة (مخرجات الهيكل الأساسي + طبقة الإسقاط)، يمكنك اختيار تمرير تمثيل مسطح للصورة مباشرةً.
  • decoder_inputs_embeds (torch.Tensor من الشكل (batch_size, num_queries, hidden_size)، اختياري) — اختياريًا، بدلًا من تهيئة الاستعلامات بمصفوفة من الأصفار، يمكنك اختيار تمرير تمثيل مضمّن مباشرة.
  • output_attentions (bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجع attentions ضمن tensors المُرجعة لمزيد من التفاصيل.
  • output_hidden_states (bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجع hidden_states ضمن الموترات المُرجعة للحصول على مزيد من التفاصيل.
  • return_dict (bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.

يعيد

DabDetrModelOutput أو tuple(torch.Tensor)

DabDetrModelOutput أو مجموعة مرتبة من torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على الإعداد (DabDetrConfig) والمدخلات.

تتجاوز طريقة DabDetrModel الخاصة بالتقديم (forward) الطريقة الخاصة __call__.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن Module بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

  • last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)) — تسلسل من حالات الإخفاء عند مخرج الطبقة الأخيرة من فاحم النموذج.

    إذا تم استخدام past_key_values، فإن الحالة المخفية الأخيرة فقط من التسلسلات ذات الشكل (batch_size, 1, hidden_size) هي التي تُخرج.

  • past_key_values (EncoderDecoderCache، اختياري، يُعاد عند تمرير use_cache=True أو عند تعيين config.use_cache=True) — إنه كائن من نوع EncoderDecoderCache. لمزيد من التفاصيل، راجع دليل ذاكرة kv.

    تحتوي على حالات مخفية محسوبة مسبقًا (المفاتيح والقيم في كتل الانتباه الذاتي وكتل الانتباه المتقاطع) يمكن استخدامها (انظر مدخل past_key_values) لتسريع فك الترميز التسلسلي.

  • 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) عند مخرج كل طبقة، بالإضافة إلى مخرجات التضمين الأولي الاختيارية.

  • decoder_attentions (tuple(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  • cross_attentions (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 (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر النموذج.

  • encoder_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(torch.Tensor)، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه في المُشفِّر، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  • intermediate_hidden_states (من نوع torch.Tensor بأبعاد (config.decoder_layers, batch_size, sequence_length, hidden_size)، اختياري، يُعاد عند config.auxiliary_loss=True) — تنشيطات المُفكِّك الوسيطة، أي مخرجات كل طبقة من طبقات المُفكِّك، حيث خضع كلٌّ منها لعملية layernorm.

  • reference_points (torch.Tensor من الشكل (config.decoder_layers, batch_size, num_queries, 2 (anchor points))) — نقاط مرجعية (النقاط المرجعية لكل طبقة من طبقات المُفكِّك).

أمثلة:

>>> from transformers import AutoImageProcessor, 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()))

>>> image_processor = AutoImageProcessor.from_pretrained("IDEA-Research/dab-detr-resnet-50")
>>> model = AutoModel.from_pretrained("IDEA-Research/dab-detr-resnet-50")

>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")

>>> # forward pass
>>> outputs = model(**inputs)

>>> # the last hidden states are the final query embeddings of the Transformer decoder
>>> # these are of shape (batch_size, num_queries, hidden_size)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 300, 256]

DabDetrForObjectDetection

فئة transformers.DabDetrForObjectDetection

< >

( config: DabDetrConfig )

المعاملات

  • config (DabDetrConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.

نموذج DAB_DETR (المكوّن من هيكل أساسي ومحوّل مُشفِّر-مفكِّك) مع رؤوس كشف كائنات في الأعلى، لمهام مثل كشف COCO.

يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

forward

< >

( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = Noneoutput_attentions: bool | None = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → DabDetrObjectDetectionOutput or tuple(torch.Tensor)

المعاملات

  • pixel_values (torch.Tensor من الشكل (batch_size, num_channels, image_size, image_size)) — المصفوفات المتناظرة مع الصور المدخلة. يمكن الحصول على قيم البكسلات باستخدام image_processor_class. راجع image_processor_class.__call__ للتفاصيل (processor_class يستخدم image_processor_class لمعالجة الصور).
  • pixel_mask (torch.LongTensor بشكل (batch_size, height, width), اختياري) — قناع لتجنب تنفيذ الانتباه على قيم البكسلات المعبأة. قيم القناع المختارة من [0, 1]: 1 للبكسلات الحقيقية (أي غير المقنعة)، و0 للبكسلات المعبأة (أي المقنعة). ما هي أقنعة الانتباه؟ [0, 1]:
    • 1 للبيكسلات الحقيقية (أي غير المقنّعة)،
    • 0 للبيكسلات التي تمثل حشواً (أي مقنّعة).

    ما هي أقنعة الانتباه؟

  • decoder_attention_mask (torch.Tensor من الشكل (batch_size, num_queries)، اختياري) — غير مستخدم افتراضيًا. يمكن استخدامه لإخفاء استعلامات الكائنات.
  • encoder_outputs (torch.Tensor، اختياري) — مجموعة مرتبة تتكون من (last_hidden_state، اختياري: hidden_states، اختياري: attentions) last_hidden_state من الشكل (batch_size, sequence_length, hidden_size)، اختياري) هو تسلسل من حالات المخفية عند مخرج الطبقة الأخيرة من المشفر. يُستخدم في الانتباه المتقاطع (cross-attention) في المُفكِّك.
  • inputs_embeds (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمرير خريطة الميزات المسطحة (مخرجات الهيكل الأساسي + طبقة الإسقاط)، يمكنك اختيار تمرير تمثيل مسطح للصورة مباشرةً.
  • decoder_inputs_embeds (torch.Tensor من الشكل (batch_size, num_queries, hidden_size)، اختياري) — اختياريًا، بدلًا من تهيئة الاستعلامات بمصفوفة من الأصفار، يمكنك اختيار تمرير تمثيل مضمّن مباشرة.
  • 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).
  • output_attentions (bool، اختياري) — ما إذا كان يجب إرجاع تensors الانتباه لجميع طبقات الانتباه أم لا. راجع attentions ضمن tensors المُرجعة لمزيد من التفاصيل.
  • output_hidden_states (bool، اختياري) — ما إذا كان يجب إرجاع حالات الطبقات المخفية لجميع الطبقات. راجع hidden_states ضمن الموترات المُرجعة للحصول على مزيد من التفاصيل.
  • return_dict (bool، اختياري) — ما إذا كان يجب إرجاع ModelOutput بدلاً من tuple عادي.

يعيد

DabDetrObjectDetectionOutput أو tuple(torch.Tensor)

DabDetrObjectDetectionOutput أو مجموعة مرتبة من torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة تعتمد على الإعداد (DabDetrConfig) والمدخلات.

تُعيد طريقة DabDetrForObjectDetection الخاصة بالتقديم (forward) تعريف الطريقة الخاصة __call__.

على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن Module بدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.

  • loss (torch.Tensor of shape (1,), اختياري, يُعاد عند توفير labels) — إجمالي الخسارة على شكل تركيبة خطية من سلبية الاحتمال اللوغاريتمي (الإنتروبيا المتقاطعة) للتنبؤ بالفئة وخسارة صندوق الحدود. تُعرَّف الأخيرة على أنها تركيبة خطية من خسارة L1 وخسارة IoU العامة غير المعتمدة على المقياس.

  • loss_dict (Dict, اختياري) — قاموس يحتوي على الخسائر الفردية. مفيد للتسجيل.

  • logits (torch.Tensor من الشكل (batch_size, num_queries, num_classes + 1)) — قيم التصنيف (تشمل فئة لا يوجد كائن) لجميع الاستعلامات.

  • pred_boxes (torch.Tensor من الشكل (batch_size, num_queries, 4)) — إحداثيات صناديق مُعايرة لجميع الاستعلامات، ممثّلة على شكل (center_x, center_y, width, height). هذه القيم مُعايرة ضمن [0, 1]، نسبةً إلى حجم كل صورة فردية في الدفعة (مع تجاهل أي حشو محتمل). يمكنك استخدام ~DabDetrImageProcessor.post_process_object_detection لاسترجاع صناديق الحدود غير المُعايرة.

  • auxiliary_outputs (list[Dict]، اختياري) — اختياري، يُعاد فقط عند تفعيل الخسائر المساعدة (أي عند ضبط config.auxiliary_loss على True) وتوفير التسميات. وهو قائمة من القواميس تحتوي على المفتاحين المذكورين أعلاه (logits وpred_boxes) لكل طبقة من طبقات المُفكِّك.

  • last_hidden_state (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من فاحص النموذج.

  • 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[torch.Tensor]، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  • cross_attentions (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 (torch.Tensor من الشكل (batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر النموذج.

  • encoder_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[torch.Tensor]، اختياري، يُعاد عند تمرير output_attentions=True أو عند تعيين config.output_attentions=True) — مجموعة من torch.Tensor (واحدة لكل طبقة) بأبعاد (batch_size, num_heads, sequence_length, sequence_length).

    أوزان الانتباه في المُشفِّر، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

أمثلة:

>>> from transformers import AutoImageProcessor, AutoModelForObjectDetection
>>> 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()))

>>> image_processor = AutoImageProcessor.from_pretrained("IDEA-Research/dab-detr-resnet-50")
>>> model = AutoModelForObjectDetection.from_pretrained("IDEA-Research/dab-detr-resnet-50")

>>> inputs = image_processor(images=image, return_tensors="pt")

>>> with torch.no_grad():
>>>     outputs = model(**inputs)

>>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> target_sizes = torch.tensor([(image.height, image.width)])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.5, target_sizes=target_sizes)[0]
>>> for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
...     box = [round(i, 2) for i in box.tolist()]
...     print(
...         f"Detected {model.config.id2label[label.item()]} with confidence "
...         f"{round(score.item(), 3)} at location {box}"
...     )
Detected remote with confidence 0.833 at location [38.31, 72.1, 177.63, 118.45]
Detected cat with confidence 0.831 at location [9.2, 51.38, 321.13, 469.0]
Detected cat with confidence 0.804 at location [340.3, 16.85, 642.93, 370.95]
Detected remote with confidence 0.683 at location [334.48, 73.49, 366.37, 190.01]
Detected couch with confidence 0.535 at location [0.52, 1.19, 640.35, 475.1]
Update on GitHub