Meet YOLO26: next-gen vision AI.

Link to this sectionضبط المعاملات الفائقة بكفاءة باستخدام Ray Tune و YOLO26#

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

Link to this sectionتسريع الضبط باستخدام Ultralytics YOLO26 و Ray Tune#

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

Link to this sectionRay Tune#

Ray Tune hyperparameter optimization workflow

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

Link to this sectionالتكامل مع Weights & Biases#

يتيح YOLO26 أيضاً التكامل الاختياري مع Weights & Biases لمراقبة عملية الضبط.

Link to this sectionالتثبيت#

لتثبيت الحزم المطلوبة، قم بتشغيل:

التثبيت
# Install and update Ultralytics and Ray Tune packages
pip install -U ultralytics "ray[tune]"

# Optionally install W&B for logging
pip install wandb

Link to this sectionالاستخدام#

الاستخدام
from ultralytics import YOLO

# Load a YOLO26n model
model = YOLO("yolo26n.pt")

# Start tuning hyperparameters for YOLO26n training on the COCO8 dataset
result_grid = model.tune(data="coco8.yaml", use_ray=True)

Link to this sectionمعاملات طريقة tune()#

توفر طريقة tune() في YOLO26 واجهة سهلة الاستخدام لضبط المعاملات الفائقة باستخدام Ray Tune. تقبل هذه الطريقة عدة معاملات تسمح لك بتخصيص عملية الضبط. فيما يلي شرح مفصل لكل معامل:

المعاملالنوعالوصفالقيمة الافتراضية
datastrملف تهيئة مجموعة البيانات (بتنسيق YAML) لتشغيل أداة الضبط عليه. يجب أن يحدد هذا الملف مسارات التدريب وبيانات التحقق، بالإضافة إلى إعدادات أخرى خاصة بمجموعة البيانات.
spacedict, optionalقاموس يحدد مساحة بحث المعاملات الفائقة لـ Ray Tune. يتوافق كل مفتاح مع اسم معامل فائق، وتحدد القيمة نطاق القيم المراد استكشافها أثناء الضبط. إذا لم يتم توفيرها، يستخدم YOLO26 مساحة بحث افتراضية تحتوي على معاملات فائقة متنوعة.
grace_periodint, optionalفترة السماح بالـ epochs لـ ASHA scheduler في Ray Tune. لن ينهي المجدول أي تجربة قبل هذا العدد من الـ epochs، مما يتيح للنموذج الحصول على حد أدنى من التدريب قبل اتخاذ قرار بشأن الإيقاف المبكر.10
gpu_per_trialint, optionalعدد وحدات معالجة الرسومات (GPUs) المخصصة لكل تجربة أثناء الضبط. يساعد هذا في إدارة استخدام GPU، خاصة في البيئات متعددة الـ GPU. إذا لم يتم توفيرها، ستستخدم أداة الضبط جميع وحدات GPU المتاحة.None
iterationsint, optionalالحد الأقصى لعدد التجارب التي سيتم تشغيلها أثناء الضبط. يساعد هذا المعامل في التحكم في إجمالي عدد مجموعات المعاملات الفائقة التي يتم اختبارها، مما يضمن عدم استمرار عملية الضبط إلى أجل غير مسمى.10
search_algstr or Searcher, optionalاستراتيجية بحث Ray Tune المراد استخدامها. يمكنك تمرير كائن بحث Ray مباشرة، أو استخدام سلسلة نصية مدعومة مثل optuna أو hyperopt أو bayesopt أو bohb أو hebo أو nevergrad أو zoopt أو ax أو random. تستخدم أدوات البحث القائمة على السلاسل النصية تلقائياً مقياس المهمة الافتراضي و mode="max". إذا لم يتم توفيرها، تعود Ray Tune إلى استراتيجية البحث العشوائي الافتراضية الخاصة بها، BasicVariantGenerator.None
**train_argsdict, optionalمعاملات إضافية لتمريرها إلى طريقة train() أثناء الضبط. يمكن أن تتضمن هذه المعاملات إعدادات مثل عدد دورات التدريب (epochs)، وحجم الدفعة، وتكوينات أخرى خاصة بالتدريب.{}

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

Link to this sectionوصف مساحة البحث الافتراضية#

يسرد الجدول التالي معاملات مساحة البحث الافتراضية لضبط المعاملات الفائقة في YOLO26 باستخدام Ray Tune. لكل معامل نطاق قيم محدد معرف بواسطة tune.uniform().

المعاملالنطاقالوصف
lr0tune.uniform(1e-5, 1e-2)معدل التعلم الأولي الذي يتحكم في حجم الخطوة أثناء التحسين. القيم الأعلى تسرع التدريب ولكنها قد تسبب عدم استقرار.
lrftune.uniform(0.01, 1.0)عامل معدل التعلم النهائي الذي يحدد مقدار انخفاض معدل التعلم بحلول نهاية التدريب.
momentumtune.uniform(0.7, 0.98)عامل الزخم (Momentum) للمحسّن الذي يساعد في تسريع التدريب وتجاوز النقاط الصغرى المحلية.
weight_decaytune.uniform(0.0, 0.001)معامل التنظيم الذي يمنع فرط التخصيص (overfitting) عن طريق معاقبة قيم الأوزان الكبيرة.
warmup_epochstune.uniform(0.0, 5.0)عدد الـ epochs مع معدل تعلم متزايد تدريجياً لتحقيق استقرار التدريب المبكر.
warmup_momentumtune.uniform(0.0, 0.95)قيمة الزخم الأولية التي تزداد تدريجياً خلال فترة الإحماء (warmup).
boxtune.uniform(1.0, 20.0)وزن مكون خسارة مربع الإحاطة (bounding box loss)، مما يوازن دقة التحديد في النموذج.
clstune.uniform(0.1, 4.0)وزن مكون خسارة التصنيف، مما يوازن دقة التنبؤ بالفئة في النموذج.
dfltune.uniform(0.4, 12.0)وزن مكون خسارة التركيز التوزيعي (Distribution Focal Loss)، مع التأكيد على التحديد الدقيق لمربع الإحاطة.
hsv_htune.uniform(0.0, 0.1)نطاق زيادة التباين في تدرج اللون (Hue) الذي يقدم تنوعاً في الألوان لمساعدة النموذج على التعميم.
hsv_stune.uniform(0.0, 0.9)نطاق زيادة التباين في تشبع اللون (Saturation) الذي يغير كثافة الألوان لتحسين القوة.
hsv_vtune.uniform(0.0, 0.9)نطاق زيادة التباين في القيمة (السطوع) الذي يساعد النموذج على الأداء تحت ظروف إضاءة مختلفة.
degreestune.uniform(0.0, 45.0)نطاق زيادة التباين في الدوران بالدرجات، مما يحسن التعرف على الكائنات المستدارة.
translatetune.uniform(0.0, 0.9)نطاق زيادة التباين في الإزاحة (Translation) الذي ينقل الصور أفقياً ورأسياً.
scaletune.uniform(0.0, 0.95)نطاق زيادة التباين في التحجيم (Scaling) الذي يحاكي الكائنات على مسافات مختلفة.
sheartune.uniform(0.0, 10.0)نطاق زيادة التباين في القص بالدرجات، محاكياً تحولات المنظور.
perspectivetune.uniform(0.0, 0.001)نطاق زيادة التباين في المنظور الذي يحاكي تغيرات وجهة النظر ثلاثية الأبعاد.
flipudtune.uniform(0.0, 1.0)احتمالية زيادة التباين في القلب الرأسي، مما يزيد من تنوع مجموعة البيانات.
fliplrtune.uniform(0.0, 1.0)احتمالية زيادة التباين في القلب الأفقي، مفيدة للكائنات المتناظرة.
bgrtune.uniform(0.0, 1.0)احتمالية زيادة التباين في تبديل قنوات BGR، مما يساعد في ثبات الألوان.
mosaictune.uniform(0.0, 1.0)احتمالية زيادة التباين في الفسيفساء التي تجمع بين أربع صور في عينة تدريب واحدة.
mixuptune.uniform(0.0, 1.0)احتمالية زيادة التباين في Mixup التي تدمج صورتين وملصقاتهما معاً.
cutmixtune.uniform(0.0, 1.0)احتمالية زيادة التباين في Cutmix التي تجمع بين مناطق الصور مع الحفاظ على السمات المحلية.
copy_pastetune.uniform(0.0, 1.0)احتمالية زيادة التباين في النسخ واللصق التي تنقل الكائنات بين الصور لزيادة تنوع الحالات.
close_mosaictune.randint(0, 11)يعطل الفسيفساء في الـ N الأخيرة من الـ epochs لتحقيق استقرار التدريب قبل الاكتمال.

Link to this sectionمثال على مساحة بحث مخصصة#

في هذا المثال، نوضح كيفية استخدام مساحة بحث مخصصة لضبط المعاملات الفائقة باستخدام Ray Tune و YOLO26. من خلال توفير مساحة بحث مخصصة، يمكنك تركيز عملية الضبط على معاملات فائقة محددة ذات أهمية.

الاستخدام
from ray import tune

from ultralytics import YOLO

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

# Run Ray Tune on the model
result_grid = model.tune(
    data="coco8.yaml",
    space={"lr0": tune.uniform(1e-5, 1e-2)},
    epochs=50,
    use_ray=True,
)

في مقتطف الشفرة البرمجية أعلاه، نقوم بإنشاء نموذج YOLO باستخدام أوزان "yolo26n.pt" المدربة مسبقاً. بعد ذلك، نستدعي طريقة tune()، مع تحديد تهيئة مجموعة البيانات باستخدام "coco8.yaml". نوفر مساحة بحث مخصصة لمعدل التعلم الأولي lr0 باستخدام قاموس يحتوي على المفتاح "lr0" والقيمة tune.uniform(1e-5, 1e-2). أخيراً، نمرر معاملات تدريب إضافية، مثل عدد الـ epochs مباشرة إلى طريقة الضبط كـ epochs=50.

Link to this sectionمثال على خوارزمية البحث#

يمكنك تحديد استراتيجية بحث Ray Tune بالاسم. بالنسبة لخوارزميات البحث القائمة على السلاسل النصية، سيستخدم Ultralytics تلقائياً مقياس التحسين الافتراضي للمهمة الحالية و mode="max". إذا لم يتم توفير search_alg، تستخدم Ray Tune استراتيجية البحث العشوائي الافتراضية الخاصة بها، BasicVariantGenerator.

استخدام سلسلة نصية `search_alg` مع `model.tune()`
from ultralytics import YOLO

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

result_grid = model.tune(
    data="coco8.yaml",
    epochs=50,
    search_alg="optuna",
    use_ray=True,
)

إذا كنت بحاجة إلى تخصيص أداة أخذ العينات (sampler) الخاصة بـ searcher أو تجاوز المقياس ووضع التحسين الخاص بها، فقم بتمرير كائن searcher الخاص بـ Ray Tune الذي تم إنشاؤه بدلاً من سلسلة نصية.

استخدام كائن `OptunaSearch` مع `model.tune()`
from ray.tune.search.optuna import OptunaSearch

from ultralytics import YOLO

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

# Define a searcher
searcher = OptunaSearch(
    metric="metrics/mAP50-95(B)",
    mode="max",
)

result_grid = model.tune(
    data="coco8.yaml",
    epochs=50,
    search_alg=searcher,
    use_ray=True,
)

Link to this sectionاستئناف جلسة ضبط المعاملات الفائقة التي تمت مقاطعتها باستخدام Ray Tune#

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

استخدام `resume=True` مع `model.tune()`
from ultralytics import YOLO

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

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

# Resume Ray Tune run with name 'tune_exp_2'
results = model.tune(use_ray=True, data="coco8.yaml", epochs=50, name="tune_exp_2", resume=True)

Link to this sectionمعالجة نتائج Ray Tune#

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

Link to this sectionتحميل نتائج تجربة الضبط من دليل#

بعد تشغيل تجربة الضبط باستخدام tuner.fit()، يمكنك تحميل النتائج من دليل محدد. هذا مفيد بشكل خاص إذا كنت تجري التحليل بعد انتهاء برنامج التدريب الأولي.

experiment_path = f"{storage_path}/{exp_name}"
print(f"Loading results from {experiment_path}...")

restored_tuner = tune.Tuner.restore(experiment_path, trainable=train_mnist)
result_grid = restored_tuner.get_results()

Link to this sectionالتحليل الأساسي على مستوى التجربة#

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

if result_grid.errors:
    print("One or more trials failed!")
else:
    print("No errors!")

Link to this sectionالتحليل الأساسي على مستوى المحاولة#

الوصول إلى تكوينات المعلمات الفائقة للمحاولات الفردية وآخر المقاييس المبلغ عنها.

for i, result in enumerate(result_grid):
    print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")

Link to this sectionرسم التاريخ الكامل للمقاييس المبلغ عنها لمحاولة ما#

يمكنك رسم تاريخ المقاييس المبلغ عنها لكل محاولة لمعرفة كيفية تطور المقاييس بمرور الوقت.

import matplotlib.pyplot as plt

for i, result in enumerate(result_grid):
    plt.plot(
        result.metrics_dataframe["training_iteration"],
        result.metrics_dataframe["mean_accuracy"],
        label=f"Trial {i}",
    )

plt.xlabel("Training Iterations")
plt.ylabel("Mean Accuracy")
plt.legend()
plt.show()

Link to this sectionملخص#

في هذا الدليل، قمنا بتغطية سير العمل الشائع لتحليل نتائج التجارب التي تم تشغيلها باستخدام Ray Tune مع Ultralytics. تشمل الخطوات الرئيسية تحميل نتائج التجربة من دليل، وإجراء تحليل أساسي على مستوى التجربة ومستوى المحاولة، ورسم المقاييس بيانياً.

استكشف المزيد من خلال الاطلاع على صفحة وثائق Analyze Results الخاصة بـ Ray Tune لتحقيق أقصى استفادة من تجارب ضبط المعلمات الفائقة الخاصة بك.

Link to this sectionالأسئلة الشائعة#

Link to this sectionكيف يمكنني ضبط المعلمات الفائقة لنموذج YOLO26 الخاص بي باستخدام Ray Tune؟#

لضبط المعلمات الفائقة لنموذج Ultralytics YOLO26 الخاص بك باستخدام Ray Tune، اتبع الخطوات التالية:

  1. تثبيت الحزم المطلوبة:

    pip install -U ultralytics "ray[tune]"
    pip install wandb # optional for logging
  2. تحميل نموذج YOLO26 الخاص بك وبدء الضبط:

    from ultralytics import YOLO
    
    # Load a YOLO26 model
    model = YOLO("yolo26n.pt")
    
    # Start tuning with the COCO8 dataset
    result_grid = model.tune(data="coco8.yaml", use_ray=True)

يستفيد هذا من استراتيجيات البحث المتقدمة والتوازي في Ray Tune لتحسين المعلمات الفائقة لنموذجك بكفاءة. لمزيد من المعلومات، راجع وثائق Ray Tune.

Link to this sectionما هي المعلمات الفائقة الافتراضية لضبط YOLO26 باستخدام Ray Tune؟#

يستخدم Ultralytics YOLO26 المعلمات الفائقة الافتراضية التالية للضبط باستخدام Ray Tune:

المعاملنطاق القيمةالوصف
lr0tune.uniform(1e-5, 1e-2)معدل التعلم الأولي
lrftune.uniform(0.01, 1.0)عامل معدل التعلم النهائي
momentumtune.uniform(0.7, 0.98)الزخم (Momentum)
weight_decaytune.uniform(0.0, 0.001)تضاؤل الوزن (Weight decay)
warmup_epochstune.uniform(0.0, 5.0)فترات الإحماء (Warmup epochs)
boxtune.uniform(1.0, 20.0)وزن فقدان الصندوق (Box loss weight)
clstune.uniform(0.1, 4.0)وزن فقدان الفئة (Class loss weight)
dfltune.uniform(0.4, 12.0)وزن فقدان DFL (DFL loss weight)
hsv_htune.uniform(0.0, 0.1)نطاق تعزيز تدرج اللون (Hue augmentation range)
translatetune.uniform(0.0, 0.9)نطاق تعزيز الترجمة (Translation augmentation range)

يمكن تخصيص هذه المعلمات الفائقة لتناسب احتياجاتك الخاصة. للحصول على قائمة كاملة والمزيد من التفاصيل، راجع دليل Hyperparameter Tuning.

Link to this sectionكيف يمكنني دمج Weights & Biases مع ضبط نموذج YOLO26 الخاص بي؟#

لدمج Weights & Biases (W&B) مع عملية ضبط Ultralytics YOLO26 الخاصة بك:

  1. تثبيت W&B:

    pip install wandb
  2. تعديل نص الضبط البرمجي الخاص بك:

    import wandb
    
    from ultralytics import YOLO
    
    wandb.init(project="YOLO-Tuning", entity="your-entity")
    
    # Load YOLO model
    model = YOLO("yolo26n.pt")
    
    # Tune hyperparameters
    result_grid = model.tune(data="coco8.yaml", use_ray=True)

سيسمح لك هذا الإعداد بمراقبة عملية الضبط، وتتبع تكوينات المعلمات الفائقة، وتصور النتائج في W&B.

Link to this sectionلماذا يجب أن أستخدم Ray Tune لتحسين المعلمات الفائقة مع YOLO26؟#

يوفر Ray Tune العديد من المزايا لتحسين المعلمات الفائقة:

  • استراتيجيات البحث المتقدمة: يستخدم خوارزميات مثل Bayesian Optimization و HyperOpt للبحث الفعال عن المعلمات.
  • التوازي: يدعم التنفيذ المتوازي لمحاولات متعددة، مما يسرع عملية الضبط بشكل كبير.
  • الإيقاف المبكر: يوظف استراتيجيات مثل ASHA لإنهاء المحاولات ذات الأداء الضعيف مبكراً، مما يوفر الموارد الحسابية.

يتكامل Ray Tune بسلاسة مع Ultralytics YOLO26، مما يوفر واجهة سهلة الاستخدام لضبط المعلمات الفائقة بفعالية. للبدء، راجع دليل Hyperparameter Tuning.

Link to this sectionكيف يمكنني تحديد مساحة بحث مخصصة لضبط المعلمات الفائقة لـ YOLO26؟#

لتحديد مساحة بحث مخصصة لضبط المعلمات الفائقة لنموذج YOLO26 الخاص بك باستخدام Ray Tune:

from ray import tune

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
search_space = {"lr0": tune.uniform(1e-5, 1e-2), "momentum": tune.uniform(0.7, 0.98)}
result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)

يقوم هذا بتخصيص نطاق المعلمات الفائقة مثل معدل التعلم الأولي والزخم لاستكشافها أثناء عملية الضبط. للتكوينات المتقدمة، راجع قسم Custom Search Space Example.

التعليقات