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

Ultralytics YOLO ecosystem and integrations

مقدمة

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



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

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

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

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

الميزات الرئيسية لوضع التدريب (Train Mode)

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

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

أمثلة على الاستخدام

قم بتدريب YOLO26n على مجموعة بيانات COCO8 لمدة 100 عصر بحجم صورة 640. يمكن تحديد جهاز التدريب باستخدام وسيطة device. إذا لم يتم تمرير أي وسيطة، فسيتم استخدام GPU 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 متعددة

للتدريب باستخدام وحدتي 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 في الخلفية. يعمل هذا بسلاسة مع استخدام CLI القياسي ونصوص Python البرمجية غير المعدلة.

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

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

التدريب باستخدام GPU الخامل

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

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

لاختيار واستخدام أكثر وحدة 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 بتحميل الأوزان من آخر نموذج محفوظ ويستعيد أيضاً حالة المحسِّن، وجدولة معدل التعلم، ورقم العصر (epoch). يسمح لك هذا بمواصلة عملية التدريب بسلاسة من حيث توقفت.

يمكنك بسهولة استئناف التدريب في 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 العديد من المعلمات الفائقة والتكوينات المستخدمة أثناء عملية التدريب. تؤثر هذه الإعدادات على أداء النموذج وسرعته ودقة التنبؤ. تشمل إعدادات التدريب الرئيسية حجم الدفعة (batch size)، ومعدل التعلم، والزخم (momentum)، وتلاشي الوزن (weight decay). بالإضافة إلى ذلك، يمكن أن يؤثر اختيار المحسِّن، ودالة الخسارة، وتكوين مجموعة بيانات التدريب على عملية التدريب. يعد الضبط الدقيق والتجربة بهذه الإعدادات أمراً حاسماً لتحسين الأداء.

محسِّن MuSGD

في YOLO26، يعتبر MuSGD محسِّناً هجيناً يجمع بين تحديثات SGD القياسية وتحديثات Muon-style orthogonalized.

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

تتلقى فقط المعلمات ذات param.ndim >= 2 (مثل أوزان التفاف) تحديث نمط Muon مع SGD، بينما تظل المعلمات ذات الأبعاد المنخفضة مثل طبقات تطبيع الدفعة (batch normalization) ومصطلحات الانحياز (bias terms) على 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مسار ملف تكوين مجموعة البيانات (مثل coco8.yaml). يحتوي هذا الملف على معاملات خاصة بمجموعة البيانات، بما في ذلك مسارات التدريب وبيانات التحقق، وأسماء الفئات، وعدد الفئات.
epochsint100إجمالي عدد دورات التدريب (epochs). تمثل كل epoch تمريرة كاملة على مجموعة البيانات بأكملها. يمكن أن يؤدي تعديل هذه القيمة إلى التأثير على مدة التدريب وأداء النموذج.
timefloatNoneأقصى وقت تدريب بالساعات. إذا تم تعيينه، فإنه يتجاوز معامل epochs، مما يسمح للتدريب بالتوقف تلقائياً بعد المدة المحددة. مفيد لسيناريوهات التدريب المقيدة زمنياً.
patienceint100عدد الدورات التي يجب انتظارها دون تحسن في مقاييس التحقق قبل إيقاف التدريب مبكراً. يساعد في منع overfitting عن طريق إيقاف التدريب عندما يستقر الأداء.
batchint or float16Batch size، مع ثلاثة أنماط: التعيين كعدد صحيح (مثل batch=16)، أو النمط التلقائي لاستخدام 60% من ذاكرة GPU (batch=-1)، أو النمط التلقائي مع كسر استخدام محدد (batch=0.70).
imgszint640حجم الصورة المستهدف للتدريب. يتم تغيير حجم الصور إلى مربعات ذات جوانب مساوية للقيمة المحددة (إذا كان rect=False)، مع الحفاظ على نسبة العرض إلى الارتفاع لنماذج YOLO ولكن ليس RT-DETR. يؤثر على دقة النموذج والتعقيد الحسابي.
saveboolTrueتمكين حفظ نقاط فحص التدريب وأوزان النموذج النهائية. مفيد لاستئناف التدريب أو نشر النموذج.
save_periodint-1تكرار حفظ نقاط فحص النموذج، محدد بالدورات (epochs). قيمة -1 تعطل هذه الميزة. مفيد لحفظ النماذج المؤقتة خلال جلسات التدريب الطويلة.
cacheboolFalseتمكين التخزين المؤقت لصور مجموعة البيانات في الذاكرة (True/ram)، أو على القرص (disk)، أو تعطيله (False). يحسن سرعة التدريب عن طريق تقليل الإدخال/الإخراج من القرص على حساب زيادة استخدام الذاكرة.
deviceint or str or listNoneيحدد الجهاز (الأجهزة) الحسابية للتدريب: GPU واحد (device=0)، أو وحدات GPU متعددة (device=[0,1])، أو CPU (device=cpu)، أو MPS لأجهزة Apple silicon (device=mps)، أو Huawei Ascend NPU (device=npu أو device=npu:0)، أو التحديد التلقائي لأكثر وحدة GPU خمولاً (device=-1) أو وحدات GPU خاملة متعددة (device=[-1,-1])
workersint8عدد سلاسل العمليات (threads) لتحميل البيانات (لكل RANK في حالة التدريب متعدد وحدات GPU). يؤثر على سرعة معالجة البيانات وإدخالها إلى النموذج، وهو مفيد بشكل خاص في إعدادات وحدات GPU المتعددة.
projectstrNoneاسم دليل المشروع حيث يتم حفظ مخرجات التدريب. يسمح بتخزين منظم للتجارب المختلفة.
namestrNoneاسم تشغيل التدريب. يُستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين سجلات التدريب والمخرجات.
exist_okboolFalseإذا كان True، فإنه يسمح بالكتابة فوق دليل مشروع/اسم موجود. مفيد للتجارب التكرارية دون الحاجة إلى مسح المخرجات السابقة يدوياً.
pretrainedbool or strTrueيحدد ما إذا كان يجب بدء التدريب من أوزان مدربة مسبقاً. يمكن أن يكون قيمة منطقية أو مساراً نصياً للأوزان لتحميلها. pretrained=False يدرب من أوزان مهيأة عشوائياً مع الحفاظ على هيكل النموذج.
optimizerstr'auto'اختيار المُحسن (optimizer) للتدريب. تشمل الخيارات SGD، وMuSGD، وAdam، وAdamax، وAdamW، وNAdam، وRAdam، وRMSProp، أو auto للاختيار التلقائي بناءً على تكوين النموذج. يؤثر على سرعة التقارب والاستقرار.
seedint0يعين البذرة العشوائية (random seed) للتدريب، مما يضمن تكرارية النتائج عبر التشغيلات بنفس التكوينات.
deterministicboolTrueيفرض استخدام خوارزمية حتمية، مما يضمن التكرارية ولكنه قد يؤثر على الأداء والسرعة بسبب القيود المفروضة على الخوارزميات غير الحتمية.
verboseboolTrueتمكين المخرجات المفصلة أثناء التدريب، لعرض أشرطة التقدم، ومقاييس كل دورة، ومعلومات تدريب إضافية في وحدة التحكم.
single_clsboolFalseيعامل جميع الفئات في مجموعات البيانات متعددة الفئات كفئة واحدة أثناء التدريب. مفيد لمهام التصنيف الثنائي أو عند التركيز على وجود الكائنات بدلاً من التصنيف.
classeslist[int]Noneيحدد قائمة بمعرفات الفئات للتدريب عليها. مفيد لتصفية والتركيز فقط على فئات معينة أثناء التدريب.
rectboolFalseتمكين استراتيجية الحشو الدنيا—يتم حشو الصور في الدفعة (batch) بالحد الأدنى للوصول إلى حجم مشترك، مع تساوي الجانب الأطول مع imgsz. يمكن أن يحسن الكفاءة والسرعة ولكنه قد يؤثر على دقة النموذج.
multi_scalefloat0.0تغيير imgsz عشوائياً في كل دفعة بمقدار +/- multi_scale (مثال 0.25 -> 0.75x إلى 1.25x)، مع التقريب إلى مضاعفات خطوة النموذج (stride)؛ 0.0 يعطل التدريب متعدد المقاييس.
cos_lrboolFalseاستخدام مجدول جيب تمام learning rate، مع تعديل معدل التعلم باتباع منحنى جيب تمام عبر الدورات. يساعد في إدارة معدل التعلم لتحقيق تقارب أفضل.
close_mosaicint10يعطل تعزيز البيانات بنمط الفسيفساء في آخر N حقبة (epochs) لتعزيز استقرار التدريب قبل الاكتمال. تعيين القيمة إلى 0 يعطل هذه الميزة.
resumeboolFalseيستأنف التدريب من آخر نقطة تفتيش (checkpoint) تم حفظها. يقوم تلقائيًا بتحميل أوزان النموذج وحالة المحسن وعدد الحقب، ليتابع التدريب بسلاسة.
ampboolTrueيُفعل التدريب باستخدام الدقة المختلطة التلقائية (AMP)، مما يقلل من استخدام الذاكرة وربما يسرع عملية التدريب مع تأثير ضئيل على الدقة.
fractionfloat1.0يحدد جزءاً من مجموعة البيانات المراد استخدامه للتدريب. يسمح بالتدريب على مجموعة فرعية من مجموعة البيانات الكاملة، وهو مفيد للتجارب أو عند محدودية الموارد.
profileboolFalseيُفعل تحليل أداء سرعات ONNX و TensorRT أثناء التدريب، وهو مفيد لتحسين نشر النموذج.
freezeint أو listNoneيجمد أول N طبقة من النموذج أو الطبقات المحددة بواسطة الفهرس، مما يقلل من عدد المعلمات القابلة للتدريب. مفيد للضبط الدقيق (fine-tuning) أو التعلم بنقل المعرفة.
lr0float0.01معدل التعلم الأولي (مثل SGD=1E-2, Adam=1E-3). يعد تعديل هذه القيمة أمراً بالغ الأهمية لعملية التحسين، حيث يؤثر على سرعة تحديث أوزان النموذج.
lrffloat0.01معدل التعلم النهائي كجزء من المعدل الأولي = (lr0 * lrf)، ويستخدم بالتزامن مع المجدولات (schedulers) لضبط معدل التعلم بمرور الوقت.
momentumfloat0.937معامل الزخم (momentum) لـ SGD أو beta1 لـ محسنات Adam، مما يؤثر على دمج التدرجات السابقة في التحديث الحالي.
weight_decayfloat0.0005مصطلح التنظيم من نوع L2، والذي يعاقب الأوزان الكبيرة لمنع الإفراط في التخصيص (overfitting).
warmup_epochsfloat3.0عدد حقب الإحماء (warmup) لمعدل التعلم، حيث يتم رفع معدل التعلم تدريجياً من قيمة منخفضة إلى معدل التعلم الأولي لاستقرار التدريب في بدايته.
warmup_momentumfloat0.8الزخم الأولي لمرحلة الإحماء، والذي يتم تعديله تدريجياً ليصل إلى الزخم المحدد خلال فترة الإحماء.
warmup_bias_lrfloat0.1معدل التعلم لمعلمات الانحياز (bias parameters) أثناء مرحلة الإحماء، مما يساعد في استقرار تدريب النموذج في الحقب الأولى.
boxfloat7.5وزن مكون خسارة الصندوق في دالة الخسارة، مما يؤثر على مدى التركيز الموضوع على التنبؤ الدقيق بإحداثيات صندوق الإحاطة.
clsfloat0.5وزن خسارة التصنيف في إجمالي دالة الخسارة، مما يؤثر على أهمية التنبؤ الصحيح بالفئة بالنسبة للمكونات الأخرى.
cls_pwfloat0.0قوة ترجيح الفئة للتعامل مع عدم توازن الفئات باستخدام التردد العكسي للفئة. تعطل القيمة 0.0 ترجيح الفئة، وتطبق القيمة 1.0 ترجيح التردد العكسي الكامل. توفر القيم بين 0 و 1 ترجيحاً جزئياً.
dflfloat1.5وزن خسارة التوزيع البؤرية (distribution focal loss)، المستخدمة في إصدارات معينة من YOLO للتصنيف الدقيق.
posefloat12.0وزن خسارة الوضعية في النماذج المدربة لتقدير الوضعية، مما يؤثر على التركيز على التنبؤ الدقيق بنقاط مفصل الوضعية.
kobjfloat1.0وزن خسارة كائنية النقاط الرئيسية في نماذج تقدير الوضعية، مما يوازن بين ثقة الكشف ودقة الوضعية.
rlefloat1.0وزن خسارة تقدير احتمالية اللوغاريتم المتبقي في نماذج تقدير الوضعية، مما يؤثر على دقة تحديد مواقع النقاط الرئيسية.
anglefloat1.0وزن خسارة الزاوية في نماذج obb، مما يؤثر على دقة تنبؤات زاوية صندوق الإحاطة الموجه.
nbsint64حجم الدفعة (batch size) الاسمي لتطبيع الخسارة.
overlap_maskboolTrueيحدد ما إذا كان يجب دمج أقنعة الكائنات في قناع واحد للتدريب، أو إبقاؤها منفصلة لكل كائن. في حالة التداخل، يتم تراكب القناع الأصغر فوق القناع الأكبر أثناء الدمج.
mask_ratioint4نسبة التقليل (downsample) لأقنعة التجزئة، مما يؤثر على دقة الأقنعة المستخدمة أثناء التدريب.
dropoutfloat0.0معدل الإسقاط (dropout) للتنظيم في مهام التصنيف، مما يمنع الإفراط في التخصيص عن طريق حذف الوحدات عشوائياً أثناء التدريب.
valboolTrueيُفعل التحقق أثناء التدريب، مما يسمح بالتقييم الدوري لأداء النموذج على مجموعة بيانات منفصلة.
plotsboolTrueيُنشئ ويحفظ مخططات مقاييس التدريب والتحقق، بالإضافة إلى أمثلة التنبؤ، مما يوفر رؤى مرئية حول أداء النموذج وتقدم التعلم.
compilebool or strFalseيُفعل تجميع الرسوم البيانية لـ PyTorch 2.x torch.compile باستخدام backend='inductor'. يقبل True"default"، False → للتعطيل، أو وضع نصي مثل "default"، "reduce-overhead"، "max-autotune-no-cudagraphs". يعود إلى التنفيذ الفوري مع تحذير إذا كان غير مدعوم.
max_detint300يحدد الحد الأقصى لعدد الكائنات المحتفظ بها أثناء مرحلة التحقق من التدريب.
ملاحظة حول إعدادات حجم الدفعة (Batch-size)

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

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

إعدادات زيادة البيانات والمعلمات الفائقة

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

المعاملالنوعالافتراضيالمهام المدعومةالنطاقالوصف
hsv_hfloat0.015detect, segment, pose, obb, classify0.0 - 1.0يضبط تدرج لون الصورة بجزء من عجلة الألوان، مما يؤدي إلى إدخال تباين في الألوان. يساعد النموذج على التعميم عبر ظروف الإضاءة المختلفة.
hsv_sfloat0.7detect, segment, pose, obb, classify0.0 - 1.0يغير تشبع الصورة بجزء معين، مما يؤثر على شدة الألوان. مفيد لمحاكاة ظروف بيئية مختلفة.
hsv_vfloat0.4detect, segment, pose, obb, classify0.0 - 1.0يعدل قيمة (سطوع) الصورة بجزء معين، مما يساعد النموذج على الأداء الجيد في ظل ظروف إضاءة متنوعة.
degreesfloat0detect, segment, pose, obb0.0 - 180يدور الصورة عشوائياً ضمن نطاق الدرجات المحدد، مما يحسن قدرة النموذج على التعرف على الكائنات في اتجاهات مختلفة.
translatefloat0.1detect, segment, pose, obb0.0 - 1.0ينقل الصورة أفقياً وعمودياً بجزء من حجم الصورة، مما يساعد في تعلم اكتشاف الكائنات المرئية جزئياً.
scalefloat0.5detect, segment, pose, obb, classify0 - 1يغير حجم الصورة بعامل كسب، لمحاكاة الكائنات على مسافات مختلفة من الكاميرا.
shearfloat0detect, segment, pose, obb-180 - +180يقص الصورة بزاوية محددة، مما يحاكي تأثير رؤية الكائنات من زوايا مختلفة.
perspectivefloat0detect, segment, pose, obb0.0 - 0.001يطبق تحويلاً منظورياً عشوائياً على الصورة، مما يعزز قدرة النموذج على فهم الكائنات في الفضاء ثلاثي الأبعاد.
flipudfloat0detect, segment, pose, obb, classify0.0 - 1.0يقلب الصورة رأساً على عقب باحتمالية محددة، مما يزيد من تباين البيانات دون التأثير على خصائص الكائن.
fliplrfloat0.5detect, segment, pose, obb, classify0.0 - 1.0يقلب الصورة من اليسار إلى اليمين باحتمالية محددة، وهو مفيد لتعلم الكائنات المتناظرة وزيادة تنوع مجموعة البيانات.
bgrfloat0detect, segment, pose, obb0.0 - 1.0يقلب قنوات الصورة من RGB إلى BGR باحتمالية محددة، وهو مفيد لزيادة القوة في التعامل مع ترتيب القنوات غير الصحيح.
mosaicfloat1detect, segment, pose, obb0.0 - 1.0يجمع بين أربع صور تدريبية في صورة واحدة، مما يحاكي تركيبات مشهد وتفاعلات كائنات مختلفة. فعال للغاية لفهم المشاهد المعقدة.
mixupfloat0detect, segment, 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يمسح مناطق من الصورة عشوائياً أثناء التدريب لتشجيع النموذج على التركيز على ميزات أقل وضوحاً.
augmentationslist``detect, segment, pose, obb-تحويلات Albumentations مخصصة لتعزيز البيانات المتقدم (Python API فقط). يقبل قائمة من كائنات التحويل لاحتياجات التعزيز المتخصصة.

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

معلومات

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

التسجيل (Logging)

عند تدريب نموذج 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 وتوجيهه إلى الدليل الذي يتم فيه حفظ سجلات التدريب الخاصة بك.

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

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

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

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

كيف أقوم بتدريب نموذج كشف الكائنات باستخدام 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 بتكوين مجموعة متنوعة من إعدادات التدريب مثل حجم الدفعة، ومعدل التعلم، والحقبات، والمزيد من خلال الوسائط. إليك نظرة عامة موجزة:

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

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

التعليقات