Ultralytics YOLO27:
Get Started

التهيئة#

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



شاهد: إتقان Ultralytics YOLO: التهيئة

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

مثال
yolo TASK MODE ARGS

حيث:

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

المهام#

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

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

دليل المهام

الأوضاع#

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

  • التدريب: درّب نموذج YOLO على مجموعة بيانات مخصصة.
  • التحقق: تحقّق من صحة نموذج YOLO مدرَّب.
  • التنبؤ: استخدم نموذج YOLO مدرَّبًا لإجراء تنبؤات على صور أو مقاطع فيديو جديدة.
  • التصدير: صدّر نموذج YOLO لنشره.
  • التتبّع: تتبّع الأجسام في الوقت الفعلي باستخدام نموذج YOLO.
  • قياس الأداء: قِس سرعة ودقة النماذج المصدّرة من 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 هذه الميزة. وهي مفيدة لحفظ نماذج وسيطة أثناء جلسات التدريب الطويلة.
cachebool أو strFalseيتيح تخزين صور مجموعة البيانات مؤقتًا في الذاكرة (True/ram) أو على القرص (disk)، أو تعطيل التخزين المؤقت (False). ويحسّن سرعة التدريب بتقليل عمليات الإدخال/الإخراج على القرص، مقابل زيادة استخدام الذاكرة.
deviceint أو str أو listNoneيحدّد جهازًا أو أكثر للحوسبة أثناء التدريب: GPU واحد (device=0)، أو عدة وحدات GPU (device=[0,1])، أو CPU (device=cpu)، أو MPS لأجهزة Apple silicon (device=mps)، أو NPU من Huawei Ascend (device=npu:0 أو device=npu:0,1)، أو Intel XPU (device=xpu:0)، أو الاختيار التلقائي لوحدة 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). يُتجاهل مع الإعداد الافتراضي optimizer='auto'؛ لذا حدّد محسِّنًا صراحةً لاستخدامه.
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 صراحةً. ويظل التدريب على CPU أو MPS دائمًا بتنسيق NCHW (يُتجاهل True مع إظهار تحذير).
max_detint300الحد الأقصى لعدد عمليات الكشف لكل صورة أثناء التحقق من التدريب. بالنسبة إلى الكشف والتجزئة والوضعيات وOBB، يرتفع الحد الافتراضي البالغ 300 إلى أكبر عدد من الكائنات الموسومة في التدريب/التحقق، وذلك فقط عندما يتجاوز هذا العدد 300. وتظل القيم الأخرى ثابتة؛ ويؤدي تجاوز الحد إلى ظهور تحذير.
ملاحظة حول إعدادات حجم الدفعة

توفّر الوسيطة batch ثلاثة خيارات للتهيئة:

  • حجم دفعة ثابت: حدّد عدد الصور في الدفعة باستخدام عدد صحيح (مثل batch=16).
  • الوضع التلقائي (60% من ذاكرة GPU): استخدم batch=-1 لضبط الاستخدام تلقائيًا إلى نحو 60% من ذاكرة CUDA.
  • الوضع التلقائي مع تحديد نسبة الاستخدام: عيّن نسبة (مثل 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 محددة أو NPU من Huawei Ascend أو أجهزة حوسبة أخرى لتنفيذ النموذج.
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يحدد الحد الأدنى لعتبة الثقة للاكتشافات. تزيد القيم الأقل من الاستدعاء، لكنها قد تؤدي إلى مزيد من الإيجابيات الكاذبة. تستخدم منحنيات الدقة والاستدعاء وmAP ومصفوفات الالتباس للاكتشاف هذه القيمة؛ وتؤدي قيمة conf أعلى، مثل 0.25، إلى مصفوفة أقرب إلى مخرجات التنبؤ، لكنها قد تخفض mAP. وتستخدم قيمتا الدقة والاستدعاء الموجزتان قيمة الثقة المقابلة لأقصى 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يفعّل كبت غير الأعظمية غير المرتبط بالفئة، فيكبت الصناديق المتداخلة ذات الدرجات الأقل بصرف النظر عن الفئة المتنبأ بها. يفيد ذلك في التطبيقات التي تركز على المثيلات. في الاستدلال الخالي من 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')، أو جهاز AMD Xilinx Versal AI Edge Series Gen 2 (القيمة الافتراضية هي 've2-xc2ve3858'، وهي مجموعة التقييم VEK385). يختلف هذا عن زوج تسمية التشغيل project/name المستخدم في الأوضاع الأخرى.
imgszint أو tuple640حجم الصورة المطلوب لمدخل النموذج. يمكن أن يكون عددًا صحيحًا للصور المربعة (مثل 640 لصورة بقياس 640×640)، أو صفًا (height, width) لأبعاد محددة. إذا لم يُمرر هذا الخيار، يعيد التصدير استخدام حجم التدريب المسجل في نقطة التحقق المحمّلة: تسجل نقاط التحقق الرسمية لـYOLO26 القيمة 768 لمهمة العمق، و224 للتصنيف، و1024 لمهمة OBB، و640 للمهام الأخرى؛ أما النموذج الدقيق فيسجل قيمة imgsz التي دُرّب عليها. ولا يسجل النموذج المبني من ملف YAML حجم تدريب، لذا يستخدم 640.
optimizeboolFalseيفعّل تحسينًا أعلى للمترجم البرمجي في DEEPX، ما يقلل زمن استجابة الاستدلال مع زيادة وقت الترجمة.
quantizeint أو strNoneدقة التكميم: 16 (FP16، يقلّل حجم النموذج وقد يسرّع الاستدلال على الأجهزة المدعومة) أو 8 (INT8/PTQ، يضغط النموذج أكثر مع انخفاض طفيف في الدقة، ويُستخدم أساسًا في الأجهزة الطرفية؛ ويتطلب معايرة data/fraction)؛ أما 32/غير المحدد فيعني FP32. تُصدَّر نقطة التحقق المدرَّبة باستخدام quantize=8 دائمًا بدقة INT8: ويعتمد التصدير عبر onnx وengine على النطاقات التي تتضمنها نقطة التحقق، دون معايرة، وتُرفض التنسيقات أو درجات الدقة الأخرى. 'w8a8' و'w16a16' اسمان بديلان لـ8 و16؛ ولا تُقبل دقتا المزج 'w8a16' (أوزان INT8 مع تنشيطات 16 بت: CoreML، LiteRT، QNN) و'w8a32' (INT8 ديناميكي: LiteRT) إلا في التنسيقات المحددة لكل منهما. ويحلّ هذا الخيار محلّ العَلَمَين المتقادمين half/int8 (half=True → 16، int8=True → 8، ولا يزال العَلَمان مقبولين مع تحذير من إهمالهما). لا يُسمح إلا بدرجات الدقة التي يدعمها التنسيق المستهدف (انظر أدناه).
dynamicboolFalseيتيح أحجام مدخلات ديناميكية لتصديرات TorchScript وONNX وOpenVINO وTensorRT وCoreML وMNN، ما يعزز المرونة في التعامل مع أبعاد الصور المتفاوتة.
simplifyboolTrueيبسّط الرسم البياني الوسيط لـONNX باستخدام onnxslim في عمليات التصدير التي تنشئ رسمًا بيانيًا كهذا (راجع تنسيقات التصدير)، ما قد يحسن الأداء والتوافق مع محركات الاستدلال.
opsetintNoneيحدد إصدار ONNX opset لعمليات التصدير التي تنشئ رسمًا بيانيًا لـONNX (راجع تنسيقات التصدير)، لضمان التوافق مع محللات وبيئات تشغيل ONNX المختلفة. إذا لم يُضبط، فسيُستخدم أحدث إصدار مدعوم.
workspacefloat أو NoneNoneيحدد الحد الأقصى لحجم مساحة العمل بالغيغابايت لتحسينات TensorRT، مع الموازنة بين استخدام الذاكرة والأداء. استخدم None لتخصيص الذاكرة تلقائيًا بواسطة TensorRT حتى الحد الأقصى للجهاز.
nmsbool، اختياريNoneيصدّر None تنبؤات خامًا من واحد إلى متعدد لإجراء NMS خارجيًا؛ ويضمّن True NMS حيثما كان مدعومًا؛ بينما يختار False الرأس الخالي من NMS عند توفره. يدعم NMS المضمّن في CoreML مهام detect وsegment وpose بأشكال ثابتة. راجع دليل الاكتشاف الشامل.
conffloatNoneعتبة الثقة المستخدمة عند إنشاء NMS وقت التصدير: تصديرات nms=True، وتصديرات detect غير الشاملة من Hailo، وتصديرات detect وpose وsegment من IMX، التي تفرض داخليًا nms=True. القيمة الافتراضية هي 0.25 إذا لم تُضبط.
ioufloat0.7عتبة IoU المستخدمة عند إنشاء NMS وقت التصدير: تصديرات nms=True، وتصديرات detect غير الشاملة من Hailo، وتصديرات detect وpose وsegment من IMX، التي تفرض داخليًا nms=True.
max_detint300الحد الأقصى لعدد الاكتشافات المحتفظ بها في مخرجات النموذج المصدّر. ينطبق على تصديرات nms=True في جميع التنسيقات باستثناء اكتشاف CoreML، إذ لا يتضمن مسار NMS الأصلي فيه حدًا أقصى للاكتشافات؛ وينطبق أيضًا على تصديرات الاكتشاف الشامل الخالية من NMS (YOLO26 وYOLOv10، مع تحديد الحد بعدد المراسي المتاحة) وتصديرات detect وpose وsegment من IMX.
agnostic_nmsboolFalseيفعّل NMS غير المرتبط بالفئة في كل موضع يُنشأ فيه NMS وقت التصدير عبر المسار القياسي nms=True، بما في ذلك مرحلة NMS الخاصة بـCoreML، فيكبت الصناديق المتداخلة ذات الدرجات الأقل عبر الفئات المختلفة بدلًا من الاقتصار على الفئة نفسها. لا ينطبق هذا الخيار على إعدادات NMS التي ينشئها Hailo أو IMX، إذ لا تتضمن خيارًا لعدم الارتباط بالفئة وتظل تراعي الفئات بصرف النظر عن هذا العلم. كما يُضمّن هذا الخيار في التصديرات الشاملة الخالية من NMS (YOLO26 وYOLOv10)، حيث لا يفعل سوى منع ظهور الاكتشاف نفسه تحت تسميات فئات متعددة (التكرارات ذات IoU=1.0)، ولا يجري كبتًا قائمًا على عتبة IoU بين الصناديق المختلفة.
batchint1يحدد حجم دفعة الاستدلال لتصدير النموذج، أو الحد الأقصى لعدد الصور التي يعالجها النموذج المُصدّر بالتزامن في وضع predict. تصدّر الصيغ التي لا تتضمن batch ضمن وسيطات التصدير دفعة بحجم 1 (Edge TPU وIMX500 وDEEPX وHailo وAMD Xilinx)، وترفض القيم الأخرى.
devicestrNoneيحدد الجهاز المستخدم للتصدير: GPU (device=0)، أو CPU (device=cpu)، أو MPS لأجهزة Apple silicon (device=mps)، أو NPU من Huawei Ascend (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عتبة زاوية وضعية «الأعلى».
kptslist[int][6, 8, 10]قائمة بثلاثة فهارس للنقاط المفتاحية تُستخدم لمراقبة التمارين. وتتوافق هذه النقاط المفتاحية مع مفاصل الجسم أو أجزائه، مثل الكتفين والمرفقين والمعصمين، في تمارين مثل الضغط والعقلة والقرفصاء وتمارين البطن.
down_anglefloat90.0عتبة زاوية وضعية «الأسفل».
blur_ratiofloat0.5يضبط نسبة شدة التمويه، ضمن النطاق 0.1 - 1.0.
crop_dirstr'cropped-detections'اسم الدليل الذي تُحفظ فيه الاكتشافات المقصوصة.
recordsint5إجمالي عدد الاكتشافات اللازم لإطلاق رسالة بريد إلكتروني مع نظام إنذار أمني.
vision_pointtuple[int, int](20, 20)النقطة التي ستتتبع منها الرؤية الأجسام وترسم المسارات باستخدام حل VisionEye.
sourcestrNoneمسار مصدر الإدخال (فيديو، RTSP، وما إلى ذلك). لا يمكن استخدامه إلا مع واجهة سطر الأوامر (CLI) الخاصة بـ Solutions.
figsizetuple[float, float](12.8, 7.2)حجم الشكل بالبوصة لمخططات Analytics؛ يعرض (12.8, 7.2) إطارًا بدقة 1280×720.
fpsfloat30.0عدد الإطارات في الثانية المستخدم لحساب السرعة.
max_histint5الحد الأقصى لعدد النقاط التاريخية التي تُتتبع لكل جسم لحساب السرعة والاتجاه.
meter_per_pixelfloat0.05عامل القياس المستخدم لتحويل المسافة بالبكسل إلى وحدات العالم الحقيقي.
max_speedint120السرعة القصوى بالكيلومتر في الساعة؛ تُحدّ السرعات المقدّرة الأعلى بهذه القيمة.
datastr'images'مسار دليل الصور المستخدم للبحث عن الصور المتشابهة.
imgszint640حجم صورة الإدخال لاستدلال النموذج.

دليل Solutions

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

تُعد تقنيات زيادة البيانات ضرورية لتحسين متانة نموذج 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, semantic, pose, obb0.0 - 1.0يدمج أجزاءً من صورتين، منشئًا مزجًا جزئيًا مع الحفاظ على مناطق متميزة. ويعزز متانة النموذج عبر إنشاء حالات حجب.
copy_pastefloat0segment, semantic, obb0.0 - 1.0نسبة الأجسام المؤهلة التي تُلصق؛ يعكسها flip داخل الصورة، بينما يستخدم mixup القيمة أيضًا احتمالًا للتطبيق عبر الصور.
copy_paste_modestrflipsegment, semantic, 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، وحدد optimizer صراحةً لأن القيمة الافتراضية auto تتجاهل lr0. راقب المقاييس وعدّلها حسب الحاجة. استخدم مجدولات معدل التعلم الجيبية (cos_lr) أو الإحماء (warmup_epochs وwarmup_momentum). تجد التفاصيل في دليل التدريب.

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

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

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

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

التعليقات