Transformers documentation
DEIMv2
نُشر هذا النموذج في أوراق HF في 25 سبتمبر 2025، وأُضيف إلى مكتبة Hugging Face Transformers في 27 أبريل 2026.
DEIMv2
نظرة عامة
قُدِّم DEIMv2 (DETR with Improved Matching v2) في DEIMv2: Real-Time Object Detection Meets DINOv3 من قِبل Shihua Huang وYongjie Hou وLongfei Liu وXuanlong Yu وXi Shen.
المستخلص من الورقة البحثية هو كالتالي:
بفضل كثافة O2O البسيطة والفعّالة، تُظهر DEIM تقاربًا أسرع وأداءً محسّنًا. في هذا العمل، قمنا بتوسيعها باستخدام ميزات DINOv3، مما أدى إلى DEIMv2. تغطي DEIMv2 ثمانية أحجام للنماذج من X إلى Atto، لتشمل النشر على وحدات معالجة الرسوميات والأجهزة الطرفية والهواتف المحمولة. بالنسبة لتحوّلات X وL وM وS، نعتمد هياكل عصبية مسبقة التدريب أو المُقطّرة من DINOv3، ونُقدّم مُكيّفًا للضبط المكاني (STA)، الذي يحوّل بكفاءة المخرج أحادي المقياس الخاص بـ DINOv3 إلى ميزات متعددة المقاييس، ويُكمّل الدلالات القوية بتفاصيل دقيقة لتعزيز الكشف. بالنسبة للنماذج فائقة الخفة (Nano وPico وFemto وAtto)، نستخدم HGNetv2 مع تقليم العمق والعرض لتلبية ميزانيات الموارد الصارمة. وبفضل مُفكّك مبسّط وكثافة O2O مُحدّثة، يتيح هذا التصميم الموحّد لـ DEIMv2 تحقيق توازن متفوق بين الأداء والتكلفة عبر سيناريوهات متنوعة، مما يُحقق نتائج جديدة من الطراز الأول. ومن الجدير بالذكر أن نموذجنا الأكبر، DEIMv2-X، يحقق 57.8 AP باستخدام 50.3 مليون معامل فقط، متجاوزًا نماذج X-scale السابقة التي تتطلب أكثر من 60 مليون معامل لتحقيق 56.5 AP فقط. وعلى الجانب المدمج، يُعد DEIMv2-S أول نموذج أقل من 10 ملايين معامل (9.71 مليون) يتجاوز عتبة 50 AP على COCO، حيث يصل إلى 50.9 AP. وحتى النموذج فائق الخفة DEIMv2-Pico، الذي يحتوي على 1.5 مليون معامل فقط، يُحقق 38.5 AP، مما يطابق أداء YOLOv10-Nano (2.3 مليون) مع تقليل عدد المعاملات بنسبة ~50%.
تمت مساهمة هذا النموذج من قِبل Harshal Janjani. يمكن العثور على الكود الأصلي هنا.
الاستخدام
from transformers import AutoImageProcessor, AutoModelForObjectDetection
from transformers.image_utils import load_image
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = load_image(url)
image_processor = AutoImageProcessor.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers")
model = AutoModelForObjectDetection.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers", device_map="auto")
inputs = image_processor(images=image, return_tensors="pt").to(model.device)
outputs = model(**inputs)
results = image_processor.post_process_object_detection(
outputs, threshold=0.5, target_sizes=[image.size[::-1]]
)
for result in results:
for score, label, box in zip(result["scores"], result["labels"], result["boxes"]):
box = [round(i, 2) for i in box.tolist()]
print(f"Detected {model.config.id2label[label.item()]} with confidence {round(score.item(), 3)} at location {box}")Deimv2Config
فئة transformers.Deimv2Config
< 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 = Trueinitializer_range: float = 0.01initializer_bias_prior_prob: float | None = Nonelayer_norm_eps: float = 1e-05batch_norm_eps: float = 1e-05backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonefreeze_backbone_batch_norms: bool = Trueencoder_hidden_dim: int = 256encoder_in_channels: list[int] | tuple[int, ...] = (512, 1024, 2048)feat_strides: list[int] | tuple[int, ...] = (8, 16, 32)encoder_layers: int = 1encoder_ffn_dim: int = 1024encoder_attention_heads: int = 8dropout: float | int = 0.0activation_dropout: float | int = 0.0encode_proj_layers: list[int] | tuple[int, ...] = (2,)positional_encoding_temperature: int = 10000encoder_activation_function: str = 'gelu'activation_function: str = 'silu'eval_size: list[int] | tuple[int, int] | None = Nonenormalize_before: bool = Falsehidden_expansion: float = 1.0d_model: int = 256num_queries: int = 300decoder_in_channels: list[int] | tuple[int, ...] = (256, 256, 256)decoder_ffn_dim: int = 1024num_feature_levels: int = 3decoder_n_points: int | list[int] = 4decoder_layers: int = 6decoder_attention_heads: int = 8decoder_activation_function: str = 'relu'attention_dropout: float | int = 0.0num_denoising: int = 100label_noise_ratio: float = 0.5box_noise_scale: float = 1.0learn_initial_query: bool = Falseanchor_image_size: int | list[int] | None = Nonewith_box_refine: bool = Truematcher_alpha: float = 0.25matcher_gamma: float = 2.0matcher_class_cost: float = 2.0matcher_bbox_cost: float = 5.0matcher_giou_cost: float = 2.0use_focal_loss: bool = Trueauxiliary_loss: bool = Truefocal_loss_alpha: float = 0.75focal_loss_gamma: float = 2.0weight_loss_vfl: float = 1.0weight_loss_bbox: float = 5.0weight_loss_giou: float = 2.0weight_loss_fgl: float = 0.15weight_loss_ddf: float = 1.5eos_coefficient: float = 0.0001eval_idx: int = -1layer_scale: int | float = 1.0max_num_bins: int = 32reg_scale: float = 4.0depth_mult: float = 1.0top_prob_values: int = 4lqe_hidden_dim: int = 64lqe_layers: int = 2decoder_offset_scale: float = 0.5decoder_method: str = 'default'up: float = 0.5tie_word_embeddings: bool = Trueweight_loss_mal: float = 1.0use_dense_one_to_one: bool = Truemal_alpha: float | None = Noneencoder_fuse_op: str = 'sum'spatial_tuning_adapter_inplanes: int = 16encoder_type: str = 'hybrid'use_gateway: bool = Trueshare_bbox_head: bool = Falseencoder_has_trailing_conv: bool = True )
المعاملات
- is_encoder_decoder (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان النموذج يُستخدم كمُشفِّر/مُفكِّك أم لا. - initializer_range (
float، اختياري، القيمة الافتراضية0.01) — انحراف معياري لـ truncated_normal_initializer المستخدم في تهيئة جميع مصفوفات الأوزان. - initializer_bias_prior_prob (
float, اختياري) — الاحتمال المسبق الذي يستخدمه مُهيّئ الانحياز (bias initializer) لتهيئة الانحيازات الخاصة بـenc_score_headوclass_embed. إذا كانNone، يتم حسابprior_probعلى النحوprior_prob = 1 / (num_labels + 1)أثناء تهيئة أوزان النموذج. - layer_norm_eps (
float, اختياري، القيمة الافتراضية1e-05) — قيمة الإيبسلون المستخدمة في طبقات تطبيع الطبقة. - batch_norm_eps (
float، اختياري، القيمة الافتراضية1e-05) — قيمة إيبسلون المستخدمة في طبقات تطبيع الدفعة. - backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], اختياري) — إعدادات نموذج الهيكل العظمي. - freeze_backbone_batch_norms (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم تجميد طبقات تطبيع الدفعة (batch normalization) في الهيكل الأساسي (backbone). - encoder_hidden_dim (
int، اختياري، القيمة الافتراضية256) — أبعاد التمثيلات المخفية. - encoder_in_channels (
list، اختياري، القيمة الافتراضية[512, 1024, 2048]) — مدخلات ميزات متعددة المستويات للمُشفِّر. - feat_strides (
list[int]، اختياري، القيمة الافتراضية[8, 16, 32]) — خطوات (Strides) المستخدمة في كل خريطة ميزات. - encoder_layers (
int, اختياري، القيمة الافتراضية1) — عدد الطبقات المخفية في مُشفِّر Transformer. سيستخدم نفس قيمةnum_layersإذا لم يتم تعيينه. - encoder_ffn_dim (
int، اختياري، القيمة الافتراضية1024) — أبعاد طبقة "الوسط" (المعروفة غالباً باسم طبقة التغذية الأمامية) في المُشفِّر. - encoder_attention_heads (
int، اختياري، القيمة الافتراضية8) — عدد رؤوس الانتباه لكل طبقة انتباه في مُشفِّر Transformer. - dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — النسبة لجميع طبقات dropout. - activation_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — نسبة dropout للتفعيلات داخل الطبقة المتصلة بالكامل. - encode_proj_layers (
list[int]، اختياري، القيمة الافتراضية[2]) — فهارس الطبقات المُساقطة التي سيتم استخدامها في المُشفِّر. - positional_encoding_temperature (
int، اختياري، القيمة الافتراضية 10000) — معامل الحرارة المستخدم لإنشاء الترميزات الموضعية. - encoder_activation_function (
str، اختياري، القيمة الافتراضية"gelu") — دالة التنشيط غير الخطية (دالة أو نص) في المُشفِّر (encoder) والمجمِّع (pooler). - activation_function (
str، اختياري، القيمة الافتراضيةsilu) — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. على سبيل المثال،"gelu"،"relu"،"silu"، وغيرها. - eval_size (
list[int]أوtuple[int, int]، اختياري) — الارتفاع والعرض المستخدمان لحساب الارتفاع والعرض الفعليين لتضمينات المواقع بعد مراعاة الخطوة (stride). - normalize_before (
bool, اختياري، القيمة الافتراضيةFalse) — يحدد ما إذا كان سيتم تطبيق تطبيع الطبقة في طبقة مُشفِّر الترانسفورمر قبل وحدات الانتباه الذاتي والتغذية الأمامية. - hidden_expansion (
float، اختياري، القيمة الافتراضية 1.0) — نسبة التوسيع لتكبير حجم الأبعاد في RepVGGBlock و CSPRepLayer. - d_model (
int، اختياري، القيمة الافتراضية256) — حجم طبقات المُشفِّر وطبقة المُجمِّع. - num_queries (
int، اختياري، القيمة الافتراضية 300) — عدد استعلامات الكائنات. - decoder_in_channels (
list، اختياري، القيمة الافتراضية[256, 256, 256]) — أبعاد الميزات متعددة المستويات لمفك الترميز. - decoder_ffn_dim (
int، اختياري، القيمة الافتراضية1024) — أبعاد طبقة "الوسيطة" (التي تُسمّى غالباً بطبقة التغذية الأمامية) في المُفكِّك. - num_feature_levels (
int، اختياري، القيمة الافتراضية 3) — عدد مستويات الميزات المدخلة. - decoder_n_points (
int، اختياري، القيمة الافتراضية 4) — عدد المفاتيح المُعَيَّنَة في كل مستوى من مستويات الميزات لكل رأس انتباه في المُفَكِّك. - decoder_layers (
int, اختياري، القيمة الافتراضية6) — عدد الطبقات المخفية في مُفكِّك Transformer. سيُستخدم نفس قيمةnum_layersإذا لم يتم تعيينه. - decoder_attention_heads (
int، اختياري، القيمة الافتراضية8) — عدد رؤوس الانتباه لكل طبقة انتباه في مُفكِّك Transformer. - decoder_activation_function (
str، اختياري، القيمة الافتراضية"relu") — دالة التنشيط غير الخطية (دالة أو نص) في المُفكِّك. - attention_dropout (
Union[float, int]، اختياري، القيمة الافتراضية0.0) — نسبة إسقاط (dropout) لاحتمالات الانتباه. - num_denoising (
int، اختياري، القيمة الافتراضية 100) — إجمالي عدد مهام إزالة الضوضاء أو الاستعلامات التي سيتم استخدامها لإزالة الضوضاء التباينية. - label_noise_ratio (
float، اختياري، القيمة الافتراضية 0.5) — النسبة من تسميات إزالة الضوضاء التي يجب إضافة ضوضاء عشوائية إليها. - box_noise_scale (
float، اختياري، القيمة الافتراضية 1.0) — مقياس أو حجم الضوضاء التي ستُضاف إلى صناديق الحدود. - learn_initial_query (
bool، اختياري، القيمة الافتراضيةFalse) — يُحدد ما إذا كان يجب تعلّم تمثيلات الاستعلام الأولية للمفكّك أثناء التدريب. - anchor_image_size (
tuple[int, int]، اختياري) — الارتفاع والعرض لصورة الإدخال المستخدمة أثناء التقييم لتوليد مرساة صناديق الحدود. - with_box_refine (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم تطبيق تحسين متكرر لصفحات الحدود. - matcher_alpha (
float، اختياري، القيمة الافتراضية 0.25) — معامل alpha المستخدم في Hungarian Matcher. - matcher_gamma (
float، اختياري، القيمة الافتراضية 2.0) — معامل gamma المستخدم في Hungarian Matcher. - matcher_class_cost (
float، اختياري، القيمة الافتراضية 2.0) — الوزن النسبي لخسارة الفئة المستخدمة في Hungarian Matcher. - matcher_bbox_cost (
float، اختياري، القيمة الافتراضية 5.0) — الوزن النسبي لخسارة صندوق الحدود (bounding box) المستخدم في Hungarian Matcher. - matcher_giou_cost (
float، اختياري، القيمة الافتراضية 2.0) — الوزن النسبي لخسارة giou المستخدمة في Hungarian Matcher. - use_focal_loss (
bool، اختياري، القيمة الافتراضيةTrue) — معامل يحدد ما إذا كان يجب استخدام خسارة التركيز (focal loss). - auxiliary_loss (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم استخدام خسائر فك الترميز المساعدة (الخسائر في كل طبقة من طبقات فك الترميز). - focal_loss_alpha (
float, اختياري، القيمة الافتراضية 0.75) — المعامل alpha المستخدم لحساب الخسارة البؤرية (focal loss). - focal_loss_gamma (
float، اختياري، القيمة الافتراضية 2.0) — معامل gamma المستخدم لحساب الخسارة البؤرية (focal loss). - weight_loss_vfl (
float, اختياري، القيمة الافتراضية 1.0) — الوزن النسبي لخسارة varifocal في خسارة كشف الكائنات. - weight_loss_bbox (
float, اختياري، القيمة الافتراضية 5.0) — الوزن النسبي لخسارة صندوق الحدود من نوع L1 في خسارة كشف الكائنات. - weight_loss_giou (
float، اختياري، القيمة الافتراضية 2.0) — الوزن النسبي لخسارة IoU المعممة في خسارة كشف الكائنات. - weight_loss_fgl (
float, اختياري، القيمة الافتراضية 0.15) — الوزن النسبي لخسارة تحديد الموقع الدقيق في خسارة كشف الكائنات. - weight_loss_ddf (
float, اختياري، القيمة الافتراضية 1.5) — الوزن النسبي لخسارة التركيز للتقطير المنفصل في خسارة كشف الكائنات. - eos_coefficient (
float، اختياري، القيمة الافتراضية0.0001) — الوزن التصنيفي النسبي لفئة «لا يوجد كائن» في دالة خسارة كشف الكائنات. - eval_idx (
int، اختياري، القيمة الافتراضية -1) — مؤشر طبقة المُفكِّك (decoder) المستخدمة للتقييم. - layer_scale (
float، اختياري، القيمة الافتراضية1.0) — معامل التوسيع للبعد المخفي في طبقات فك الترميز اللاحقة. - max_num_bins (
int، اختياري، القيمة الافتراضية 32) — الحد الأقصى لعدد الفئات (bins) لتحسين صندوق الحدود الموجّه بالتوزيع. - reg_scale (
float، اختياري، القيمة الافتراضية 4.0) — معامل المقياس لتوزيع الانحدار. - depth_mult (
float، اختياري، القيمة الافتراضية 1.0) — معامل مضاعف لعدد الكتل في طبقات RepNCSPELAN5. - top_prob_values (
int، اختياري، القيمة الافتراضية 4) — عدد قيم الاحتمالية العليا التي يجب أخذها في الاعتبار من توزيع كل زاوية. - lqe_hidden_dim (
int، اختياري، القيمة الافتراضية 64) — حجم البُعد المخفي لشبكة مُقدِّر جودة الموقع (LQE). - lqe_layers (
int، اختياري، القيمة الافتراضية 2) — عدد الطبقات في شبكة MLP الخاصة بمقدّر جودة الموقع. - decoder_offset_scale (
float، اختياري، القيمة الافتراضية 0.5) — معامل الإزاحة المستخدم في الانتباه القابل للتشوه. - decoder_method (
str، اختياري، القيمة الافتراضية"default") — الطريقة المستخدمة للمفكّك:"default"أو"discrete". - up (
float، اختياري، القيمة الافتراضية 0.5) — يتحكم في الحدود العليا لدالة الوزن. - tie_word_embeddings (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان يجب ربط ترميزات الأوزان (weight embeddings) وفقاً لخريطةtied_weights_keysالخاصة بالنموذج. - weight_loss_mal (
float، اختياري، القيمة الافتراضية 1.0) — الوزن النسبي لخسارة المساعدة المطابقة في خسارة كشف الكائنات. - use_dense_one_to_one (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم استخدام المطابقة الكثيفة من واحد إلى واحد عبر طبقات المُفكِّك. - mal_alpha (
float, اختياري) — معامل ألفا الخاص بخسارة التطابق المساعدة (MAL). إذا كانNone، يتم استخدامfocal_loss_alpha. - encoder_fuse_op (
str، اختياري، القيمة الافتراضية"sum") — عملية الدمج المستخدمة في FPN المُشفِّر. يستخدم DEIMv2"sum"بدلاً من"cat"الخاص بـ D-FINE. - spatial_tuning_adapter_inplanes (
int، اختياري، القيمة الافتراضية 16) — عدد مستويات الإدخال لجذع الالتفافي في STA. - encoder_type (
str, اختياري، القيمة الافتراضية"hybrid") — نوع المُشفِّر المستخدم. يستخدم"hybrid"المُشفِّر الهجين الكامل HybridEncoder مع AIFI وFPN وPAN. يستخدم"lite"المُشفِّر الخفيف LiteEncoder مع دمج GAP للنسخ الأصغر (Atto وFemto وPico). - use_gateway (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كان سيتم استخدام آلية البوابة (التحكم عبر الانتباه المتقاطع) في طبقات المُفكِّك. عند تعيينFalse، يتم استخدام RMSNorm على مخرجات انتباه المُرمِّز بدلاً من ذلك. - share_bbox_head (
bool، اختياري، القيمة الافتراضيةFalse) — ما إذا كان سيتم مشاركة رأس تنبؤ الصندوق المحيط عبر جميع طبقات المُفكِّك. - encoder_has_trailing_conv (
bool، اختياري، القيمة الافتراضيةTrue) — ما إذا كانت كتل CSP في المُشفِّر تتضمن طبقة تجميع لولبي 3x3 في نهاية مسار عنق الزجاجة.Trueلـ RepNCSPELAN4 (المستخدم في متغيرات HGNetV2 N و LiteEncoder).Falseلـ RepNCSPELAN5 (المستخدم في متغيرات DINOv3).
هذه فئة الإعدادات المخزنة لإعدادات نموذج Deimv2Model. تُستخدم لاستحداث نموذج Deimv2 وفقاً للحجج المحددة، مع تعريف بنية النموذج. إن استحداث إعدادات باستخدام القيم الافتراضية سيؤدي إلى الحصول على إعدادات مشابهة لتلك الخاصة بـ Intellindust/DEIMv2_HGNetv2_N_COCO
ترث كائنات التهيئة من PreTrainedConfig ويمكن استخدامها للتحكم في مخرجات النموذج. اقرأ التوثيق الخاص بـ PreTrainedConfig لمزيد من المعلومات.
Deimv2Model
فئة transformers.Deimv2Model
< source >( config: Deimv2Config )
المعاملات
- config (Deimv2Config) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج RT-DETR (المكوّن من هيكل أساسي ومشفّر-فكّ تشفير) الذي يُخرج حالات مخفية خام دون أي رأس في الأعلى.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Deimv2ModelOutput or tuple(torch.Tensor)
المعاملات
- pixel_values (
torch.Tensorمن الشكل(batch_size, num_channels, image_size, image_size)) — المصفوفات المتناظرة مع الصور المدخلة. يمكن الحصول على قيم البكسلات باستخدامimage_processor_class. راجعimage_processor_class.__call__للتفاصيل (processor_classيستخدمimage_processor_classلمعالجة الصور). - pixel_mask (
torch.LongTensorبشكل(batch_size, height, width), اختياري) — قناع لتجنب تنفيذ الانتباه على قيم البكسلات المعبأة. قيم القناع المختارة من [0, 1]: 1 للبكسلات الحقيقية (أي غير المقنعة)، و0 للبكسلات المعبأة (أي المقنعة). ما هي أقنعة الانتباه؟[0, 1]:- 1 للبيكسلات الحقيقية (أي غير المقنّعة)،
- 0 للبيكسلات التي تمثل حشواً (أي مقنّعة).
- encoder_outputs (
torch.Tensor، اختياري) — مجموعة مرتبة تتكون من (last_hidden_state، اختياري:hidden_states، اختياري:attentions)last_hidden_stateمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) هو تسلسل من حالات المخفية عند مخرج الطبقة الأخيرة من المشفر. يُستخدم في الانتباه المتقاطع (cross-attention) في المُفكِّك. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمرير خريطة الميزات المسطحة (مخرجات الهيكل الأساسي + طبقة الإسقاط)، يمكنك اختيار تمرير تمثيل مسطح للصورة مباشرةً. - labels (
list[Dict]بطول(batch_size,)، اختياري) — التسميات لحساب خسارة المطابقة الثنائية. قائمة من القواميس، يحتوي كل قاموس على الأقل على المفتاحين التاليين: ‘class_labels’ و ‘boxes’ (تسميات الفئات وصناديق الحدود لصورة في الدفعة على التوالي). يجب أن تكون تسميات الفئات نفسهاtorch.LongTensorبطول(number of bounding boxes in the image,)وأن تكون الصناديقtorch.Tensorبشكل(number of bounding boxes in the image, 4).
يعيد
Deimv2ModelOutput أو tuple(torch.Tensor)
Deimv2ModelOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (None) والمدخلات.
تتجاوز طريقة Deimv2Model الخاصة بالتقديم (forward) الطريقة الخاصة __call__.
على الرغم من أنه يجب تعريف وصفة المرور الأمامي داخل هذه الدالة، إلا أنه ينبغي استدعاء كائن
Moduleبدلاً من هذه الدالة، لأن الكائن يتولى تنفيذ خطوات المعالجة المسبقة والمعالجة اللاحقة، بينما تتجاهل الدالة هذه الخطوات بصمت.
last_hidden_state (
torch.Tensorمن الشكل(batch_size, num_queries, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من فاحص النموذج.intermediate_hidden_states (
torch.Tensorمن الشكل(batch_size, config.decoder_layers, num_queries, hidden_size)) — حالات مخفية وسيطة مكدسة (مخرجات كل طبقة من فاحم الشيفر).intermediate_logits (
torch.Tensorمن الشكل(batch_size, config.decoder_layers, sequence_length, config.num_labels)) — القيم اللوجستية الوسيطة المتراكمة (القيم اللوجستية لكل طبقة من طبقات المُفكِّك).intermediate_reference_points (
torch.Tensorمن الشكل(batch_size, config.decoder_layers, num_queries, 4)) — نقاط مرجعية وسيطة مكدسة (نقاط مرجعية لكل طبقة من طبقات المُفكِّك).intermediate_predicted_corners (
torch.Tensorمن الشكل(batch_size, config.decoder_layers, num_queries, 4)) — زوايا متوسطة متوقعة مكدّسة (الزوايا المتوقعة لكل طبقة من طبقات المُفكِّك).initial_reference_points (
torch.Tensorمن الشكل(batch_size, num_queries, 4)) — نقاط المرجع الأولية المستخدمة لطبقة فك الترميز الأولى.decoder_hidden_states (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد(batch_size, sequence_length, hidden_size).حالات المخفية (Hidden states) لمفكّك الترميز (decoder) عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي (initial embedding).
decoder_attentions (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
cross_attentions (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه لطبقة الانتباه المتقاطع في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه المتقاطع.
encoder_last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر النموذج.encoder_hidden_states (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد(batch_size, sequence_length, hidden_size).حالات المخفية للمشفّر عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.
encoder_attentions (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه في المُشفِّر، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
init_reference_points (
torch.Tensorمن الشكل(batch_size, num_queries, 4)) — نقاط المرجع الأولية المُرسلة عبر مُفكِّك Transformer.enc_topk_logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.num_labels)) — درجات صناديق الإحاطة المتوقعة حيث يتم اختيار صناديق الإحاطة الأعلى تقييماً وعددهاconfig.two_stage_num_proposalsكإقتراحات مناطق في مرحلة المُشفِّر. مخرجات التصنيف الثنائي لصناديق الإحاطة (أي المقدمة والخلفية).enc_topk_bboxes (
torch.Tensorمن الشكل(batch_size, sequence_length, 4)) — قيم اللوجيتات (Logits) لإحداثيات صناديق الحدود المتوقعة في مرحلة المُشفِّر (Encoder).enc_outputs_class (
torch.Tensorمن الشكل(batch_size, sequence_length, config.num_labels)، اختياري، يُعاد عندconfig.with_box_refine=Trueوconfig.two_stage=True) — درجات صناديق الحدود المتوقعة حيث تُختار صناديق الحدود الأعلى تقييماً وعددهاconfig.two_stage_num_proposalsكإقتراحات مناطق في المرحلة الأولى. مخرجات التصنيف الثنائي لصناديق الحدود (أي المقدمة والخلفية).enc_outputs_coord_logits (
torch.Tensorمن الشكل(batch_size, sequence_length, 4)، اختياري، يُعاد عندconfig.with_box_refine=Trueوconfig.two_stage=True) — قيم اللوجيتات الخاصة بإحداثيات صناديق الحدود المتوقعة في المرحلة الأولى.denoising_meta_values (
dict، اختياري) — قاموس إضافي للقيم المتعلقة بإزالة الضوضاء.
أمثلة:
>>> from transformers import AutoImageProcessor, Deimv2Model
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> image_processor = AutoImageProcessor.from_pretrained("PekingU/Deimv2_r50vd")
>>> model = Deimv2Model.from_pretrained("PekingU/Deimv2_r50vd")
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 300, 256]Deimv2ForObjectDetection
فئة transformers.Deimv2ForObjectDetection
< source >( config: Deimv2Config )
المعاملات
- config (Deimv2Config) — فئة إعدادات النموذج التي تحتوي على جميع معاملات النموذج. لا يؤدي التهيئة باستخدام ملف الإعدادات إلى تحميل الأوزان المرتبطة بالنموذج، بل الإعدادات فقط. راجع طريقة from_pretrained() لتحميل أوزان النموذج.
نموذج RT-DETR (المكوّن من هيكل أساسي ومشفّر-فكّاش) الذي يُخرج صناديق الإحاطة والقيم اللوجستية ليتم فكّ ترميزها لاحقاً إلى درجات وفئات.
يرث هذا النموذج من PreTrainedModel. راجع توثيق الفئة الأصلية لمعرفة الطرق العامة التي تنفذها المكتبة لجميع نماذجها (مثل التحميل أو الحفظ، وتغيير حجم تضمينات الإدخال، وقص الرؤوس، وما إلى ذلك).
هذا النموذج هو أيضًا فئة فرعية من torch.nn.Module في PyTorch. استخدمه كوحدة PyTorch عادية، وارجع إلى توثيق PyTorch لكل ما يتعلق بالاستخدام العام والسلوك.
forward
< source >( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Deimv2ObjectDetectionOutput or tuple(torch.Tensor)
المعاملات
- pixel_values (
torch.Tensorمن الشكل(batch_size, num_channels, image_size, image_size)) — المصفوفات المتناظرة مع الصور المدخلة. يمكن الحصول على قيم البكسلات باستخدامimage_processor_class. راجعimage_processor_class.__call__للتفاصيل (processor_classيستخدمimage_processor_classلمعالجة الصور). - pixel_mask (
torch.LongTensorبشكل(batch_size, height, width), اختياري) — قناع لتجنب تنفيذ الانتباه على قيم البكسلات المعبأة. قيم القناع المختارة من [0, 1]: 1 للبكسلات الحقيقية (أي غير المقنعة)، و0 للبكسلات المعبأة (أي المقنعة). ما هي أقنعة الانتباه؟[0, 1]:- 1 للبيكسلات الحقيقية (أي غير المقنّعة)،
- 0 للبيكسلات التي تمثل حشواً (أي مقنّعة).
- encoder_outputs (
torch.Tensor، اختياري) — مجموعة مرتبة تتكون من (last_hidden_state، اختياري:hidden_states، اختياري:attentions)last_hidden_stateمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) هو تسلسل من حالات المخفية عند مخرج الطبقة الأخيرة من المشفر. يُستخدم في الانتباه المتقاطع (cross-attention) في المُفكِّك. - inputs_embeds (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — اختياريًا، بدلاً من تمريرinput_ids، يمكنك اختيار تمرير تمثيل مضمّن مباشرة. وهذا مفيد إذا كنت ترغب في الحصول على مزيد من التحكم في كيفية تحويل فهارسinput_idsإلى المتجهات المرتبطة بها، مقارنةً بمصفوفة البحث المضمّنة الداخلية للنموذج. - labels (
list[Dict]بطول(batch_size,)، اختياري) — التسميات لحساب خسارة المطابقة الثنائية. قائمة من القواميس، يحتوي كل قاموس على الأقل على المفتاحين التاليين: ‘class_labels’ و ‘boxes’ (تسميات الفئات وصناديق الحدود لصورة في الدفعة على التوالي). يجب أن تكون تسميات الفئات نفسهاtorch.LongTensorبطول(number of bounding boxes in the image,)وأن تكون الصناديقtorch.Tensorبشكل(number of bounding boxes in the image, 4).
يعيد
Deimv2ObjectDetectionOutput أو tuple(torch.Tensor)
Deimv2ObjectDetectionOutput أو مجموعة مرتبة من
torch.Tensor (إذا تم تمرير return_dict=False أو عندما يكون config.return_dict=False) وتتضمن عناصر مختلفة
تعتمد على الإعداد (None) والمدخلات.
تتجاوز طريقة Deimv2ForObjectDetection الخاصة بالتقديم (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]، نسبةً إلى حجم كل صورة فردية في الدفعة (مع تجاهل أي حشو محتمل). يمكنك استخدام~Deimv2ImageProcessor.post_process_object_detectionلاسترجاع صناديق الحدود غير المُطبَّعة (المطلقة).auxiliary_outputs (
list[Dict]، اختياري) — اختياري، يُعاد فقط عند تفعيل الخسائر المساعدة (أي عند ضبطconfig.auxiliary_lossعلىTrue) وتوفير التسميات. وهو قائمة من القواميس تحتوي على المفتاحين المذكورين أعلاه (logitsوpred_boxes) لكل طبقة من طبقات المُفكِّك.last_hidden_state (
torch.Tensorمن الشكل(batch_size, num_queries, hidden_size)) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من فاحص النموذج.intermediate_hidden_states (
torch.Tensorمن الشكل(batch_size, config.decoder_layers, num_queries, hidden_size)) — حالات مخفية وسيطة مكدسة (مخرجات كل طبقة من فاحم الشيفر).intermediate_logits (
torch.Tensorمن الشكل(batch_size, config.decoder_layers, num_queries, config.num_labels)) — القيم اللوجستية الوسيطة المتراكمة (القيم اللوجستية لكل طبقة من طبقات المُفكِّك).intermediate_reference_points (
torch.Tensorمن الشكل(batch_size, config.decoder_layers, num_queries, 4)) — نقاط مرجعية وسيطة مكدسة (نقاط مرجعية لكل طبقة من طبقات المُفكِّك).intermediate_predicted_corners (
torch.Tensorمن الشكل(batch_size, config.decoder_layers, num_queries, 4)) — زوايا متوسطة متوقعة مكدّسة (الزوايا المتوقعة لكل طبقة من طبقات المُفكِّك).initial_reference_points (
torch.Tensorمن الشكل(batch_size, config.decoder_layers, num_queries, 4)) — نقاط مرجعية أولية مكدّسة (النقاط المرجعية الأولية لكل طبقة من طبقات المُفكِّك).decoder_hidden_states (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد(batch_size, sequence_length, hidden_size).حالات المخفية (Hidden states) لمفكّك الترميز (decoder) عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي (initial embedding).
decoder_attentions (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
cross_attentions (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه لطبقة الانتباه المتقاطع في المُفكِّك، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه المتقاطع.
encoder_last_hidden_state (
torch.Tensorمن الشكل(batch_size, sequence_length, hidden_size)، اختياري) — تسلسل حالات مخفية عند مخرج الطبقة الأخيرة من مُشفِّر النموذج.encoder_hidden_states (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_hidden_states=Trueأو عند تعيينconfig.output_hidden_states=True) — مجموعة منtorch.Tensor(واحدة لإخراج الطبقات المضمنة، إذا كان النموذج يحتوي على طبقة تضمين، + واحدة لإخراج كل طبقة) بأبعاد(batch_size, sequence_length, hidden_size).حالات المخفية للمشفّر عند مخرج كل طبقة بالإضافة إلى مخرجات التضمين الأولي.
encoder_attentions (
tuple[torch.Tensor]، اختياري، يُعاد عند تمريرoutput_attentions=Trueأو عند تعيينconfig.output_attentions=True) — مجموعة منtorch.Tensor(واحدة لكل طبقة) بأبعاد(batch_size, num_heads, sequence_length, sequence_length).أوزان الانتباه في المُشفِّر، بعد تطبيق دالة softmax على الانتباه، وتُستخدم لحساب المتوسط الموزون في رؤوس الانتباه الذاتي.
init_reference_points (
torch.Tensorمن الشكل(batch_size, num_queries, 4)) — نقاط المرجع الأولية المُرسلة عبر مُفكِّك Transformer.enc_topk_logits (
torch.Tensorمن الشكل(batch_size, sequence_length, config.num_labels)، اختياري، يُعاد عندconfig.with_box_refine=Trueوconfig.two_stage=True) — قيم اللوجيتات الخاصة بإحداثيات صناديق الحدود المتوقعة في المُشفِّر.enc_topk_bboxes (
torch.Tensorمن الشكل(batch_size, sequence_length, 4)، اختياري، يُعاد عندconfig.with_box_refine=Trueوconfig.two_stage=True) — قيم اللوجيتات (Logits) لإحداثيات صناديق الحدود المتوقعة في المُشفِّر (Encoder).enc_outputs_class (
torch.Tensorمن الشكل(batch_size, sequence_length, config.num_labels)، اختياري، يُعاد عندconfig.with_box_refine=Trueوconfig.two_stage=True) — درجات صناديق الحدود المتوقعة حيث تُختار صناديق الحدود الأعلى تقييماً وعددهاconfig.two_stage_num_proposalsكإقتراحات مناطق في المرحلة الأولى. مخرجات التصنيف الثنائي لصناديق الحدود (أي المقدمة والخلفية).enc_outputs_coord_logits (
torch.Tensorمن الشكل(batch_size, sequence_length, 4)، اختياري، يُعاد عندconfig.with_box_refine=Trueوconfig.two_stage=True) — قيم اللوجيتات الخاصة بإحداثيات صناديق الحدود المتوقعة في المرحلة الأولى.denoising_meta_values (
dict، اختياري) — قاموس إضافي للقيم المتعلقة بإزالة الضوضاء
مثال:
>>> import torch
>>> from transformers.image_utils import load_image
>>> from transformers import AutoImageProcessor, Deimv2ForObjectDetection
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = load_image(url)
>>> image_processor = AutoImageProcessor.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers")
>>> model = Deimv2ForObjectDetection.from_pretrained("harshaljanjani/DEIMv2_HGNetv2_N_COCO_Transformers")
>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> # forward pass
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> list(logits.shape)
[1, 300, 80]
>>> boxes = outputs.pred_boxes
>>> list(boxes.shape)
[1, 300, 4]
>>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> target_sizes = torch.tensor([image.size[::-1]])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)
>>> result = results[0] # first image in batch
>>> for score, label, box in zip(result["scores"], result["labels"], result["boxes"]):
... box = [round(i, 2) for i in box.tolist()]
... print(
... f"Detected {model.config.id2label[label.item()]} with confidence "
... f"{round(score.item(), 3)} at location {box}"
... )