Link to this sectionتدريب النموذج باستخدام Ultralytics YOLO#
Link to this sectionمقدمة#
يتضمن تدريب نموذج تعلم عميق تغذيته بالبيانات وضبط معاملاته ليتمكن من إجراء تنبؤات دقيقة. تم تصميم وضع التدريب (Train mode) في Ultralytics YOLO26 لتدريب نماذج اكتشاف الكائنات بشكل فعال وكفء، مع الاستفادة الكاملة من قدرات الأجهزة الحديثة. يهدف هذا الدليل إلى تغطية كافة التفاصيل التي تحتاجها للبدء في تدريب نماذجك الخاصة باستخدام مجموعة ميزات YOLO26 القوية.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
Link to this sectionلماذا تختار Ultralytics YOLO للتدريب؟#
إليك بعض الأسباب المقنعة لاختيار وضع التدريب في YOLO26:
- الكفاءة: حقق أقصى استفادة من أجهزتك، سواء كنت تستخدم وحدة معالجة رسومات (GPU) واحدة أو كنت توسع نطاق العمل عبر وحدات GPU متعددة.
- تعدد الاستخدامات: تدرب على مجموعات بيانات مخصصة بالإضافة إلى المجموعات المتاحة بسهولة مثل COCO وVOC وImageNet.
- سهولة الاستخدام: واجهات CLI و Python بسيطة وقوية لتجربة تدريب مباشرة.
- مرونة المعاملات الفائقة (Hyperparameters): مجموعة واسعة من المعاملات الفائقة القابلة للتخصيص لضبط أداء النموذج بدقة. لمزيد من التحكم، يمكنك تخصيص المُدرب نفسه.
- التدريب السحابي: تدرب على وحدات GPU سحابية من خلال Ultralytics Platform مع مقاييس فورية وحفظ تلقائي لنقاط التحقق (checkpoints).
Link to this sectionالميزات الرئيسية لوضع التدريب#
فيما يلي بعض الميزات البارزة لوضع التدريب في YOLO26:
- التنزيل التلقائي لمجموعة البيانات: يتم تنزيل مجموعات البيانات القياسية مثل COCO وVOC وImageNet تلقائياً عند الاستخدام لأول مرة.
- دعم تعدد وحدات GPU: وسع نطاق جهود التدريب الخاصة بك بسلاسة عبر وحدات GPU متعددة لتسريع العملية.
- تكوين المعاملات الفائقة: خيار تعديل المعاملات الفائقة من خلال ملفات تكوين YAML أو وسائط CLI.
- التصور والمراقبة: تتبع فوري لمقاييس التدريب وتصور عملية التعلم للحصول على رؤى أفضل.
- يتم تنزيل مجموعات بيانات YOLO26 مثل COCO وVOC وImageNet والعديد غيرها تلقائياً عند الاستخدام لأول مرة، أي
yolo train data=coco.yaml
Link to this sectionأمثلة الاستخدام#
قم بتدريب YOLO26n على مجموعة بيانات COCO8 لمدة 100 حقبة بحجم صورة 640. يمكن تحديد جهاز التدريب باستخدام الوسيط device. إذا لم يتم تمرير أي وسيط، فسيتم استخدام GPU device=0 عند توفره؛ وإلا سيتم استخدام device='cpu'. راجع قسم الوسائط أدناه للحصول على قائمة كاملة بوسائط التدريب.
على نظام Windows، قد تتلقى RuntimeError عند تشغيل التدريب كبرنامج نصي. أضف كتلة if __name__ == "__main__": قبل كود التدريب الخاص بك لحل المشكلة.
يتم تحديد الجهاز تلقائياً. إذا كانت وحدة 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)Link to this sectionالتدريب باستخدام وحدات GPU متعددة#
يتيح التدريب باستخدام وحدات GPU متعددة استغلالاً أكثر كفاءة لموارد الأجهزة المتاحة من خلال توزيع حمل التدريب عبر وحدات GPU متعددة. هذه الميزة متاحة من خلال كل من Python API وواجهة سطر الأوامر. لتمكين التدريب باستخدام وحدات 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])عند تحديد أجهزة متعددة (مثل device=[0, 1])، تقوم Ultralytics داخلياً بإنشاء مثيل مُدرب جديد وتنفيذ torch.distributed.run خلف الكواليس. يعمل هذا بسلاسة مع استخدام CLI القياسي ونسخ Python غير المعدلة.
ومع ذلك، إذا كان البرنامج النصي الخاص بك يحتوي على مكونات مخصصة—مثل مُدرب مخصص، أو مُصادق، أو مجموعة بيانات، أو خط معالجة زيادة البيانات (augmentation pipeline)—فلا يمكن تسلسل هذه الكائنات تلقائياً ونقلها إلى عمليات DDP الفرعية. في هذه الحالة، يجب عليك تشغيل البرنامج النصي الخاص بك مباشرة باستخدام torch.distributed.run:
python -m torch.distributed.run --nproc_per_node 2 your_training_script.pyLink to this sectionتدريب 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 ذات:
- نسب استخدام حالية أقل
- ذاكرة متاحة أعلى (VRAM فارغة)
- درجة حرارة واستهلاك طاقة أقل
هذه الميزة قيّمة بشكل خاص في بيئات الحوسبة المشتركة أو عند تشغيل مهام تدريب متعددة عبر نماذج مختلفة. وهي تتكيف تلقائياً مع ظروف النظام المتغيرة، مما يضمن التخصيص الأمثل للموارد دون تدخل يدوي.
Link to this sectionالتدريب باستخدام Apple Silicon MPS#
مع دعم رقائق Apple silicon المدمج في نماذج Ultralytics YOLO، أصبح من الممكن الآن تدريب نماذجك على الأجهزة التي تستخدم إطار عمل Metal Performance Shaders (MPS) القوي. يوفر MPS طريقة عالية الأداء لتنفيذ مهام الحوسبة ومعالجة الصور على رقائق Apple المخصصة.
لتمكين التدريب على رقائق Apple silicon، يجب عليك تحديد 'mps' كجهازك عند بدء عملية التدريب. فيما يلي مثال لكيفية القيام بذلك في Python وعبر سطر الأوامر:
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.
Link to this sectionاستئناف التدريبات المقطوعة#
يعد استئناف التدريب من حالة محفوظة مسبقاً ميزة حاسمة عند العمل مع نماذج التعلم العميق. يمكن أن يكون هذا مفيداً في سيناريوهات مختلفة، مثل عندما يتم قطع عملية التدريب بشكل غير متوقع، أو عندما ترغب في مواصلة تدريب نموذج ببيانات جديدة أو لعدد أكبر من الحقبات.
عند استئناف التدريب، تقوم Ultralytics YOLO بتحميل الأوزان من آخر نموذج تم حفظه كما تستعيد حالة المُحسن (optimizer)، وجدول معدل التعلم، ورقم الحقبة. هذا يسمح لك بمواصلة عملية التدريب بسلاسة من حيث توقفت.
يمكنك بسهولة استئناف التدريب في 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، لذا يجب عليك إكمال حقبة واحدة على الأقل لاستئناف تشغيل التدريب.
Link to this sectionإعدادات التدريب#
تشمل إعدادات التدريب لنماذج YOLO العديد من المعاملات الفائقة والتكوينات المستخدمة أثناء عملية التدريب. تؤثر هذه الإعدادات على أداء النموذج وسرعته ودِقته. تشمل إعدادات التدريب الرئيسية حجم الدُفعة، ومعدل التعلم، والزخم، واضمحلال الوزن. بالإضافة إلى ذلك، يمكن أن يؤثر اختيار المُحسن، ودالة الخسارة، وتركيب مجموعة بيانات التدريب على عملية التدريب. الضبط الدقيق والتجريب باستخدام هذه الإعدادات ضروري لتحسين الأداء.
Link to this sectionمُحسن MuSGD#
في YOLO26، MuSGD هو مُحسن هجين يجمع بين تحديثات SGD القياسية مع تحديثات متعامدة بنمط Muon.
يُوصى به لتشغيلات تدريب YOLO26 الأطول ومجموعات البيانات الأكبر، حيث يمكن لتحديثات Muon المتعامدة أن تساعد في استقرار التحسين.
فقط المعاملات ذات param.ndim >= 2 (مثل أوزان التلافيف) تتلقى تحديث نمط Muon مع SGD، بينما تظل المعاملات ذات الأبعاد الأقل مثل طبقات تطبيع الدُفعة (batch normalization) وحدود التحيز على SGD القياسي.
عند استخدام optimizer=auto، تختار Ultralytics تلقائياً MuSGD لجلسات التدريب الأطول (عادة عندما تكون التكرارات > 10000). بالنسبة للجلسات الأقصر، يعود المُدرب إلى AdamW.
مثال للاستخدام:
yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGDانظر التنفيذ في ultralytics/optim/muon.py ومنطق الاختيار التلقائي للمُحسن في BaseTrainer.build_optimizer.
| الوسيط | النوع | الافتراضي | الوصف |
|---|---|---|---|
model | str | None | يحدد ملف النموذج للتدريب. يقبل مساراً إما لنموذج مدرب مسبقاً .pt أو ملف تكوين .yaml. أساسي لتحديد هيكل النموذج أو تهيئة الأوزان. |
data | str | None | المسار إلى ملف تكوين مجموعة البيانات (مثل coco8.yaml). يحتوي هذا الملف على معاملات خاصة بمجموعة البيانات، بما في ذلك مسارات التدريب وبيانات التحقق، وأسماء الفئات، وعدد الفئات. |
epochs | int | 100 | إجمالي عدد حقبات التدريب. تمثل كل حقبة تمريرة كاملة عبر مجموعة البيانات بأكملها. يمكن أن يؤثر ضبط هذه القيمة على مدة التدريب وأداء النموذج. |
time | float | None | الحد الأقصى لوقت التدريب بالساعات. إذا تم ضبطه، فإنه يتجاوز الوسيط epochs، مما يسمح بإيقاف التدريب تلقائياً بعد المدة المحددة. مفيد لسيناريوهات التدريب المقيدة زمنياً. |
patience | int | 100 | عدد الحقبات التي يجب الانتظار فيها دون تحسن في مقاييس التحقق قبل إيقاف التدريب مبكراً. يساعد في منع الفرط في التخصيص عن طريق إيقاف التدريب عندما يستقر الأداء. |
batch | int أو float | 16 | حجم الدُفعة، مع ثلاثة أوضاع: تعيين كرقم صحيح (مثل batch=16)، أو وضع تلقائي لاستخدام 60% من ذاكرة GPU (batch=-1)، أو وضع تلقائي مع كسر استخدام محدد (batch=0.70). |
imgsz | int | 640 | حجم الصورة المستهدف للتدريب. يتم تغيير حجم الصور إلى مربعات ذات جوانب تساوي القيمة المحددة (إذا كان rect=False)، مع الحفاظ على نسبة العرض إلى الارتفاع لنماذج YOLO ولكن ليس لـ RT-DETR. يؤثر على دِقة النموذج والتعقيد الحسابي. |
save | bool | True | يُمكّن حفظ نقاط تحقق التدريب وأوزان النموذج النهائية. مفيد لاستئناف التدريب أو نشر النموذج. |
save_period | int | -1 | تكرار حفظ نقاط تحقق النموذج، محددة بالحقبات. قيمة -1 تعطل هذه الميزة. مفيدة لحفظ النماذج المؤقتة خلال جلسات التدريب الطويلة. |
cache | bool | False | يُمكّن التخزين المؤقت لصور مجموعة البيانات في الذاكرة (True/ram)، أو على القرص (disk)، أو يعطله (False). يحسن سرعة التدريب عن طريق تقليل عمليات إدخال/إخراج القرص على حساب زيادة استخدام الذاكرة. |
device | int أو str أو list | None | يحدد الجهاز (الأجهزة) الحسابي للتدريب: 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]) |
workers | int | 8 | عدد خيوط المعالجة (worker threads) لتحميل البيانات (لكل RANK في حالة التدريب متعدد وحدات GPU). يؤثر على سرعة المعالجة المسبقة للبيانات وتغذيتها في النموذج، مفيد بشكل خاص في إعدادات تعدد وحدات GPU. |
project | str | None | اسم دليل المشروع حيث يتم حفظ مخرجات التدريب. يسمح بتخزين منظم للتجارب المختلفة. |
name | str | None | اسم تشغيل التدريب. يستخدم لإنشاء دليل فرعي داخل مجلد المشروع، حيث يتم تخزين سجلات ومخرجات التدريب. |
exist_ok | bool | False | إذا كان True، يسمح بالكتابة فوق دليل مشروع/اسم موجود. مفيد للتجارب التكرارية دون الحاجة إلى مسح المخرجات السابقة يدوياً. |
pretrained | bool أو str | True | يحدد ما إذا كان سيتم بدء التدريب من أوزان مدربة مسبقاً. يمكن أن تكون قيمة منطقية أو مساراً نصياً للأوزان لتحميلها. pretrained=False يدرب من أوزان مهيأة عشوائياً مع الاحتفاظ بهيكل النموذج. |
optimizer | str | 'auto' | اختيار المُحسن للتدريب. تشمل الخيارات SGD و MuSGD و Adam و Adamax و AdamW و NAdam و RAdam و RMSProp أو auto للاختيار التلقائي بناءً على تكوين النموذج. يؤثر على سرعة التقارب والاستقرار. |
seed | int | 0 | يضبط البذرة العشوائية (random seed) للتدريب، مما يضمن قابلية تكرار النتائج عبر التشغيلات بنفس التكوينات. |
deterministic | bool | True | يفرض استخدام خوارزمية حتمية، مما يضمن قابلية التكرار ولكنه قد يؤثر على الأداء والسرعة بسبب القيود على الخوارزميات غير الحتمية. |
verbose | bool | True | يُمكّن المخرجات التفصيلية أثناء التدريب، حيث يعرض أشرطة التقدم، والمقاييس لكل دورة (epoch)، ومعلومات تدريب إضافية في وحدة التحكم. |
single_cls | bool | False | يعامل جميع الفئات في مجموعات البيانات متعددة الفئات كفئة واحدة أثناء التدريب. مفيد لمهام التصنيف الثنائي أو عند التركيز على وجود الكائن بدلاً من تصنيفه. |
classes | list[int] | None | يحدد قائمة بمعرفات الفئات للتدريب عليها. مفيد لتصفية والتركيز فقط على فئات معينة أثناء التدريب. |
rect | bool | False | يُفعّل استراتيجية الحشو (padding) الأدنى—يتم حشو الصور في الدفعة (batch) بحد أدنى للوصول إلى حجم مشترك، بحيث يساوي الضلع الأطول imgsz. يمكن أن يحسن الكفاءة والسرعة ولكنه قد يؤثر على دقة النموذج. |
multi_scale | float | 0.0 | تغيير imgsz عشوائياً لكل دفعة بمقدار +/- multi_scale (مثلاً 0.25 -> من 0.75x إلى 1.25x)، مع التقريب إلى مضاعفات خطوة النموذج (stride)؛ القيمة 0.0 تُعطل التدريب متعدد المقاييس. |
cos_lr | bool | False | يستخدم مجدول معدل التعلم من نوع جيب التمام، حيث يتم ضبط معدل التعلم باتباع منحنى جيب التمام عبر الدورات. يساعد في إدارة معدل التعلم لتحقيق تقارب أفضل. |
close_mosaic | int | 10 | يُعطل زيادة البيانات من نوع الفسيفساء في آخر N دورة لتحقيق استقرار التدريب قبل الانتهاء. ضبط القيمة على 0 يُعطل هذه الميزة. |
resume | bool | False | يستأنف التدريب من آخر نقطة تفتيش محفوظة. يقوم تلقائياً بتحميل أوزان النموذج، وحالة المُحسِّن، وعدد الدورات، مما يتيح متابعة التدريب بسلاسة. |
amp | bool | True | يُفعّل التدريب بالدقة المختلطة التلقائية Mixed Precision (AMP)، مما يقلل من استخدام الذاكرة وربما يسرع التدريب مع تأثير ضئيل على الدقة. |
fraction | float | 1.0 | يحدد جزءاً من مجموعة البيانات لاستخدامه في التدريب. يسمح بالتدريب على مجموعة فرعية من مجموعة البيانات الكاملة، وهو مفيد للتجارب أو عند محدودية الموارد. |
profile | bool | False | يُفعّل تتبع سرعات ONNX و TensorRT أثناء التدريب، وهو مفيد لتحسين نشر النموذج. |
freeze | int أو list | None | تجميد أول N طبقة من النموذج أو الطبقات المحددة بالفهرس، مما يقلل من عدد المعلمات القابلة للتدريب. مفيد للضبط الدقيق (fine-tuning) أو التعلم بنقل المعرفة. |
lr0 | float | 0.01 | معدل التعلم الأولي (أي SGD=1E-2, Adam=1E-3). ضبط هذه القيمة أمر بالغ الأهمية لعملية التحسين، حيث يؤثر على سرعة تحديث أوزان النموذج. |
lrf | float | 0.01 | معدل التعلم النهائي كجزء من المعدل الأولي = (lr0 * lrf)، يُستخدم مع المجدولات لضبط معدل التعلم بمرور الوقت. |
momentum | float | 0.937 | عامل الزخم (momentum) لـ SGD أو beta1 لـ مُحسِّنات Adam، مما يؤثر على دمج التدرجات السابقة في التحديث الحالي. |
weight_decay | float | 0.0005 | مصطلح التنظيم L2، الذي يعاقب الأوزان الكبيرة لمنع الإفراط في التخصيص (overfitting). |
warmup_epochs | float | 3.0 | عدد الدورات لتهيئة معدل التعلم (warmup)، حيث يزداد معدل التعلم تدريجياً من قيمة منخفضة إلى معدل التعلم الأولي لتحقيق استقرار التدريب في بدايته. |
warmup_momentum | float | 0.8 | الزخم الأولي لمرحلة التهيئة، والذي يتم ضبطه تدريجياً ليصل إلى الزخم المحدد عبر فترة التهيئة. |
warmup_bias_lr | float | 0.1 | معدل التعلم لمعلمات التحيز (bias) أثناء مرحلة التهيئة، مما يساعد في استقرار تدريب النموذج في الدورات الأولى. |
box | float | 7.5 | وزن مكون خسارة الصندوق في دالة الخسارة، مما يؤثر على مقدار التركيز الموضوع على التنبؤ الدقيق بإحداثيات صندوق الإحاطة. |
cls | float | 0.5 | وزن خسارة التصنيف في دالة الخسارة الإجمالية، مما يؤثر على أهمية التنبؤ الصحيح بالفئة بالنسبة للمكونات الأخرى. |
cls_pw | float | 0.0 | الأس الخاص بترجيح الفئات للتعامل مع عدم توازن الفئات باستخدام التكرار العكسي للفئة. القيمة 0.0 تُعطل ترجيح الفئات، والقيمة 1.0 تُطبق ترجيح التكرار العكسي الكامل. القيم بين 0 و 1 توفر ترجيحاً جزئياً. |
dfl | float | 1.5 | وزن خسارة التوزيع البؤرية (distribution focal loss)، المستخدم في إصدارات معينة من YOLO للتصنيف الدقيق. |
pose | float | 12.0 | وزن خسارة الوضعية (pose loss) في النماذج المدربة لتقدير الوضعية، مما يؤثر على التركيز على التنبؤ الدقيق للنقاط الرئيسية للوضعية. |
kobj | float | 1.0 | وزن خسارة موضوعية النقاط الرئيسية في نماذج تقدير الوضعية، مما يوازن بين ثقة الكشف ودقة الوضعية. |
rle | float | 1.0 | وزن خسارة تقدير احتمالية اللوغاريتم المتبقية (residual log-likelihood estimation loss) في نماذج تقدير الوضعية، مما يؤثر على دقة تحديد مواقع النقاط الرئيسية. |
angle | float | 1.0 | وزن خسارة الزاوية في نماذج obb، مما يؤثر على دقة توقعات زاوية صندوق الإحاطة الموجه. |
nbs | int | 64 | حجم الدفعة الاسمي لتطبيع الخسارة. |
overlap_mask | bool | True | يحدد ما إذا كان يجب دمج أقنعة الكائنات في قناع واحد للتدريب، أو الاحتفاظ بها منفصلة لكل كائن. في حالة التداخل، يتم وضع القناع الأصغر فوق القناع الأكبر أثناء الدمج. |
mask_ratio | int | 4 | نسبة التقليص لأقنعة التجزئة (segmentation masks)، مما يؤثر على دقة الأقنعة المستخدمة أثناء التدريب. |
dropout | float | 0.0 | معدل الإسقاط (dropout) للتنظيم في مهام التصنيف، مما يمنع الإفراط في التخصيص عن طريق حذف الوحدات عشوائياً أثناء التدريب. |
val | bool | True | يُفعّل التحقق أثناء التدريب، مما يسمح بالتقييم الدوري لأداء النموذج على مجموعة بيانات منفصلة. |
plots | bool | True | يُنشئ ويحفظ مخططات لمقاييس التدريب والتحقق، بالإضافة إلى أمثلة للتنبؤ، مما يوفر رؤى مرئية حول أداء النموذج وتقدم التعلم. |
compile | bool أو str | False | يُفعّل تجميع الرسم البياني torch.compile في PyTorch 2.x مع backend='inductor'. يقبل True → "default"، False → للتعطيل، أو نمط نصي مثل "default"، "reduce-overhead"، "max-autotune-no-cudagraphs". يعود إلى الوضع السريع (eager) مع تحذير إذا كان غير مدعوم. |
max_det | int | 300 | يحدد الحد الأقصى لعدد الكائنات المحتفظ بها أثناء مرحلة التحقق من التدريب. |
يمكن تهيئة وسيط batch بثلاث طرق:
- حجم دفعة ثابت: عيّن قيمة صحيحة (مثلاً
batch=16)، لتحديد عدد الصور لكل دفعة مباشرة. - الوضع التلقائي (60% من ذاكرة GPU): استخدم
batch=-1لضبط حجم الدفعة تلقائياً لاستخدام حوالي 60% من ذاكرة CUDA. - الوضع التلقائي مع كسر الاستخدام: عيّن قيمة كسرية (مثلاً
batch=0.70) لضبط حجم الدفعة بناءً على الكسر المحدد من استخدام ذاكرة GPU. - إعادة المحاولة التلقائية عند نفاد الذاكرة (OOM): إذا حدث خطأ نفاد ذاكرة CUDA أثناء الدورة الأولى، يقوم المدرب تلقائياً بتقسيم حجم الدفعة إلى النصف وإعادة المحاولة (حتى 3 مرات). هذا ينطبق فقط على التدريب بـ GPU واحد؛ التدريب متعدد GPUs (DDP) سيؤدي إلى ظهور الخطأ فوراً.
Link to this sectionإعدادات الزيادة (Augmentation) والمعلمات الفائقة (Hyperparameters)#
تعد تقنيات الزيادة ضرورية لتحسين قوة وأداء نماذج YOLO من خلال إدخال التباين في بيانات التدريب، مما يساعد النموذج على التعميم بشكل أفضل على البيانات غير المرئية. يوضح الجدول التالي الغرض من كل وسيط زيادة وتأثيره:
| الوسيط | النوع | الافتراضي | المهام المدعومة | النطاق | الوصف |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, pose, obb, classify | 0.0 - 1.0 | يضبط تدرج لون الصورة بجزء من عجلة الألوان، مما يدخل تبايناً لونياً. يساعد النموذج على التعميم عبر ظروف الإضاءة المختلفة. |
hsv_s | float | 0.7 | detect, segment, pose, obb, classify | 0.0 - 1.0 | يغير تشبع الصورة بجزء معين، مما يؤثر على كثافة الألوان. مفيد لمحاكاة ظروف بيئية مختلفة. |
hsv_v | float | 0.4 | detect, segment, pose, obb, classify | 0.0 - 1.0 | يعدل قيمة (سطوع) الصورة بجزء معين، مما يساعد النموذج على الأداء الجيد في ظل ظروف إضاءة متنوعة. |
degrees | float | 0 | detect, segment, pose, obb | 0.0 - 180 | يقوم بتدوير الصورة عشوائياً ضمن نطاق الدرجات المحدد، مما يحسن قدرة النموذج على التعرف على الكائنات في اتجاهات مختلفة. |
translate | float | 0.1 | detect, segment, pose, obb | 0.0 - 1.0 | يقوم بإزاحة الصورة أفقياً ورأسياً بجزء من حجم الصورة، مما يساعد في تعلم اكتشاف الكائنات المرئية جزئياً. |
scale | float | 0.5 | detect, segment, pose, obb, classify | 0 - 1 | يقوم بتحجيم الصورة بمعامل زيادة، مما يحاكي الكائنات على مسافات مختلفة من الكاميرا. |
shear | float | 0 | detect, segment, pose, obb | -180 - +180 | يقوم بقص الصورة (shear) بدرجة محددة، مما يحاكي تأثير رؤية الكائنات من زوايا مختلفة. |
perspective | float | 0 | detect, segment, pose, obb | 0.0 - 0.001 | يطبق تحويلاً منظورياً عشوائياً على الصورة، مما يعزز قدرة النموذج على فهم الكائنات في الفضاء ثلاثي الأبعاد. |
flipud | float | 0 | detect, segment, pose, obb, classify | 0.0 - 1.0 | يقلب الصورة رأساً على عقب بالاحتمال المحدد، مما يزيد من تباين البيانات دون التأثير على خصائص الكائن. |
fliplr | float | 0.5 | detect, segment, pose, obb, classify | 0.0 - 1.0 | يقلب الصورة من اليسار إلى اليمين بالاحتمال المحدد، وهو مفيد لتعلم الكائنات المتناظرة وزيادة تنوع مجموعة البيانات. |
bgr | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | يقلب قنوات الصورة من RGB إلى BGR بالاحتمال المحدد، وهو مفيد لزيادة المتانة ضد ترتيب القنوات غير الصحيح. |
mosaic | float | 1 | detect, segment, pose, obb | 0.0 - 1.0 | يجمع أربع صور تدريبية في صورة واحدة، مما يحاكي تركيبات مشهد مختلفة وتفاعلات بين الكائنات. فعال للغاية لفهم المشاهد المعقدة. |
mixup | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | يمزج صورتين وملصقاتهما لإنشاء صورة مركبة. يعزز قدرة النموذج على التعميم من خلال إدخال ضجيج التسميات والتباين البصري. |
cutmix | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | يجمع أجزاءً من صورتين، مما يخلق مزيجاً جزئياً مع الحفاظ على مناطق مميزة. يعزز متانة النموذج من خلال خلق سيناريوهات حجب. |
copy_paste | float | 0 | segment | 0.0 - 1.0 | ينسخ ويلصق الكائنات عبر الصور لزيادة حالات الكائنات. |
copy_paste_mode | str | flip | segment | - | يحدد استراتيجية copy-paste المراد استخدامها. تتضمن الخيارات 'flip' و 'mixup'. |
auto_augment | str | randaugment | classify | - | يطبق سياسة تعزيز محددة مسبقاً ('randaugment', 'autoaugment', أو 'augmix') لتعزيز أداء النموذج من خلال التنوع البصري. |
erasing | float | 0.4 | classify | 0.0 - 1.0 | يمسح عشوائياً مناطق من الصورة أثناء التدريب لتشجيع النموذج على التركيز على الميزات الأقل وضوحاً. |
augmentations | list | `` | detect, segment, pose, obb | - | تحويلات Albumentations مخصصة لتعزيز البيانات المتقدم (Python API فقط). يقبل قائمة من كائنات التحويل لاحتياجات التعزيز المتخصصة. |
يمكن تعديل هذه الإعدادات لتلبية المتطلبات المحددة لمجموعة البيانات والمهمة المطروحة. يمكن أن تساعد التجربة بقيم مختلفة في العثور على استراتيجية التعزيز المثلى التي تؤدي إلى أفضل أداء للنموذج.
لمزيد من المعلومات حول عمليات تعزيز التدريب، راجع قسم المرجع.
Link to this sectionالتسجيل#
عند تدريب نموذج YOLO26، قد تجد أنه من القيم تتبع أداء النموذج بمرور الوقت. هنا يأتي دور التسجيل. يوفر Ultralytics YOLO دعماً لثلاثة أنواع من المسجلات - Comet، و ClearML، و TensorBoard.
لاستخدام مسجل، حدده من القائمة المنسدلة في مقتطف الكود أعلاه وقم بتشغيله. سيتم تثبيت المسجل المختار وتهيئته.
Link to this sectionComet#
Comet هي منصة تسمح لعلماء البيانات والمطورين بتتبع ومقارنة وشرح وتحسين التجارب والنماذج. توفر وظائف مثل المقاييس في الوقت الفعلي، وفروق الكود، وتتبع المعلمات الفائقة.
لاستخدام Comet:
# pip install comet_ml
import comet_ml
comet_ml.init()تذكر تسجيل الدخول إلى حساب Comet الخاص بك على موقعهم الإلكتروني والحصول على مفتاح API الخاص بك. ستحتاج إلى إضافة هذا إلى متغيرات البيئة الخاصة بك أو إلى البرنامج النصي الخاص بك لتسجيل تجاربك.
Link to this sectionClearML#
ClearML هي منصة مفتوحة المصدر تعمل على أتمتة تتبع التجارب وتساعد في المشاركة الفعالة للموارد. وهي مصممة لمساعدة الفرق على إدارة وتنفيذ وإعادة إنتاج عمل التعلم الآلي الخاص بهم بكفاءة أكبر.
لاستخدام ClearML:
# pip install clearml
import clearml
clearml.browser_login()بعد تشغيل هذا البرنامج النصي، ستحتاج إلى تسجيل الدخول إلى حساب ClearML الخاص بك على المتصفح والمصادقة على جلستك.
Link to this sectionTensorBoard#
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 وتوجيهه إلى الدليل حيث يتم حفظ سجلات التدريب الخاصة بك.
بعد إعداد المسجل الخاص بك، يمكنك المتابعة في تدريب نموذجك. سيتم تسجيل جميع مقاييس التدريب تلقائياً في المنصة التي اخترتها، ويمكنك الوصول إلى هذه السجلات لمراقبة أداء نموذجك بمرور الوقت، ومقارنة النماذج المختلفة، وتحديد مجالات التحسين.
Link to this sectionالأسئلة الشائعة#
Link to this sectionهل يمكنني التدريب بدون GPU محلي؟#
نعم. تدعم منصة Ultralytics التدريب السحابي مع أرصدة مجانية للبدء. قم بتحميل مجموعة البيانات الخاصة بك، وحدد نموذجاً وGPU، وقم بالتدريب مباشرة من المتصفح. راجع دليل التدريب السحابي للحصول على التفاصيل.
Link to this sectionكيف يمكنني تدريب نموذج اكتشاف الكائنات باستخدام Ultralytics YOLO26؟#
لتدريب نموذج اكتشاف الكائنات باستخدام Ultralytics YOLO26، يمكنك استخدام Python API أو CLI. فيما يلي مثال لكليهما:
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)لمزيد من التفاصيل، راجع قسم إعدادات التدريب.
Link to this sectionما هي الميزات الرئيسية لوضع التدريب في Ultralytics YOLO26؟#
تتضمن الميزات الرئيسية لوضع التدريب في Ultralytics YOLO26 ما يلي:
- التنزيل التلقائي لمجموعة البيانات: يقوم بتنزيل مجموعات البيانات القياسية تلقائياً مثل COCO و VOC و ImageNet.
- دعم تعدد وحدات GPU: توسيع نطاق التدريب عبر وحدات GPU متعددة لمعالجة أسرع.
- تكوين المعلمات الفائقة: تخصيص المعلمات الفائقة من خلال ملفات YAML أو وسائط CLI.
- التصور والمراقبة: تتبع مقاييس التدريب في الوقت الفعلي للحصول على رؤى أفضل.
هذه الميزات تجعل التدريب فعالاً وقابلاً للتخصيص وفقاً لاحتياجاتك. لمزيد من التفاصيل، راجع قسم الميزات الرئيسية لوضع التدريب.
Link to this sectionكيف يمكنني استئناف التدريب من جلسة مقاطعة في 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)تحقق من القسم الخاص بـ استئناف التدريبات المتقطعة لمزيد من المعلومات.
Link to this sectionكيف يمكنني تدريب نموذج على مجموعة بيانات غير متوازنة؟#
يحدث عدم توازن الفئات عندما تحتوي بعض الفئات على أمثلة أقل بكثير من غيرها في بيانات التدريب الخاصة بك. يمكن أن يتسبب هذا في ضعف أداء النموذج على الفئات النادرة. يدعم 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 إذا كانت الفئات النادرة لا تزال ضعيفة الأداء. يمكنك التحقق من أوزان الفئة المحسوبة في سجلات التدريب للتحقق من توزيع الوزن.
Link to this sectionهل يمكنني تدريب نماذج YOLO26 على شرائح Apple silicon؟#
نعم، يدعم Ultralytics YOLO26 التدريب على شرائح Apple silicon باستخدام إطار عمل Metal Performance Shaders (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.
Link to this sectionما هي إعدادات التدريب الشائعة، وكيف أقوم بتكوينها؟#
يسمح لك Ultralytics YOLO26 بتكوين مجموعة متنوعة من إعدادات التدريب مثل حجم الدفعة، ومعدل التعلم، والحقب (epochs)، والمزيد من خلال الوسائط. إليك نظرة عامة موجزة:
| الوسيط | الافتراضي | الوصف |
|---|---|---|
model | None | مسار ملف النموذج للتدريب. |
data | None | مسار ملف تكوين مجموعة البيانات (على سبيل المثال، coco8.yaml). |
epochs | 100 | إجمالي عدد حقب التدريب. |
batch | 16 | حجم الدفعة، قابل للتعديل كعدد صحيح أو وضع تلقائي. |
imgsz | 640 | حجم الصورة المستهدف للتدريب. |
device | None | جهاز (أجهزة) الحوسبة للتدريب مثل cpu أو 0 أو 0,1 أو mps. |
save | True | يُمكّن حفظ نقاط فحص التدريب وأوزان النموذج النهائية. |
للحصول على دليل متعمق حول إعدادات التدريب، راجع قسم إعدادات التدريب.