Ultralytics YOLO27:

التهيئة#

تلعب إعدادات YOLO والمعلمات الفائقة دورًا حاسمًا في أداء النموذج وسرعته ودقته. ويمكن أن تؤثر هذه الإعدادات في سلوك النموذج خلال مراحل مختلفة، بما في ذلك التدريب والتحقق والتنبؤ.



Watch: Mastering Ultralytics YOLO: Configuration

تستخدم أوامر Ultralytics الصيغة التالية:

مثال
yolo TASK MODE ARGS

حيث:

تُعرَّف قيم ARG الافتراضية في هذه الصفحة وتأتي من ملف cfg/default.yaml.

المهام#

يمكن لنماذج Ultralytics YOLO تنفيذ مجموعة متنوعة من مهام الرؤية الحاسوبية، بما في ذلك:

الوسيطةالافتراضيالوصف
task'detect'يحدد مهمة YOLO: detect من أجل اكتشاف الكائنات، وsegment من أجل تقسيم المثيلات، وsemantic من أجل التقسيم الدلالي، وdepth من أجل تقدير العمق أحادي العين، وclassify من أجل التصنيف، وpose من أجل تقدير الوضعية، وobb من أجل المربعات المحيطة الموجّهة. وقد صُممت كل مهمة لمخرجات ومشكلات محددة في تحليل الصور والفيديو.

دليل المهام

الأنماط#

تعمل نماذج Ultralytics YOLO في أوضاع مختلفة، صُمم كل منها لمرحلة محددة من دورة حياة النموذج:

  • Train: تدريب نموذج YOLO على مجموعة بيانات مخصصة.
  • Val: التحقق من صحة نموذج YOLO مُدرَّب.
  • Predict: استخدام نموذج YOLO مُدرَّب لإجراء تنبؤات على صور أو مقاطع فيديو جديدة.
  • Export: تصدير نموذج YOLO للنشر.
  • Track: تتبع الكائنات في الوقت الفعلي باستخدام نموذج YOLO.
  • Benchmark: قياس سرعة ودقة صادرات YOLO ‏(ONNX وTensorRT وغيرهما).
الوسيطةالافتراضيالوصف
mode'train'يحدد وضع تشغيل نموذج YOLO: train لتدريب النموذج، وval للتحقق، وpredict للاستدلال، وexport للتحويل إلى تنسيقات النشر، وtrack لتتبع الكائنات، وbenchmark لتقييم الأداء. ويدعم كل وضع مراحل مختلفة، من التطوير إلى النشر.

دليل الأوضاع

إعدادات التدريب#

تتضمن إعدادات تدريب نماذج YOLO معلمات فائقة وتكوينات تؤثر في أداء النموذج وسرعته ودقته. وتشمل الإعدادات الرئيسية حجم الدفعة، ومعدل التعلم، والزخم، واضمحلال الأوزان. كما يؤثر اختيار المُحسِّن ودالة الخسارة وتركيب مجموعة البيانات في التدريب. ويُعد الضبط والتجريب أمرين أساسيين لتحقيق الأداء الأمثل. لمزيد من التفاصيل، راجع دالة الإدخال لنقطة بدء Ultralytics.

الوسيطةالنوعالافتراضيالوصف
modelstrNoneيحدد ملف النموذج المستخدم للتدريب. يقبل مسارًا إلى نموذج .pt مدرَّب مسبقًا أو ملف إعداد .yaml. وهو ضروري لتحديد بنية النموذج أو تهيئة الأوزان.
datastrNoneمسار YAML الخاص بمجموعة البيانات (مثل coco8.yaml)، الذي يحتوي على مسارات بيانات التدريب والتحقق وأسماء الفئات وعددها. أما التصنيف فيتطلب دليل مجموعة بيانات أو اسم مجموعة بيانات مضمّنة (مثل imagenet10).
epochsint100إجمالي عدد حقب التدريب. تمثل كل حقبة مرورًا كاملًا على مجموعة البيانات بأكملها. وقد يؤثر ضبط هذه القيمة في مدة التدريب وأداء النموذج.
timefloatNoneالحد الأقصى لمدة التدريب بالساعات. إذا عُيّنت هذه القيمة، فإنها تتجاوز الوسيطة epochs، مما يسمح بإيقاف التدريب تلقائيًا بعد المدة المحددة. ويفيد ذلك في سيناريوهات التدريب المقيّدة زمنيًا.
patienceint100عدد الحقب التي ينتظرها التدريب دون تحسن في مقاييس التحقق قبل إيقافه مبكرًا. ويساعد ذلك على منع فرط التكيّف بإيقاف التدريب عندما يستقر الأداء.
batchint أو float16حجم الدفعة، مع ثلاثة أوضاع: تحديده كعدد صحيح (مثل batch=16)، أو الوضع التلقائي لاستخدام 60% من ذاكرة GPU (batch=-1)، أو الوضع التلقائي مع كسر الاستخدام المحدد (batch=0.70).
imgszint640حجم الصورة المستهدف للتدريب. تُعاد تحجيم الصور إلى مربعات ذات أضلاع تساوي القيمة المحددة (إذا كانت rect=False)، مع الحفاظ على نسبة العرض إلى الارتفاع لنماذج YOLO دون RT-DETR. ويؤثر ذلك في دقة النموذج وتعقيده الحسابي.
saveboolTrueيمكّن من حفظ نقاط تحقق التدريب وأوزان النموذج النهائية. ويفيد ذلك في استئناف التدريب أو نشر النموذج.
save_periodint-1تواتر حفظ نقاط تحقق النموذج، ويُحدد بعدد الحقب. وتعطّل القيمة -1 هذه الميزة. ويفيد ذلك في حفظ نماذج مرحلية أثناء جلسات التدريب الطويلة.
cacheboolFalseيمكّن من تخزين صور مجموعة البيانات مؤقتًا في الذاكرة (True/ram)، أو على القرص (disk)، أو تعطيل التخزين المؤقت (False). ويؤدي ذلك إلى تحسين سرعة التدريب من خلال تقليل عمليات الإدخال والإخراج على القرص، مقابل زيادة استخدام الذاكرة.
deviceint أو str أو listNoneيحدد جهاز أو أجهزة الحوسبة المستخدمة للتدريب: GPU واحدة (device=0)، أو وحدات GPU متعددة (device=[0,1])، أو CPU (device=cpu)، أو MPS لشرائح Apple silicon (device=mps)، أو Huawei Ascend NPU (device=npu:0 أو device=npu:0,1)، أو الاختيار التلقائي لـGPU الخاملة (device=-1) أو وحدات GPU الخاملة المتعددة (device=[-1,-1]).
workersint8عدد خيوط العامل لتحميل البيانات (لكل RANK عند التدريب باستخدام وحدات GPU متعددة). ويؤثر ذلك في سرعة المعالجة المسبقة للبيانات وإدخالها إلى النموذج، ويفيد خصوصًا في إعدادات وحدات GPU المتعددة.
projectstrNoneاسم دليل المشروع الذي تُحفظ فيه مخرجات التدريب. ويتيح تخزين التجارب المختلفة بطريقة منظمة.
namestrNoneاسم عملية التدريب. ويُستخدم لإنشاء دليل فرعي داخل مجلد المشروع تُخزَّن فيه سجلات التدريب ومخرجاته.
exist_okboolFalseإذا كانت القيمة True، يُسمح بالكتابة فوق دليل مشروع/اسم موجود. ويفيد ذلك في التجارب التكرارية دون الحاجة إلى مسح المخرجات السابقة يدويًا.
save_dirstrNoneيحدد الدليل الدقيق الذي تُحفظ فيه مخرجات العملية، متجاوزًا تركيبة project/name. ويُستخدم المسار كما هو دون زيادة تلقائية، لذلك تعيد العمليات المتتالية استخدام الدليل نفسه.
pretrainedbool أو strTrueيحدد ما إذا كان سيبدأ التدريب من أوزان مدرَّبة مسبقًا. ويمكن أن تكون القيمة منطقية أو مسارًا نصيًا إلى الأوزان المراد تحميلها. يدرّب pretrained=False باستخدام أوزان مهيأة عشوائيًا مع الحفاظ على بنية النموذج.
cls_remapboolTrueعند الضبط الدقيق عبر مجموعات بيانات مختلفة، ينسخ صفوف رأس التصنيف المدرَّبة مسبقًا إلى النموذج الجديد حيثما تتطابق أسماء الفئات، بحيث تحتفظ الفئات المتداخلة بتحيزها المتعلم، وبأوزانها أيضًا عندما يظل عرض الرأس دون تغيير. وينطبق ذلك سواء اختلف عدد الفئات أو تطابق مع اختلاف ترتيبها.
optimizerstr'auto'اختيار المحسّن للتدريب. تشمل الخيارات SGD وMuSGD وAdam وAdamax وAdamW وNAdam وRAdam وRMSProp أو auto لاختيار AdamW أو MuSGD استنادًا إلى عدد تكرارات التدريب. ويؤثر ذلك في سرعة التقارب واستقراره.
seedint0يحدد البذرة العشوائية للتدريب، مما يضمن قابلية إعادة إنتاج النتائج عبر العمليات التي تستخدم الإعدادات نفسها.
deterministicboolTrueيفرض استخدام خوارزميات حتمية، مما يضمن قابلية إعادة الإنتاج، لكنه قد يؤثر في الأداء والسرعة بسبب تقييد استخدام الخوارزميات غير الحتمية.
verboseboolTrueيمكّن الإخراج المطوّل أثناء التدريب، إذ يعرض أشرطة التقدم ومقاييس كل حقبة ومعلومات تدريب إضافية في وحدة التحكم.
single_clsboolFalseيعامل جميع الفئات في مجموعات البيانات متعددة الفئات على أنها فئة واحدة أثناء التدريب. يُفيد ذلك في مهام التصنيف الثنائي أو عند التركيز على وجود الكائن بدلاً من تصنيفه.
classeslist[int]Noneيحدد قائمة بمعرّفات الفئات التي سيُدرَّب عليها. يُفيد ذلك في تصفية فئات معينة والتركيز عليها فقط أثناء التدريب.
rectboolFalseيمكّن استراتيجية الحد الأدنى من الحشو؛ إذ تُحشى الصور في الدفعة بأقل قدر ممكن للوصول إلى حجم مشترك، بحيث يساوي أطول ضلع imgsz. قد يحسّن ذلك الكفاءة والسرعة، لكنه قد يؤثر في دقة النموذج.
multi_scalefloat0.0يغيّر imgsz عشوائيًا في كل دفعة بمقدار +/- multi_scale (مثلًا 0.25 -> 0.75x إلى 1.25x)، مع التقريب إلى مضاعفات خطوة النموذج؛ ويعطّل 0.0 التدريب متعدد المقاييس.
cos_lrboolFalseيستخدم مُجدوِل معدل تعلّم جيبيًا، فيضبط معدل التعلّم باتباع منحنى جيبي على مدى العصور. ويساعد ذلك في إدارة معدل التعلّم لتحقيق تقارب أفضل.
close_mosaicint10يعطّل زيادة البيانات بطريقة الفسيفساء في آخر N من العصور لتحقيق استقرار التدريب قبل اكتماله. ويؤدي ضبطها على 0 إلى تعطيل هذه الميزة.
resumeboolFalseيستأنف التدريب من آخر نقطة تحقق محفوظة. ويحمّل تلقائيًا أوزان النموذج وحالة المُحسِّن وعدد العصور، مواصلًا التدريب بسلاسة.
ampbool أو strTrueيضبط دقة التدريب: يستخدم True أو "fp16" الدقة FP16، ويستخدم "bf16" الدقة BF16 على أجهزة CUDA المدعومة، بينما يستخدم False أو "fp32" الدقة FP32.
quantizeint أو strNoneاضبطه على 8 (أو "int8") من أجل التدريب الواعي بالكمية INT8 (QAT)، والذي يعمل على الضبط الدقيق مع التكميم الوهمي في الحلقة لكي تتحمل الأوزان تصدير INT8. انظر الالتزام بالتدريب الواعي بالكمية.
fractionfloat أو int أو list1.0مجموعة فرعية من البيانات على شكل نسبة/عدد أو قائمة [train, val, test]. يعني 1 التقسيم الكامل، وتمثل الأعداد الصحيحة الأكبر من 1 أعداد الصور، ولا يقبل سوى إدخال الاختبار الاختياري 0/0.0 للدلالة على عدم وجوده. وتحافظ القوائم المكوّنة من عنصرين على اكتمال الاختبار.
profileboolFalseيمكّن تحليل سرعتي ONNX وTensorRT أثناء التدريب، وهو مفيد لتحسين نشر النموذج.
freezeint أو listNoneيجمّد أول N طبقات من النموذج، أو طبقات محددة حسب الفهرس أو اسم الوحدة (23.cv2، من دون model. البادئ)، مما يقلل عدد المعلمات القابلة للتدريب. ويُفيد ذلك في الضبط الدقيق أو التعلّم بالنقل.
lr0float0.01معدل التعلّم الأولي (أي SGD=1E-2 وAdam=1E-3). ويُعد ضبط هذه القيمة بالغ الأهمية لعملية التحسين، إذ يؤثر في سرعة تحديث أوزان النموذج.
lrffloat0.01معدل التعلّم النهائي باعتباره كسرًا من المعدل الأولي = (lr0 * lrf)، ويُستخدم بالاقتران مع المُجدوِلات لضبط معدل التعلّم بمرور الوقت.
momentumfloat0.937عامل الزخم لـ SGD أو beta1 لـ مُحسّنات Adam، بما يؤثر في إدماج التدرجات السابقة في التحديث الحالي.
weight_decayfloat0.0005حد انتظام من النوع L2، يعاقب الأوزان الكبيرة لمنع فرط التعلّم.
warmup_epochsfloat3.0عدد عصور الإحماء لمعدل التعلّم، إذ يزيد معدل التعلّم تدريجيًا من قيمة منخفضة إلى معدل التعلّم الأولي لتحقيق استقرار التدريب في مراحله المبكرة.
warmup_momentumfloat0.8الزخم الأولي لمرحلة الإحماء، مع ضبطه تدريجيًا ليتوافق مع الزخم المحدد خلال فترة الإحماء.
warmup_bias_lrfloat0.1معدل التعلّم لمعلمات التحيّز أثناء مرحلة الإحماء، مما يساعد في استقرار تدريب النموذج خلال العصور الأولية. يُضبط تلقائيًا على 0.0 ضمن optimizer='auto' الافتراضي، لذا يجب تسمية مُحسِّن صراحةً لاستخدامه.
distill_modelstrNoneمسار نقطة تحقق لنموذج المعلّم (مثلًا yolo26x.pt) من أجل تقطير المعرفة. عند ضبطه، يُدرَّب نموذج الطالب باستخدام خسارة تقطير إضافية يوجّهها المعلّم المجمّد.
disfloat6.0وزن خسارة التقطير المضافة إلى خسائر الكشف القياسية. تزيد القيم الأعلى تأثير توجيه المعلّم للميزات.
boxfloat7.5وزن مكوّن خسارة الصندوق في دالة الخسارة، مما يؤثر في مقدار التركيز على التنبؤ الدقيق بإحداثيات الصندوق المحيط.
clsfloat0.5وزن خسارة التصنيف في دالة الخسارة الكلية، مما يؤثر في أهمية التنبؤ الصحيح بالفئة مقارنةً بالمكونات الأخرى.
cls_pwfloat0.0قوة ترجيح الفئات لمعالجة عدم توازن الفئات باستخدام معكوس تكرار الفئة. يعطّل 0.0 ترجيح الفئات، بينما يطبّق 1.0 ترجيحًا كاملًا بمعكوس التكرار. وتوفر القيم بين 0 و1 ترجيحًا جزئيًا.
dflfloat1.5وزن حد انحدار مسافة الصندوق: خسارة بؤرية توزيعية (DFL) عندما يستخدم رأس الكشف reg_max > 1، وخسارة L1 لمسافات الصندوق المُطبَّعة في YOLO26 الخالي من DFL (reg_max: 1).
posefloat12.0وزن خسارة الوضعية في النماذج المدرَّبة لتقدير الوضعية، مما يؤثر في التركيز على التنبؤ الدقيق بالنقاط المفتاحية للوضعية.
kobjfloat1.0وزن خسارة احتمالية الكائن للنقاط المفتاحية في نماذج تقدير الوضعية، لتحقيق التوازن بين ثقة الكشف ودقة الوضعية.
rlefloat1.0وزن خسارة تقدير الاحتمالية اللوغاريتمية المتبقية في نماذج تقدير الوضعية، مما يؤثر في دقة تحديد مواقع النقاط المفتاحية.
anglefloat1.0وزن خسارة الزاوية في نماذج obb، مما يؤثر في دقة التنبؤ بزوايا الصناديق المحيطة الموجّهة.
dlogfloat1.0وزن خسارة اللوغاريتم ثابت المقياس (SILog) في نماذج تقدير العمق، وهو الحد الأساسي الذي يوجّه دقة العمق.
dgradfloat0.5وزن خسارة التدرج في نماذج تقدير العمق، إذ تعاقب الأخطاء في حواف العمق وتشجع على حدود سطحية أكثر حدة.
dlamfloat1.0عامل التركيز على التباين في خسارة SILog في نماذج تقدير العمق. يجعل 1.0 الخسارة ثابتة المقياس بالكامل، بينما يختزلها 0.0 إلى RMSE لوغاريتمي عادي.
nbsint64حجم الدفعة الاسمي لتطبيع الخسارة.
overlap_maskboolTrueيحدد ما إذا كان ينبغي دمج أقنعة الكائنات في قناع واحد أثناء التدريب أو إبقاؤها منفصلة لكل كائن. وفي حال التداخل، يوضع القناع الأصغر فوق القناع الأكبر أثناء الدمج.
mask_ratioint4نسبة تصغير أقنعة التجزئة، مما يؤثر في دقة الأقنعة المستخدمة أثناء التدريب.
dropoutfloat0.0معدل الإسقاط للانتظام في مهام التصنيف، إذ يمنع فرط التعلّم من خلال حذف الوحدات عشوائيًا أثناء التدريب.
valboolTrueيمكّن التحقق أثناء التدريب، مما يسمح بالتقييم الدوري لأداء النموذج على مجموعة بيانات منفصلة.
nmsbool، اختياريNoneيحدد رأس الاستدلال المستخدم للتحقق من صحة العصر، وتحديد نقاط التحقق، والإيقاف المبكر. يستخدم None أو True النهج من واحد إلى متعدد مع NMS؛ ويستخدم False الرأس الخالي من NMS عند توفره. يحافظ كلا الرأسين على خسائر التدريب الخاصة بهما.
plotsboolTrueينشئ ويحفظ مخططات لمقاييس التدريب والتحقق، بالإضافة إلى أمثلة التنبؤ، مما يوفر رؤى مرئية حول أداء النموذج وتقدم التعلّم.
compilebool أو strFalseيمكّن تجميع الرسم البياني باستخدام torch.compile في PyTorch 2.x مع backend='inductor'. يقبل True"default"، أو False → للتعطيل، أو وضعًا نصيًا مثل "default" و"reduce-overhead" و"max-autotune-no-cudagraphs". ويعود إلى التنفيذ الفوري مع إصدار تحذير إذا لم يكن مدعومًا.
channels_lastboolNoneيستخدم تنسيق الذاكرة channels_last (NHWC) لعمليات الالتفاف أثناء التدريب. يقوم None بتمكينه تلقائياً على CUDA باستخدام PyTorch 1.11 أو الأحدث، باستثناء نظام Windows حيث أدى إلى قياسات أبطأ. يقوم False بتعطيله، بينما يطلب True ذلك صراحة. تظل الإصدارات PyTorch 1.10 والأقدم، وCPU، وMPS تستخدم تنسيق NCHW افتراضياً.
max_detint300الحد الأقصى لعدد الاكتشافات لكل صورة أثناء التحقق من التدريب. بالنسبة لـ detect، وsegment، وpose، وOBB، يرتفع الافتراضي البالغ 300 إلى أكبر عدد من الكائنات الموسومة في التدريب/التحقق فقط عندما يتجاوز هذا العدد 300. تظل القيم الأخرى ثابتة؛ ويؤدي تجاوز الحد إلى إطلاق تحذير.
ملاحظة حول إعدادات حجم الدفعة

يوفر الوسيط batch ثلاثة خيارات للتكوين:

  • حجم دفعة ثابت: حدد عدد الصور في كل دفعة باستخدام عدد صحيح، مثل batch=16.
  • الوضع التلقائي (60% من ذاكرة GPU): استخدم batch=-1 للضبط التلقائي لاستخدام ذاكرة CUDA بنسبة تقارب 60%.
  • الوضع التلقائي مع كسر الاستخدام: عيّن كسرًا، مثل batch=0.70، للضبط استنادًا إلى استخدام محدد لذاكرة GPU.
  • لم يُعثر على ملاءمة: إذا لم ينتج أي حجم دفعة مرشح ملفًا توصيفيًا قابلًا للاستخدام، ترفع AutoBatch خطأ RuntimeError واضحًا بدلًا من الرجوع بصمت إلى قيمة افتراضية غير ذات صلة.

دليل التدريب

إعدادات التنبؤ#

تتضمن إعدادات التنبؤ لنماذج YOLO معلمات فائقة وتكوينات تؤثر في الأداء والسرعة والدقة أثناء الاستدلال. وتشمل الإعدادات الرئيسية عتبة الثقة وعتبة قمع القيمة غير العظمى (NMS) وعدد الفئات. كما يؤثر حجم بيانات الإدخال وتنسيقها والميزات الإضافية مثل الأقنعة في التنبؤات. ويُعد ضبط هذه الإعدادات ضروريًا لتحقيق الأداء الأمثل.

وسيطات الاستدلال:

الوسيطةالنوعالافتراضيالوصف
sourcestr أو int أو NoneNoneيحدد مصدر البيانات للاستدلال. ويمكن أن يكون مسار صورة أو ملف فيديو أو دليلًا أو عنوان URL أو معرّف جهاز للبث المباشر. إذا حُذف، يُسجَّل تحذير ويعود النموذج إلى أصول العرض التوضيحي المضمّنة (ultralytics/assets أو عنوان URL تجريبي لـ OBB). ويدعم نطاقًا واسعًا من التنسيقات والمصادر، ما يتيح تطبيقًا مرنًا عبر أنواع الإدخال المختلفة.
conffloat0.25يحدد الحد الأدنى لعتبة الثقة لعمليات الاكتشاف. وسيُتجاهل أي كائن يُكتشف بثقة أقل من هذه العتبة. ويمكن أن يساعد ضبط هذه القيمة في تقليل الإيجابيات الكاذبة.
ioufloat0.7عتبة التقاطع على الاتحاد ‏(IoU) لقمع القيمة غير العظمى ‏(NMS). تؤدي القيم الأقل إلى عدد أقل من عمليات الاكتشاف عبر إزالة المربعات المتداخلة، ما يفيد في تقليل التكرارات.
imgszint أو tuple640الهدف الخاص بـ Letterbox. يعطي العدد الصحيح N×N مربعًا، بينما يعطي الزوج (height, width). ومع rect=True، قد يكون الموتر الفعلي أصغر من هذا الهدف بسبب الحشو بالحد الأدنى للمستطيل. استخدم rect=False لحجم ثابت. راجع الشكل الثابت مقابل الحد الأدنى للمستطيل.
rectboolTrueإذا كان True، فاستخدم الحشو بالحد الأدنى للمستطيل متى أمكن (دفعة ذات الشكل نفسه وخلفية مدعومة). وإذا كان False، فاحشو دائمًا إلى imgsz الكامل. راجع الشكل الثابت مقابل الحد الأدنى للمستطيل.
quantizeint أو strNoneدقة الاستدلال: 16/"fp16" و 32/"fp32"/غير المحدد تحدد حساب FP16 أو FP32 لنماذج PyTorch و TorchScript؛ بينما تحسب التنسيقات الأخرى بالدقة التي تحددها ملفاتها ووقت تشغيلها. عند 16 تقوم OpenVINO بتقريب المدخلات إلى FP16 على العميل وتوسيعها مرة أخرى إلى FP32، دون تغيير ما يحسبه وقت التشغيل. يتم تكوين الكمي INT8/PTQ أثناء التصدير، ثم يُستخدَم عن طريق تحميل النموذج المصدر. يحل محل علامة half المهملة.
devicestrNoneيحدد الجهاز المستخدم للاستدلال (مثل cpu أو cuda:0 أو 0 أو npu أو npu:0). ويتيح للمستخدمين الاختيار بين CPU أو GPU محدد أو Huawei Ascend NPU أو أجهزة حوسبة أخرى لتنفيذ النموذج.
dnnboolFalseإذا كان True، فاستخدم وحدة DNN في OpenCV بدلًا من ONNX Runtime لاستدلال نموذج ONNX.
datastrNoneمسار YAML لمجموعة بيانات (مثل coco8.yaml) يُقرأ فقط من أجل names، وفقط عندما لا يحمل النموذج المحمّل أسماء فئات خاصة به: أي تصدير من جهة خارجية أو تصدير من Ultralytics منفصل عن البيانات الوصفية المرفقة به. ويُبلغ هذا النموذج بخلاف ذلك عن class0 وclass1 وما إلى ذلك.
batchint1يحدد حجم الدفعة للاستدلال (ولا يعمل إلا عندما يكون المصدر دليلًا أو ملف فيديو أو ملف .txt). ويمكن أن يوفر حجم الدفعة الأكبر معدل نقل أعلى، ما يقلل إجمالي الوقت المطلوب للاستدلال.
max_detint300الحد الأقصى لعدد عمليات الاكتشاف المسموح بها لكل صورة. ويحد إجمالي عدد الكائنات التي يمكن للنموذج اكتشافها في استدلال واحد، ما يمنع المخرجات المفرطة في المشاهد الكثيفة.
vid_strideint1خطوة الإطارات لمدخلات الفيديو. تتيح تخطي الإطارات في مقاطع الفيديو لتسريع المعالجة على حساب الدقة الزمنية. تعالج القيمة 1 كل إطار، بينما تتخطى القيم الأعلى بعض الإطارات.
stream_bufferboolFalseيحدد ما إذا كان ينبغي وضع الإطارات الواردة في قائمة انتظار لبث الفيديو. إذا كان False، تُسقط الإطارات القديمة لاستيعاب الإطارات الجديدة (وهو محسن للتطبيقات في الوقت الفعلي). وإذا كان True، تُوضع الإطارات الجديدة في مخزن مؤقت، ما يضمن عدم تخطي أي إطار، لكنه يسبب زمن استجابة إذا كان معدل إطارات الاستدلال أقل من معدل إطارات البث.
visualizeboolFalseيحفظ خريطة حرارية لتنشيط الفئة بجانب كل تنبؤ، موضحًا وحدات البكسل التي رفعت درجات الفئة المتنبأ بها. ويراعي conf وclasses، ولذلك يعيّن classes=[0] تلك الفئة فقط. ولا يتوفر إلا لنماذج Ultralytics PyTorch.
augmentboolFalseيمكّن زيادة البيانات وقت الاختبار (TTA) للتنبؤات، ما قد يحسن متانة الاكتشاف على حساب سرعة الاستدلال. ولا يتوفر إلا لنماذج Ultralytics PyTorch.
agnostic_nmsboolFalseيمكن عملية القمع غير المرتبط بالفئة (NMS)، حيث يتم قمع المربعات المتداخلة الأقل تسجيلًا عبر الفئات المختلفة بدلاً من الفئة نفسها فقط. مفيد في سيناريوهات الكشف متعدد الفئات حيث يكون تداخل الفئات شائعًا. مع الاستدلال الخالي من NMS (nms=False على YOLO26 أو YOLOv10)، يمنع هذا فقط نفس الاكتشاف من الظهور بتسميات فئات متعددة (تكرارات IoU=1.0) ولا يقوم بقمع يعتمد على عتبة IoU بين المربعات المتميزة.
classeslist[int]Noneيصفّي التنبؤات إلى مجموعة من معرّفات الفئات. ولن تُعاد إلا عمليات الاكتشاف التي تنتمي إلى الفئات المحددة. ويفيد ذلك في التركيز على الكائنات ذات الصلة في مهام الاكتشاف متعدد الفئات.
retina_masksboolFalseيعيد أقنعة تقسيم عالية الدقة. وستطابق الأقنعة المُعادة (masks.data) حجم الصورة الأصلية إذا فُعّلت. وإذا عُطّلت، فسيكون لها حجم الصورة المستخدم أثناء الاستدلال.
embedlist[int]Noneيحدد الطبقات التي تُستخرج منها متجهات الميزات أو التضمينات. استخدم model.embed(source) لتضمينات الطبقة قبل الأخيرة، أو model.predict(source, embed=[layer]) لتحديد طبقات بعينها. ويفيد ذلك في المهام اللاحقة مثل التجميع أو البحث عن التشابه. ولا يتوفر إلا لنماذج Ultralytics PyTorch.
projectstrNoneاسم دليل المشروع الذي تُحفظ فيه مخرجات التنبؤ إذا فُعّل save.
namestrNoneاسم تشغيل التنبؤ. ويُستخدم لإنشاء دليل فرعي داخل مجلد المشروع تُخزَّن فيه مخرجات التنبؤ إذا فُعّل save.
streamboolFalseيمكّن المعالجة الفعالة للذاكرة لمقاطع الفيديو الطويلة أو الصور العديدة عبر إعادة مولّد من كائنات Results بدلًا من تحميل جميع الإطارات إلى الذاكرة دفعة واحدة.
verboseboolTrueيتحكم في عرض سجلات الاستدلال التفصيلية في الطرفية، موفرًا ملاحظات فورية حول عملية التنبؤ.
compilebool أو strFalseيمكّن تجميع الرسم البياني باستخدام torch.compile في PyTorch 2.x مع backend='inductor'. يقبل True"default"، أو False → للتعطيل، أو وضعًا نصيًا مثل "default" و"reduce-overhead" و"max-autotune-no-cudagraphs". ويعود إلى التنفيذ الفوري مع إصدار تحذير إذا لم يكن مدعومًا.
channels_lastboolNoneيستخدم تنسيق ذاكرة channels_last (NHWC) للاستدلال الأصلي في PyTorch. ويمكّنه None تلقائيًا على وحدات CPU x86 في Linux وWindows المفعّل فيها oneDNN مع PyTorch 1.13 أو أحدث، بينما يعطّله False، ويطلبه True على أجهزة CPU x86 أو CUDA المدعومة. وتظل ARM64 وMPS وإصدارات PyTorch الأقدم ووحدات CPU التي لا تحتوي على oneDNN والتنسيقات المُصدَّرة مثل TensorRT وONNX دون تغيير.
nmsbool، اختياريNoneيشغل استدلال من واحد إلى متعدد مع NMS افتراضيًا (None أو True). قم بتعيين False لاستخدام الرأس الفردي الخالي من NMS عند توفره. راجع دليل الكشف من طرف إلى طرف للحصول على التفاصيل.

وسيطات التصور:

الوسيطةالنوعالافتراضيالوصف
showboolFalseإذا كانت قيمة True، يعرض الصور أو مقاطع الفيديو المشروحة في نافذة. ويفيد ذلك في الحصول على ملاحظات مرئية فورية أثناء التطوير أو الاختبار.
saveboolFalse or Trueيمكّن حفظ الصور أو مقاطع الفيديو المشروحة في ملفات. ويفيد ذلك للتوثيق أو التحليل الإضافي أو مشاركة النتائج. وتكون القيمة الافتراضية True عند استخدام CLI، وFalse عند استخدام Python.
save_framesboolFalseعند معالجة مقاطع الفيديو، يحفظ الإطارات الفردية كصور. ويفيد ذلك لاستخراج إطارات محددة أو لإجراء تحليل تفصيلي إطارًا بإطار.
save_txtboolFalseيحفظ نتائج الاكتشاف في ملف نصي باتباع التنسيق [class] [x_center] [y_center] [width] [height] [confidence]. ويفيد ذلك للتكامل مع أدوات التحليل الأخرى.
save_confboolFalseيتضمن درجات الثقة في الملفات النصية المحفوظة. ويزيد مستوى التفاصيل المتاح للمعالجة اللاحقة والتحليل.
save_cropboolFalseيحفظ صورًا مقصوصة لعمليات الاكتشاف. ويفيد ذلك لزيادة البيانات أو التحليل أو إنشاء مجموعات بيانات مركزة لكائنات محددة.
show_labelsboolTrueيعرض تسميات كل كشف في المخرجات المرئية. ويوفر فهمًا فوريًا للكائنات المكتشفة.
show_confboolTrueيعرض درجة الثقة لكل كشف إلى جانب التسمية. ويوفر لمحة عن مدى يقين النموذج بشأن كل كشف.
show_boxesboolTrueيرسم مربعات إحاطة حول الكائنات المكتشفة. ويُعد ذلك أساسيًا للتعرف المرئي على الكائنات وتحديد مواقعها في الصور أو إطارات الفيديو.
line_widthint or NoneNoneيحدد عرض خط المربعات المحيطة. وإذا كان None، يُضبط عرض الخط تلقائيًا استنادًا إلى حجم الصورة. ويوفر تخصيصًا بصريًا لتحسين الوضوح.

دليل التنبؤ

إعدادات التحقق#

تتضمن إعدادات التحقق لنماذج YOLO معلمات فائقة وتكوينات لتقييم الأداء على مجموعة بيانات التحقق. وتؤثر هذه الإعدادات في الأداء والسرعة والدقة. وتشمل الإعدادات الشائعة حجم الدفعة وتواتر التحقق ومقاييس الأداء. كما يؤثر حجم مجموعة بيانات التحقق وتركيبها، إلى جانب المهمة المحددة، في العملية.

الوسيطةالنوعالافتراضيالوصف
datastrNoneيحدد مسار YAML لمجموعة البيانات (مثل coco8.yaml)، الذي ينبغي أن يتضمن مسار بيانات التحقق. أما التصنيف فيتطلب دليل مجموعة بيانات أو اسم مجموعة بيانات مضمنًا (مثل imagenet10).
imgszint640يحدد حجم صور الإدخال. تُعاد تحجيم جميع الصور إلى هذا البعد قبل المعالجة. قد تحسّن الأحجام الأكبر الدقةَ للأجسام الصغيرة، لكنها تزيد زمن الحساب.
batchint16يحدد عدد الصور في كل دفعة. تستفيد القيم الأعلى من ذاكرة GPU بكفاءة أكبر، لكنها تتطلب قدرًا أكبر من VRAM. اضبط القيمة وفق موارد الأجهزة المتاحة.
save_jsonboolFalseإذا True، يتم حفظ النتائج في ملف JSON لمزيد من التحليل، أو التكامل مع أدوات أخرى، أو الإرسال إلى خوادم التقييم مثل COCO. على مجموعات بيانات الكشف، يتم أيضاً تقييم التنبؤات باستخدام faster-coco-eval والإبلاغ عن مقياس mAP للكائنات الصغيرة والمتوسطة والكبيرة، والذي يتم تسجيله أثناء التدريب كـ metrics/mAP_small(B) وmetrics/mAP_medium(B) وmetrics/mAP_large(B) في results.csv.
conffloat0.001يحدد الحد الأدنى لعتبة الثقة لعمليات الكشف. تزيد القيم الأقل من الاستدعاء، لكنها قد تؤدي إلى مزيد من الإيجابيات الكاذبة. تُضبط منحنيات الدقة-الاستدعاء افتراضيًا على 0.001؛ وتستخدم مصفوفات الالتباس الخاصة بالكشف قيمة conf الصريحة، أو 0.25 عند حذفها. يستخدم ملخص الدقة والاستدعاء قيمة الثقة عند max-F1، لذلك قد يختلفان عن القيم المشتقة من confusion_matrix.png. القيمة الافتراضية هي 0.01 للتحقق من OBB لتقليل استخدام الذاكرة.
ioufloat0.7يحدد عتبة التقاطع على الاتحاد لـكبت غير الأعظم. ويتحكم في إزالة عمليات الكشف المكررة.
max_detint300يحد من الحد الأقصى لعدد الاكتشافات لكل صورة. بالنسبة لـ detect، وsegment، وpose، وOBB، إذا تُرِك عند 300، فسيتم رفعه إلى أكبر عدد من الكائنات الموسومة في التقسيم المُتحقَّق منه عندما تتجاوز الصورة ذلك، مع إصدار تحذير؛ بينما يتم الاحتفاظ بأي قيمة أخرى، مع تحذير من أن الاسترجاع قد يكون محدوداً عندما تتجاوز الصورة ذلك.
quantizeint أو strNoneدقة التحقق: 16/"fp16" و 32/"fp32"/غير المحدد تحدد حساب FP16 أو FP32 لنماذج PyTorch و TorchScript؛ بينما تحسب التنسيقات الأخرى بالدقة التي تحددها ملفاتها ووقت تشغيلها. عند 16 تقوم OpenVINO بتقريب المدخلات إلى FP16 على العميل وتوسيعها مرة أخرى إلى FP32، دون تغيير ما يحسبه وقت التشغيل. يتم تكوين الكمي INT8/PTQ أثناء التصدير، ثم يُستخدَم عن طريق التحقق من النموذج المصدر. يحل محل علامة half المهملة.
devicestrNoneيحدد الجهاز المستخدم للتحقق (cpu وcuda:0 وnpu وnpu:0 وغير ذلك). عند اختيار None، يُحدد أفضل جهاز متاح تلقائيًا. ويمكن تحديد أجهزة CUDA متعددة بالفصل بينها بفواصل.
dnnboolFalseإذا كانت True، تُستخدم وحدة DNN في OpenCV لاستدلال نموذج ONNX، مما يوفر بديلًا لأساليب الاستدلال في PyTorch.
plotsboolTrueعند ضبطها على True، تُنشأ مخططات التنبؤات مقابل القيم الحقيقية، ومصفوفات الالتباس، ومنحنيات PR وتُحفظ لتقييم أداء النموذج بصريًا.
classeslist[int]Noneيحدد قائمة بمعرّفات الفئات المراد تقييمها. ويفيد في تصفية الفئات المعينة والتركيز عليها فقط أثناء التقييم.
rectboolTrueإذا كانت True، يُستخدم الاستدلال المستطيل لمعالجة الدُفعات، مما يقلل الحشو وقد يزيد السرعة والكفاءة عبر معالجة الصور بنسبة أبعادها الأصلية. ويُتجاهل ذلك في التحقق من depth، الذي يمدد كل صورة إلى مربع ثابت بحجم imgsz بدلًا من إضافة الحشو.
splitstr'val'يحدد تقسيم مجموعة البيانات المستخدم للتحقق (val أو test أو train). ويتيح المرونة في اختيار جزء البيانات لتقييم الأداء.
fractionfloat أو int أو list1.0مجموعة فرعية من التقسيم الذي تم التحقق من صحته. باستخدام قائمة [train, val, test]، ينطبق المدخل المطابق لـ split (حيث 1 = التقسيم الكامل، والأعداد الصحيحة الأكبر من 1 = عدد الصور؛ المدخلات المستبعدة هي التقسيم الكامل). ينطبق العدد القياسي فقط مع split=train؛ وعندها يستخدم كل من val و test التقسيم الكامل.
projectstrNoneاسم دليل المشروع الذي تُحفظ فيه مخرجات التحقق. ويساعد على تنظيم نتائج التجارب أو النماذج المختلفة.
namestrNoneاسم تشغيل التحقق. ويُستخدم لإنشاء دليل فرعي داخل مجلد المشروع تُخزَّن فيه سجلات التحقق ومخرجاته.
verboseboolTrueإذا كانت True، تُعرض معلومات تفصيلية أثناء عملية التحقق، بما في ذلك المقاييس لكل فئة، وتقدم الدُفعات، ومعلومات تصحيح إضافية.
save_txtboolFalseإذا كانت True، تُحفظ نتائج الكشف في ملفات نصية، بملف واحد لكل صورة، للاستفادة منها في مزيد من التحليل أو المعالجة اللاحقة المخصصة أو التكامل مع الأنظمة الأخرى.
save_confboolFalseإذا كانت True، فتُضمَّن قيم الثقة في الملفات النصية المحفوظة عند تمكين save_txt، مما يوفر مخرجات أكثر تفصيلًا للتحليل والتصفية.
workersint8عدد خيوط العاملين لتحميل البيانات. قد تسرّع القيم الأعلى المعالجة المسبقة للبيانات، لكنها قد تزيد استخدام CPU. يؤدي الضبط على 0 إلى استخدام الخيط الرئيسي، وهو ما قد يكون أكثر استقرارًا في بعض البيئات.
augmentboolFalseيمكّن زيادة البيانات وقت الاختبار (TTA) أثناء التحقق، مما قد يحسّن دقة الكشف على حساب سرعة الاستدلال عبر تشغيل الاستدلال على نسخ محوّلة من الإدخال. ولا يتوفر إلا لنماذج Ultralytics PyTorch.
agnostic_nmsboolFalseيمكن عملية Non-Maximum Suppression غير المرتبط بالفئة، حيث يتم قمع المربعات المتداخلة الأقل تسجيلًا بغض النظر عن فئتها المتوقعة. مفيد للتطبيقات التي تركز على المثيلات. مع الاستدلال الخالي من NMS (nms=False على YOLO26 أو YOLOv10)، يمنع هذا فقط نفس الاكتشاف من الظهور بتسميات فئات متعددة (تكرارات IoU=1.0) ولا يقوم بقمع يعتمد على عتبة IoU بين المربعات المتميزة.
single_clsboolFalseيعامل جميع الفئات كفئة واحدة أثناء التحقق. ويفيد في تقييم أداء النموذج في مهام الكشف الثنائي أو عندما لا تكون الفروق بين الفئات مهمة.
visualizeboolFalseيعرض القيم الحقيقية والإيجابيات الحقيقية والإيجابيات الكاذبة والسلبيات الكاذبة لكل صورة. ويفيد في تصحيح الأخطاء وتفسير النموذج.
show_labelsboolTrueيعرض تسميات الفئات في مرئيات التحقق عندما تكون visualize=True. اضبطها على False للحصول على عرض أوضح للتطابقات والأخطاء.
show_confboolTrueيعرض درجات الثقة في مرئيات التحقق عندما تكون visualize=True. اضبطها على False للحصول على عرض أوضح للتطابقات والأخطاء.
compilebool أو strFalseيمكّن تجميع الرسم البياني باستخدام torch.compile في PyTorch 2.x مع backend='inductor'. يقبل True"default"، أو False → للتعطيل، أو وضعًا نصيًا مثل "default" و"reduce-overhead" و"max-autotune-no-cudagraphs". ويعود إلى التنفيذ الفوري مع إصدار تحذير إذا لم يكن مدعومًا.
channels_lastboolNoneيستخدم تنسيق ذاكرة channels_last (NHWC) للتحقق الأصلي باستخدام PyTorch. يمكّنه None تلقائيًا على وحدات CPU بمعمارية x86 في Linux وWindows المفعّل فيها oneDNN مع PyTorch 1.13 أو أحدث، بينما يعطله False، ويطلبه True على أجهزة CPU بمعمارية x86 أو CUDA المدعومة. وتبقى ARM64 وMPS وإصدارات PyTorch الأقدم ووحدات CPU التي لا تحتوي على oneDNN والتنسيقات المُصدَّرة دون تغيير؛ كما يحافظ التحقق أثناء التدريب على تخطيط نموذج التدريب.
nmsbool، اختياريNoneيشغل استدلال من واحد إلى متعدد مع NMS افتراضيًا (None أو True). قم بتعيين False لاستخدام الرأس الفردي الخالي من NMS عند توفره. راجع دليل الكشف من طرف إلى طرف للحصول على التفاصيل.

يُعد الضبط الدقيق والتجريب أمرين أساسيين لضمان الأداء الأمثل واكتشاف فرط التكيّف ومنعه.

دليل التحقق

إعدادات التصدير#

تتضمن إعدادات التصدير لنماذج YOLO تكوينات لحفظ النموذج أو تصديره لاستخدامه في بيئات مختلفة. وتؤثر هذه الإعدادات في الأداء والحجم والتوافق. وتشمل الإعدادات الرئيسية تنسيق الملف المُصدَّر (مثل ONNX وTensorFlow SavedModel)، والجهاز المستهدف (مثل CPU وGPU)، وميزات مثل الأقنعة. كما تؤثر مهمة النموذج وقيود البيئة المستهدفة في عملية التصدير.

الوسيطةالنوعالافتراضيالوصف
formatstr'torchscript'التنسيق المستهدف للنموذج المُصدَّر، مثل 'onnx' أو 'torchscript' أو 'engine' ‏(TensorRT) أو غيرها. ويتيح كل تنسيق التوافق مع بيئات النشر المختلفة.
namestrNoneاسم العتاد المستهدف للتنسيقات التي تتطلبه: بنية Hailo ('hailo8' و'hailo8l' و'hailo10h' و'hailo15h' و'hailo15l'؛ والقيمة الافتراضية 'hailo8l')، أو شريحة Rockchip RKNN (القيمة الافتراضية 'rk3588')، أو Huawei Ascend SoC (‏CANN --soc_version؛ والقيمة الافتراضية 'Ascend310B4')، أو هدف Qualcomm QNN HTP (القيمة الافتراضية '73'). ويختلف ذلك عن زوج تسمية التشغيل project/name المستخدم في الأوضاع الأخرى.
imgszint أو tuple640حجم الصورة المطلوب لإدخال النموذج. ويمكن أن يكون عددًا صحيحًا للصور المربعة (مثل 640 للصورة 640×640) أو زوجًا (height, width) لأبعاد محددة. عند عدم تمريره، يعيد التصدير استخدام حجم التدريب المسجل في نقطة التحقق المحمّلة: تسجل نقاط التحقق الرسمية لـ YOLO26 القيمة 768 للعمق، و224 للتصنيف، و1024 لـ OBB، و640 للمهام الأخرى، بينما يسجل الضبط الدقيق أي imgsz دُرّب عليه. ولا يسجل النموذج المبني من YAML حجم تدريب، ويستخدم 640.
kerasboolFalseيمكّن التصدير إلى تنسيق Keras من أجل TensorFlow SavedModel، موفرًا التوافق مع خدمة TensorFlow وواجهات API.
optimizeboolFalseيمكّن تحسينًا أعلى للمصرّف من أجل DEEPX، ما يقلل زمن استجابة الاستدلال مع زيادة وقت الترجمة.
quantizeint أو strNoneدقة التكميم: 16 (FP16، تقلل حجم النموذج ويمكنها تسريع الاستدلال على الأجهزة المدعومة) أو 8 (INT8/PTQ، تضغط النموذج بشكل أكبر مع الحد الأدنى من فقدان الدقة، وتُستخدم أساساً لـ الأجهزة الطرفية؛ وتتطلب معايرة data/fraction)؛ بينما 32/غير المحددة فهي FP32. نقطة التحقق المُدربة باستخدام quantize=8 تصدر دائماً INT8: حيث يقوم onnx و engine بالتصدير من النطاقات التي تحملها نقطة التحقق دون معايرة، ويتم رفض التنسيقات أو الدقات الأخرى. كما تقبل تنسيقات التصدير التي تدعم دقة الأوزان/التفعيل المختلطة ترميز 'w8a8'/'w16a16'/'w8a16'/'w8a32'. وهي تحل محل علامات half/int8 المهجورة (half=True16، وint8=True8، والتي لا تزال مقبولة مع تحذير بالتهجير). ولا يُسمح إلا بالدقات المدعومة من قبل التنسيق المستهدف (انظر أدناه).
dynamicboolFalseيتيح أحجام إدخال ديناميكية لصادرات TorchScript وONNX وOpenVINO وTensorRT وCoreML، ما يعزز المرونة في التعامل مع أبعاد الصور المتغيرة.
simplifyboolTrueيبسّط مخطط ONNX الوسيط باستخدام onnxslim للصادرات التي تنشئه (راجع تنسيقات التصدير)، ما قد يحسن الأداء والتوافق مع محركات الاستدلال.
opsetintNoneيحدد إصدار مجموعة عمليات ONNX للصادرات التي تنشئ مخطط ONNX (راجع تنسيقات التصدير)، لتحقيق التوافق مع محللات ONNX وبيئات التشغيل المختلفة. وإذا لم يُعيّن، يُستخدم أحدث إصدار مدعوم.
workspacefloat أو NoneNoneيحدد الحد الأقصى لحجم مساحة العمل بوحدة GiB لتحسينات TensorRT، محققًا توازنًا بين استخدام الذاكرة والأداء. استخدم None للتخصيص التلقائي بواسطة TensorRT حتى الحد الأقصى للجهاز.
nmsbool، اختياريNoneيقوم None بتصدير تنبؤات الخام من واحد إلى متعدد لـ NMS الخارجي؛ ويقوم True بتضمين NMS حيثما يتم دعم ذلك؛ ويحدد False الرأس الخالي من NMS عند توفره. يدعم NMS المضمن في CoreML الكشف والتجزئة ووضعيات الحركة بأشكال ثابتة. راجع دليل الكشف من طرف إلى طرف.
conffloatNoneعتبة الثقة المستخدمة حيثما يُنشأ NMS وقت التصدير: صادرات nms=True؛ وصادرات الاكتشاف غير الشاملة من البداية إلى النهاية في Hailo؛ وصادرات الاكتشاف والوضعية والتقسيم في IMX، التي تفرض داخليًا nms=True. وتكون القيمة الافتراضية 0.25 عند عدم التعيين.
ioufloat0.7عتبة IoU المستخدمة حيثما يُنشأ NMS وقت التصدير: صادرات nms=True؛ وصادرات الاكتشاف غير الشاملة من البداية إلى النهاية في Hailo؛ وصادرات الاكتشاف والوضعية والتقسيم في IMX، التي تفرض داخليًا nms=True.
max_detint300الحد الأقصى لعدد التكتشفات المحتفظ بها في مخرج النموذج المُصدر. ينطبق على عمليات تصدير nms=True على كل تنسيق باستثناء كشف CoreML، الذي لا تحتوي خط أنابيب NMS الأصلية الخاصة به على حد أقصى للاكتشاف، بالإضافة إلى عمليات تصدير الكشف الشاملة الخالية من NMS (مثل YOLO26 وYOLOv10، حيث يتم تقييدها بحد أقصى يعادل عدد المراسي المتاحة) وعمليات التصدير الخاصة بالكشف والوضعية والتجزئة في IMX.
agnostic_nmsboolFalseيمكّن NMS غير المتعلق بالفئة حيثما يُنشأ NMS وقت التصدير عبر مسار nms=True القياسي، بما في ذلك مرحلة NMS الخاصة بـ CoreML، فيقمع المربعات المتداخلة ذات الدرجات الأقل عبر فئات مختلفة بدلًا من قمعها داخل الفئة نفسها فقط. ولا تراعيه تكوينات NMS التي ينشئها Hailo أو IMX، إذ لا تحتوي على خيار غير متعلق بالفئة وتظل واعية بالفئة بغض النظر عن هذه العلامة. كما يكون مضمّنًا في صادرات الاكتشاف الشاملة من البداية إلى النهاية والخالية من NMS (YOLO26 وYOLOv10)، حيث لا يمنع إلا ظهور الاكتشاف نفسه تحت تسميات فئات متعددة (تكرارات IoU=1.0)، ولا يقمع المربعات المختلفة استنادًا إلى عتبة IoU.
batchint1يحدد حجم دفعة الاستدلال للنموذج المُصدَّر أو الحد الأقصى لعدد الصور التي يعالجها النموذج المُصدَّر بالتزامن في وضع predict. وبالنسبة إلى صادرات Edge TPU، يُضبط تلقائيًا على 1.
devicestrNoneيحدد جهاز التصدير: GPU (device=0) أو CPU (device=cpu) أو MPS لشرائح Apple (device=mps) أو Huawei Ascend NPU (device=npu أو device=npu:0) أو DLA لـ NVIDIA Jetson (device=dla:0 أو device=dla:1). وتستخدم صادرات TensorRT GPU تلقائيًا، لكن TensorRT 11.0 لا يدعم DLA.
verboseboolFalseيرفع سجل منشئ TensorRT إلى مستوى VERBOSE أثناء تصدير format='engine'. وتتجاهله تنسيقات التصدير الأخرى.
datastrNoneمسار ملف البيانات بصيغة YAML، وهو ضروري لمعايرة تكميم INT8؛ بينما يتطلب التصنيف بدلاً من ذلك مجلد بيانات أو اسم مجموعة بيانات مدمجة. وإذا لم يتم تحديده مع تمكين INT8، يقوم Ultralytics بتحديد مجموعة بيانات معايرة خاصة بالمهمة عند اللزوم، أو يعود إلى مجموعة البيانات الافتراضية لمهمة النموذج. نقطة التحقق المُدربة باستخدام quantize=8 تحمل نطاقات INT8 الخاصة بها ولا تحتاج إلى بيانات معايرة.
splitstr'val'تقسيم مجموعة البيانات ('train' أو 'val' أو 'test') المستخدم لإنشاء محمّل بيانات معايرة تكميم INT8 من data.
fractionfloat أو int أو list1.0المجموعة الفرعية من مجموعة البيانات المستخدمة لمعايرة INT8: نسبة أو عدد صور أو قيم [train, val, test]. وتعني 1 التقسيم الكامل، بينما تمثل الأعداد الصحيحة الأكبر من 1 أعداد الصور، ولا يقبل إدخال الاختبار الاختياري وحده 0/0.0 للدلالة على عدم وجود صور. وتُبقي القوائم ذات العنصرين test كاملًا.

يضمن التكوين المدروس تحسين النموذج المُصدَّر لحالة استخدامه وعمله بكفاءة في البيئة المستهدفة.

دليل التصدير

إعدادات الحلول#

توفر إعدادات تكوين حلول Ultralytics مرونة لتخصيص النماذج لمهام مثل عدّ الكائنات وإنشاء الخرائط الحرارية وتتبع التمارين وتحليل البيانات وتتبع المناطق وإدارة قوائم الانتظار والعدّ المستند إلى المناطق. وتتيح هذه الخيارات إجراء تعديلات سهلة للحصول على نتائج دقيقة ومفيدة ومخصصة لاحتياجات محددة.

الوسيطةالنوعالافتراضيالوصف
modelstrNoneالمسار إلى ملف نموذج Ultralytics YOLO.
regionlist أو dictNoneالنقاط التي تحدد منطقة الاهتمام، إما على شكل قائمة من صفوف (x, y) أو قاموس يربط أسماء المناطق بقوائم النقاط لمناطق متعددة (RegionCounter فقط). عندما تكون قيمة None، تعود الحلول التي تتطلب منطقة إلى إعداد افتراضي محدد مسبقًا.
show_inboolTrueعلامة للتحكم في ما إذا كان سيتم عرض أعداد الدخول في دفق الفيديو.
show_outboolTrueعلامة للتحكم في ما إذا كان سيتم عرض أعداد الخروج في دفق الفيديو.
analytics_typestr'line'نوع الرسم البياني، أي line أو bar أو area أو pie.
colormapintcv2.COLORMAP_DEEPGREENخريطة الألوان المستخدمة للخريطة الحرارية.
line_widthint2سُمك الخط للصناديق والنقاط الرئيسية والأعداد التي يرسمها الحل.
verboseboolTrueيمكّن سجل الحل لكل إطار، والذي يتضمن شكل الإدخال وأعداد الفئات وسرعة المعالجة. ويظل استدعاء التتبع نفسه صامتًا دائمًا.
json_filestrNoneمسار ملف JSON الذي يحتوي على جميع بيانات إحداثيات مواقف السيارات.
up_anglefloat145.0عتبة الزاوية لوضعية "up".
kptslist[int]'[6, 8, 10]'قائمة بثلاثة مؤشرات للنقاط الرئيسية المستخدمة لمراقبة التمارين. وتتوافق هذه النقاط الرئيسية مع مفاصل أو أجزاء الجسم، مثل الكتفين والمرفقين والمعصمين، لتمارين مثل تمارين الضغط والعقلة والقرفصاء وتمارين عضلات البطن.
down_angleint90عتبة الزاوية لوضعية "down".
blur_ratiofloat0.5يضبط النسبة المئوية لشدة التمويه، مع قيم ضمن النطاق 0.1 - 1.0.
crop_dirstr'cropped-detections'اسم الدليل لتخزين الاكتشافات المقتطعة.
recordsint5إجمالي عدد الاكتشافات اللازم لتشغيل إرسال بريد إلكتروني باستخدام نظام الإنذار الأمني.
vision_pointtuple[int, int](20, 20)النقطة التي سيتتبع عندها نظام الرؤية الكائنات ويرسم المسارات باستخدام حل VisionEye.
sourcestrNoneمسار مصدر الإدخال (فيديو وRTSP وغير ذلك). لا يمكن استخدامه إلا مع واجهة سطر أوامر الحلول (CLI).
figsizetuple[float, float](12.8, 7.2)حجم الشكل لمخططات التحليلات مثل الخرائط الحرارية أو الرسوم البيانية.
fpsfloat30.0عدد الإطارات في الثانية المستخدم لحسابات السرعة.
max_histint5الحد الأقصى للنقاط التاريخية التي ينبغي تتبعها لكل كائن لحسابات السرعة والاتجاه.
meter_per_pixelfloat0.05عامل القياس المستخدم لتحويل مسافة البكسل إلى وحدات العالم الحقيقي.
max_speedint120الحد الأقصى للسرعة في التراكبات المرئية (المستخدم في التنبيهات).
datastr'images'مسار دليل الصور المستخدم للبحث عن التشابه.
imgszint640حجم صورة الإدخال لاستدلال النموذج.

دليل الحلول

إعدادات زيادة البيانات#

تُعد تقنيات زيادة البيانات ضرورية لتحسين متانة نموذج YOLO وأدائه من خلال إدخال تنوع في بيانات التدريب، مما يساعد النموذج على التعميم بشكل أفضل على البيانات غير المرئية. يوضح الجدول التالي الغرض من كل وسيطة من وسائط زيادة البيانات وتأثيرها:

الوسيطةالنوعالافتراضيالمهام المدعومةالنطاقالوصف
hsv_hfloat0.015detect، segment، semantic، depth، classify، pose، obb0.0 - 1.0يضبط تدرج لون الصورة بكسر من عجلة الألوان، مما يضيف تنوعًا لونيًا. ويساعد النموذج على التعميم عبر ظروف الإضاءة المختلفة. بالنسبة إلى classify، ينطبق ذلك فقط عندما يكون auto_augment=None.
hsv_sfloat0.7detect، segment، semantic، depth، classify، pose، obb0.0 - 1.0يغيّر تشبع الصورة بكسر معين، مما يؤثر في شدة الألوان. ويُفيد ذلك في محاكاة الظروف البيئية المختلفة. بالنسبة إلى classify، ينطبق ذلك فقط عندما يكون auto_augment=None.
hsv_vfloat0.4detect، segment، semantic، depth، classify، pose، obb0.0 - 1.0يعدّل قيمة الصورة (السطوع) بكسر معين، مما يساعد النموذج على الأداء جيدًا في ظروف الإضاءة المتنوعة. بالنسبة إلى classify، ينطبق ذلك فقط عندما يكون auto_augment=None.
degreesfloat0detect، segment، semantic، depth، pose، obb0.0 - 180يدوّر الصورة عشوائيًا ضمن نطاق الدرجات المحدد، مما يحسّن قدرة النموذج على التعرّف على الكائنات في اتجاهات مختلفة.
translatefloat0.1detect، segment، semantic، depth، pose، obb0.0 - 1.0ينقل الصورة أفقيًا ورأسيًا بكسر من حجمها، مما يساعد على تعلّم اكتشاف الكائنات الظاهرة جزئيًا.
scalefloat | tuple0.5detect، segment، semantic، depth، classify، pose، obb0 - 1، أو صف صريح (min, max) (ليس لـ classify)يغيّر مقياس الصورة بعامل كسب، محاكيًا وجود الكائنات على مسافات مختلفة من الكاميرا.
shearfloat0detect، segment، semantic، depth، pose، obb-180 - +180يقص الصورة بزاوية محددة، محاكيًا تأثير رؤية الكائنات من زوايا مختلفة.
perspectivefloat0detect، segment، semantic، depth، pose، obb0.0 - 0.001يطبّق تحويلًا منظوريًا عشوائيًا على الصورة، مما يعزز قدرة النموذج على فهم الكائنات في فضاء ثلاثي الأبعاد.
flipudfloat0detect، segment، semantic، depth، classify، pose، obb0.0 - 1.0يقلب الصورة رأسًا على عقب بالاحتمال المحدد، مما يزيد تنوع البيانات من دون التأثير في خصائص الكائن.
fliplrfloat0.5detect، segment، semantic، depth، classify، pose، obb0.0 - 1.0يقلب الصورة من اليسار إلى اليمين بالاحتمال المحدد، وهو مفيد لتعلّم الكائنات المتماثلة وزيادة تنوع مجموعة البيانات.
bgrfloat0detect، segment، semantic، depth، pose، obb0.0 - 1.0يقلب قنوات الصورة من RGB إلى BGR بالاحتمال المحدد، مما يفيد في زيادة المتانة تجاه الترتيب غير الصحيح للقنوات.
mosaicfloat1detect، segment، semantic، pose، obb0.0 - 1.0يدمج أربع صور تدريب في صورة واحدة، محاكيًا تراكيب مشاهد وتفاعلات كائنات مختلفة. وهو فعال جدًا في فهم المشاهد المعقدة.
mixupfloat0detect، segment، semantic، pose، obb0.0 - 1.0يمزج صورتين وتسميتيهما، منشئًا صورة مركبة. ويعزز قدرة النموذج على التعميم من خلال إدخال ضوضاء في التسميات وتنوع بصري.
cutmixfloat0detect، segment، pose، obb0.0 - 1.0يدمج أجزاءً من صورتين، منشئًا مزجًا جزئيًا مع الحفاظ على المناطق المميزة. ويعزز متانة النموذج من خلال إنشاء حالات حجب.
copy_pastefloat0segment، obb0.0 - 1.0كسر الكائنات المؤهلة التي تُلصق؛ إذ يعكسها flip داخل الصورة، بينما يستخدم mixup القيمة أيضًا باعتبارها احتمال تطبيق بين الصور.
copy_paste_modestrflipsegment، obb-يحدد استراتيجية copy-paste المطلوب استخدامها. وتشمل الخيارات 'flip' و'mixup'.
auto_augmentstrrandaugmentclassify-يطبّق سياسة محددة مسبقًا لزيادة البيانات ('randaugment' أو 'autoaugment' أو 'augmix') لتحسين أداء النموذج من خلال التنوع البصري.
erasingfloat0.4classify0.0 - 1.0يمحو مناطق من الصورة عشوائيًا أثناء التدريب لتشجيع النموذج على التركيز على الميزات الأقل وضوحًا.
augmentationslistNonedetect، segment، semantic، depth، pose، obb-تحويلات Albumentations مخصصة لزيادة البيانات المتقدمة (واجهة Python فقط). ويقبل قائمة من كائنات التحويل لتلبية احتياجات زيادة البيانات المتخصصة.

اضبط هذه الإعدادات لتلبية متطلبات مجموعة البيانات والمهمة. ويمكن أن يساعد تجريب قيم مختلفة في العثور على استراتيجية زيادة البيانات المثلى لتحقيق أفضل أداء للنموذج.

دليل زيادة البيانات

إعدادات التسجيل ونقاط التحقق والرسم البياني#

يُعد التسجيل ونقاط التحقق والرسم البياني وإدارة الملفات أمورًا مهمة عند تدريب نموذج YOLO:

  • التسجيل: تتبّع تقدم النموذج وشخّص المشكلات باستخدام مكتبات مثل TensorBoard أو بالكتابة إلى ملف.
  • نقاط التحقق: احفظ النموذج على فترات منتظمة لاستئناف التدريب أو تجربة إعدادات مختلفة.
  • الرسم البياني: صوّر الأداء وتقدم التدريب باستخدام مكتبات مثل Matplotlib أو TensorBoard.
  • إدارة الملفات: نظّم الملفات المُنشأة أثناء التدريب، مثل نقاط التحقق وملفات السجل والرسوم البيانية، لتسهيل الوصول إليها وتحليلها.

تساعد الإدارة الفعالة لهذه الجوانب على تتبّع التقدم وتسهيل تصحيح الأخطاء والتحسين.

الوسيطةالافتراضيالوصف
projectNoneيحدد الدليل الجذر لحفظ عمليات تشغيل التدريب. إذا لم يُحدّد، فسيتم حفظ عمليات التشغيل ضمن runs/<task>. ويُحفظ كل تشغيل في دليل فرعي منفصل.
nameNoneيحدد اسم التجربة. إذا لم يُحدّد، يستخدم YOLO اسم الوضع ويزيده لكل تشغيل (مثل train وtrain-2) لتجنب الكتابة فوق البيانات الموجودة.
exist_okFalseيحدد ما إذا كان سيتم الكتابة فوق دليل تجربة موجود. يتيح True الكتابة فوقه، بينما يمنع False ذلك.
plotsTrueيتحكم في إنشاء مخططات التدريب والتحقق وحفظها. اضبطه على True لإنشاء مخططات مثل منحنيات الخسارة ومنحنيات الدقة-الاسترجاع وتنبؤات العينات لتتبّع الأداء بصريًا.
saveTrueيُمكّن من حفظ نقاط تحقق التدريب وأوزان النموذج النهائية. اضبطه على True لحفظ حالات النموذج دوريًا، مما يتيح استئناف التدريب أو نشر النموذج.

ملف إعدادات مخصص#

حمّل ملف YAML محفوظًا لإعادة استخدام مجموعة كاملة من الوسائط دون تمريرها ضمن السطر. تتجاوز الوسيطة cfg القيم الواردة من default.yaml، بينما تظل للوسائط الإضافية الممررة معها الأولوية.

الوسيطةالافتراضيالوصف
cfgNoneمسار ملف YAML الذي تستبدل قيمه إدخالات default.yaml. راجع تجاوز ملف الإعدادات الافتراضي للاطلاع على مثال عملي باستخدام CLI.

الأسئلة الشائعة#

  • حسّن الأداء من خلال ضبط المعلمات الفائقة مثل حجم الدفعة ومعدل التعلم والزخم وتضاؤل الأوزان. اضبط إعدادات زيادة البيانات، واختر المحسّن المناسب، واستخدم تقنيات مثل الإيقاف المبكر أو الدقة المختلطة. لمزيد من التفاصيل، راجع دليل التدريب.

  • تشمل المعلمات الفائقة الرئيسية التي تؤثر في الدقة ما يلي:

    • حجم الدفعة (batch): يمكن للأحجام الأكبر أن تجعل التدريب أكثر استقرارًا، لكنها تحتاج إلى ذاكرة أكبر.
    • معدل التعلم (lr0): توفر المعدلات الأصغر تعديلات دقيقة، لكنها تؤدي إلى تقارب أبطأ.
    • الزخم (momentum): يسرّع متجهات التدرج ويخفف التذبذبات.
    • حجم الصورة (imgsz): تحسّن الأحجام الأكبر الدقة، لكنها تزيد العبء الحسابي.

    اضبط هذه القيم استنادًا إلى مجموعة البيانات والأجهزة لديك. تعرّف على المزيد في إعدادات التدريب.

  • يُعد معدل التعلم (lr0) بالغ الأهمية؛ ابدأ بالقيمة 0.01 من أجل SGD أو بالقيمة 0.001 من أجل محسّن Adam. راقب المقاييس واضبطها حسب الحاجة. استخدم مجدولات معدل التعلم الجيبية (cos_lr) أو الإحماء (warmup_epochs وwarmup_momentum). ترد التفاصيل في دليل التدريب.

  • تشمل الإعدادات الافتراضية ما يلي:

    • عتبة الثقة (conf=0.25): الحد الأدنى للثقة اللازمة للكشف.
    • عتبة IoU (iou=0.7): مخصصة لـقمع غير الأعظمي (NMS).
    • حجم الصورة (imgsz=640): يغيّر حجم الصور المُدخلة.
    • الجهاز (device=None): يحدد CPU أو GPU أو Apple MPS أو Huawei Ascend NPU (npu).

    للاطلاع على نظرة عامة كاملة، راجع إعدادات التنبؤ ودليل التنبؤ.

  • يقلل التدريب باستخدام الدقة المختلطة (amp=True) استخدام الذاكرة ويسرّع التدريب بالاستعانة بـ FP16 وFP32. ويفيد ذلك وحدات GPU الحديثة، إذ يتيح استخدام نماذج أكبر وإجراء حسابات أسرع دون خسارة كبيرة في الدقة. تعرّف على المزيد في دليل التدريب.

التعليقات