YOLO Vision 2026:

تدريب النموذج باستخدام Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

مقدمة#

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



Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.

لماذا تختار Ultralytics YOLO للتدريب؟#

إليك بعض الأسباب المقنعة لاختيار وضع التدريب في YOLO26:

  • الكفاءة: حقق أقصى استفادة من أجهزتك، سواء كنت تستخدم وحدة معالجة رسومات (GPU) واحدة أو كنت توسع نطاق العمل عبر وحدات GPU متعددة.
  • تعدد الاستخدامات: تدرب على مجموعات بيانات مخصصة بالإضافة إلى المجموعات المتاحة بسهولة مثل COCO وVOC وImageNet.
  • سهولة الاستخدام: واجهات CLI و Python بسيطة وقوية لتجربة تدريب مباشرة.
  • مرونة المعاملات الفائقة: مجموعة واسعة من المعاملات الفائقة القابلة للتخصيص لتحسين أداء النموذج بدقة. للتحكم بشكل أعمق، يمكنك تخصيص المدرب نفسه.
  • التدريب السحابي: التدريب على وحدات معالجة الرسوميات السحابية من خلال منصة Ultralytics مع مقاييس في الوقت الفعلي وحفظ تلقائي لنقاط التفتيش.

الميزات الرئيسية لوضع التدريب#

فيما يلي بعض الميزات البارزة لوضع التدريب في YOLO26:

  • التنزيل التلقائي لمجموعات البيانات: يتم تنزيل تكوين مجموعات البيانات التي تحتوي على مصدر تنزيل تلقائياً عند الاستخدام الأول، على سبيل المثال، yolo train data=coco8.yaml. راجع نظرة عامة على مجموعات البيانات لمعرفة التنسيقات ومجموعات البيانات المدعومة.
  • دعم تعدد وحدات GPU: وسع نطاق جهود التدريب الخاصة بك بسلاسة عبر وحدات GPU متعددة لتسريع العملية.
  • تكوين المعاملات الفائقة: خيار تعديل المعاملات الفائقة من خلال ملفات تكوين YAML أو وسائط CLI.
  • التصور والمراقبة: تتبع فوري لمقاييس التدريب وتصور عملية التعلم للحصول على رؤى أفضل.

أمثلة الاستخدام#

تدريب YOLO26n على مجموعة البيانات COCO8 لمدة 100 عصر تدريب بحجم صورة 640. يمكن تحديد جهاز التدريب باستخدام الوسيطة device. إذا لم يتم تمرير أي وسيطة، سيتم استخدام وحدة معالجة الرسوميات device=0 عندما تكون متاحة؛ وإلا سيتم استخدام device='cpu'. راجع قسم الوسيطات أدناه للحصول على قائمة كاملة بوسيطات التدريب.

خطأ المعالجة المتعددة في Windows

على نظام Windows، قد تتلقى RuntimeError عند تشغيل التدريب كبرنامج نصي. أضف كتلة if __name__ == "__main__": قبل كود التدريب الخاص بك لحل هذه المشكلة.

مثال على التدريب باستخدام GPU واحدة و CPU

يتم تحديد الجهاز تلقائياً. إذا كانت وحدة GPU متاحة، فسيتم استخدامها (جهاز CUDA الافتراضي 0)؛ وإلا سيبدأ التدريب على CPU.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.yaml")  # build a new model from YAML
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

التدريب باستخدام وحدات GPU متعددة#

يتيح التدريب باستخدام وحدات GPU متعددة استغلالاً أكثر كفاءة لموارد الأجهزة المتاحة من خلال توزيع حمل التدريب عبر وحدات GPU متعددة. هذه الميزة متاحة من خلال كل من Python API وواجهة سطر الأوامر. لتمكين التدريب باستخدام وحدات GPU متعددة، حدد معرفات أجهزة GPU التي ترغب في استخدامها.

مثال على التدريب باستخدام وحدات GPU متعددة

للتدريب باستخدام 2 GPU، تستخدم أجهزة CUDA 0 و 1 الأوامر التالية. توسع إلى وحدات GPU إضافية حسب الحاجة.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
التدريب باستخدام وحدات GPU متعددة مع كود مخصص

عندما تحدد أجهزة متعددة (على سبيل المثال، device=[0, 1])، تقوم Ultralytics داخليًا بإنشاء مثيل مدرب جديد وتنفيذ torch.distributed.run في الخلفية. يعمل هذا بسلاسة مع استخدام واجهة سطر الأوامر القياسية والنقاط البرمجية البايثونية غير المعدلة.

ومع ذلك، إذا كان برنامجك النصي يحتوي على مكونات مخصصة - مثل مدرب مخصّص أو مقيّم أو مجموعة بيانات أو خط أنابيب تعزيز - فلا يمكن تسلسل هذه الكائنات تلقائيًا ونقلها إلى العمليات الفرعية لـ DDP. في هذه الحالة، يجب عليك تشغيل برنامجك النصي مباشرةً باستخدام torch.distributed.run:

python -m torch.distributed.run --nproc_per_node 2 your_training_script.py

يستخدم تدريب وحدات معالجة الرسوميات من AMD إصدار PyTorch ROCm مع بناء الجملة القياسي device=0 أو device=cuda:0. راجع دليل تكامل AMD للتثبيت وحالة دعم MIGraphX و DirectML و Ryzen AI NPU الحالية.

يستخدم تدريب وحدات معالجة الرسوميات من Intel device=xpu:0، أو معرفات XPU متعددة مع إصدار PyTorch الذي يوفر XCCL.

تدريب وحدة معالجة العصبيات Huawei Ascend NPU#

تدعم Ultralytics التدريب والتحقق على وحدات NPU من Huawei Ascend من خلال torch_npu. قم بتثبيت إصدارات CANN و PyTorch و torch_npu المتوافقة متبادلاً باتباع دليل تثبيت ملحق Ascend لـ PyTorch، ثم قم بتفعيل بيئة CANN قبل بدء Ultralytics:

source /usr/local/Ascend/ascend-toolkit/set_env.sh
مثال على تدريب وحدات معالجة العصبيات Ascend NPU
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Train on one Ascend NPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0")

# Train across two Ascend NPUs with HCCL
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="npu:0,1")

تستخدم ميزات التدريب القياسية، بما في ذلك AMP والتحقق وحفظ نقاط التفتيش والاستئناف، وحدة NPU النشطة. تتوفر ميزة AutoBatch للتدريب أحادي وحدة NPU، بينما تطلق معرفات NPU المتعددة تدريباً موزَّعاً من خلال HCCL. راجع دليل تكامل Huawei Ascend لتصدير النموذج ونشره بعد التدريب.

تدريب GPU الخاملة#

يتيح تدريب GPU الخاملة الاختيار التلقائي لوحدات GPU الأقل استخداماً في الأنظمة متعددة وحدات GPU، مما يحسن استخدام الموارد دون اختيار يدوي لوحدات GPU. تحدد هذه الميزة وحدات GPU المتاحة بناءً على مقاييس الاستخدام وتوافر VRAM.

مثال على تدريب GPU الخاملة

تلقائيًا لتحديد واستخدام وحدة (وحدات) معالجة الرسوميات الأكثر خمولاً للتدريب، استخدم وسيطة الجهاز -1. يُعد هذا مفيدًا بشكل خاص في بيئات الحوسبة المشتركة أو الخوادم التي بها عدة مستخدمين.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)

# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])

تُعطي خوارزمية الاختيار التلقائي الأولوية لوحدات GPU ذات:

  1. نسب استخدام حالية أقل
  2. ذاكرة متاحة أعلى (VRAM فارغة)
  3. درجة حرارة واستهلاك طاقة أقل

هذه الميزة قيّمة بشكل خاص في بيئات الحوسبة المشتركة أو عند تشغيل مهام تدريب متعددة عبر نماذج مختلفة. وهي تتكيف تلقائياً مع ظروف النظام المتغيرة، مما يضمن التخصيص الأمثل للموارد دون تدخل يدوي.

التدريب باستخدام Apple Silicon MPS#

مع دعم رقائق Apple silicon المدمج في نماذج Ultralytics YOLO، أصبح من الممكن الآن تدريب نماذجك على الأجهزة التي تستخدم إطار عمل Metal Performance Shaders (MPS) القوي. يوفر MPS طريقة عالية الأداء لتنفيذ مهام الحوسبة ومعالجة الصور على رقائق Apple المخصصة.

لتمكين التدريب على رقائق Apple silicon، يجب عليك تحديد 'mps' كجهازك عند بدء عملية التدريب. فيما يلي مثال لكيفية القيام بذلك في Python وعبر سطر الأوامر:

مثال على التدريب باستخدام MPS
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

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

استئناف التدريبات المقطوعة#

يعد استئناف التدريب من حالة محفوظة مسبقاً ميزة حاسمة عند العمل مع نماذج التعلم العميق. يمكن أن يكون هذا مفيداً في سيناريوهات مختلفة، مثل عندما يتم قطع عملية التدريب بشكل غير متوقع، أو عندما ترغب في مواصلة تدريب نموذج ببيانات جديدة أو لعدد أكبر من الحقبات.

عند استئناف التدريب، يقوم Ultralytics YOLO بتحميل الأوزان من آخر نموذج محفوظ ويستعيد أيضًا حالة المُحسِّن، ومجدول معدل التعلم، ورقم العصر. يتيح لك ذلك مواصلة عملية التدريب بسلاسة من حيث توقفت.

يمكنك بسهولة استئناف التدريب في Ultralytics YOLO عن طريق تعيين وسيطة resume إلى True عند استدعاء طريقة train، وتحديد المسار إلى ملف .pt الذي يحتوي على أوزان النموذج المدربة جزئيًا.

فيما يلي مثال لكيفية استئناف تدريب مقطوع باستخدام Python وعبر سطر الأوامر:

مثال على استئناف التدريب
from ultralytics import YOLO

# Load a model
model = YOLO("path/to/last.pt")  # load a partially trained model

# Resume training
results = model.train(resume=True)

من خلال تعيين resume=True، ستتابع وظيفة train التدريب من حيث توقفت، باستخدام الحالة المخزنة في الملف 'path/to/last.pt'. إذا تم إغفال وسيطة resume أو تعيينها إلى False، ستعقِد وظيفة train جلسة تدريب جديدة.

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

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

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

مُحسن MuSGD#

في YOLO26، MuSGD هو مُحسن هجين يجمع بين تحديثات SGD القياسية مع تحديثات متعامدة بنمط Muon.

يُوصى به لتشغيلات تدريب YOLO26 الأطول ومجموعات البيانات الأكبر، حيث يمكن لتحديثات Muon المتعامدة أن تساعد في استقرار التحسين.

تتلقى الأوزان الخطية ثنائية الأبعاد فقط وفلاتر الالتفاف رباعية الأبعاد (التي يتم إعادة تشكيلها إلى ثنائية الأبعاد) تحديث نمط Muon مع SGD، بينما تظل جميع المعلمات الأخرى، مثل أوزان التطبيع الدفعي ومصطلحات الانحياز، على خوارزمية SGD القياسية.

عند استخدام optimizer=auto، تختار Ultralytics تلقائيًا MuSGD لعمليات التدريب الأطول (عادةً عندما تكون التكرارات > 10000). بالنسبة للعمليات الأقصر، يعود المدرب تلقائيًا إلى استخدام AdamW.

مثال للاستخدام:

yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD

راجع التنفيذ في ultralytics/optim/muon.py ومنطق الاختيار التلقائي للمُحسِّن في BaseTrainer.build_optimizer.

الوسيطالنوعالافتراضيالوصف
modelstrNoneيحدد ملف النموذج للتدريب. يقبل مسارًا إما لنموذج مُدرَّب مسبقًا .pt أو ملف تكوين .yaml. أساسي لتحديد هيكل النموذج أو تهيئة الأوزان.
datastrNoneالمسار إلى ملف YAML لمجموعة البيانات (مثل coco8.yaml)، والذي يحمل مسارات بيانات التدريب وبيانات التحقق، وأسماء الفئات، وعدد الفئات. وبدلاً من ذلك، يقبل التصنيف دليل مجموعة البيانات أو اسم مجموعة بيانات مدمج (مثل imagenet10).
epochsint100إجمالي عدد دورات التدريب (epochs). يمثل كل عصر (epoch) تمريرة كاملة على مجموعة البيانات بأكملها. يمكن أن يؤثر ضبط هذه القيمة على مدة التدريب وأداء النموذج.
timefloatNoneالحد الأقصى لوقت التدريب بالساعات. إذا تم تعيينه، فإنه يتجاوز وسيطة epochs، مما يسمح للتدريب بالتوقف تلقائيًا بعد المدة المحددة. مفيد لسيناريوهات التدريب المقيدة بالوقت.
patienceint100عدد الدورات المراد انتظارها بدون تحسن في مقاييس التحقق قبل إيقاف التدريب مبكرًا. يساعد في منع التفراط في التخصيص (overfitting) عن طريق إيقاف التدريب عندما يستقر الأداء.
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 (device=mps)، أو وحدة NPU من Huawei Ascend (device=npu:0 أو device=npu:0,1)، أو التحديد التلقائي لوحدة معالجة رسومات خاملة (device=-1) أو وحدات معالجة رسومات خاملة متعددة (device=[-1,-1]).
workersint8عدد خيوط العمال (worker threads) لتحميل البيانات (لكل RANK في حالة التدريب متعدد وحدات معالجة الرسومات). يؤثر على سرعة المعالجة المسبقة للبيانات وتغذيتها في النموذج، وهو مفيد بشكل خاص في الإعدادات متعددة وحدات معالجة الرسومات.
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 للتحديد التلقائي استنادًا إلى تكوين النموذج. يؤثر على سرعة التقارب والاستقرار.
seedint0يضبط البذرة العشوائية (random seed) للتدريب، مما يضمن قابلية تكرار النتائج عبر التشغيلات بنفس التكوينات.
deterministicboolTrueيفرض استخدام خوارزمية حتمية، مما يضمن قابلية التكرار ولكنه قد يؤثر على الأداء والسرعة بسبب القيود على الخوارزميات غير الحتمية.
verboseboolTrueيُمكّن المخرجات التفصيلية أثناء التدريب، حيث يعرض أشرطة التقدم، والمقاييس لكل دورة (epoch)، ومعلومات تدريب إضافية في وحدة التحكم.
single_clsboolFalseيعامل جميع الفئات في مجموعات البيانات متعددة الفئات كفئة واحدة أثناء التدريب. مفيد لمهام التصنيف الثنائي أو عند التركيز على وجود الكائن بدلاً من تصنيفه.
classeslist[int]Noneيحدد قائمة بمعرفات الفئات للتدريب عليها. مفيد لتصفية والتركيز فقط على فئات معينة أثناء التدريب.
rectboolFalseيمكّن استراتيجية الحشو الأدنى - يتم حشو الصور في الدفعة بحد أدنى لتوصيلها إلى حجم مشترك، بحيث يكون الجانب الأطول مساويًا لـ imgsz. يمكن أن يحسن الكفاءة والسرعة ولكنه قد يؤثر على دقة النموذج.
multi_scalefloat0.0تغيير imgsz عشوائيًا لكل دفعة بواسطة +/- multi_scale (على سبيل المثال، 0.25 -> 0.75x إلى 1.25x)، والتقريب إلى مضاعفات خطوة النموذج؛ يقوم 0.0 بتعطيل التدريب متعدد المقاييس.
cos_lrboolFalseيستخدم جدولة معدل تعلم جيبية (cosine)، مما يؤدي إلى ضبط معدل التعلم باتباع منحنى جيب عبر العصور. يساعد في إدارة معدل التعلم لتقارب أفضل.
close_mosaicint10يعطل تعزيز بيانات الفسيفساء (mosaic) في آخر N عصور لتثبيت التدريب قبل الانتهاء. التعيين إلى 0 يعطل هذه الميزة.
resumeboolFalseيستأنف التدريب من آخر نقطة تفتيش محفوظة. يقوم تلقائياً بتحميل أوزان النموذج، وحالة المُحسِّن، وعدد الدورات، مما يتيح متابعة التدريب بسلاسة.
ampboolTrueيمكّن التدريب بـ الدقة المختلطة التلقائية (AMP)، مما يقلل من استخدام الذاكرة وربما يسرع التدريب مع الحد الأدنى من التأثير على الدقة.
fractionfloat1.0يحدد جزءاً من مجموعة البيانات لاستخدامه في التدريب. يسمح بالتدريب على مجموعة فرعية من مجموعة البيانات الكاملة، وهو مفيد للتجارب أو عند محدودية الموارد.
profileboolFalseيُفعّل تتبع سرعات ONNX و TensorRT أثناء التدريب، وهو مفيد لتحسين نشر النموذج.
freezeint أو listNoneيُجمد أول N طبقات من النموذج أو طبقات محددة حسب الفهرس، مما يقلل من عدد المعلمات القابلة للتدريب. مفيد للضبط الدقيق أو التعلم النقلي.
lr0float0.01معدل التعلم الأولي (أي SGD=1E-2، Adam=1E-3). يعد ضبط هذه القيمة أمرًا بالغ الأهمية لعملية التحسين، حيث يؤثر على مدى سرعة تحديث أوزان النموذج.
lrffloat0.01معدل التعلم النهائي ككسر من المعدل الأولي = (lr0 * lrf)، يُستخدم بالkتزامن مع الجدولات لضبط معدل التعلم بمرور الوقت.
momentumfloat0.937عامل الزخم لـ SGD أو beta1 لـ مُحسِّنات Adam، مما يؤثر على دمج التدرجات السابقة في التحديث الحالي.
weight_decayfloat0.0005مصطلح الانتظام (regularization) L2، الذي يعاقب الأوزان الكبيرة لمنع الإفراط في التخصيص (overfitting).
warmup_epochsfloat3.0عدد الدورات لتهيئة معدل التعلم (warmup)، حيث يزداد معدل التعلم تدريجياً من قيمة منخفضة إلى معدل التعلم الأولي لتحقيق استقرار التدريب في بدايته.
warmup_momentumfloat0.8الزخم الأولي لمرحلة التهيئة، والذي يتم ضبطه تدريجياً ليصل إلى الزخم المحدد عبر فترة التهيئة.
warmup_bias_lrfloat0.1معدل التعلم لمعلمات التحيز (bias) أثناء مرحلة التهيئة، مما يساعد في استقرار تدريب النموذج في الدورات الأولى.
distill_modelstrNoneمسار إلى نقطة تفتيش نموذج المعلم (على سبيل المثال، yolo26x.pt) لتقطير المعرفة. عند التعيين، يتم تدريب نموذج الطالب بخسارة تقطير إضافية موجهة بواسطة المعلم المُجمد.
disfloat6.0وزن خسارة التقطير المضافة إلى خسائر الكشف القياسية. القيم الأعلى تزيد من تأثير توجيه الميزات الخاص بنموذج المعلم.
boxfloat7.5وزن مكون خسارة الصندوق في دالة الخسارة، مما يؤثر على مقدار التركيز الموضع على التنبؤ الدقيق بإحداثيات صندوق الإحاطة.
clsfloat0.5وزن خسارة التصنيف في دالة الخسارة الإجمالية، مما يؤثر على أهمية التنبؤ الصحيح بالفئة بالنسبة للمكونات الأخرى.
cls_pwfloat0.0عامل تركيز الفئة للتعامل مع عدم توازن الفئات باستخدام تكرار الفئة العكسي. يقوم 0.0 بتعطيل ترجيح الفئة، ويطبق 1.0 ترجيح التكرار العكسي الكامل. توفر القيم بين 0 و 1 ترجيحًا جزئيًا.
dflfloat1.5وزن دالة فقدان التوزيع (DFL)، وهو مصطلح لتحديد موقع صندوق الإحاطة (bounding box) يقوم بحساب مسافات حواف الصندوق.
posefloat12.0وزن خسارة الوضعية (pose loss) في النماذج المدربة لتقدير الوضعية، مما يؤثر على التركيز على التنبؤ الدقيق للنقاط الرئيسية للوضعية.
kobjfloat1.0وزن خسارة موضوعية النقاط الرئيسية في نماذج تقدير الوضعية، مما يوازن بين ثقة الكشف ودقة الوضعية.
rlefloat1.0وزن خسارة تقدير احتمالية اللوغاريتم المتبقية (residual log-likelihood estimation loss) في نماذج تقدير الوضعية، مما يؤثر على دقة تحديد مواقع النقاط الرئيسية.
anglefloat1.0وزن خسارة الزاوية في نماذج obb، مما يؤثر على دقة توقعات زاوية صندوق الإحاطة الموجه.
dlogfloat1.0وزن الخسارة اللوغاريتمية الثابتة للمقياس (SILog) في نماذج تقدير العمق، وهو المصدر الأساسي لدقة العمق.
dgradfloat0.5وزن خسارة التدرج في نماذج تقدير العمق، مما يعاقب الأخطاء في حواف العمق ويشجع حدود سطح أكثر حدة.
dlamfloat1.0عامل تركيز التباين لخسارة SILog في نماذج تقدير العمق. يجعل 1.0 الخسارة ثابتة النطاق تمامًا، بينما يقللها 0.0 إلى log-RMSE العادي.
nbsint64حجم الدفعة الاسمي لتطبيع الخسارة.
overlap_maskboolTrueيحدد ما إذا كان يجب دمج أقنعة الكائنات في قناع واحد للتدريب، أو الاحتفاظ بها منفصلة لكل كائن. في حالة التداخل، يتم وضع القناع الأصغر فوق القناع الأكبر أثناء الدمج.
mask_ratioint4نسبة التقليص لأقنعة التجزئة (segmentation masks)، مما يؤثر على دقة الأقنعة المستخدمة أثناء التدريب.
dropoutfloat0.0معدل الإسقاط (dropout) للتنظيم في مهام التصنيف، مما يمنع الإفراط في التخصيص عن طريق حذف الوحدات عشوائياً أثناء التدريب.
valboolTrueيُفعّل التحقق أثناء التدريب، مما يسمح بالتقييم الدوري لأداء النموذج على مجموعة بيانات منفصلة.
plotsboolTrueيُنشئ ويحفظ مخططات لمقاييس التدريب والتحقق، بالإضافة إلى أمثلة للتنبؤ، مما يوفر رؤى مرئية حول أداء النموذج وتقدم التعلم.
compilebool أو strFalseيمكّن تجميع رسم البياني PyTorch 2.x torch.compile باستخدام backend='inductor'. يقبل True"default"، False ← تعطيل، أو وضع نصي مثل "default"، "reduce-overhead"، "max-autotune-no-cudagraphs". يتراجع إلى الوضع الحماسي (eager) مع تحذير إذا كان غير مدعوم.
channels_lastboolFalseيستخدم تنسيق الذاكرة channels_last (NHWC) لعمليات الالتفاف أثناء التدريب، مما يسّرع وحدات معالجة الرسومات CUDA Tensor Core دون أي تغيير في النتائج. يتم تجاهله تلقائياً على وحدة المعالجة المركزية (CPU) و MPS، حيث لا يقدم أي فائدة.
max_detint300يحدد الحد الأقصى لعدد الكائنات المحتفظ بها أثناء مرحلة التحقق من التدريب.
ملاحظة حول إعدادات حجم الدفعة (batch-size)

يمكن تكوين وسيطة batch بثلاث طرق:

  • حجم الدُفعة الثابت: تعيين قيمة صحيحة (على سبيل المثال، batch=16)، مع تحديد عدد الصور لكل دُفعة مباشرةً.
  • الوضع التلقائي (60% من ذاكرة وحدة معالجة الرسوميات): استخدم batch=-1 لضبط حجم الدُفعة تلقائيًا لاستخدام ما يقريبًا 60% من ذاكرة CUDA.
  • الوضع التلقائي مع نسبة الاستخدام: قم بتعيين قيمة كسرية (على سبيل المثال، batch=0.70) لضبط حجم الدُفعة بناءً على النسبة المحددة لاستخدام ذاكرة وحدة معالجة الرسوميات.
  • إعادة المحاولة التلقائية عند نفاد الذاكرة (OOM): إذا حدث خطأ نفاد ذاكرة CUDA أثناء الدورة الأولى، يقوم المدرب تلقائياً بتقسيم حجم الدفعة إلى النصف وإعادة المحاولة (حتى 3 مرات). هذا ينطبق فقط على التدريب بـ GPU واحد؛ التدريب متعدد GPUs (DDP) سيؤدي إلى ظهور الخطأ فوراً.

إعدادات الزيادة (Augmentation) والمعلمات الفائقة (Hyperparameters)#

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

الوسيطالنوعالافتراضيالمهام المدعومةالنطاقالوصف
hsv_hfloat0.015detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0يضبط تدرج لون الصورة بجزء من عجلة الألوان، مما يدخل تبايناً لونياً. يساعد النموذج على التعميم عبر ظروف الإضاءة المختلفة.
hsv_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0يغير تشبع الصورة بجزء معين، مما يؤثر على كثافة الألوان. مفيد لمحاكاة ظروف بيئية مختلفة.
hsv_vfloat0.4detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0يعدل قيمة (سطوع) الصورة بجزء معين، مما يساعد النموذج على الأداء الجيد في ظل ظروف إضاءة متنوعة.
degreesfloat0detect, segment, semantic, depth, pose, obb0.0 - 180يقوم بتدوير الصورة عشوائياً ضمن نطاق الدرجات المحدد، مما يحسن قدرة النموذج على التعرف على الكائنات في اتجاهات مختلفة.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0يقوم بإزاحة الصورة أفقياً ورأسياً بجزء من حجم الصورة، مما يساعد في تعلم اكتشاف الكائنات المرئية جزئياً.
scalefloat0.5detect, segment, semantic, depth, classify, pose, obb0 - 1يقوم بتحجيم الصورة بمعامل زيادة، مما يحاكي الكائنات على مسافات مختلفة من الكاميرا.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180يقوم بقص الصورة (shear) بدرجة محددة، مما يحاكي تأثير رؤية الكائنات من زوايا مختلفة.
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_pastefloat0segment0.0 - 1.0ينسخ ويلصق الكائنات عبر الصور لزيادة حالات الكائنات.
copy_paste_modestrflipsegment-يحدد استراتيجية copy-paste المراد استخدامها. تتضمن الخيارات 'flip' و 'mixup'.
auto_augmentstrrandaugmentclassify-يطبق سياسة تعزيز محددة مسبقًا ('randaugment' أو 'autoaugment' أو 'augmix') لتحسين أداء النموذج من خلال التنوع البصري.
erasingfloat0.4classify0.0 - 1.0يمسح عشوائياً مناطق من الصورة أثناء التدريب لتشجيع النموذج على التركيز على الميزات الأقل وضوحاً.
augmentationslistNonedetect, segment, semantic, pose, obb-تحويلات Albumentations مخصصة لتعزيز البيانات المتقدم (Python API فقط). يقبل قائمة من كائنات التحويل لاحتياجات التعزيز المتخصصة.

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

معلومات

لمزيد من المعلومات حول عمليات تعزيز التدريب، راجع قسم المراجع.

التسجيل#

عند تدريب نموذج YOLO26، قد تجد أنه من المفيد تتبع أداء النموذج بمرور الوقت. وهنا يأتي دور تسجيل البيانات. يوفر Ultralytics YOLO دعمًا لثلاثة أنواع من مسجلات البيانات - Comet، وClearML، وTensorBoard.

لاستخدام مسجل، حدده من القائمة المنسدلة في مقتطف الكود أعلاه وقم بتشغيله. سيتم تثبيت المسجل المختار وتهيئته.

Comet#

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

لاستخدام Comet:

مثال
# pip install comet_ml
import comet_ml

comet_ml.init()

تذكر تسجيل الدخول إلى حساب Comet الخاص بك على موقعهم الإلكتروني والحصول على مفتاح API الخاص بك. ستحتاج إلى إضافة هذا إلى متغيرات البيئة الخاصة بك أو إلى البرنامج النصي الخاص بك لتسجيل تجاربك.

ClearML#

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

لاستخدام ClearML:

مثال
# pip install clearml
import clearml

clearml.browser_login()

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

TensorBoard#

TensorBoard هي مجموعة أدوات تصور لـ TensorFlow. تتيح لك تصور رسم بياني TensorFlow الخاص بك، ورسم مقاييس كمية حول تنفيذ الرسم البياني الخاص بك، وعرض بيانات إضافية مثل الصور التي تمر عبره.

لاستخدام TensorBoard في Google Colab:

مثال
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

لاستخدام TensorBoard محليًا، قم بتشغيل الأمر أدناه واعرض النتائج على localhost:6006.

مثال
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

سيؤدي هذا إلى تحميل TensorBoard وتوجيهه إلى الدليل حيث يتم حفظ سجلات التدريب الخاصة بك.

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

ما هي الخطوة التالية#

تحقق من صحة نموذجك المدرب مقابل البيانات المحتفظ بها للتحقق من دقته في العالم الحقيقي، ثم قم بتصديره إلى ONNX أو TensorRT أو تنسيق نشر آخر. هل تدرب على بياناتك الخاصة بدلاً من COCO8؟ قم بتنسيقها أولاً باستخدام دليل مجموعات البيانات.

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

هل يمكنني التدريب بدون GPU محلي؟#

نعم. يتضمن التدريب السحابي لمنصة Ultralytics أرصدة مجانية للبدء. قم بتحميل مجموعة البيانات الخاصة بك، وحدد نموذجًا ووحدة معالجة رسوميات، وتدرب مباشرة من المتصفح.

كيف أقوم بتدريب نموذج الكشف عن الكائنات باستخدام Ultralytics YOLO26؟#

لتدريب نموذج اكتشاف الكائنات باستخدام Ultralytics YOLO26، يمكنك استخدام Python API أو CLI. فيما يلي مثال لكليهما:

مثال على التدريب باستخدام GPU واحدة و CPU
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

لمزيد من التفاصيل، راجع قسم إعدادات التدريب.

ما هي الميزات الرئيسية لوضع التدريب في Ultralytics YOLO26؟#

تتضمن الميزات الرئيسية لوضع التدريب في Ultralytics YOLO26 ما يلي:

  • التنزيل التلقائي لمجموعة البيانات: يقوم بتنزيل مجموعات البيانات القياسية تلقائياً مثل COCO و VOC و ImageNet.
  • دعم تعدد وحدات GPU: توسيع نطاق التدريب عبر وحدات GPU متعددة لمعالجة أسرع.
  • تكوين المعلمات الفائقة: تخصيص المعلمات الفائقة من خلال ملفات YAML أو وسائط CLI.
  • التصور والمراقبة: تتبع مقاييس التدريب في الوقت الفعلي للحصول على رؤى أفضل.

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

كيف يمكنني استئناف التدريب من جلسة مقاطعة في Ultralytics YOLO26؟#

لاستئناف التدريب من جلسة تم مقاطعتها، قم بتعيين وسيطة resume إلى True وحدد المسار إلى آخر نقطة تفتيش محفوظة.

مثال على استئناف التدريب
from ultralytics import YOLO

# Load the partially trained model
model = YOLO("path/to/last.pt")

# Resume training
results = model.train(resume=True)

تحقق من القسم الخاص بـ استئناف التدريبات المقاطعة لمزيد من المعلومات.

كيف يمكنني تدريب نموذج على مجموعة بيانات غير متوازنة؟#

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

تتحكم وسيطة cls_pw في قوة ترجيح الفئات بناءً على تردد الفئة العكسي:

  • cls_pw=0.0 (افتراضي): يعطل ترجيح الفئات
  • cls_pw=1.0: يطبق ترجيح التردد العكسي الكامل
  • القيم بين 0.0 و 1.0: توفر ترجيحاً جزئياً لحالة عدم التوازن المعتدل

يتم حساب أوزان الفئات كـ (1.0 / class_counts) ^ cls_pw وتطبيعها بحيث يكون متوسطها مساوياً لـ 1.0.

التدريب على مجموعة بيانات غير متوازنة
from ultralytics import YOLO

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

# Train with full class weighting for severely imbalanced data
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)

# Or use partial weighting (0.25) for moderate imbalance
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)
نصيحة

ابدأ بـ cls_pw=0.25 لمجموعات البيانات غير المتوازنة بشكل معتدل وزد إلى 1.0 إذا كانت الفئات النادرة لا تزال تقدم أداءً ضعيفاً. يمكنك التحقق من أوزان الفئات المحسوبة في سجلات التدريب للتحقق من توزيع الأوزان.

هل يمكنني تدريب نماذج YOLO26 على شرائح Apple silicon؟#

نعم، يدعم Ultralytics YOLO26 التدريب على شرائح Apple silicon باستخدام إطار عمل Metal Performance Shaders (MPS). حدد 'mps' كجهاز التدريب الخاص بك.

مثال على التدريب باستخدام MPS
from ultralytics import YOLO

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

# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

لمزيد من التفاصيل، راجع قسم تدريب Apple Silicon MPS.

ما هي إعدادات التدريب الشائعة، وكيف أقوم بتكوينها؟#

يسمح لك Ultralytics YOLO26 بتكوين مجموعة متنوعة من إعدادات التدريب مثل حجم الدفعة، ومعدل التعلم، والحقب (epochs)، والمزيد من خلال الوسائط. إليك نظرة عامة موجزة:

الوسيطالافتراضيالوصف
modelNoneمسار ملف النموذج للتدريب.
dataNoneمسار ملف YAML لمجموعة البيانات (على سبيل المثال، coco8.yaml)، أو دليل مجموعة البيانات أو اسمها (على سبيل المثال، imagenet10) للتصنيف.
epochs100إجمالي عدد حقب التدريب.
batch16حجم الدفعة، قابل للتعديل كعدد صحيح أو وضع تلقائي.
imgsz640حجم الصورة المستهدف للتدريب.
deviceNoneأجهزة الحوسبة للتدريب مثل cpu، أو 0، أو 0,1، أو mps.
saveTrueيُمكّن حفظ نقاط فحص التدريب وأوزان النموذج النهائية.

للحصول على دليل متعمق حول إعدادات التدريب، تحقق من قسم إعدادات التدريب.

التعليقات