تخطي إلى المحتوى

دليل Ultralytics YOLO لضبط المعلمات الفائقة

مقدمة

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



شاهد: كيفية ضبط المعلمات الفائقة لتحسين أداء النموذج 🚀

ما هي المعلمات الفائقة؟

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

  • معدل التعلم lr0: يحدد حجم الخطوة في كل تكرار أثناء التحرك نحو الحد الأدنى في دالة الخسارة (loss function).
  • حجم الدفعة batch: عدد الصور التي تتم معالجتها في وقت واحد في تمريرة أمامية.
  • عدد الحقب epochs: الحقبة هي عبارة عن تمريرة كاملة للأمام والخلف لجميع أمثلة التدريب.
  • تفاصيل معمارية محددة: مثل عدد القنوات وعدد الطبقات وأنواع وظائف التنشيط وما إلى ذلك.

تصور ضبط المعلمات الفائقة

للحصول على قائمة كاملة بمعلمات التضخيم الفائقة المستخدمة في YOLO11، يرجى الرجوع إلى صفحة التكوينات.

التطور الطفري الجيني

تستخدم Ultralytics YOLO الخوارزميات الجينية لتحسين المعلمات الفائقة. الخوارزميات الجينية مستوحاة من آلية الانتقاء الطبيعي وعلم الوراثة.

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

التحضير لضبط المعلمات الفائقة

قبل أن تبدأ عملية الضبط، من المهم:

  1. تحديد المقاييس: حدد المقاييس التي ستستخدمها لتقييم أداء النموذج. يمكن أن يكون AP50 أو F1-score أو غيرها.
  2. تحديد ميزانية الضبط: حدد مقدار موارد الحوسبة التي ترغب في تخصيصها. يمكن أن يكون ضبط المعلمات الفائقة مكلفًا من الناحية الحسابية.

الخطوات المتضمنة

تهيئة المعلمات الفائقة

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

تغيير المعلمات الفائقة

استخدم _mutate الأسلوب لإنتاج مجموعة جديدة من المعلمات الفائقة بناءً على المجموعة الحالية. إن فئة الموالف يتعامل مع هذه العملية تلقائيًا.

تدريب النموذج

يتم إجراء التدريب باستخدام المجموعة المتغيرة من المعلمات الفائقة. ثم يتم تقييم أداء التدريب باستخدام المقاييس التي تختارها.

تقييم النموذج

استخدم مقاييس مثل AP50 أو F1-score أو المقاييس المخصصة لتقييم أداء النموذج. تساعد عملية التقييم evaluation process في تحديد ما إذا كانت المعلمات الفائقة الحالية أفضل من المعلمات السابقة.

تسجيل النتائج

من الضروري تسجيل كل من مقاييس الأداء والمعلمات الفائقة المقابلة للرجوع إليها في المستقبل. يقوم Ultralytics YOLO تلقائيًا بحفظ هذه النتائج بتنسيق CSV.

تكرار

تتكرر العملية حتى يتم الوصول إلى العدد المحدد من التكرارات أو يصبح مقياس الأداء مرضيًا. تعتمد كل تكرار على المعرفة المكتسبة من التشغيلات السابقة.

وصف مساحة البحث الافتراضية

يسرد الجدول التالي معلمات مساحة البحث الافتراضية لضبط المعلمات الفائقة في YOLO11. لكل معلمة نطاق قيمة محدد بواسطة tuple (min, max).

المعلمة النوع نطاق القيمة الوصف
lr0 float (1e-5, 1e-1) معدل التعلم الأولي في بداية التدريب. القيم الأقل توفر تدريبًا أكثر استقرارًا ولكن تقاربًا أبطأ.
lrf float (0.01, 1.0) معامل معدل التعلم النهائي كجزء من lr0. يتحكم في مقدار انخفاض معدل التعلم أثناء التدريب
momentum float (0.6, 0.98) عامل زخم SGD. تساعد القيم الأعلى في الحفاظ على اتجاه تدرج ثابت ويمكن أن تسرع التقارب
weight_decay float (0.0, 0.001) معامل L2 regularization لمنع overfitting. القيم الأكبر تفرض regularization أقوى
warmup_epochs float (0.0, 5.0) عدد الحقب للإحماء الخطي لمعدل التعلم. يساعد على منع عدم استقرار التدريب المبكر
warmup_momentum float (0.0, 0.95) الزخم الأولي خلال مرحلة التسخين. يزداد تدريجيًا إلى قيمة الزخم النهائية.
box float (0.02, 0.2) وزن فقدان مربع الإحاطة في دالة الفقدان الكلية. يوازن بين انحدار المربع مقابل التصنيف
cls float (0.2, 4.0) وزن فقدان التصنيف في دالة الفقدان الكلية. تؤكد القيم الأعلى على التنبؤ الصحيح بالفئة
hsv_h float (0.0, 0.1) نطاق زيادة تدرج الألوان العشوائي في مساحة ألوان HSV. يساعد النموذج على التعميم عبر اختلافات الألوان
hsv_s float (0.0, 0.9) نطاق زيادة التشبع العشوائي في مساحة HSV. يحاكي ظروف الإضاءة المختلفة
hsv_v float (0.0, 0.9) نطاق زيادة القيمة (السطوع) العشوائي. يساعد النموذج على التعامل مع مستويات التعرض المختلفة
degrees float (0.0, 45.0) الحد الأقصى لزيادة التدوير بالدرجات. يساعد النموذج على أن يصبح ثابتًا بالنسبة لاتجاه الكائن
translate float (0.0, 0.9) الحد الأقصى لزيادة الإزاحة كجزء من حجم الصورة. يحسن المتانة لموضع الكائن
scale float (0.0, 0.9) نطاق زيادة التحجيم العشوائي. يساعد النموذج على اكتشاف الكائنات بأحجام مختلفة
shear float (0.0, 10.0) الحد الأقصى لزيادة القص بالدرجات. يضيف تشوهات شبيهة بالمنظور إلى صور التدريب
perspective float (0.0, 0.001) نطاق زيادة المنظور العشوائي. يحاكي زوايا رؤية مختلفة
flipud float (0.0, 1.0) احتمالية قلب الصورة عموديًا أثناء التدريب. مفيد للصور العلوية/الجوية.
fliplr float (0.0, 1.0) احتمالية قلب الصورة الأفقية. يساعد النموذج على أن يصبح ثابتًا تجاه اتجاه الكائن
mosaic float (0.0, 1.0) احتمالية استخدام زيادة بيانات الفسيفساء، والتي تجمع 4 صور. مفيد بشكل خاص للكشف عن الأجسام الصغيرة.
mixup float (0.0, 1.0) احتمالية استخدام زيادة بيانات المزج، والتي تدمج صورتين. يمكن أن يحسن من قوة النموذج.
copy_paste float (0.0, 1.0) احتمالية استخدام زيادة بيانات النسخ واللصق. يساعد على تحسين أداء تجزئة الكائنات.

مثال على مساحة بحث مخصصة

إليك كيفية تحديد نطاق البحث واستخدام model.tune() دالة (method) للاستفادة من Tuner فئة لضبط المعلمات الفائقة لـ YOLO11n على COCO8 لـ 30 حقبة باستخدام مُحسِّن AdamW وتخطي التخطيط والتحقق ونقاط التفتيش بخلاف الحقبة النهائية لتسريع عملية الضبط.

مثال

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolo11n.pt")

# Define search space
search_space = {
    "lr0": (1e-5, 1e-1),
    "degrees": (0.0, 45.0),
}

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(
    data="coco8.yaml",
    epochs=30,
    iterations=300,
    optimizer="AdamW",
    space=search_space,
    plots=False,
    save=False,
    val=False,
)

استئناف جلسة ضبط المعلمات الفائقة متوقفة

يمكنك استئناف جلسة ضبط المعلمات الفائقة المتقطعة عن طريق تمرير resume=True: يمكنك اختياريًا تمرير الدليل name يستخدم تحت runs/{task} للاستئناف. وإلا، فإنه سيستأنف الجلسة الأخيرة التي تمت مقاطعتها. تحتاج أيضًا إلى تقديم جميع حجج التدريب السابقة بما في ذلك data, epochs, iterations و space.

استخدام resume=True مع model.tune()

from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo11n.pt")

# Define search space
search_space = {
    "lr0": (1e-5, 1e-1),
    "degrees": (0.0, 45.0),
}

# Resume previous run
results = model.tune(data="coco8.yaml", epochs=50, iterations=300, space=search_space, resume=True)

# Resume tuning run with name 'tune_exp'
results = model.tune(data="coco8.yaml", epochs=50, iterations=300, space=search_space, name="tune_exp", resume=True)

النتائج

بعد إكمال عملية ضبط المعلمات الفائقة بنجاح، ستحصل على العديد من الملفات والأدلة التي تغلف نتائج الضبط. يصف ما يلي كل منها:

هيكل الملف

إليك الشكل الذي سيبدو عليه هيكل دليل النتائج. أدلة التدريب مثل train1/ تحتوي على تكرارات ضبط فردية، أي نموذج واحد تم تدريبه بمجموعة واحدة من المعلمات الفائقة. ال tune/ يحتوي الدليل على نتائج الضبط من جميع تدريبات النموذج الفردية:

runs/
└── detect/
    ├── train1/
    ├── train2/
    ├── ...
    └── tune/
        ├── best_hyperparameters.yaml
        ├── best_fitness.png
        ├── tune_results.csv
        ├── tune_scatter_plots.png
        └── weights/
            ├── last.pt
            └── best.pt

أوصاف الملفات

best_hyperparameters.yaml

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

  • تنسيق: YAML
  • الاستخدام: نتائج المعلمات الفائقة
  • مثال:

    # 558/900 iterations complete ✅ (45536.81s)
    # Results saved to /usr/src/ultralytics/runs/detect/tune
    # Best fitness=0.64297 observed at iteration 498
    # Best fitness metrics are {'metrics/precision(B)': 0.87247, 'metrics/recall(B)': 0.71387, 'metrics/mAP50(B)': 0.79106, 'metrics/mAP50-95(B)': 0.62651, 'val/box_loss': 2.79884, 'val/cls_loss': 2.72386, 'val/dfl_loss': 0.68503, 'fitness': 0.64297}
    # Best fitness model is /usr/src/ultralytics/runs/detect/train498
    # Best fitness hyperparameters are printed below.
    
    lr0: 0.00269
    lrf: 0.00288
    momentum: 0.73375
    weight_decay: 0.00015
    warmup_epochs: 1.22935
    warmup_momentum: 0.1525
    box: 18.27875
    cls: 1.32899
    dfl: 0.56016
    hsv_h: 0.01148
    hsv_s: 0.53554
    hsv_v: 0.13636
    degrees: 0.0
    translate: 0.12431
    scale: 0.07643
    shear: 0.0
    perspective: 0.0
    flipud: 0.0
    fliplr: 0.08631
    mosaic: 0.42551
    mixup: 0.0
    copy_paste: 0.0
    

best_fitness.png

هذه قطعة تعرض مدى اللياقة (عادةً مقياس أداء مثل AP50) مقابل عدد التكرارات. يساعدك على تصور مدى جودة أداء الخوارزمية الجينية بمرور الوقت.

  • تنسيق: PNG
  • الاستخدام: تصور الأداء

ملاءمة ضبط المعلمات الفائقة مقابل التكرار

tune_results.csv

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

  • تنسيق: CSV
  • الاستخدام: تتبع نتائج كل تكرار.
  • مثال:
      fitness,lr0,lrf,momentum,weight_decay,warmup_epochs,warmup_momentum,box,cls,dfl,hsv_h,hsv_s,hsv_v,degrees,translate,scale,shear,perspective,flipud,fliplr,mosaic,mixup,copy_paste
      0.05021,0.01,0.01,0.937,0.0005,3.0,0.8,7.5,0.5,1.5,0.015,0.7,0.4,0.0,0.1,0.5,0.0,0.0,0.0,0.5,1.0,0.0,0.0
      0.07217,0.01003,0.00967,0.93897,0.00049,2.79757,0.81075,7.5,0.50746,1.44826,0.01503,0.72948,0.40658,0.0,0.0987,0.4922,0.0,0.0,0.0,0.49729,1.0,0.0,0.0
      0.06584,0.01003,0.00855,0.91009,0.00073,3.42176,0.95,8.64301,0.54594,1.72261,0.01503,0.59179,0.40658,0.0,0.0987,0.46955,0.0,0.0,0.0,0.49729,0.80187,0.0,0.0
    

tune_scatter_plots.png

يحتوي هذا الملف على مخططات مبعثرة تم إنشاؤها من tune_results.csv، مما يساعدك على تصور العلاقات بين المعلمات الفائقة المختلفة ومقاييس الأداء. لاحظ أن المعلمات الفائقة التي تم تهيئتها إلى 0 لن يتم ضبطها، مثل. degrees و shear أدناه.

  • تنسيق: PNG
  • الاستخدام: تحليل البيانات الاستكشافي

مخططات مبعثرة لضبط المعلمات الفائقة

weights/

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

  • last.pt: last.pt هي الأوزان من الحقبة الأخيرة من التدريب.
  • best.pt: أوزان best.pt للتكرار الذي حقق أفضل درجة لياقة.

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

الخلاصة

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

مزيد من القراءة

  1. تحسين المعلمات الفائقة في ويكيبيديا
  2. دليل تطوير المعلمات الفائقة في YOLOv5
  3. ضبط المعلمات الفائقة بكفاءة باستخدام Ray Tune و YOLO11

للحصول على رؤى أعمق، يمكنك استكشاف Tuner الفئة شفرة المصدر والوثائق المصاحبة. إذا كانت لديك أي أسئلة أو طلبات ميزات أو كنت بحاجة إلى مزيد من المساعدة، فلا تتردد في التواصل معنا على GitHub أو Discord.

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

كيف يمكنني تحسين معدل التعلم لـ Ultralytics YOLO أثناء ضبط المعلمات الفائقة؟

لتحسين معدل التعلم لـ Ultralytics YOLO، ابدأ بتعيين معدل تعلم أولي باستخدام lr0 المعلمة. تتراوح القيم الشائعة من 0.001 إلى 0.01. خلال عملية ضبط المعلمات الفائقة، سيتم تغيير هذه القيمة للعثور على الإعداد الأمثل. يمكنك الاستفادة من model.tune() دالة (method) لأتمتة هذه العملية. على سبيل المثال:

مثال

from ultralytics import YOLO

# Initialize the YOLO model
model = YOLO("yolo11n.pt")

# Tune hyperparameters on COCO8 for 30 epochs
model.tune(data="coco8.yaml", epochs=30, iterations=300, optimizer="AdamW", plots=False, save=False, val=False)

لمزيد من التفاصيل، تحقق من صفحة تهيئة Ultralytics YOLO.

ما هي فوائد استخدام الخوارزميات الجينية لضبط المعلمات الفائقة في YOLO11؟

توفر الخوارزميات الجينية في Ultralytics YOLO11 طريقة قوية لاستكشاف فضاء المعلمات الفائقة، مما يؤدي إلى أداء نموذج مُحسَّن للغاية. تشمل المزايا الرئيسية:

  • بحث فعال: يمكن للخوارزميات الجينية مثل الطفرة أن تستكشف بسرعة مجموعة كبيرة من المعلمات الفائقة.
  • تجنب الحدود الدنيا المحلية: من خلال إدخال العشوائية، فإنها تساعد في تجنب الحدود الدنيا المحلية، مما يضمن تحسينًا عالميًا أفضل.
  • مقاييس الأداء: تتكيف بناءً على مقاييس الأداء مثل AP50 و F1-score.

لمعرفة كيف يمكن للخوارزميات الجينية تحسين المعلمات الفائقة، تحقق من دليل تطوير المعلمات الفائقة.

ما هي المدة التي تستغرقها عملية ضبط المعلمات الفائقة لـ Ultralytics YOLO؟

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

لإدارة وقت الضبط بفعالية، حدد ميزانية ضبط واضحة مسبقًا (رابط قسم داخلي). يساعد هذا في تحقيق التوازن بين تخصيص الموارد وأهداف التحسين.

ما هي المقاييس التي يجب أن أستخدمها لتقييم أداء النموذج أثناء ضبط المعلمات الفائقة في YOLO؟

عند تقييم أداء النموذج أثناء ضبط المعلمات الفائقة في YOLO، يمكنك استخدام العديد من المقاييس الرئيسية:

  • AP50: متوسط الدقة عند عتبة IoU البالغة 0.50.
  • F1-Score: المتوسط التوافقي للدقة والاسترجاع.
  • الدقة والاسترجاع: مقاييس فردية تشير إلى دقة النموذج في تحديد الإيجابيات الحقيقية مقابل الإيجابيات الخاطئة والسلبيات الخاطئة.

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

هل يمكنني استخدام Ray Tune لتحسين المعلمات الفائقة المتقدمة مع YOLO11؟

نعم، يتكامل Ultralytics YOLO11 مع Ray Tune لتحسين المعلمات الفائقة المتقدم. يوفر Ray Tune خوارزميات بحث متطورة مثل Bayesian Optimization و Hyperband، بالإضافة إلى إمكانات التنفيذ المتوازي لتسريع عملية الضبط.

لاستخدام Ray Tune مع YOLO11، ما عليك سوى تعيين use_ray=True في model.tune() استدعاء الأسلوب. لمزيد من التفاصيل والأمثلة، تحقق من دليل تكامل Ray Tune.



📅 أُنشئ منذ سنة واحدة ✏️ تم التحديث منذ 3 أشهر

تعليقات