Transformers documentation
DETR
نُشر هذا النموذج في أوراق HF في 26 مايو 2020، وأُضيف إلى مكتبة Hugging Face Transformers في 9 يونيو 2021.
DETR
يتألف DETR من عمود فقري تجميعي (convolutional backbone) يتبعه محوّل (Transformer) مُشفِّر-مُفكِّك (encoder-decoder) يمكن تدريبه من البداية إلى النهاية للكشف عن الكائنات. وهو يُبسّط بشكل كبير الكثير من التعقيدات الموجودة في نماذج مثل Faster-R-CNN وMask-R-CNN، التي تستخدم عناصر مثل اقتراحات المناطق (region proposals) وإجراء كبح أقصى غير (non-maximum suppression) وتوليد المرساة (anchor generation). علاوة على ذلك، يمكن أيضًا تمديد DETR بشكل طبيعي لأداء التقطيع الشامل (panoptic segmentation)، وذلك ببساطة بإضافة رأس قناع (mask head) فوق مخرجات المُفكِّك.
يمكنك العثور على جميع نقاط التفتيش الأصلية لـ DETR تحت منظمة AI at Meta.
تمت مساهمة هذا النموذج من قِبل nielsr.
انقر على نماذج DETR في الشريط الجانبي الأيمن لمزيد من الأمثلة حول كيفية تطبيق DETR على مهام مختلفة للكشف عن الأشياء والتجزئة.
اضبط
use_kernels=Trueفي from_pretrained() لاستبدال الطبقات المدعومة بنوى مُحسَّنة من Hub. راجع تحميل النوى لمعرفة المزيد.
يُبيّن المثال أدناه كيفية تنفيذ كشف الكائنات باستخدام Pipeline أو فئة AutoModel.
from transformers import pipeline
pipeline = pipeline(
"object-detection",
model="facebook/detr-resnet-50",
device_map=0
)
pipeline("http://images.cocodataset.org/val2017/000000039769.jpg")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("facebook/detr-resnet-50")
model = AutoModelForObjectDetection.from_pretrained("facebook/detr-resnet-50", 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}")How DETR works
إليك ملخص موجز يوضح كيفية عمل DetrForObjectDetection:
أولاً، تُرسل صورة عبر عمود فقري تلافيفي مُدرَّب مسبقًا (في الورقة البحثية، استخدم المؤلفون ResNet-50/ResNet-101). لنفترض أننا أضفنا بُعدًا للدفعة أيضًا. هذا يعني أن المدخل إلى العمود الفقري هو متجه (تِنسور) على شكل (batch_size, 3, height, width)، بافتراض أن الصورة تحتوي على 3 قنوات لونية (RGB). يُخرج العمود الفقري CNN خريطة ميزات جديدة ذات دقة أقل، تكون عادةً على شكل (batch_size, 2048, height/32, width/32). ثم تُسقط هذه الخريطة لتطابق البُعد الخفي لـ Transformer في DETR، وهو 256 افتراضيًا، باستخدام طبقة nn.Conv2D. وبالتالي، لدينا الآن متجه على شكل (batch_size, 256, height/32, width/32). بعد ذلك، تُسطَّح خريطة الميزات وتُحوَّل (transposed) للحصول على متجه على شكل (batch_size, seq_len, d_model) = (batch_size, width/32*height/32, 256). لذا، فإن أحد الفروق مع نماذج NLP هو أن طول التسلسل في الواقع أطول من المعتاد، لكن مع d_model أصغر (والذي يكون عادةً 768 أو أعلى في NLP).
بعد ذلك، يُرسل هذا المخرج عبر المُشفِّر (encoder) لإنتاج encoder_hidden_states بنفس الشكل (يمكن اعتبار هذه الميزات كميزات الصورة). ثم، تُرسل ما يُسمى بـ استعلامات الكائنات (object queries) عبر المُفكِّك (decoder). هذا متجه (tensor) من الشكل (batch_size, num_queries, d_model)، حيث يُضبط num_queries عادةً على 100 ويُهيّأ بالصفوف. هذه التضمينات المدخلة هي ترميزات موضعية متعلمة يسميها المؤلفون استعلامات الكائنات، وبالمثل مع المُشفِّر، تُضاف إلى مدخل كل طبقة انتباه. ستبحث كل استعلام كائن عن كائن معين في الصورة. يُحدِّث المُفكِّك هذه التضمينات عبر طبقات انتباه ذاتي وطبقات انتباه مُشفِّر-مُفكِّك متعددة لإخراج decoder_hidden_states بنفس الشكل: (batch_size, num_queries, d_model). أخيرًا، تُضاف رأسان (heads) في الأعلى لكشف الكائنات: طبقة خطية لتصنيف كل استعلام كائن إلى أحد الكائنات أو «لا يوجد كائن»، وطبقة MLP للتنبؤ بصفحات الحدود (bounding boxes) لكل استعلام.
يتم تدريب النموذج باستخدام دالة خسارة المطابقة الثنائية: لذا فإن ما نقوم به فعليًا هو مقارنة الفئات + صناديق الحدود المتوقعة لكل من الاستعلامات N = 100 عن الكائنات مع التسميات الصحيحة، مع ملئها حتى الطول N نفسه (لذا إذا احتوت صورة على 4 كائنات فقط، فستكون فئة 96 من التسميات "لا يوجد كائن" وصندوق حدودها "لا يوجد صندوق حدود"). يُستخدم خوارزمية المطابقة الهنغارية لإيجاد إسقاط أمثل واحد لواحد لكل من الاستعلامات N إلى كل من التسميات N. ثم تُستخدم دالة الخسارة المتقاطعة القياسية (للفئات) ومجموعة خطية من دالة خسارة L1 ودالة خسارة IoU المعممة (لصناديق الحدود) لتحسين معاملات النموذج.
يمكن تمديد DETR بشكل طبيعي لأداء التقطيع البانورامي (الذي يوحّد بين التقطيع الدلالي والتقطيع على مستوى الكيانات). يضيف DetrForSegmentation رأسًا لأقنعة التقطيع فوق DetrForObjectDetection. يمكن تدريب رأس القناع إما بشكل مشترك، أو عبر عملية من خطوتين، حيث يتم أولاً تدريب نموذج DetrForObjectDetection للكشف عن صناديق الإحاطة حول كل من "الأشياء" (الكيانات) و"المواد" (أشياء الخلفية مثل الأشجار والطرق والسماء)، ثم تجميد جميع الأوزان وتدريب رأس القناع فقط لمدة 25 حقبة. تجريبيًا، تعطي هاتان الطريقتان نتائج متشابهة. تجدر الإشارة إلى أن التنبؤ بالصناديق شرط ضروري لإمكانية التدريب، نظرًا لأن المطابقة الهنغارية تُحسب باستخدام المسافات بين الصناديق.
ملاحظات
- DETR uses so-called object queries to detect objects in an image. The number of queries determines the maximum number of objects that can be detected in a single image, and is set to 100 by default (see parameter
num_queriesof DetrConfig). Note that it’s good to have some slack (in COCO, the authors used 100, while the maximum number of objects in a COCO image is ~70). - يحدّث مُفكّك DETR تضمينات الاستعلامات بالتوازي. وهذا يختلف عن نماذج اللغة مثل GPT-2، التي تستخدم فكّ الترميز الذاتي التتابعي بدلاً من التوازي. وعليه، لا يُستخدم قناع انتباه سببي.
- DETR adds position embeddings to the hidden states at each self-attention and cross-attention layer before projecting to queries and keys. For the position embeddings of the image, one can choose between fixed sinusoidal or learned absolute position embeddings. By default, the parameter
position_embedding_typeof DetrConfig is set to"sine". - خلال التدريب، وجد مؤلفو DETR أن استخدام خسائر مساعدة في فك الترميز مفيد، لا سيما لمساعدة النموذج على إخراج العدد الصحيح من الكائنات لكل فئة. إذا قمت بإعداد المعامل
auxiliary_lossالخاص بـ DetrConfig علىTrue، فسيتم إضافة شبكات عصبية أمامية للتنبؤ وخسائر المجرية بعد كل طبقة من طبقات فك الترميز (مع مشاركة المعلمات بين الشبكات الأمامية). - إذا كنت ترغب في تدريب النموذج في بيئة موزعة عبر عدة عقد، فيجب تحديث متغير num_boxes في فئة DetrLoss ضمن ملف modeling_detr.py. عند التدريب على عدة عقد، يجب ضبط هذا المتغير على متوسط عدد صناديق الأهداف عبر جميع العقد، كما هو موضح في التنفيذ الأصلي هنا.
- يمكن تهيئة DetrForObjectDetection وDetrForSegmentation بأي هيكل تلاففي (convolutional backbone) متاح في مكتبة timm. على سبيل المثال، يمكن تهيئة النموذج بهيكل MobileNet من خلال تعيين خاصية
backboneفي DetrConfig إلى"tf_mobilenetv3_small_075"، ثم تهيئة النموذج باستخدام ذلك الإعداد. - DETR resizes the input images such that the shortest side is at least a certain amount of pixels while the longest is at most 1333 pixels. At training time, scale augmentation is used such that the shortest side is randomly set to at least 480 and at most 800 pixels. At inference time, the shortest side is set to 800. One can use DetrImageProcessor to prepare images (and optional annotations in COCO format) for the model. Due to this resizing, images in a batch can have different sizes. DETR solves this by padding images up to the largest size in a batch, and by creating a pixel mask that indicates which pixels are real/which are padding. Alternatively, one can also define a custom
collate_fnin order to batch images together, using~transformers.DetrImageProcessor.pad_and_create_pixel_mask. - تحدد أبعاد الصور كمية الذاكرة المستخدمة، وبالتالي تحدد قيمة
batch_size. يُنصح باستخدام حجم دفعة (batch size) يساوي 2 لكل وحدة معالجة رسومية (GPU). راجع هذا النقاش على GitHub لمزيد من المعلومات.
توجد ثلاث طرق أخرى لتوليد نموذج DETR (حسب تفضيلك):
- الخيار 1: إنشاء نموذج DETR بأوزان مُدرَّبة مسبقًا للنموذج بأكمله
from transformers import DetrForObjectDetection
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50", device_map="auto")- الخيار 2: إنشاء نموذج DETR بأوزان مهيأة عشوائياً لمكوّن Transformer، لكن بأوزان مدربة مسبقاً للمكوّن الأساسي (backbone)
from transformers import DetrConfig, DetrForObjectDetection
config = DetrConfig()
model = DetrForObjectDetection(config)- الخيار 3: إنشاء نموذج DETR بأوزان مهيأة عشوائياً للهيكل العظمي + محول
config = DetrConfig() model = DetrForObjectDetection(config)
كخلاصة، راجع الجدول التالي:
| المهمة | كشف الكائنات | تجزئة الكائن | التجزئة البانورامية |
|---|---|---|---|
| الوصف | تنبؤ بإطارات الحدود ووسوم الفئات حول الكائنات في صورة | تنبؤ بالأقنعة المحيطة بالأجسام (أي الحالات) في الصورة | توقّع الأقنعة حول كلا الكائنين (أي الحالات) وكذلك حول "الأشياء" (أي عناصر الخلفية مثل الأشجار والطرق) في الصورة |
| النموذج | DetrForObjectDetection | DetrForSegmentation | DetrForSegmentation |
| مجموعة بيانات مثال | كشف COCO | كشف COCO، COCO الشامل | COCO الشامل |
| صيغة الملاحظات التي يجب تقديمها إلى DetrImageProcessor | {‘image_id’: int, ‘annotations’: list[Dict]} حيث يكون كل Dict عبارة عن تعليق توضيحي لكائن COCO | {‘image_id’: int، ‘annotations’: list[Dict]} (في حالة كشف COCO) أو {‘file_name’: str، ‘image_id’: int، ‘segments_info’: list[Dict]} (في حالة COCO الشامل) | {‘file_name’: str, ‘image_id’: int, ‘segments_info’: list[Dict]} و masks_path (المسار إلى المجلد الذي يحتوي على ملفات PNG للقناع) |
| المعالجة اللاحقة (أي تحويل مخرجات النموذج إلى تنسيق Pascal VOC) | ~transformers.DetrImageProcessor.post_process | ~transformers.DetrImageProcessor.post_process_segmentation | ~transformers.DetrImageProcessor.post_process_segmentation, ~transformers.DetrImageProcessor.post_process_panoptic |
| المقيِّمون | CocoEvaluator مع iou_types="bbox" | CocoEvaluator مع iou_types="bbox" أو "segm" | CocoEvaluator مع iou_types="bbox" أو "segm"، PanopticEvaluator |
- باختصار، يجب تجهيز البيانات إما بتنسيق COCO detection أو COCO panoptic، ثم استخدام DetrImageProcessor لإنشاء
pixel_valuesوpixel_maskوlabelsالاختيارية، والتي يمكن استخدامها بعد ذلك لتدريب (أو ضبط) نموذج. - للتقييم، يجب أولاً تحويل مخرجات النموذج باستخدام إحدى طرق المعالجة اللاحقة في DetrImageProcessor. يمكن تقديم هذه المخرجات إلى
CocoEvaluatorأوPanopticEvaluator، مما يتيح لك حساب مقاييس مثل متوسط الدقة المتوسطة (mAP) وجودة البانوبتك (PQ). تم تنفيذ هذه الكائنات الأخيرة في المستودع الأصلي. راجع دفاتر الأمثلة لمزيد من المعلومات حول التقييم.
الموارد
- راجع هذه دفاتر الملاحظات للحصول على أمثلة على ضبط DetrForObjectDetection وDetrForSegmentation على مجموعة بيانات مخصصة.
DetrConfig
فئة transformers.DetrConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = Truebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonenum_channels: int = 3num_queries: int = 100encoder_layers: int = 6encoder_ffn_dim: int = 2048encoder_attention_heads: int = 8decoder_layers: int = 6decoder_ffn_dim: int = 2048decoder_attention_heads: int = 8encoder_layerdrop: float | int = 0.0decoder_layerdrop: float | int = 0.0activation_function: str = 'relu'd_model: 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 = Falseposition_embedding_type: str = 'sine'dilation: bool = Falseclass_cost: int = 1bbox_cost: int = 5giou_cost: int = 2mask_loss_coefficient: int = 1dice_loss_coefficient: int = 1bbox_loss_coefficient: int = 5giou_loss_coefficient: int = 2eos_coefficient: float = 0.1 )
المعاملات
- is_encoder_decoder (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا. - backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], اختياري) — إعدادات نموذج الهيكل العظمي. - num_channels (
int، اختياري، القيمة الافتراضية3) — عدد قنوات الإدخال. - num_queries (
int، اختياري، القيمة الافتراضية 100) — عدد استعلامات الكائنات، أي فتحات الكشف. هذا هو الحد الأقصى لعدد الكائنات التي يمكن لنموذج ConditionalDetrModel اكتشافها في صورة واحدة. بالنسبة إلى 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. - encoder_layerdrop (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — احتمال LayerDrop للمُشفِّر. راجع [ورقة LayerDrop](انظر https://huggingface.co/papers/1909.11556) لمزيد من التفاصيل. - decoder_layerdrop (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — احتمال LayerDrop الخاص بفك الترميز. راجع [ورقة LayerDrop](انظر https://huggingface.co/papers/1909.11556) لمزيد من التفاصيل. - activation_function (
str، اختياري، القيمة الافتراضيةrelu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وغيرها. - d_model (
int، اختياري، القيمة الافتراضية256) — حجم طبقات المُشفِّر وطبقة المُجمِّع. - dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.1) — النسبة لجميع طبقات dropout. - attention_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — نسبة إسقاط (dropout) لاحتمالات الانتباه. - activation_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — نسبة dropout للتفعيلات داخل الطبقة المتصلة بالكامل. - init_std (
float، اختياري، القيمة الافتراضية0.02) — انحراف معياري لمُهيّئ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - init_xavier_std (
float، اختياري، القيمة الافتراضية1.0) — عامل التدرّج المستخدم في تهيئة Xavier لأوزان الانتباه المتقاطع. - auxiliary_loss (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم استخدام خسائر فك الترميز المساعدة (الخسائر في كل طبقة من طبقات فك الترميز). - position_embedding_type (
str، اختياري، القيمة الافتراضية"sine") — نوع تضمينات الموضع المستخدمة فوق ميزات الصورة. إما"sine"أو"learned". - dilation (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب استبدال الخطوة (stride) بالتوسيع (dilation) في كتلة الالتفاف الأخيرة (DC5). يُدعم هذا الخيار فقط عندما يكونuse_timm_backbone=True. - class_cost (
int، اختياري، القيمة الافتراضية1) — الوزن النسبي لخطأ التصنيف في تكلفة المطابقة الهنغارية. - bbox_cost (
int، اختياري، القيمة الافتراضية5) — الوزن النسبي لخطأ صندوق الحدود L1 في تكلفة المطابقة الهنغارية. - giou_cost (
int، اختياري، القيمة الافتراضية2) — الوزن النسبي لخسارة IoU المعممة في تكلفة المطابقة الهنغارية. - mask_loss_coefficient (
int, اختياري، القيمة الافتراضية1) — الوزن النسبي لخسارة التركيز (focal loss) في خسارة التقطيع البانورامي (panoptic segmentation). - dice_loss_coefficient (
int, اختياري، القيمة الافتراضية1) — الوزن النسبي لخسارة دايس (dice loss) في خسارة التقطيع البانورامي (panoptic segmentation). - bbox_loss_coefficient (
int، اختياري، القيمة الافتراضية5) — الوزن النسبي لخسارة صندوق الحدود L1 في خسارة التقطيع البانورامي. - giou_loss_coefficient (
int, اختياري، القيمة الافتراضية2) — الوزن النسبي لخسارة IoU المعممة في خسارة التقطيع البانورامي. - eos_coefficient (
float، اختياري، القيمة الافتراضية0.1) — الوزن النسبي للتصنيف لفئة «لا يوجد كائن» في دالة خسارة كشف الكائنات.
هذه فئة الإعدادات المخزنة لإعدادات نموذج DetrModel. تُستخدم لاستحداث نموذج Detr وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ facebook/detr-resnet-50
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
أمثلة:
>>> from transformers import DetrConfig, DetrModel
>>> # Initializing a DETR facebook/detr-resnet-50 style configuration
>>> configuration = DetrConfig()
>>> # Initializing a model (with random weights) from the facebook/detr-resnet-50 style configuration
>>> model = DetrModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configDetrImageProcessor
فئة transformers.DetrImageProcessor
< source >( **kwargs: *<class 'transformers.models.detr.image_processing_detr.DetrImageProcessorKwargs'> )
المعاملات
- do_convert_rgb (
bool، kwargs، اختياري) — ما إذا كان يجب تحويل الصورة إلى RGB. - do_resize (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب تغيير حجم الصورة. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]، kwargs، القيمة الافتراضية{'shortest_edge' -- 800, 'longest_edge': 1333}): يصف الأبعاد القصوى للمدخلات إلى النموذج. - default_to_square (
bool، kwargs، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كانت قيمة size من نوع int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — حجم الصورة الناتجة بعد تطبيقcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None]، kwargs، القيمة الافتراضية2) — مرشّح إعادة العينة (Resampling filter) المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعدادPILImageResampling. لا يكون له أي تأثير إلا إذا كانت قيمةdo_resizeهيTrue. - do_rescale (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إعادة تحجيم الصورة. - rescale_factor (
float، kwargs، اختياري، القيمة الافتراضية0.00392156862745098) — عامل إعادة التحجيم لإعادة تحجيم الصورة إذا كانdo_rescaleمضبوطًا علىTrue. - do_normalize (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم تطبيع الصورة. - image_mean (
Union[float, list[float], tuple[float, ...]]، kwargs، اختياري، القيمة الافتراضية[0.485, 0.456, 0.406]) — متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيينdo_normalizeإلىTrue. - image_std (
Union[float, list[float], tuple[float, ...]]، kwargs، اختياري، القيمة الافتراضية[0.229, 0.224, 0.225]) — الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيينdo_normalizeإلىTrue. - do_pad (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب ملء الصورة. يتم الملء إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الملء الدقيقة على النموذج. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — الحجم على شكل{"height": int, "width" int}الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّمpad_size، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكونdo_pad=True. - do_center_crop (
bool، kwargs، اختياري) — ما إذا كان يجب قص الصورة من المنتصف. - data_format (
Union[str, ~image_utils.ChannelDimension]، kwargs، اختياري) — يُؤمَّن دعمChannelDimension.FIRSTفقط. أُضيف من أجل التوافق مع المعالجات البطيئة. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, اختياري) — تنسيق بُعد القناة للصورة المدخلة. إذا لم يُضبط، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي:"channels_first"أوChannelDimension.FIRST: صورة بتنسيق (num_channels, height, width)."channels_last"أوChannelDimension.LAST: صورة بصيغة (الارتفاع، العرض، عدد القنوات)."none"أوChannelDimension.NONE: صورة بصيغة (الارتفاع، العرض).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم تعيينه، يُستنتج الجهاز من مقاطع الفيديو المدخلة. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — تُرجع تينسورات مكدّسة إذا تم ضبطها على'pt'، وإلا تُرجع قائمة من التينسورات. - disable_grouping (
bool، kwargs، اختياري) — ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int، kwargs، اختياري) — عدد رموز الصورة التي سيتم استخدامها لكل صورة في المدخلات. تمت إضافته من أجل التوافق مع الإصدارات السابقة، لكن ينبغي ضبطه كخاصية للمعالج في النماذج المستقبلية. - format (
str، kwargs، اختياري، القيمة الافتراضيةAnnotationFormat.COCO_DETECTION) — تنسيق البيانات للتعليقات التوضيحية. أحد الخيارين: “coco_detection” أو “coco_panoptic”. - do_convert_annotations (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — يتحكم في ما إذا كان سيتم تحويل التسميات إلى الصيغة التي يتوقعها نموذج DETR. يقوم بتحويل صناديق الحدود إلى الصيغة(center_x, center_y, width, height)وفي المدى[0, 1]. يمكن تجاوز ذلك عبر معاملdo_convert_annotationsفي طريقةpreprocess.
ينشئ معالج صور من نوع DetrImageProcessor.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]annotations: dict[str, int | str | list[dict]] | list[dict[str, int | str | list[dict]]] | None = Nonereturn_segmentation_masks: bool | None = Nonemasks_path: str | pathlib.Path | None = None**kwargs: *<class 'transformers.models.detr.image_processing_detr.DetrImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
المعاملات
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — الصورة التي سيتم معالجتها مسبقاً. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صوراً بقيم بكسل بين 0 و1، فاضبطdo_rescale=False. - annotations (
AnnotationTypeأوlist[AnnotationType]، اختياري) — التعليقات التي سيتم تحويلها وفقاً للتوسيط المطبّق على الصور. - return_segmentation_masks (
bool، اختياري، القيمة الافتراضيةself.return_segmentation_masks) — ما إذا كان يجب إرجاع أقنعة التقطيع. - masks_path (
strأوpathlib.Path، اختياري) — المسار إلى المجلد الذي يحتوي على أقنعة التقسيم. - do_convert_rgb (
bool، kwargs، اختياري) — ما إذا كان يجب تحويل الصورة إلى RGB. - do_resize (
bool، kwargs، اختياري) — ما إذا كان يجب تغيير حجم الصورة. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — يصف الأبعاد القصوى للمدخلات إلى النموذج. - default_to_square (
bool، kwargs، اختياري) — ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كانت القيمة عددًا صحيحًا. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — حجم الصورة الناتجة بعد تطبيقcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — مرشّح إعادة العينة (Resampling filter) المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعدادPILImageResampling. لا يكون له أي تأثير إلا إذا تم تعيينdo_resizeإلىTrue. - do_rescale (
bool، kwargs، اختياري) — ما إذا كان يجب إعادة تحجيم الصورة. - rescale_factor (
float، kwargs، اختياري) — معامل إعادة التحجيم لإعادة تحجيم الصورة إذا كانdo_rescaleمضبوطاً علىTrue. - do_normalize (
bool، kwargs، اختياري) — ما إذا كان سيتم تطبيع الصورة. - image_mean (
Union[float, list[float], tuple[float, ...]]، kwargs، اختياري) — متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيينdo_normalizeإلىTrue. - image_std (
Union[float, list[float], tuple[float, ...]]، kwargs، اختياري) — انحراف المعيار للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيينdo_normalizeإلىTrue. - do_pad (
bool، kwargs، اختياري) — ما إذا كان سيتم توسيط الصورة. يتم التوسيط إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية التوسيط الدقيقة على النموذج. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — الحجم على شكل{"height": int, "width" int}الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّمpad_size، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكونdo_pad=True. - do_center_crop (
bool، kwargs، اختياري) — ما إذا كان يجب قص الصورة من المنتصف. - data_format (
Union[str, ~image_utils.ChannelDimension]، kwargs، اختياري) — يُؤمَّن دعمChannelDimension.FIRSTفقط. أُضيف من أجل التوافق مع المعالجات البطيئة. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, اختياري) — تنسيق بُعد القناة للصورة المدخلة. إذا لم يُضبط، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي:"channels_first"أوChannelDimension.FIRST: صورة بتنسيق (num_channels, height, width)."channels_last"أوChannelDimension.LAST: صورة بصيغة (الارتفاع، العرض، عدد القنوات)."none"أوChannelDimension.NONE: صورة بصيغة (الارتفاع، العرض).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم تعيينه، يُستنتج الجهاز من مقاطع الفيديو المدخلة. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — تُرجع تينسورات مكدّسة إذا تم ضبطها على'pt'، وإلا تُرجع قائمة من التينسورات. - disable_grouping (
bool، kwargs، اختياري) — ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int، kwargs، اختياري) — عدد رموز الصورة التي سيتم استخدامها لكل صورة في المدخلات. تمت إضافته من أجل التوافق مع الإصدارات السابقة، لكن ينبغي ضبطه كخاصية للمعالج في النماذج المستقبلية. - format (
str، kwargs، اختياري، القيمة الافتراضيةAnnotationFormat.COCO_DETECTION) — تنسيق البيانات للتعليقات التوضيحية. أحد الخيارين: “coco_detection” أو “coco_panoptic”. - do_convert_annotations (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — يتحكم في ما إذا كان سيتم تحويل التسميات إلى الصيغة التي يتوقعها نموذج DETR. يقوم بتحويل صناديق الحدود إلى الصيغة(center_x, center_y, width, height)وفي المدى[0, 1]. يمكن تجاوز ذلك عبر معاملdo_convert_annotationsفي طريقةpreprocess.
يعيد
~image_processing_base.BatchFeature
- data (
dict) — قاموس من القوائم/المصفوفات/الموترات التي يعيدها أسلوب call (مثل ‘pixel_values’). - tensor_type (
Union[None, str, TensorType]، اختياري) — يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.
post_process_object_detection
< source >( outputsthreshold: float = 0.5target_sizes: transformers.utils.generic.TensorType | list[tuple] | None = None ) → list[Dict]
المعاملات
- outputs (
DetrObjectDetectionOutput) — المخرجات الخام للنموذج. - threshold (
float، اختياري) — حدّ الدرجة للاحتفاظ بتنبؤات كشف الكائنات. - target_sizes (
torch.Tensorأوlist[tuple[int, int]]، اختياري) — مصفوفة (Tensor) بأبعاد(batch_size, 2)أو قائمة من الأزواج (tuple[int, int]) تحتوي على الحجم المستهدف(height, width)لكل صورة في الدفعة. إذا لم يتم ضبطه، فلن يتم تغيير حجم التنبؤات.
يعيد
list[Dict]
قائمة من القواميس، حيث يحتوي كل قاموس على الدرجات والتسميات والصنادعات الخاصة بصورة في الدفعة كما تتنبأ بها النموذج.
يحوّل المخرجات الخام لـ DetrForObjectDetection إلى صناديق حدود نهائية بصيغة (top_left_x, top_left_y, bottom_right_x, bottom_right_y). يدعم PyTorch فقط.
post_process_semantic_segmentation
< source >( outputstarget_sizes: list[tuple[int, int]] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
المعاملات
- outputs (DetrForSegmentation) — المخرجات الخام للنموذج.
- target_sizes (
list[tuple[int, int]], اختياري) — قائمة من السلاسل (tuple[int, int]) تحتوي على الحجم المستهدف (الارتفاع، العرض) لكل صورة في الدفعة. إذا لم يتم ضبطه، فلن يتم تغيير حجم التنبؤات. - return_segmentation_scores (
bool, اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع درجات التقسيم (segmentation scores) إلى جانب خريطة التقسيم. عند تعيينTrue، يكون كل عنصر من القائمة المُرجعة من نوعSemanticSegmentationPostProcessorOutputويحتوي على الحقولsegmentation(معرّفات الفئات، الشكل(height, width)) وsegmentation_scores(الشكل(num_classes, height, width)).
يعيد
list[torch.Tensor] أو list[SemanticSegmentationPostProcessorOutput]
عندما يكون return_segmentation_scores=False (الافتراضي)، تكون النتيجة قائمة بطول batch_size حيث يكون كل عنصر منها خريطة تجزئة (segmentation map) بأبعاد (height, width) تحتوي على معرّفات الفئات. أما عندما يكون return_segmentation_scores=True، فتكون النتيجة قائمة من SemanticSegmentationPostProcessorOutput تحتوي على الحقول segmentation (معرّفات الفئات، بأبعاد (height, width)) وsegmentation_scores (بأبعاد (num_classes, height, width)). في الحالتين، يمثل (height, width) الحجم المستهدف (إذا تم تحديد target_sizes).
يحوّل مخرجات DetrForSegmentation إلى خرائط تجزئة دلالية. يدعم PyTorch فقط.
post_process_instance_segmentation
< source >( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8target_sizes: list[tuple[int, int]] | None = Nonereturn_coco_annotation: bool | None = False ) → list[Dict]
المعاملات
- outputs (DetrForSegmentation) — المخرجات الخام للنموذج.
- threshold (
float، اختياري، القيمة الافتراضية 0.5) — حدّ درجة الاحتمال الذي يُحتفظ به لأقنعة الأمثلة المتنبأ بها. - mask_threshold (
float، اختياري، القيمة الافتراضية 0.5) — العتبة المستخدمة عند تحويل الأقنعة المتوقعة إلى قيم ثنائية. - overlap_mask_area_threshold (
float، اختياري، القيمة الافتراضية 0.8) — حدّ منطقة قناع التداخل لدمج الأجزاء المنفصلة الصغيرة أو التخلص منها داخل كل قناع مثيل ثنائي. - target_sizes (
list[Tuple]، اختياري) — قائمة بطول (batch_size)، حيث يقابل كل عنصر في القائمة (tuple[int, int]]) الحجم النهائي المطلوب (الارتفاع، العرض) لكل تنبؤ. إذا لم يتم ضبطه، فلن يتم تغيير حجم التنبؤات. - return_coco_annotation (
bool، اختياري) — القيمة الافتراضية هيFalse. إذا تم ضبطها علىTrue، تُعاد خرائط التقسيم بصيغة ترميز الطول COCO (RLE).
يعيد
list[Dict]
قائمة من القواميس، قواميس واحدة لكل صورة، يحتوي كل قاموس على مفتاحين:
- segmentation — متجه (Tensor) بأبعاد
(height, width)حيث يمثل كل بكسلsegment_idأوlist[List]ترميز طول التتابع (RLE) لخريطة التقسيم إذا تم ضبط return_coco_annotation علىTrue. يُضبط علىNoneإذا لم يتم العثور على قناع فوقthreshold. - segments_info — قاموس يحتوي على معلومات إضافية حول كل مقطع.
- id — عدد صحيح يمثل
segment_id. - label_id — عدد صحيح يمثل معرّف التسمية/الفئة الدلالية المقابلة لـ
segment_id. - score — درجة التنبؤ للمقطع ذي
segment_id.
- id — عدد صحيح يمثل
يحوّل مخرجات DetrForSegmentation إلى تنبؤات تجزئة كائنات. يدعم PyTorch فقط.
post_process_panoptic_segmentation
< source >( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8label_ids_to_fuse: set[int] | None = Nonetarget_sizes: list[tuple[int, int]] | None = None ) → list[Dict]
المعاملات
- outputs (DetrForSegmentation) — المخرجات من DetrForSegmentation.
- threshold (
float، اختياري، القيمة الافتراضية 0.5) — حدّ درجة الاحتمال الذي يُحتفظ به لأقنعة الأمثلة المتنبأ بها. - mask_threshold (
float، اختياري، القيمة الافتراضية 0.5) — العتبة المستخدمة عند تحويل الأقنعة المتوقعة إلى قيم ثنائية. - overlap_mask_area_threshold (
float، اختياري، القيمة الافتراضية 0.8) — حدّ منطقة قناع التداخل لدمج الأجزاء المنفصلة الصغيرة أو التخلص منها داخل كل قناع مثيل ثنائي. - label_ids_to_fuse (
Set[int]، اختياري) — ستتم دمج جميع الأمثلة الخاصة بالتسميات في هذه الحالة معًا. على سبيل المثال، يمكن القول إنه لا يمكن أن يوجد سوى سماء واحدة في صورة، بينما يمكن أن يوجد عدة أشخاص، لذا فإن معرّف التسمية الخاص بالسماء سيكون ضمن ذلك المجموع، بينما لن يكون معرّف التسمية الخاص بالشخص كذلك. - target_sizes (
list[Tuple], اختياري) — قائمة بطول (batch_size)، حيث يقابل كل عنصر في القائمة (tuple[int, int]]) الحجم النهائي المطلوب (الارتفاع، العرض) لكل تنبؤ في الدفعة. إذا لم يتم ضبطه، فلن يتم تغيير حجم التنبؤات.
يعيد
list[Dict]
قائمة من القواميس، قواميس واحدة لكل صورة، يحتوي كل قاموس على مفتاحين:
- segmentation — متجه (tensor) بأبعاد
(height, width)حيث يمثل كل بكسلsegment_idأوNoneإذا لم يُعثر على قناع (mask) أعلى منthreshold. إذا تم تحديدtarget_sizes، يتم تغيير حجم segmentation إلى القيمة المقابلة فيtarget_sizes. - segments_info — قاموس يحتوي على معلومات إضافية حول كل مقطع.
- id — عدد صحيح يمثل
segment_id. - label_id — عدد صحيح يمثل معرّف التسمية/الفئة الدلالية المقابلة لـ
segment_id. - was_fused — قيمة منطقية، تكون
Trueإذا كانlabel_idضمنlabel_ids_to_fuse، وإلا تكونFalse. تم دمج عدة حالات من نفس الفئة / التسمية وتم إسنادsegment_idواحد إليها. - score — درجة التنبؤ للمقطع ذي
segment_id.
- id — عدد صحيح يمثل
يحوّل مخرجات DetrForSegmentation إلى تنبؤات تقسيم بانورامي للصور. يدعم PyTorch فقط.
DetrImageProcessorPil
فئة transformers.DetrImageProcessorPil
< source >( **kwargs: *<class 'transformers.models.detr.image_processing_pil_detr.DetrImageProcessorKwargs'> )
المعاملات
- do_convert_rgb (
bool، kwargs، اختياري) — ما إذا كان يجب تحويل الصورة إلى RGB. - do_resize (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب تغيير حجم الصورة. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None]، kwargs، القيمة الافتراضية{'shortest_edge' -- 800, 'longest_edge': 1333}): يصف الأبعاد القصوى للمدخلات إلى النموذج. - default_to_square (
bool، kwargs، اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كانت قيمة size من نوع int. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — حجم الصورة الناتجة بعد تطبيقcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None]، kwargs، القيمة الافتراضية2) — مرشّح إعادة العينة (Resampling filter) المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعدادPILImageResampling. لا يكون له أي تأثير إلا إذا كانت قيمةdo_resizeهيTrue. - do_rescale (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب إعادة تحجيم الصورة. - rescale_factor (
float، kwargs، اختياري، القيمة الافتراضية0.00392156862745098) — عامل إعادة التحجيم لإعادة تحجيم الصورة إذا كانdo_rescaleمضبوطًا علىTrue. - do_normalize (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم تطبيع الصورة. - image_mean (
Union[float, list[float], tuple[float, ...]]، kwargs، اختياري، القيمة الافتراضية[0.485, 0.456, 0.406]) — متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيينdo_normalizeإلىTrue. - image_std (
Union[float, list[float], tuple[float, ...]]، kwargs، اختياري، القيمة الافتراضية[0.229, 0.224, 0.225]) — الانحراف المعياري للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيينdo_normalizeإلىTrue. - do_pad (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب ملء الصورة. يتم الملء إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية الملء الدقيقة على النموذج. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — الحجم على شكل{"height": int, "width" int}الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّمpad_size، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكونdo_pad=True. - do_center_crop (
bool، kwargs، اختياري) — ما إذا كان يجب قص الصورة من المنتصف. - data_format (
Union[str, ~image_utils.ChannelDimension]، kwargs، اختياري) — يُؤمَّن دعمChannelDimension.FIRSTفقط. أُضيف من أجل التوافق مع المعالجات البطيئة. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, اختياري) — تنسيق بُعد القناة للصورة المدخلة. إذا لم يُضبط، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي:"channels_first"أوChannelDimension.FIRST: صورة بتنسيق (num_channels, height, width)."channels_last"أوChannelDimension.LAST: صورة بصيغة (الارتفاع، العرض، عدد القنوات)."none"أوChannelDimension.NONE: صورة بصيغة (الارتفاع، العرض).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم تعيينه، يُستنتج الجهاز من مقاطع الفيديو المدخلة. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — تُرجع تينسورات مكدّسة إذا تم ضبطها على'pt'، وإلا تُرجع قائمة من التينسورات. - disable_grouping (
bool، kwargs، اختياري) — ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int، kwargs، اختياري) — عدد رموز الصورة التي سيتم استخدامها لكل صورة في المدخلات. تمت إضافته من أجل التوافق مع الإصدارات السابقة، لكن ينبغي ضبطه كخاصية للمعالج في النماذج المستقبلية. - format (
str، kwargs، اختياري، القيمة الافتراضيةAnnotationFormat.COCO_DETECTION) — تنسيق البيانات للتعليقات التوضيحية. أحد الخيارين: “coco_detection” أو “coco_panoptic”. - do_convert_annotations (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — يتحكم في ما إذا كان سيتم تحويل التسميات إلى الصيغة التي يتوقعها نموذج DETR. يقوم بتحويل صناديق الحدود إلى الصيغة(center_x, center_y, width, height)وفي المدى[0, 1]. يمكن تجاوز ذلك عبر معاملdo_convert_annotationsفي طريقةpreprocess.
ينشئ معالج صور من نوع DetrImageProcessor.
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]annotations: dict[str, int | str | list[dict]] | list[dict[str, int | str | list[dict]]] | None = Nonereturn_segmentation_masks: bool | None = Nonemasks_path: str | pathlib.Path | None = None**kwargs: *<class 'transformers.models.detr.image_processing_pil_detr.DetrImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature
المعاملات
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — الصورة التي سيتم معالجتها مسبقاً. يتوقع صورة واحدة أو دفعة من الصور بقيم بكسل تتراوح بين 0 و255. إذا كنت تمرر صوراً بقيم بكسل بين 0 و1، فاضبطdo_rescale=False. - annotations (
AnnotationTypeأوlist[AnnotationType]، اختياري) — التعليقات التي سيتم تحويلها وفقاً للتوسيط المطبّق على الصور. - return_segmentation_masks (
bool، اختياري، القيمة الافتراضيةself.return_segmentation_masks) — ما إذا كان يجب إرجاع أقنعة التقطيع. - masks_path (
strأوpathlib.Path، اختياري) — المسار إلى المجلد الذي يحتوي على أقنعة التقسيم. - do_convert_rgb (
bool، kwargs، اختياري) — ما إذا كان يجب تحويل الصورة إلى RGB. - do_resize (
bool، kwargs، اختياري) — ما إذا كان يجب تغيير حجم الصورة. - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — يصف الأبعاد القصوى للمدخلات إلى النموذج. - default_to_square (
bool، kwargs، اختياري) — ما إذا كان يجب افتراض صورة مربعة عند تغيير الحجم، إذا كانت القيمة عددًا صحيحًا. - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — حجم الصورة الناتجة بعد تطبيقcenter_crop. - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — مرشّح إعادة العينة (Resampling filter) المستخدم عند تغيير حجم الصورة. يمكن أن يكون أحد قيم التعدادPILImageResampling. لا يكون له أي تأثير إلا إذا تم تعيينdo_resizeإلىTrue. - do_rescale (
bool، kwargs، اختياري) — ما إذا كان يجب إعادة تحجيم الصورة. - rescale_factor (
float، kwargs، اختياري) — معامل إعادة التحجيم لإعادة تحجيم الصورة إذا كانdo_rescaleمضبوطاً علىTrue. - do_normalize (
bool، kwargs، اختياري) — ما إذا كان سيتم تطبيع الصورة. - image_mean (
Union[float, list[float], tuple[float, ...]]، kwargs، اختياري) — متوسط الصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيينdo_normalizeإلىTrue. - image_std (
Union[float, list[float], tuple[float, ...]]، kwargs، اختياري) — انحراف المعيار للصورة المستخدم للتطبيع. لا يكون له أي تأثير إلا إذا تم تعيينdo_normalizeإلىTrue. - do_pad (
bool، kwargs، اختياري) — ما إذا كان سيتم توسيط الصورة. يتم التوسيط إما إلى أكبر حجم في الدفعة أو إلى حجم مربع ثابت لكل صورة. تعتمد استراتيجية التوسيط الدقيقة على النموذج. - pad_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — الحجم على شكل{"height": int, "width" int}الذي يجب توسيد الصور إليه. يجب أن يكون أكبر من أي حجم صورة مُقدَّم للمعالجة المسبقة. إذا لم يُقدَّمpad_size، فسيتم توسيد الصور إلى أكبر ارتفاع وعرض في الدفعة. يُطبَّق فقط عندما يكونdo_pad=True. - do_center_crop (
bool، kwargs، اختياري) — ما إذا كان يجب قص الصورة من المنتصف. - data_format (
Union[str, ~image_utils.ChannelDimension]، kwargs، اختياري) — يُؤمَّن دعمChannelDimension.FIRSTفقط. أُضيف من أجل التوافق مع المعالجات البطيئة. - input_data_format (
Union[str, ~image_utils.ChannelDimension], kwargs, اختياري) — تنسيق بُعد القناة للصورة المدخلة. إذا لم يُضبط، يُستنتج تنسيق بُعد القناة من الصورة المدخلة. يمكن أن يكون أحد ما يلي:"channels_first"أوChannelDimension.FIRST: صورة بتنسيق (num_channels, height, width)."channels_last"أوChannelDimension.LAST: صورة بصيغة (الارتفاع، العرض، عدد القنوات)."none"أوChannelDimension.NONE: صورة بصيغة (الارتفاع، العرض).
- device (
Annotated[Union[str, torch.device, NoneType], None], kwargs) — الجهاز الذي تتم عليه معالجة مقاطع الفيديو. إذا لم يتم تعيينه، يُستنتج الجهاز من مقاطع الفيديو المدخلة. - return_tensors (
Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — تُرجع تينسورات مكدّسة إذا تم ضبطها على'pt'، وإلا تُرجع قائمة من التينسورات. - disable_grouping (
bool، kwargs، اختياري) — ما إذا كان سيتم تعطيل تجميع الصور حسب الحجم لمعالجتها بشكل فردي بدلاً من دفعات. إذا كانت القيمة None، فسيتم تعيينها إلى True إذا كانت الصور على وحدة المعالجة المركزية (CPU)، وإلا فستكون False. تستند هذه الخيارات إلى ملاحظات تجريبية، كما هو موضح هنا: https://github.com/huggingface/transformers/pull/38157 - image_seq_length (
int، kwargs، اختياري) — عدد رموز الصورة التي سيتم استخدامها لكل صورة في المدخلات. تمت إضافته من أجل التوافق مع الإصدارات السابقة، لكن ينبغي ضبطه كخاصية للمعالج في النماذج المستقبلية. - format (
str، kwargs، اختياري، القيمة الافتراضيةAnnotationFormat.COCO_DETECTION) — تنسيق البيانات للتعليقات التوضيحية. أحد الخيارين: “coco_detection” أو “coco_panoptic”. - do_convert_annotations (
bool، kwargs، اختياري، القيمة الافتراضيةTrue) — يتحكم في ما إذا كان سيتم تحويل التسميات إلى الصيغة التي يتوقعها نموذج DETR. يقوم بتحويل صناديق الحدود إلى الصيغة(center_x, center_y, width, height)وفي المدى[0, 1]. يمكن تجاوز ذلك عبر معاملdo_convert_annotationsفي طريقةpreprocess.
يعيد
~image_processing_base.BatchFeature
- data (
dict) — قاموس من القوائم/المصفوفات/الموترات التي يعيدها أسلوب call (مثل ‘pixel_values’). - tensor_type (
Union[None, str, TensorType]، اختياري) — يمكنك تحديد tensor_type هنا لتحويل قوائم الأعداد الصحيحة إلى تينسورات PyTorch/Numpy عند التهيئة.
post_process_object_detection
< source >( outputsthreshold: float = 0.5target_sizes: transformers.utils.generic.TensorType | list[tuple] | None = None ) → list[Dict]
المعاملات
- outputs (
DetrObjectDetectionOutput) — المخرجات الخام للنموذج. - threshold (
float، اختياري) — حدّ الدرجة للاحتفاظ بتنبؤات كشف الكائنات. - target_sizes (
torch.Tensorأوlist[tuple[int, int]]، اختياري) — مصفوفة (Tensor) بأبعاد(batch_size, 2)أو قائمة من الأزواج (tuple[int, int]) تحتوي على الحجم المستهدف(height, width)لكل صورة في الدفعة. إذا لم يتم ضبطه، فلن يتم تغيير حجم التنبؤات.
يعيد
list[Dict]
قائمة من القواميس، حيث يحتوي كل قاموس على الدرجات والتسميات والصنادعات الخاصة بصورة في الدفعة كما تتنبأ بها النموذج.
يحوّل المخرجات الخام لـ DetrForObjectDetection إلى صناديق حدود نهائية بصيغة (top_left_x, top_left_y, bottom_right_x, bottom_right_y). يدعم PyTorch فقط.
post_process_semantic_segmentation
< source >( outputstarget_sizes: list[tuple[int, int]] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
المعاملات
- outputs (DetrForSegmentation) — المخرجات الخام للنموذج.
- target_sizes (
list[tuple[int, int]], اختياري) — قائمة من السلاسل (tuple[int, int]) تحتوي على الحجم المستهدف (الارتفاع، العرض) لكل صورة في الدفعة. إذا لم يتم ضبطه، فلن يتم تغيير حجم التنبؤات. - return_segmentation_scores (
bool, اختياري، القيمة الافتراضيةFalse) — ما إذا كان يجب إرجاع درجات التقسيم (segmentation scores) إلى جانب خريطة التقسيم. عند تعيينTrue، يكون كل عنصر من القائمة المُرجعة من نوعSemanticSegmentationPostProcessorOutputويحتوي على الحقولsegmentation(معرّفات الفئات، الشكل(height, width)) وsegmentation_scores(الشكل(num_classes, height, width)).
يعيد
list[torch.Tensor] أو list[SemanticSegmentationPostProcessorOutput]
عندما يكون return_segmentation_scores=False (الافتراضي)، تكون النتيجة قائمة بطول batch_size حيث يكون كل عنصر منها خريطة تجزئة (segmentation map) بأبعاد (height, width) تحتوي على معرّفات الفئات. أما عندما يكون return_segmentation_scores=True، فتكون النتيجة قائمة من SemanticSegmentationPostProcessorOutput تحتوي على الحقول segmentation (معرّفات الفئات، بأبعاد (height, width)) وsegmentation_scores (بأبعاد (num_classes, height, width)). في الحالتين، يمثل (height, width) الحجم المستهدف (إذا تم تحديد target_sizes).
يحوّل مخرجات DetrForSegmentation إلى خرائط تجزئة دلالية. يدعم PyTorch فقط.
post_process_instance_segmentation
< source >( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8target_sizes: list[tuple[int, int]] | None = Nonereturn_coco_annotation: bool | None = False ) → list[Dict]
المعاملات
- outputs (DetrForSegmentation) — المخرجات الخام للنموذج.
- threshold (
float، اختياري، القيمة الافتراضية 0.5) — حدّ درجة الاحتمال الذي يُحتفظ به لأقنعة الأمثلة المتنبأ بها. - mask_threshold (
float، اختياري، القيمة الافتراضية 0.5) — العتبة المستخدمة عند تحويل الأقنعة المتوقعة إلى قيم ثنائية. - overlap_mask_area_threshold (
float، اختياري، القيمة الافتراضية 0.8) — حدّ منطقة قناع التداخل لدمج الأجزاء المنفصلة الصغيرة أو التخلص منها داخل كل قناع مثيل ثنائي. - target_sizes (
list[Tuple]، اختياري) — قائمة بطول (batch_size)، حيث يقابل كل عنصر في القائمة (tuple[int, int]]) الحجم النهائي المطلوب (الارتفاع، العرض) لكل تنبؤ. إذا لم يتم ضبطه، فلن يتم تغيير حجم التنبؤات. - return_coco_annotation (
bool، اختياري) — القيمة الافتراضية هيFalse. إذا تم ضبطها علىTrue، تُعاد خرائط التقسيم بصيغة ترميز الطول COCO (RLE).
يعيد
list[Dict]
قائمة من القواميس، قواميس واحدة لكل صورة، يحتوي كل قاموس على مفتاحين:
- segmentation — متجه (Tensor) بأبعاد
(height, width)حيث يمثل كل بكسلsegment_idأوlist[List]ترميز طول التتابع (RLE) لخريطة التقسيم إذا تم ضبط return_coco_annotation علىTrue. يُضبط علىNoneإذا لم يتم العثور على قناع فوقthreshold. - segments_info — قاموس يحتوي على معلومات إضافية حول كل مقطع.
- id — عدد صحيح يمثل
segment_id. - label_id — عدد صحيح يمثل معرّف التسمية/الفئة الدلالية المقابلة لـ
segment_id. - score — درجة التنبؤ للمقطع ذي
segment_id.
- id — عدد صحيح يمثل
يحوّل مخرجات DetrForSegmentation إلى تنبؤات تجزئة كائنات. يدعم PyTorch فقط.
post_process_panoptic_segmentation
< source >( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8label_ids_to_fuse: set[int] | None = Nonetarget_sizes: list[tuple[int, int]] | None = None ) → list[Dict]
المعاملات
- outputs (DetrForSegmentation) — المخرجات من DetrForSegmentation.
- threshold (
float، اختياري، القيمة الافتراضية 0.5) — حدّ درجة الاحتمال الذي يُحتفظ به لأقنعة الأمثلة المتنبأ بها. - mask_threshold (
float، اختياري، القيمة الافتراضية 0.5) — العتبة المستخدمة عند تحويل الأقنعة المتوقعة إلى قيم ثنائية. - overlap_mask_area_threshold (
float، اختياري، القيمة الافتراضية 0.8) — حدّ منطقة قناع التداخل لدمج الأجزاء المنفصلة الصغيرة أو التخلص منها داخل كل قناع مثيل ثنائي. - label_ids_to_fuse (
Set[int]، اختياري) — ستتم دمج جميع الأمثلة الخاصة بالتسميات في هذه الحالة معًا. على سبيل المثال، يمكن القول إنه لا يمكن أن يوجد سوى سماء واحدة في صورة، بينما يمكن أن يوجد عدة أشخاص، لذا فإن معرّف التسمية الخاص بالسماء سيكون ضمن ذلك المجموع، بينما لن يكون معرّف التسمية الخاص بالشخص كذلك. - target_sizes (
list[Tuple], اختياري) — قائمة بطول (batch_size)، حيث يقابل كل عنصر في القائمة (tuple[int, int]]) الحجم النهائي المطلوب (الارتفاع، العرض) لكل تنبؤ في الدفعة. إذا لم يتم ضبطه، فلن يتم تغيير حجم التنبؤات.
يعيد
list[Dict]
قائمة من القواميس، قواميس واحدة لكل صورة، يحتوي كل قاموس على مفتاحين:
- segmentation — متجه (tensor) بأبعاد
(height, width)حيث يمثل كل بكسلsegment_idأوNoneإذا لم يُعثر على قناع (mask) أعلى منthreshold. إذا تم تحديدtarget_sizes، يتم تغيير حجم segmentation إلى القيمة المقابلة فيtarget_sizes. - segments_info — قاموس يحتوي على معلومات إضافية حول كل مقطع.
- id — عدد صحيح يمثل
segment_id. - label_id — عدد صحيح يمثل معرّف التسمية/الفئة الدلالية المقابلة لـ
segment_id. - was_fused — قيمة منطقية، تكون
Trueإذا كانlabel_idضمنlabel_ids_to_fuse، وإلا تكونFalse. تم دمج عدة حالات من نفس الفئة / التسمية وتم إسنادsegment_idواحد إليها. - score — درجة التنبؤ للمقطع ذي
segment_id.
- id — عدد صحيح يمثل
يحوّل مخرجات DetrForSegmentation إلى تنبؤات تقسيم بانورامي للصور. يدعم PyTorch فقط.
المخرجات الخاصة بـ DETR
فئة transformers.models.detr.modeling_detr.DetrModelOutput
< source >( last_hidden_state: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.EncoderDecoderCache | None = Nonedecoder_hidden_states: tuple[torch.Tensor, ...] | None = Nonedecoder_attentions: tuple[torch.Tensor, ...] | None = Nonecross_attentions: tuple[torch.Tensor, ...] | None = Noneencoder_last_hidden_state: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: tuple[torch.Tensor, ...] | None = Noneencoder_attentions: tuple[torch.Tensor, ...] | None = Noneintermediate_hidden_states: typing.Optional[torch.Tensor] = None )
المعاملات
- last_hidden_state (
torch.Tensorبشكل(batch_size, sequence_length, hidden_size)) — تسلسل من حالات الإخفاء عند مخرجات الطبقة الأخيرة من مُفكِّك النموذج. إذا تم استخدام past_key_values، فسيتم إخراج حالة الإخفاء الأخيرة فقط للتسلسلات بشكل (batch_size, 1, 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.
الفئة الأساسية لمخرجات نموذج DETR المشفّر-المفكّك. تضيف هذه الفئة خاصية واحدة إلى Seq2SeqModelOutput، وهي مجموعة اختيارية من التفعيلات الوسيطة للمفكّك، أي مخرجات كل طبقة من طبقات المفكّك، حيث خضعت كل منها لعملية layernorm. وهذا مفيد عند تدريب النموذج باستخدام خسائر فكّ التشفير المساعدة.
فئة transformers.models.detr.modeling_detr.DetrObjectDetectionOutput
< source >( loss: typing.Optional[torch.Tensor] = Noneloss_dict: dict | None = Nonelogits: typing.Optional[torch.Tensor] = Nonepred_boxes: typing.Optional[torch.Tensor] = Noneauxiliary_outputs: list[dict] | None = Nonelast_hidden_state: typing.Optional[torch.Tensor] = Nonedecoder_hidden_states: tuple[torch.Tensor] | None = Nonedecoder_attentions: tuple[torch.Tensor] | None = Nonecross_attentions: tuple[torch.Tensor] | None = Noneencoder_last_hidden_state: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: tuple[torch.Tensor] | None = Noneencoder_attentions: tuple[torch.Tensor] | None = None )
المعاملات
- loss (
torch.Tensorمن الشكل(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]، نسبةً إلى حجم كل صورة فردية في الدفعة (مع تجاهل أي حشو محتمل). يمكنك استخدام 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
نوع المخرجات لـ DetrForObjectDetection.
فئة transformers.models.detr.modeling_detr.DetrSegmentationOutput
< source >( loss: typing.Optional[torch.Tensor] = Noneloss_dict: dict | None = Nonelogits: typing.Optional[torch.Tensor] = Nonepred_boxes: typing.Optional[torch.Tensor] = Nonepred_masks: typing.Optional[torch.Tensor] = Noneauxiliary_outputs: list[dict] | None = Nonelast_hidden_state: typing.Optional[torch.Tensor] = Nonedecoder_hidden_states: tuple[torch.Tensor] | None = Nonedecoder_attentions: tuple[torch.Tensor] | None = Nonecross_attentions: tuple[torch.Tensor] | None = Noneencoder_last_hidden_state: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: tuple[torch.Tensor] | None = Noneencoder_attentions: tuple[torch.Tensor] | None = None )
المعاملات
- loss (
torch.Tensorمن الشكل(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]، نسبةً إلى حجم كل صورة فردية في الدفعة (مع تجاهل أي حشو محتمل). يمكنك استخدام post_process_object_detection() لاسترجاع صناديق الحدود غير المُطبَّعة. - pred_masks (
torch.Tensorمن الشكل(batch_size, num_queries, height/4, width/4)) — قيم الاحتمالات (logits) لأقنعة التقسيم لجميع الاستعلامات. راجع أيضاً post_process_semantic_segmentation() أو post_process_instance_segmentation() post_process_panoptic_segmentation() لتقييم أقنعة التقسيم الدلالي والمعياري والشامل على التوالي. - 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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
نوع المخرجات لـ DetrForSegmentation.
DetrModel
فئة transformers.DetrModel
< source >( config: DetrConfig )
المعاملات
- config (DetrConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج DETR الأساسي (المكوّن من هيكل أساسي ومحوّل مُشفِّر-مفكِّك) الذي يُخرج حالات مخفية خام دون أي رأس محدد في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( pixel_values: typing.Optional[torch.Tensor] = Nonepixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DetrModelOutput 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), اختياري) — قناع لتجنب تنفيذ الانتباه على استعلامات كائنات معينة في المُفكِّك. قيم القناع المختارة من[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.Tensorof shape(batch_size, sequence_length, hidden_size), اختياري) — اختياريًا، بدلاً من تمرير خريطة الميزات المسطحة (المخرجات الخاصة بالطبقة الأساسية وطبقة الإسقاط)، يمكنك اختيار تمرير تمثيل مسطح للصورة مباشرةً. مفيد لتجاوز العمود الفقري البصري. - decoder_inputs_embeds (
torch.Tensorمن الشكل(batch_size, num_queries, hidden_size)، اختياري) — اختياريًا، بدلًا من تهيئة الاستعلامات بمصفوفة من الأصفار، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. مفيد للمهام التي تتطلب تهيئة مخصصة للاستعلامات.
يعيد
DetrModelOutput أو tuple(torch.Tensor)
DetrModelOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (None) والمدخلات.
تتجاوز طريقة DetrModel الخاصة بالتقديم (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.
أمثلة:
>>> from transformers import AutoImageProcessor, DetrModel
>>> 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("facebook/detr-resnet-50")
>>> model = DetrModel.from_pretrained("facebook/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, 100, 256]DetrForObjectDetection
فئة transformers.DetrForObjectDetection
< source >( config: DetrConfig )
المعاملات
- config (DetrConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج DETR (المكوّن من هيكل أساسي ومحوّل مُشفِّر-مفكِّك) مع رؤوس كشف كائنات في الأعلى، لمهام مثل كشف COCO.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DetrObjectDetectionOutput 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), اختياري) — قناع لتجنب تنفيذ الانتباه على استعلامات كائنات معينة في المُفكِّك. قيم القناع المختارة من[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.Tensorof shape(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).
يعيد
DetrObjectDetectionOutput أو tuple(torch.Tensor)
DetrObjectDetectionOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (None) والمدخلات.
تُعيد طريقة DetrForObjectDetection الخاصة بالتقديم (forward) تعريف الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof 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]، نسبةً إلى حجم كل صورة فردية في الدفعة (مع تجاهل أي حشو محتمل). يمكنك استخدام 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, DetrForObjectDetection
>>> import torch
>>> 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("facebook/detr-resnet-50")
>>> model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")
>>> 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.9, 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.998 at location [40.16, 70.81, 175.55, 117.98]
Detected remote with confidence 0.996 at location [333.24, 72.55, 368.33, 187.66]
Detected couch with confidence 0.995 at location [-0.02, 1.15, 639.73, 473.76]
Detected cat with confidence 0.999 at location [13.24, 52.05, 314.02, 470.93]
Detected cat with confidence 0.999 at location [345.4, 23.85, 640.37, 368.72]DetrForSegmentation
فئة transformers.DetrForSegmentation
< source >( config: DetrConfig )
المعاملات
- config (DetrConfig) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعداد إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج DETR (المكوّن من هيكل أساسي ومحوّل مُشفِّر-مفكِّك) مع رأس تجزئة في الأعلى، لمهام مثل COCO panoptic.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DetrSegmentationOutput 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), اختياري) — قناع لتجنب تنفيذ الانتباه على استعلامات كائنات معينة في المُفكِّك. قيم القناع المختارة من[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)، اختياري) — يُحفظ من أجل التوافق مع الإصدارات السابقة، لكنه لا يمكن استخدامه للتجزئة، لأن التجزئة تتطلب ميزات متعددة المقاييس من الهيكل الأساسي (backbone) غير المتوفرة عند تجاوز هذا الهيكل باستخدام inputs_embeds. - decoder_inputs_embeds (
torch.Tensorمن الشكل(batch_size, num_queries, hidden_size)، اختياري) — اختياريًا، بدلًا من تهيئة الاستعلامات بمصفوفة من الأصفار، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. مفيد للمهام التي تتطلب تهيئة مخصصة للاستعلامات. - labels (
list[Dict]بطول(batch_size,)، اختياري) — التسميات لحساب خسارة المطابقة الثنائية (bipartite matching loss) وخسارة DICE/F-1 وخسارة Focal. قائمة من القواميس، يحتوي كل قاموس على الأقل على المفاتيح الثلاثة التالية: ‘class_labels’ و ‘boxes’ و ‘masks’ (تسميات الفئات، والمربعات المحيطة، وأقنعة التقسيم لصورة في الدفعة على التوالي). يجب أن تكون تسميات الفئات نفسهاtorch.LongTensorبطول(number of bounding boxes in the image,)، والمربعات المحيطةtorch.Tensorبشكل(number of bounding boxes in the image, 4)، والأقنعةtorch.Tensorبشكل(number of bounding boxes in the image, height, width).
يعيد
DetrSegmentationOutput أو tuple(torch.Tensor)
DetrSegmentationOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة اعتماداً على الإعداد (None) والمدخلات.
تتجاوز طريقة DetrForSegmentation الخاصة بالتقديم الأمامي الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
loss (
torch.Tensorof 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]، نسبةً إلى حجم كل صورة فردية في الدفعة (مع تجاهل أي حشو محتمل). يمكنك استخدام post_process_object_detection() لاسترجاع صناديق الحدود غير المُطبَّعة.pred_masks (
torch.Tensorof shape(batch_size, num_queries, height/4, width/4)) — قيم الاحتمالات (logits) لأقنعة التقطيع لجميع الاستعلامات. راجع أيضاً post_process_semantic_segmentation() أو post_process_instance_segmentation() post_process_panoptic_segmentation() لتقييم أقنعة التقطيع الدلالي والمعياري والبانوبتيكي على التوالي.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 على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
أمثلة:
>>> import io
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from PIL import Image
>>> import torch
>>> import numpy
>>> from transformers import AutoImageProcessor, DetrForSegmentation
>>> from transformers.image_transforms import rgb_to_id
>>> 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("facebook/detr-resnet-50-panoptic")
>>> model = DetrForSegmentation.from_pretrained("facebook/detr-resnet-50-panoptic")
>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> # forward pass
>>> outputs = model(**inputs)
>>> # Use the `post_process_panoptic_segmentation` method of the `image_processor` to retrieve post-processed panoptic segmentation maps
>>> # Segmentation results are returned as a list of dictionaries
>>> result = image_processor.post_process_panoptic_segmentation(outputs, target_sizes=[(300, 500)])
>>> # A tensor of shape (height, width) where each value denotes a segment id, filled with -1 if no segment is found
>>> panoptic_seg = result[0]["segmentation"]
>>> panoptic_seg.shape
torch.Size([300, 500])
>>> # Get prediction score and segment_id to class_id mapping of each segment
>>> panoptic_segments_info = result[0]["segments_info"]
>>> len(panoptic_segments_info)
5