# LW-DETR

يقترح [LW-DETR](https://huggingface.co/papers/2407.17140) بنية Detection Transformer (DETR) خفيفة الوزن مصممة للمنافسة مع سلسلة YOLO السائدة وتجاوزها في كشف الكائنات في الوقت الفعلي. يحقق توازناً جديداً بين السرعة (زمن الاستجابة) والدقة (mAP) من خلال دمج أحدث التطورات في نماذج الترانسفورمر مع اختيارات تصميمية فعّالة.

تتميز بنية LW-DETR ببساطتها وكفاءتها: فهي تتكون من مشفّر ViT بسيط، ومشغّل (Projector)، ومفكّك DETR ضحل. وهي تعزّز بنية DETR من حيث الكفاءة والسرعة باستخدام التعديلات الأساسية التالية:
1. مشفّر ViT فعّال: يستخدم ViT بسيطاً مع انتباه نافذة/عالمي متناوب وتنظيم يعتمد على النافذة بشكل أساسي لتقليل تعقيد الانتباه وزمن الاستجابة بشكل كبير.
2. مدخلات أغنى: يجمع الميزات متعددة المستويات من المُشفِّر ويستخدم مُسقط C2f (YOLOv8) لتسليم ميزات بمقياسين ($1/8$ و $1/32$).
3. فكّك أسرع: يعتمد على فكّك DETR ضحل بثلاث طبقات مع انتباه متقاطع قابل للتشوه (deformable cross-attention) لتحقيق زمن استجابة أقل وتباعد أسرع.
4. استعلامات مُحسَّنة: يستخدم مخطط استعلامات مختلط يجمع بين استعلامات المحتوى القابلة للتعلم والاستعلامات المكانية المولَّدة.

يمكنك العثور على جميع نقاط التفتيش المتاحة لنموذج LW DETR تحت منظمة [AnnaZhang](https://huggingface.co/AnnaZhang). يمكن العثور على الكود الأصلي [هنا](https://github.com/Atten4Vis/LW-DETR).

> [!TIP]
> تمت مساهمة هذا النموذج من قِبل [stevenbucaille](https://huggingface.co/stevenbucaille).
>
> انقر على نماذج LW-DETR في الشريط الجانبي الأيمن لمزيد من الأمثلة حول كيفية تطبيق LW-DETR على مهام كشف الكائنات المختلفة.

يُظهر المثال أدناه كيفية تنفيذ كشف الكائنات باستخدام [Pipeline](/docs/transformers/main/ar/main_classes/pipelines#transformers.Pipeline) وفئة [AutoModel](/docs/transformers/main/ar/model_doc/auto#transformers.AutoModel).

```python

from transformers import pipeline

pipeline = pipeline(
    "object-detection",
    model="AnnaZhang/lwdetr_small_60e_coco",
    device_map=0
)

pipeline("http://images.cocodataset.org/val2017/000000039769.jpg")
```

```python
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("AnnaZhang/lwdetr_small_60e_coco")
model = AutoModelForObjectDetection.from_pretrained("AnnaZhang/lwdetr_small_60e_coco", device_map="auto")

# prepare image for the model
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}")
```

## الموارد

قائمة بموارد رسمية من Hugging Face وموارد مجتمعية (مشار إليها بـ 🌎) لمساعدتك على البدء مع LwDetr.

- انظر أيضاً: [دليل مهمة كشف الكائنات](../tasks/object_detection).

## LwDetrConfig[[transformers.LwDetrConfig]]

#### transformers.LwDetrConfig[[transformers.LwDetrConfig]]

```python
transformers.LwDetrConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, projector_scale_factors: list[float] | tuple[float, ...] = (), hidden_expansion: float = 0.5, c2f_num_blocks: int = 3, activation_function: str = 'silu', batch_norm_eps: float = 1e-05, dropout: float | int = 0.0, decoder_ffn_dim: int = 2048, decoder_n_points: int = 4, decoder_layers: int = 3, decoder_self_attention_heads: int = 8, decoder_cross_attention_heads: int = 16, decoder_activation_function: str = 'relu', num_queries: int = 300, attention_bias: bool = True, attention_dropout: float | int = 0.0, activation_dropout: float | int = 0.0, group_detr: int = 13, init_std: float = 0.02, disable_custom_kernels: bool = True, class_cost: int | float = 2, bbox_cost: int | float = 5, giou_cost: int | float = 2, class_loss_coefficient: int | float = 1, dice_loss_coefficient: int | float = 1, bbox_loss_coefficient: int | float = 5, giou_loss_coefficient: int | float = 2, eos_coefficient: float = 0.1, focal_alpha: float = 0.25, auxiliary_loss: bool = True, d_model: int = 256)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lw_detr/configuration_lw_detr.py#L109)

**المعاملات:**

backbone_config (`Union[dict, ~configuration_utils.PreTrainedConfig]`، *اختياري*) : إعدادات نموذج الهيكل الأساسي.

projector_scale_factors (`list[float]`، *اختياري*، القيمة الافتراضية `[]`) : عوامل المقياس لشبكة هرم الميزات. يحدد كل عامل مقياس دقة الميزات عند مستويات مختلفة. القيم المدعومة هي 0.5 و1.0 و2.0.

hidden_expansion (`float`، *اختياري*، القيمة الافتراضية 0.5) : معامل التوسّع للأبعاد المخفية في طبقات المُشغِّل (projector).

c2f_num_blocks (`int`، *اختياري*، القيمة الافتراضية 3) : عدد الكتل في طبقة C2F.

activation_function (`str`، *اختياري*، القيمة الافتراضية `"silu"`) : دالة التنشيط غير الخطية في المُشغِّل. القيم المدعومة هي `"silu"`، `"relu"`، `"gelu"`.

batch_norm_eps (`float`، *اختياري*، القيمة الافتراضية 1e-05) : قيمة إبسيلون لطبقات تطبيع الدفعة.

dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.0`) : نسبة جميع طبقات dropout.

decoder_ffn_dim (`int`، *اختياري*، القيمة الافتراضية 2048) : بُعد طبقة "الوسيطة" (التي تُسمّى غالبًا طبقة التغذية الأمامية) في المُفكِّك.

decoder_n_points (`int`، *اختياري*، القيمة الافتراضية 4) : عدد المفاتيح المُستخرجة في كل مستوى من مستويات الميزات لكل رأس من رؤوس الانتباه في المُفكِّك.

decoder_layers (`int`، *اختياري*، القيمة الافتراضية `3`) : عدد الطبقات المخفية في مُفكِّك Transformer. سيستخدم القيمة نفسها لـ`num_layers` إذا لم يتم ضبطه.

decoder_self_attention_heads (`int`، *اختياري*، القيمة الافتراضية 8) : عدد رؤوس الانتباه لكل طبقة انتباه في الانتباه الذاتي بالمفكك.

decoder_cross_attention_heads (`int`، *اختياري*، القيمة الافتراضية 16) : عدد رؤوس الانتباه لكل طبقة انتباه في الانتباه المتقاطع في المُفكِّك.

decoder_activation_function (`str`، *اختياري*، القيمة الافتراضية `"relu"`) : دالة التنشيط غير الخطية في المُفكِّك. القيم المدعومة هي `"relu"`، `"silu"`، `"gelu"`.

num_queries (`int`، *اختياري*، القيمة الافتراضية 300) : عدد استعلامات الكائنات، أي فتحات الكشف. هذا هو الحد الأقصى لعدد الكائنات التي يمكن لنموذج [LwDetrModel](/docs/transformers/main/ar/model_doc/lw_detr#transformers.LwDetrModel) اكتشافها في صورة واحدة.

attention_bias (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان سيتم استخدام انحياز في طبقات الإسقاط للاستعلام والمفتاح والقيمة والمخرجات أثناء الانتباه الذاتي.

attention_dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.0`) : نسبة الإسقاط (dropout) لاحتمالات الانتباه.

activation_dropout (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.0`) : نسبة الإسقاط (dropout) للتفعيلات داخل الطبقة المتصلة بالكامل.

group_detr (`int`، *اختياري*، القيمة الافتراضية 13) : عدد المجموعات في آلية انتباه Group DETR، والتي تساعد على تقليل التعقيد الحسابي.

init_std (`float`، *اختياري*، القيمة الافتراضية `0.02`) : الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.

disable_custom_kernels (`bool`، *اختياري*، القيمة الافتراضية `True`) : تعطيل استخدام نواة CUDA وCPU المخصصة. هذا الخيار ضروري للتصدير إلى ONNX، حيث لا تدعم عملية تصدير PyTorch إلى ONNX النوى المخصصة.

class_cost (`Union[int, float]`، *اختياري*، القيمة الافتراضية `2`) : الوزن النسبي لخطأ التصنيف في تكلفة المطابقة الهنغارية.

bbox_cost (`Union[int, float]`، *اختياري*، القيمة الافتراضية `5`) : الوزن النسبي لخطأ صندوق الحدود L1 في تكلفة المطابقة الهنغارية.

giou_cost (`Union[int, float]`، *اختياري*، القيمة الافتراضية `2`) : الوزن النسبي لخسارة IoU المعممة في تكلفة المطابقة الهنغارية.

class_loss_coefficient (`float`، *اختياري*، القيمة الافتراضية 1) : الوزن النسبي لخسارة التصنيف في تكلفة المطابقة الهنغارية.

dice_loss_coefficient (`Union[int, float]`، *اختياري*، القيمة الافتراضية `1`) : الوزن النسبي لخسارة دايس (dice loss) في خسارة التقطيع البانورامي (panoptic segmentation).

bbox_loss_coefficient (`Union[int, float]`، *اختياري*، القيمة الافتراضية `5`) : الوزن النسبي لخسارة صندوق الحدود L1 في خسارة التقطيع البانورامي.

giou_loss_coefficient (`Union[int, float]`، *اختياري*، القيمة الافتراضية `2`) : الوزن النسبي لخسارة IoU المعممة في خسارة التقطيع البانورامي.

eos_coefficient (`float`، *اختياري*، القيمة الافتراضية `0.1`) : وزن التصنيف النسبي لفئة "لا يوجد كائن" في خسارة كشف الكائنات.

focal_alpha (`float`، *اختياري*، القيمة الافتراضية `0.25`) : معامل Alpha في خسارة التركيز (focal loss).

auxiliary_loss (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان سيتم استخدام خسائر فك الترميز المساعدة (الخسائر في كل طبقة من طبقات فك الترميز).

d_model (`int`، *اختياري*، القيمة الافتراضية `256`) : حجم طبقات المُشفِّر وطبقة المُجمِّع.

هذه فئة الإعدادات (configuration class) لتخزين إعدادات نموذج LwDetrModel. تُستخدم لاستحداث نموذج Lw Detr وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ [AnnaZhang/lwdetr_small_60e_coco](https://huggingface.co/AnnaZhang/lwdetr_small_60e_coco)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

أمثلة:

```python
>>> from transformers import LwDetrConfig, LwDetrModel

>>> # Initializing a LW-DETR AnnaZhang/lwdetr_small_60e_coco style configuration
>>> configuration = LwDetrConfig()

>>> # Initializing a model (with random weights) from the AnnaZhang/lwdetr_small_60e_coco style configuration
>>> model = LwDetrModel(configuration)

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

## LwDetrViTConfig[[transformers.LwDetrViTConfig]]

#### transformers.LwDetrViTConfig[[transformers.LwDetrViTConfig]]

```python
transformers.LwDetrViTConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, hidden_size: int = 768, num_hidden_layers: int = 12, num_attention_heads: int = 12, mlp_ratio: int = 4, hidden_act: str = 'gelu', dropout_prob: float | int = 0.0, initializer_range: float = 0.02, layer_norm_eps: float = 1e-06, image_size: int | list[int] | tuple[int, int] = 256, pretrain_image_size: int | list[int] | tuple[int, int] = 224, patch_size: int | list[int] | tuple[int, int] = 16, num_channels: int = 3, qkv_bias: bool = True, window_block_indices: list[int] | tuple[int, ...] = (), use_absolute_position_embeddings: bool = True, _out_features: list[str] | None = None, _out_indices: list[int] | None = None, cae_init_values: float = 0.1, num_windows: int = 16)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lw_detr/configuration_lw_detr.py#L35)

**المعاملات:**

hidden_size (`int`، *اختياري*، القيمة الافتراضية `768`) : بُعد التمثيلات المخفية.

num_hidden_layers (`int`، *اختياري*، القيمة الافتراضية `12`) : عدد الطبقات المخفية في مُفكِّك Transformer.

num_attention_heads (`int`، *اختياري*، القيمة الافتراضية `12`) : عدد رؤوس الانتباه في كل طبقة انتباه داخل مُفكِّك Transformer.

mlp_ratio (`int`، *اختياري*، القيمة الافتراضية `4`) : نسبة بُعد مخفي MLP إلى بُعد التضمين.

hidden_act (`str`، *اختياري*، القيمة الافتراضية `gelu`) : دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال، `"gelu"`، `"relu"`، `"silu"`، وما إلى ذلك.

dropout_prob (`Union[float, int]`، *اختياري*، القيمة الافتراضية `0.0`) : نسبة جميع طبقات dropout.

initializer_range (`float`، *اختياري*، القيمة الافتراضية `0.02`) : الانحراف المعياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان.

layer_norm_eps (`float`, *اختياري*, الافتراضي هو `1e-06`) : قيمة إيبسلون المستخدمة في طبقات تطبيع الطبقة.

image_size (`Union[int, list[int], tuple[int, int]]`، *اختياري*، القيمة الافتراضية `256`) : حجم (دقة) كل صورة.

pretrain_image_size (`int`، *اختياري*، القيمة الافتراضية 224) : حجم (دقة) كل صورة أثناء التدريب المسبق.

patch_size (`Union[int, list[int], tuple[int, int]]`، *اختياري*، القيمة الافتراضية `16`) : حجم (دقة) كل رقعة.

num_channels (`int`، *اختياري*، القيمة الافتراضية `3`) : عدد قنوات الإدخال.

qkv_bias (`bool`، *اختياري*، القيمة الافتراضية `True`) : ما إذا كان يجب إضافة انحياز إلى الاستعلامات والمفاتيح والقيم.

window_block_indices (`list[int]`، *اختياري*، القيمة الافتراضية `[]`) : قائمة بمؤشرات الكتل التي يجب أن تستخدم انتباه النافذة بدلاً من الانتباه الذاتي العالمي العادي.

use_absolute_position_embeddings (`bool`، *اختياري*، الافتراضي `True`) : ما إذا كان يجب إضافة تضمينات الموضع المطلق إلى تضمينات الباتش.

cae_init_values (`float`، *اختياري*، القيمة الافتراضية 0.1) : قيمة التهيئة لمعاملات CAE عند تمكين `use_cae`.

num_windows (`int`، *اختياري*، القيمة الافتراضية 16) : عدد النوافذ للانتباه القائم على النوافذ. يجب أن يكون مربعًا كاملًا وأن يكون حجم الصورة قابلًا للقسمة على الجذر التربيعي لهذه القيمة. يتيح ذلك تنظيمًا فعالًا لخريطة الميزات ذات الأولوية للنوافذ.

هذه فئة الإعدادات (configuration class) لتخزين إعدادات نموذج LwDetrModel. تُستخدم لاستحداث نموذج Lw Detr وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ [AnnaZhang/lwdetr_small_60e_coco](https://huggingface.co/AnnaZhang/lwdetr_small_60e_coco)

ترث كائنات الإعداد من [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ [PreTrainedConfig](/docs/transformers/main/ar/main_classes/configuration#transformers.PreTrainedConfig) لمزيد من المعلومات.

مثال:

```python
>>> from transformers import LwDetrViTConfig, LwDetrViTModel

>>> # Initializing a LW-DETR ViT configuration
>>> configuration = LwDetrViTConfig()

>>> # Initializing a model (with random weights) from the configuration
>>> model = LwDetrViTModel(configuration)

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

## LwDetrModel[[transformers.LwDetrModel]]

#### transformers.LwDetrModel[[transformers.LwDetrModel]]

```python
transformers.LwDetrModel(config: LwDetrConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lw_detr/modeling_lw_detr.py#L1204)

**المعاملات:**

config ([LwDetrConfig](/docs/transformers/main/ar/model_doc/lw_detr#transformers.LwDetrConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج LW Detr الأساسي (المكوّن من هيكل أساسي ومفكك Transformer) الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.LwDetrModel.forward]]

```python
forward(pixel_values: Tensor = None, pixel_mask: typing.Optional[torch.LongTensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lw_detr/modeling_lw_detr.py#L1310)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`، *اختياري*) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [DeformableDetrImageProcessor](/docs/transformers/main/ar/model_doc/deformable_detr#transformers.DeformableDetrImageProcessor). راجع [DeformableDetrImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل (`processor_class` يستخدم [DeformableDetrImageProcessor](/docs/transformers/main/ar/model_doc/deformable_detr#transformers.DeformableDetrImageProcessor) لمعالجة الصور).

pixel_mask (`torch.LongTensor` من الشكل `(batch_size, height, width)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على قيم البكسلات المعبأة. قيم القناع المختارة في `[0, 1]`: - 1 للبكسلات الحقيقية (أي **غير المقنّعة**)، - 0 للبكسلات المعبأة (أي **المقنّعة**). [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

**يعيد:** `LwDetrModelOutput` أو `tuple(torch.Tensor)`

`LwDetrModelOutput` أو مجموعة (tuple) من `torch.Tensor` (إذا تم تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) وتتضمن عناصر مختلفة اعتمادًا على الإعداد ([LwDetrConfig](/docs/transformers/main/ar/model_doc/lw_detr#transformers.LwDetrConfig)) والمدخلات.

تتجاوز طريقة [LwDetrModel](/docs/transformers/main/ar/model_doc/lw_detr#transformers.LwDetrModel) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

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

- **init_reference_points** (`torch.Tensor` من الشكل `(batch_size, num_queries, 4)`) -- نقاط المرجع الأولية المُرسلة عبر مُفكِّك Transformer.
- **last_hidden_state** (`torch.Tensor` بأبعاد `(batch_size, sequence_length, hidden_size)`، *اختياري*) -- تسلسل من الحالات المخفية عند مخرجات الطبقة الأخيرة من النموذج.
- **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)`) -- نقاط مرجعية وسيطة مكدسة (نقاط مرجعية لكل طبقة من طبقات المُفكِّك).
- **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`) -- قيم اللوجيتات الخاصة بإحداثيات صناديق الحدود المتوقعة في المرحلة الأولى.
- **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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **cross_attentions** (`tuple[torch.Tensor, ...]`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

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

أمثلة:

```python
>>> from transformers import AutoImageProcessor, DeformableDetrModel
>>> 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("AnnaZhang/lwdetr_small_60e_coco")
>>> model = DeformableDetrModel.from_pretrained("AnnaZhang/lwdetr_small_60e_coco")

>>> 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]
```

## LwDetrForObjectDetection[[transformers.LwDetrForObjectDetection]]

#### transformers.LwDetrForObjectDetection[[transformers.LwDetrForObjectDetection]]

```python
transformers.LwDetrForObjectDetection(config: LwDetrConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lw_detr/modeling_lw_detr.py#L1540)

**المعاملات:**

config ([LwDetrConfig](/docs/transformers/main/ar/model_doc/lw_detr#transformers.LwDetrConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

نموذج LW DETR (المكوّن من هيكل أساسي ومفكك Transformer) مع رؤوس كشف كائنات في الأعلى، لمهام مثل كشف COCO.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.LwDetrForObjectDetection.forward]]

```python
forward(pixel_values: Tensor = None, pixel_mask: typing.Optional[torch.LongTensor] = None, labels: list[dict] | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lw_detr/modeling_lw_detr.py#L1554)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`، *اختياري*) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [DeformableDetrImageProcessor](/docs/transformers/main/ar/model_doc/deformable_detr#transformers.DeformableDetrImageProcessor). راجع [DeformableDetrImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل (`processor_class` يستخدم [DeformableDetrImageProcessor](/docs/transformers/main/ar/model_doc/deformable_detr#transformers.DeformableDetrImageProcessor) لمعالجة الصور).

pixel_mask (`torch.LongTensor` من الشكل `(batch_size, height, width)`، *اختياري*) : قناع لتجنب تنفيذ الانتباه على قيم البكسلات المعبأة. قيم القناع المختارة في `[0, 1]`: - 1 للبكسلات الحقيقية (أي **غير المقنّعة**)، - 0 للبكسلات المعبأة (أي **المقنّعة**). [ما هي أقنعة الانتباه؟](../glossary#attention-mask)

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)`.

**يعيد:** `LwDetrObjectDetectionOutput` أو `tuple(torch.Tensor)`

`LwDetrObjectDetectionOutput` أو مجموعة مرتبة من `torch.Tensor` (في حال تمرير `return_dict=False` أو عندما يكون `config.return_dict=False`) تتكون من عناصر مختلفة اعتماداً على الإعداد ([LwDetrConfig](/docs/transformers/main/ar/model_doc/lw_detr#transformers.LwDetrConfig)) والمدخلات.

تُعيد طريقة [LwDetrForObjectDetection](/docs/transformers/main/ar/model_doc/lw_detr#transformers.LwDetrForObjectDetection) الخاصة بالتقديم (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]، نسبةً إلى حجم كل صورة فردية في الدفعة (مع تجاهل أي حشو محتمل). يمكنك استخدام `~DeformableDetrProcessor.post_process_object_detection` لاسترجاع صناديق الحدود غير المُطبَّعة.
- **auxiliary_outputs** (`list[Dict]`، *اختياري*) -- اختياري، يُعاد فقط عند تفعيل الخسائر المساعدة (أي عند ضبط `config.auxiliary_loss` على `True`) وتوفير التسميات. وهو قائمة من القواميس تحتوي على المفتاحين المذكورين أعلاه (`logits` و`pred_boxes`) لكل طبقة من طبقات فك الترميز.
- **init_reference_points** (`torch.Tensor` من الشكل `(batch_size, num_queries, 4)`) -- نقاط المرجع الأولية المُرسلة عبر مُفكِّك Transformer.
- **last_hidden_state** (`torch.Tensor` بأبعاد `(batch_size, sequence_length, hidden_size)`، *اختياري*) -- تسلسل من الحالات المخفية عند مخرجات الطبقة الأخيرة من النموذج.
- **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)`) -- نقاط مرجعية وسيطة مكدسة (نقاط مرجعية لكل طبقة من طبقات المُفكِّك).
- **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`) -- قيم اللوجيتات الخاصة بإحداثيات صناديق الحدود المتوقعة في المرحلة الأولى.
- **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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
- **cross_attentions** (`tuple[torch.Tensor, ...]`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`.

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

أمثلة:

```python
>>> from transformers import AutoImageProcessor, LwDetrForObjectDetection
>>> 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("AnnaZhang/lwdetr_small_60e_coco")
>>> model = LwDetrForObjectDetection.from_pretrained("AnnaZhang/lwdetr_small_60e_coco")

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

>>> # 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.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 cat with confidence 0.8 at location [16.5, 52.84, 318.25, 470.78]
Detected cat with confidence 0.789 at location [342.19, 24.3, 640.02, 372.25]
Detected remote with confidence 0.633 at location [40.79, 72.78, 176.76, 117.25]
```

## LwDetrViTBackbone[[transformers.LwDetrViTBackbone]]

#### transformers.LwDetrViTBackbone[[transformers.LwDetrViTBackbone]]

```python
transformers.LwDetrViTBackbone(config: LwDetrViTConfig)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lw_detr/modeling_lw_detr.py#L342)

**المعاملات:**

config ([LwDetrViTConfig](/docs/transformers/main/ar/model_doc/lw_detr#transformers.LwDetrViTConfig)) : فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. عند التهيئة باستخدام ملف إعدادات، لا يتم تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة [from_pretrained()](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel.from_pretrained) لتحميل أوزان النموذج.

هيكل Lw Detr الأساسي.

يرث هذا النموذج من [PreTrainedModel](/docs/transformers/main/ar/main_classes/model#transformers.PreTrainedModel). راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التنزيل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).

هذا النموذج هو أيضاً فئة فرعية من [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.

#### forward[[transformers.LwDetrViTBackbone.forward]]

```python
forward(pixel_values: Tensor, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[المصدر](https://github.com/huggingface/transformers/blob/main/src/transformers/models/lw_detr/modeling_lw_detr.py#L356)

**المعاملات:**

pixel_values (`torch.Tensor` من الشكل `(batch_size, num_channels, image_size, image_size)`) : المصفوفات المقابلة لصور الإدخال. يمكن الحصول على قيم البكسل باستخدام [DeformableDetrImageProcessor](/docs/transformers/main/ar/model_doc/deformable_detr#transformers.DeformableDetrImageProcessor). راجع [DeformableDetrImageProcessor.__call__()](/docs/transformers/main/ar/model_doc/molmo2#transformers.Molmo2ImageProcessor.__call__) للتفاصيل (`processor_class` يستخدم [DeformableDetrImageProcessor](/docs/transformers/main/ar/model_doc/deformable_detr#transformers.DeformableDetrImageProcessor) لمعالجة الصور).

**يعيد:** `BackboneOutput` أو `tuple(torch.Tensor)`

A `BackboneOutput` or a tuple of `torch.Tensor` (if `return_dict=False` is passed or when `config.return_dict=False`) comprising various elements depending on the configuration ([LwDetrConfig](/docs/transformers/main/ar/model_doc/lw_detr#transformers.LwDetrConfig)) and inputs.

تتجاوز طريقة [LwDetrViTBackbone](/docs/transformers/main/ar/model_doc/lw_detr#transformers.LwDetrViTBackbone) الخاصة بالتقديم (forward) الطريقة الخاصة `__call__`.

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

- **feature_maps** (`tuple(torch.Tensor)` من الشكل `(batch_size, num_channels, height, width)`) -- خرائط الميزات للمراحل.
- **hidden_states** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_hidden_states=True` أو عند تعيين `config.output_hidden_states=True`) -- مجموعة من `torch.Tensor` (واحدة لإخراج التضمينات + واحدة لإخراج كل طبقة) بأبعاد `(batch_size, sequence_length, hidden_size)` أو `(batch_size, num_channels, height, width)`، اعتمادًا على الهيكل الأساسي.

  حالات النموذج المخفية عند مخرج كل مرحلة بالإضافة إلى مخرجات التضمين الأولي.
- **attentions** (`tuple(torch.Tensor)`، *اختياري*، يُعاد عند تمرير `output_attentions=True` أو عند تعيين `config.output_attentions=True`) -- مجموعة من `torch.Tensor` (واحدة لكل طبقة) بأبعاد `(batch_size, num_heads, sequence_length, sequence_length)`. ينطبق فقط إذا كان الهيكل الأساسي يستخدم الانتباه.

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

أمثلة:

```python
>>> from transformers import LwDetrViTConfig, LwDetrViTBackbone
>>> import torch

>>> config = LwDetrViTConfig()
>>> model = LwDetrViTBackbone(config)

>>> pixel_values = torch.randn(1, 3, 224, 224)

>>> with torch.no_grad():
...     outputs = model(pixel_values)

>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
[1, 768, 14, 14]
```

