Transformers documentation

D-FINE

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 في 17 أكتوبر 2024، وأُضيف إلى مكتبة Hugging Face Transformers في 29 أبريل 2025.

D-FINE

نظرة عامة

قُدم نموذج D-FINE في D-FINE: Redefine Regression Task in DETRs as Fine-grained Distribution Refinement بواسطة Yansong Peng, Hebei Li, Peixi Wu, Yueyi Zhang, Xiaoyan Sun, Feng Wu

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

نقدّم D-FINE، وهو مُكتشف كائنات فوري قوي يحقق دقة تحديد موقع استثنائية من خلال إعادة تعريف مهمة انحدار صندوق الحدود في نماذج DETR. يتكوّن D-FINE من مكوّنين رئيسيين: تحسين التوزيعات الدقيقة (FDR) والتبخر الذاتي لتحديد الموقع الأمثل الشامل (GO-LSD). يحوّل FDR عملية الانحدار من تنبؤ إحداثيات ثابتة إلى تحسين التوزيعات الاحتمالية بشكل تكراري، مما يوفر تمثيلاً وسيطاً دقيقاً يعزّز دقة تحديد الموقع بشكل كبير. أما GO-LSD فهو استراتيجية تحسين ثنائية الاتجاه تنقل معرفة تحديد الموقع من التوزيعات المُحسَّنة إلى الطبقات الأعمق عبر التتبخر الذاتي، مع تبسيط مهام التنبؤ بالمتبقي للطبقات الأعمق. بالإضافة إلى ذلك، يدمج D-FINE تحسينات خفيفة الوزن في الوحدات والعمليات كثيفة الحساب، مما يحقق توازناً أفضل بين السرعة والدقة. تحديداً، يحقق D-FINE-L / X دقة AP بنسبة 54.0% / 55.8% على مجموعة بيانات COCO بمعدل 124 / 78 إطاراً في الثانية على بطاقة NVIDIA T4. عند التدريب المسبق على Objects365، يحقق D-FINE-L / X دقة AP بنسبة 57.1% / 59.3%، متفوقاً على جميع مُكتشفي الكائنات الفورية الحالية. علاوة على ذلك، تعزّز طريقتنا أداء مجموعة واسعة من نماذج DETR بنسبة تصل إلى 5.3% AP مع تكلفة إضافية ضئيلة في المعاملات والتدريب. كودنا والنماذج المُدرَّبة مسبقاً: هذا رابط URL.

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

نصائح للاستخدام

import torch

from transformers import AutoImageProcessor, DFineForObjectDetection
from transformers.image_utils import load_image


url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = load_image(url)

image_processor = AutoImageProcessor.from_pretrained("ustc-community/dfine_x_coco")
model = DFineForObjectDetection.from_pretrained("ustc-community/dfine_x_coco", 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=[(image.height, image.width)], threshold=0.5)

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.96 [344.49, 23.4, 639.84, 374.27]
cat: 0.96 [11.71, 53.52, 316.64, 472.33]
remote: 0.95 [40.46, 73.7, 175.62, 117.57]
sofa: 0.92 [0.59, 1.88, 640.25, 474.74]
remote: 0.89 [333.48, 77.04, 370.77, 187.3]

DFineConfig

فئة transformers.DFineConfig

< >

( 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 = Trueinitializer_range: float = 0.01initializer_bias_prior_prob: float | None = Nonelayer_norm_eps: float = 1e-05batch_norm_eps: float = 1e-05backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonefreeze_backbone_batch_norms: bool = Trueencoder_hidden_dim: int = 256encoder_in_channels: list[int] | tuple[int, ...] = (512, 1024, 2048)feat_strides: list[int] | tuple[int, ...] = (8, 16, 32)encoder_layers: int = 1encoder_ffn_dim: int = 1024encoder_attention_heads: int = 8dropout: float | int = 0.0activation_dropout: float | int = 0.0encode_proj_layers: list[int] | tuple[int, ...] = (2,)positional_encoding_temperature: int = 10000encoder_activation_function: str = 'gelu'activation_function: str = 'silu'eval_size: int | None = Nonenormalize_before: bool = Falsehidden_expansion: float = 1.0d_model: int = 256num_queries: int = 300decoder_in_channels: list[int] | tuple[int, ...] = (256, 256, 256)decoder_ffn_dim: int = 1024num_feature_levels: int = 3decoder_n_points: int | list[int] = 4decoder_layers: int = 6decoder_attention_heads: int = 8decoder_activation_function: str = 'relu'attention_dropout: float | int = 0.0num_denoising: int = 100label_noise_ratio: float = 0.5box_noise_scale: float = 1.0learn_initial_query: bool = Falseanchor_image_size: int | list[int] | None = Nonewith_box_refine: bool = Truematcher_alpha: float = 0.25matcher_gamma: float = 2.0matcher_class_cost: float = 2.0matcher_bbox_cost: float = 5.0matcher_giou_cost: float = 2.0use_focal_loss: bool = Trueauxiliary_loss: bool = Truefocal_loss_alpha: float = 0.75focal_loss_gamma: float = 2.0weight_loss_vfl: float = 1.0weight_loss_bbox: float = 5.0weight_loss_giou: float = 2.0weight_loss_fgl: float = 0.15weight_loss_ddf: float = 1.5eos_coefficient: float = 0.0001eval_idx: int = -1layer_scale: int | float = 1.0max_num_bins: int = 32reg_scale: float = 4.0depth_mult: float = 1.0top_prob_values: int = 4lqe_hidden_dim: int = 64lqe_layers: int = 2decoder_offset_scale: float = 0.5decoder_method: str = 'default'up: float = 0.5tie_word_embeddings: bool = True )

المعاملات

  • is_encoder_decoder (bool، اختياري، القيمة الافتراضية True) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا.
  • initializer_range (float، اختياري، القيمة الافتراضية 0.01) — انحراف معياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.
  • initializer_bias_prior_prob (float, اختياري) — الاحتمال المسبق الذي يستخدمه مُهيّئ الانحياز (bias initializer) لتهيئة الانحيازات الخاصة بـenc_score_head وclass_embed. إذا كان None، يتم حساب prior_prob على النحو prior_prob = 1 / (num_labels + 1) أثناء تهيئة أوزان النموذج.
  • layer_norm_eps (float, اختياري، القيمة الافتراضية 1e-05) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة.
  • batch_norm_eps (float، اختياري، القيمة الافتراضية 1e-05) — قيمة إيبسلون المستخدمة في طبقات تطبيع الدفعة.
  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], اختياري) — إعدادات نموذج الهيكل العظمي.
  • freeze_backbone_batch_norms (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تجميد طبقات تطبيع الدفعة (batch normalization) في الهيكل الأساسي (backbone).
  • encoder_hidden_dim (int، اختياري، القيمة الافتراضية 256) — أبعاد التمثيلات المخفية.
  • encoder_in_channels (list، اختياري، القيمة الافتراضية [512, 1024, 2048]) — مدخلات ميزات متعددة المستويات للمُشفِّر.
  • feat_strides (list[int]، اختياري، القيمة الافتراضية [8, 16, 32]) — خطوات (Strides) المستخدمة في كل خريطة ميزات.
  • encoder_layers (int, اختياري، القيمة الافتراضية 1) — عدد الطبقات المخفية في مُشفِّر Transformer. سيستخدم نفس قيمة num_layers إذا لم يتم تعيينه.
  • encoder_ffn_dim (int، اختياري، القيمة الافتراضية 1024) — أبعاد طبقة "الوسط" (المعروفة غالباً باسم طبقة التغذية الأمامية) في المُشفِّر.
  • encoder_attention_heads (int، اختياري، القيمة الافتراضية 8) — عدد رؤوس الانتباه لكل طبقة انتباه في مُشفِّر Transformer.
  • dropout (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — النسبة لجميع طبقات dropout.
  • activation_dropout (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — نسبة dropout للتفعيلات داخل الطبقة المتصلة بالكامل.
  • encode_proj_layers (list[int]، اختياري، القيمة الافتراضية [2]) — فهارس الطبقات المُساقطة التي سيتم استخدامها في المُشفِّر.
  • positional_encoding_temperature (int، اختياري، القيمة الافتراضية 10000) — معامل الحرارة المستخدم لإنشاء الترميزات الموضعية.
  • encoder_activation_function (str, اختياري، القيمة الافتراضية "gelu") — دالة التنشيط غير الخطية (دالة أو نص) في المُشفِّر (encoder) والمُجمِّع (pooler). إذا كان نصًا، فالدوال المدعومة هي "gelu"، "relu"، "silu" و"gelu_new".
  • activation_function (str، اختياري، القيمة الافتراضية silu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، "gelu"، "relu"، "silu"، وغيرها.
  • eval_size (tuple[int, int], اختياري) — الارتفاع والعرض المستخدمان لحساب الارتفاع والعرض الفعليين لتضمينات المواقع بعد مراعاة الخطوة (stride).
  • normalize_before (bool, اختياري، القيمة الافتراضية False) — يحدد ما إذا كان سيتم تطبيق تطبيع الطبقة في طبقة مُشفِّر الترانسفورمر قبل وحدات الانتباه الذاتي والتغذية الأمامية.
  • hidden_expansion (float، اختياري، القيمة الافتراضية 1.0) — نسبة التوسيع لتكبير حجم الأبعاد في RepVGGBlock و CSPRepLayer.
  • d_model (int، اختياري، القيمة الافتراضية 256) — حجم طبقات المُشفِّر وطبقة المُجمِّع.
  • num_queries (int، اختياري، القيمة الافتراضية 300) — عدد استعلامات الكائنات.
  • decoder_in_channels (list، اختياري، القيمة الافتراضية [256, 256, 256]) — أبعاد الميزات متعددة المستويات لمفك الترميز
  • decoder_ffn_dim (int، اختياري، القيمة الافتراضية 1024) — أبعاد طبقة "الوسيطة" (التي تُسمّى غالباً بطبقة التغذية الأمامية) في المُفكِّك.
  • num_feature_levels (int، اختياري، القيمة الافتراضية 3) — عدد مستويات الميزات المدخلة.
  • decoder_n_points (int، اختياري، القيمة الافتراضية 4) — عدد المفاتيح المُعَيَّنَة في كل مستوى من مستويات الميزات لكل رأس انتباه في المُفَكِّك.
  • decoder_layers (int, اختياري، القيمة الافتراضية 6) — عدد الطبقات المخفية في مُفكِّك Transformer. سيُستخدم نفس قيمة num_layers إذا لم يتم تعيينه.
  • decoder_attention_heads (int، اختياري، القيمة الافتراضية 8) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer.
  • decoder_activation_function (str، اختياري، القيمة الافتراضية "relu") — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. إذا كان نصاً، فالدوال المدعومة هي "gelu"، "relu"، "silu" و"gelu_new".
  • attention_dropout (Union[float, int]، اختياري، القيمة الافتراضية 0.0) — نسبة إسقاط (dropout) لاحتمالات الانتباه.
  • num_denoising (int، اختياري، القيمة الافتراضية 100) — إجمالي عدد مهام إزالة الضوضاء أو الاستعلامات التي سيتم استخدامها لإزالة الضوضاء التباينية.
  • label_noise_ratio (float، اختياري، القيمة الافتراضية 0.5) — النسبة من تسميات إزالة الضوضاء التي يجب إضافة ضوضاء عشوائية إليها.
  • box_noise_scale (float، اختياري، القيمة الافتراضية 1.0) — مقياس أو حجم الضوضاء التي ستُضاف إلى صناديق الحدود.
  • learn_initial_query (bool، اختياري، القيمة الافتراضية False) — يحدد ما إذا كان يجب تعلّم تمثيلات الاستعلام الأولية للمفكك أثناء التدريب
  • anchor_image_size (tuple[int, int]، اختياري) — الارتفاع والعرض لصورة الإدخال المستخدمة أثناء التقييم لتوليد مرساة صناديق الحدود. إذا كانت القيمة None، يتم تطبيق توليد المرساة تلقائيًا.
  • with_box_refine (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم تطبيق تحسين متكرر لصفحات الحدود، حيث تحسّن كل طبقة من طبقات المُفكِّك (decoder) صفحات الحدود بناءً على التنبؤات الصادرة عن الطبقة السابقة.
  • matcher_alpha (float، اختياري، القيمة الافتراضية 0.25) — معامل alpha المستخدم في Hungarian Matcher.
  • matcher_gamma (float، اختياري، القيمة الافتراضية 2.0) — معامل gamma المستخدم في Hungarian Matcher.
  • matcher_class_cost (float، اختياري، القيمة الافتراضية 2.0) — الوزن النسبي لخسارة الفئة المستخدمة في Hungarian Matcher.
  • matcher_bbox_cost (float، اختياري، القيمة الافتراضية 5.0) — الوزن النسبي لخسارة صندوق الحدود (bounding box) المستخدم في Hungarian Matcher.
  • matcher_giou_cost (float، اختياري، القيمة الافتراضية 2.0) — الوزن النسبي لخسارة giou المستخدمة في Hungarian Matcher.
  • use_focal_loss (bool، اختياري، القيمة الافتراضية True) — معامل يحدد ما إذا كان يجب استخدام خسارة التركيز (focal loss).
  • auxiliary_loss (bool، اختياري، القيمة الافتراضية True) — ما إذا كان سيتم استخدام خسائر فك الترميز المساعدة (الخسائر في كل طبقة من طبقات فك الترميز).
  • focal_loss_alpha (float, اختياري، القيمة الافتراضية 0.75) — المعامل alpha المستخدم لحساب الخسارة البؤرية (focal loss).
  • focal_loss_gamma (float، اختياري، القيمة الافتراضية 2.0) — معامل gamma المستخدم لحساب الخسارة البؤرية (focal loss).
  • weight_loss_vfl (float, اختياري، القيمة الافتراضية 1.0) — الوزن النسبي لخسارة varifocal في خسارة كشف الكائنات.
  • weight_loss_bbox (float, اختياري، القيمة الافتراضية 5.0) — الوزن النسبي لخسارة صندوق الحدود من نوع L1 في خسارة كشف الكائنات.
  • weight_loss_giou (float، اختياري، القيمة الافتراضية 2.0) — الوزن النسبي لخسارة IoU المعممة في خسارة كشف الكائنات.
  • weight_loss_fgl (float, اختياري، القيمة الافتراضية 0.15) — الوزن النسبي لخسارة تحديد الموقع الدقيق في خسارة كشف الكائنات.
  • weight_loss_ddf (float, اختياري، القيمة الافتراضية 1.5) — الوزن النسبي لخسارة التركيز للتقطير المنفصل في خسارة كشف الكائنات.
  • eos_coefficient (float، اختياري، القيمة الافتراضية 0.0001) — الوزن التصنيفي النسبي لفئة «لا يوجد كائن» في دالة خسارة كشف الكائنات.
  • eval_idx (int، اختياري، القيمة الافتراضية -1) — مؤشر طبقة المُفكِّك (decoder) المستخدمة للتقييم. إذا كانت القيمة سالبة، تُحسب من النهاية (على سبيل المثال، -1 تعني استخدام الطبقة الأخيرة). وهذا يتيح التنبؤ المبكر في مكدس المُفكِّك مع الاستمرار في تدريب الطبقات اللاحقة.
  • layer_scale (float, اختياري، القيمة الافتراضية 1.0) — معامل التوسيع للبعد المخفي في طبقات المُفكِّك اللاحقة. يُستخدم لضبط سعة النموذج بعد طبقة التقييم.
  • max_num_bins (int، اختياري، القيمة الافتراضية 32) — الحد الأقصى لعدد الفئات (bins) في تحسين صندوق الحدود الموجَّه بالتوزيع. تسمح القيم الأعلى بتحديد موقع أكثر دقة، لكنها تزيد من حجم الحسابات.
  • reg_scale (float, اختياري، القيمة الافتراضية 4.0) — معامل المقياس لتوزيع الانحدار. يتحكم في مدى ودقة عملية تحسين الصندوق المحيط.
  • depth_mult (float, اختياري، القيمة الافتراضية 1.0) — معامل مضاعف لعدد الكتل في طبقات RepNCSPELAN4. يُستخدم لتغيير عمق النموذج مع الحفاظ على بنيته المعمارية.
  • top_prob_values (int، اختياري، القيمة الافتراضية 4) — عدد قيم الاحتمالية العليا التي يجب أخذها في الاعتبار من توزيع كل زاوية.
  • lqe_hidden_dim (int، اختياري، القيمة الافتراضية 64) — حجم البُعد المخفي لشبكة مُقدِّر جودة الموقع (LQE).
  • lqe_layers (int، اختياري، القيمة الافتراضية 2) — عدد الطبقات في شبكة MLP الخاصة بمقدّر جودة الموقع.
  • decoder_offset_scale (float، اختياري، القيمة الافتراضية 0.5) — معامل الإزاحة المستخدم في الانتباه القابل للتشوه.
  • decoder_method (str، اختياري، القيمة الافتراضية "default") — الطريقة المستخدمة للمفكّك: "default" أو "discrete".
  • up (float، اختياري، القيمة الافتراضية 0.5) — يتحكم في الحدود العليا لدالة الوزن.
  • tie_word_embeddings (bool، اختياري، القيمة الافتراضية True) — ما إذا كان يجب ربط ترميزات الأوزان (weight embeddings) وفقاً لخريطة tied_weights_keys الخاصة بالنموذج.

هذه فئة الإعدادات المخزنة لإعدادات نموذج DFineModel. تُستخدم لاستحداث نموذج D Fine وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ ustc-community/dfine-xlarge-coco

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

DFineModel

فئة transformers.DFineModel

< >

( config: DFineConfig )

المعاملات

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

نموذج RT-DETR (المكوّن من هيكل أساسي ومشفّر-فكّ تشفير) الذي يُخرج حالات مخفية خام دون أي رأس في الأعلى.

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

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

forward

< >

( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DFineModelOutput 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 للبيكسلات التي تمثل حشواً (أي مقنّعة).

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

  • 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)، اختياري) — اختياريًا، بدلاً من تمرير خريطة الميزات المسطحة (مخرجات الهيكل الأساسي + طبقة الإسقاط)، يمكنك اختيار تمرير تمثيل مسطح للصورة مباشرةً.
  • 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).

يعيد

DFineModelOutput أو tuple(torch.Tensor)

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

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

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

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

  • intermediate_hidden_states (torch.Tensor من الشكل (batch_size, config.decoder_layers, num_queries, hidden_size)) — حالات مخفية وسيطة مكدسة (مخرجات كل طبقة من فاحم الشيفر).

  • intermediate_logits (torch.Tensor من الشكل (batch_size, config.decoder_layers, sequence_length, config.num_labels)) — القيم اللوجستية الوسيطة المتراكمة (القيم اللوجستية لكل طبقة من طبقات المُفكِّك).

  • intermediate_reference_points (torch.Tensor من الشكل (batch_size, config.decoder_layers, num_queries, 4)) — نقاط مرجعية وسيطة مكدسة (نقاط مرجعية لكل طبقة من طبقات المُفكِّك).

  • intermediate_predicted_corners (torch.Tensor من الشكل (batch_size, config.decoder_layers, num_queries, 4)) — زوايا متوسطة متوقعة مكدّسة (الزوايا المتوقعة لكل طبقة من طبقات المُفكِّك).

  • initial_reference_points (torch.Tensor من الشكل (batch_size, 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[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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  • init_reference_points (torch.Tensor من الشكل (batch_size, num_queries, 4)) — نقاط المرجع الأولية المُرسلة عبر مُفكِّك Transformer.

  • enc_topk_logits (torch.Tensor من الشكل (batch_size, sequence_length, config.num_labels)) — درجات صناديق الإحاطة المتوقعة حيث يتم اختيار صناديق الإحاطة الأعلى تقييماً وعددها config.two_stage_num_proposals كإقتراحات مناطق في مرحلة المُشفِّر. مخرجات التصنيف الثنائي لصناديق الإحاطة (أي المقدمة والخلفية).

  • enc_topk_bboxes (torch.Tensor من الشكل (batch_size, sequence_length, 4)) — قيم اللوجيتات (Logits) لإحداثيات صناديق الحدود المتوقعة في مرحلة المُشفِّر (Encoder).

  • enc_outputs_class (torch.Tensor من الشكل (batch_size, sequence_length, config.num_labels)، اختياري، يُعاد عند config.with_box_refine=True وconfig.two_stage=True) — درجات صناديق الحدود المتوقعة حيث تُختار صناديق الحدود الأعلى تقييماً وعددها config.two_stage_num_proposals كإقتراحات مناطق في المرحلة الأولى. مخرجات التصنيف الثنائي لصناديق الحدود (أي المقدمة والخلفية).

  • enc_outputs_coord_logits (torch.Tensor من الشكل (batch_size, sequence_length, 4)، اختياري، يُعاد عند config.with_box_refine=True وconfig.two_stage=True) — قيم اللوجيتات الخاصة بإحداثيات صناديق الحدود المتوقعة في المرحلة الأولى.

  • denoising_meta_values (dict، اختياري) — قاموس إضافي للقيم المتعلقة بإزالة الضوضاء.

أمثلة:

>>> from transformers import AutoImageProcessor, DFineModel
>>> 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("PekingU/DFine_r50vd")
>>> model = DFineModel.from_pretrained("PekingU/DFine_r50vd")

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

>>> outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 300, 256]

DFineForObjectDetection

فئة transformers.DFineForObjectDetection

< >

( config: DFineConfig )

المعاملات

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

نموذج RT-DETR (المكوّن من هيكل أساسي ومشفّر-فكّاش) الذي يُخرج صناديق الإحاطة والقيم اللوجستية ليتم فكّ ترميزها لاحقاً إلى درجات وفئات.

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

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

forward

< >

( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DFineObjectDetectionOutput 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 للبيكسلات التي تمثل حشواً (أي مقنّعة).

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

  • 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)، اختياري) — اختياريًا، بدلاً من تمرير input_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارس input_ids إلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج.
  • 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).

يعيد

DFineObjectDetectionOutput أو tuple(torch.Tensor)

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

تتجاوز طريقة DFineForObjectDetection الأمامية الطريقة الخاصة __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]، نسبةً إلى حجم كل صورة فردية في الدفعة (مع تجاهل أي حشو محتمل). يمكنك استخدام ~DFineImageProcessor.post_process_object_detection لاسترجاع صناديق الحدود غير المُطبَّعة (المطلقة).

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

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

  • intermediate_hidden_states (torch.Tensor من الشكل (batch_size, config.decoder_layers, num_queries, hidden_size)) — حالات مخفية وسيطة مكدسة (مخرجات كل طبقة من فاحم الشيفر).

  • intermediate_logits (torch.Tensor من الشكل (batch_size, config.decoder_layers, num_queries, config.num_labels)) — القيم اللوجستية الوسيطة المتراكمة (القيم اللوجستية لكل طبقة من طبقات المُفكِّك).

  • intermediate_reference_points (torch.Tensor من الشكل (batch_size, config.decoder_layers, num_queries, 4)) — نقاط مرجعية وسيطة مكدسة (نقاط مرجعية لكل طبقة من طبقات المُفكِّك).

  • intermediate_predicted_corners (torch.Tensor من الشكل (batch_size, config.decoder_layers, num_queries, 4)) — زوايا متوسطة متوقعة مكدّسة (الزوايا المتوقعة لكل طبقة من طبقات المُفكِّك).

  • initial_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[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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.

  • init_reference_points (torch.Tensor من الشكل (batch_size, num_queries, 4)) — نقاط المرجع الأولية المُرسلة عبر مُفكِّك Transformer.

  • enc_topk_logits (torch.Tensor من الشكل (batch_size, sequence_length, config.num_labels)، اختياري، يُعاد عند config.with_box_refine=True وconfig.two_stage=True) — قيم اللوجيتات الخاصة بإحداثيات صناديق الحدود المتوقعة في المُشفِّر.

  • enc_topk_bboxes (torch.Tensor من الشكل (batch_size, sequence_length, 4)، اختياري، يُعاد عند config.with_box_refine=True وconfig.two_stage=True) — قيم اللوجيتات (Logits) لإحداثيات صناديق الحدود المتوقعة في المُشفِّر (Encoder).

  • enc_outputs_class (torch.Tensor من الشكل (batch_size, sequence_length, config.num_labels)، اختياري، يُعاد عند config.with_box_refine=True وconfig.two_stage=True) — درجات صناديق الحدود المتوقعة حيث تُختار صناديق الحدود الأعلى تقييماً وعددها config.two_stage_num_proposals كإقتراحات مناطق في المرحلة الأولى. مخرجات التصنيف الثنائي لصناديق الحدود (أي المقدمة والخلفية).

  • enc_outputs_coord_logits (torch.Tensor من الشكل (batch_size, sequence_length, 4)، اختياري، يُعاد عند config.with_box_refine=True وconfig.two_stage=True) — قيم اللوجيتات الخاصة بإحداثيات صناديق الحدود المتوقعة في المرحلة الأولى.

  • denoising_meta_values (dict، اختياري) — قاموس إضافي للقيم المتعلقة بإزالة الضوضاء

مثال:

>>> import torch
>>> from transformers.image_utils import load_image
>>> from transformers import AutoImageProcessor, DFineForObjectDetection

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)

>>> image_processor = AutoImageProcessor.from_pretrained("ustc-community/dfine-xlarge-coco")
>>> model = DFineForObjectDetection.from_pretrained("ustc-community/dfine-xlarge-coco")

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

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

>>> logits = outputs.logits
>>> list(logits.shape)
[1, 300, 80]

>>> boxes = outputs.pred_boxes
>>> list(boxes.shape)
[1, 300, 4]

>>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> target_sizes = torch.tensor([image.size[::-1]])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)
>>> result = results[0]  # first image in batch

>>> for score, label, box in zip(result["scores"], result["labels"], result["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 cat with confidence 0.958 at location [344.49, 23.4, 639.84, 374.27]
Detected cat with confidence 0.956 at location [11.71, 53.52, 316.64, 472.33]
Detected remote with confidence 0.947 at location [40.46, 73.7, 175.62, 117.57]
Detected sofa with confidence 0.918 at location [0.59, 1.88, 640.25, 474.74]
Update on GitHub