تدريب النموذج باستخدام Ultralytics YOLO
مقدمة
يتضمن تدريب نموذج التعلم العميق تزويده بالبيانات وضبط معاملاته ليتمكن من إجراء تنبؤات دقيقة. تم تصميم وضع التدريب (Train mode) في Ultralytics YOLO26 للتدريب الفعال والناجع لنماذج اكتشاف الكائنات، مع الاستفادة الكاملة من إمكانات الأجهزة الحديثة. يهدف هذا الدليل إلى تغطية جميع التفاصيل التي تحتاجها للبدء في تدريب نماذجك الخاصة باستخدام مجموعة ميزات YOLO26 القوية.
Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.
لماذا تختار Ultralytics YOLO للتدريب؟
فيما يلي بعض الأسباب المقنعة لاختيار وضع التدريب في YOLO26:
- الكفاءة: حقق أقصى استفادة من أجهزتك، سواء كنت تعمل على إعداد GPU واحد أو توسع نطاق العمل عبر وحدات GPU متعددة.
- تعدد الاستخدامات: تدرب على مجموعات بيانات مخصصة بالإضافة إلى المجموعات المتاحة بسهولة مثل COCO وVOC وImageNet.
- سهولة الاستخدام: واجهات CLI وPython بسيطة وقوية لتجربة تدريب مباشرة.
- مرونة المعاملات الفائقة: مجموعة واسعة من المعاملات الفائقة القابلة للتخصيص لضبط أداء النموذج. لمزيد من التحكم، يمكنك تخصيص المدرب نفسه.
- التدريب السحابي: تدرب على وحدات GPU سحابية من خلال منصة Ultralytics مع مقاييس في الوقت الفعلي وحفظ نقاط التحقق التلقائي.
الميزات الرئيسية لوضع التدريب
فيما يلي بعض الميزات البارزة لوضع التدريب في 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، قد تتلقى 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)التدريب باستخدام وحدات GPU متعددة
يسمح التدريب باستخدام وحدات GPU متعددة باستغلال أكثر كفاءة لموارد الأجهزة المتاحة من خلال توزيع حمل التدريب عبر وحدات GPU متعددة. تتوفر هذه الميزة من خلال كل من واجهة برمجة تطبيقات Python وواجهة سطر الأوامر. لتمكين التدريب باستخدام وحدات 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])عند تحديد أجهزة متعددة (مثل 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 خمولاً تلقائيًا للتدريب، استخدم معامل الجهاز -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 فارغة)
- درجة حرارة واستهلاك طاقة أقل
تعد هذه الميزة قيمة بشكل خاص في بيئات الحوسبة المشتركة أو عند تشغيل مهام تدريب متعددة عبر نماذج مختلفة. وهي تتكيف تلقائيًا مع ظروف النظام المتغيرة، مما يضمن تخصيص الموارد الأمثل دون تدخل يدوي.
التدريب باستخدام 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.
استئناف التدريبات المقاطعة
يعد استئناف التدريب من حالة محفوظة مسبقًا ميزة حاسمة عند العمل مع نماذج التعلم العميق. يمكن أن يكون هذا مفيدًا في سيناريوهات مختلفة، مثل عندما تتم مقاطعة عملية التدريب بشكل غير متوقع، أو عندما ترغب في مواصلة تدريب نموذج ببيانات جديدة أو لدورات تدريبية إضافية.
عند استئناف التدريب، يقوم 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 المتعامدة أن تساعد في استقرار التحسين.
فقط المعاملات ذات param.ndim >= 2 (مثل أوزان التفافية) تتلقى تحديث نمط 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.
| المعامل | النوع | الافتراضي | الوصف |
|---|---|---|---|
model | str | None | يحدد ملف النموذج للتدريب. يقبل مساراً إما لنموذج مُدرب مسبقاً .pt أو ملف إعدادات .yaml. ضروري لتحديد بنية النموذج أو تهيئة الأوزان. |
data | str | None | مسار ملف إعدادات مجموعة البيانات (مثلاً coco8.yaml). يحتوي هذا الملف على معاملات خاصة بمجموعة البيانات، بما في ذلك مسارات بيانات التدريب وبيانات التحقق، وأسماء الفئات، وعدد الفئات. |
epochs | int | 100 | إجمالي عدد دورات التدريب (epochs). تمثل كل دورة تمريرة كاملة عبر مجموعة البيانات بالكامل. تعديل هذه القيمة يمكن أن يؤثر على مدة التدريب وأداء النموذج. |
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 | عدد خيوط العمل لتحميل البيانات (لكل 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 | يضبط البذرة العشوائية للتدريب، مما يضمن قابلية تكرار النتائج عبر التشغيلات بنفس الإعدادات. |
deterministic | bool | True | يفرض استخدام خوارزمية حتمية، مما يضمن قابلية التكرار ولكنه قد يؤثر على الأداء والسرعة بسبب القيود المفروضة على الخوارزميات غير الحتمية. |
verbose | bool | True | يُمكّن المخرجات التفصيلية أثناء التدريب، حيث يعرض أشرطة التقدم، ومقاييس كل دورة، ومعلومات تدريب إضافية في وحدة التحكم. |
single_cls | bool | False | يعامل جميع الفئات في مجموعات البيانات متعددة الفئات كفئة واحدة أثناء التدريب. مفيد لمهام التصنيف الثنائي أو عند التركيز على وجود الكائن بدلاً من تصنيفه. |
classes | list[int] | None | يحدد قائمة بمعرفات الفئات للتدريب عليها. مفيد لتصفية والتركيز فقط على فئات معينة أثناء التدريب. |
rect | bool | False | يُمكّن استراتيجية الحشو الأدنى—يتم حشو الصور في دفعة بحد أدنى للوصول إلى حجم مشترك، مع تساوي الجانب الأطول مع imgsz. يمكن أن يحسن الكفاءة والسرعة ولكنه قد يؤثر على دقة النموذج. |
multi_scale | float | 0.0 | يغير حجم imgsz عشوائياً في كل دفعة بمقدار +/- multi_scale (مثلاً 0.25 -> 0.75x إلى 1.25x)، مع التقريب إلى مضاعفات خطوة النموذج؛ 0.0 يعطل التدريب متعدد المقاييس. |
cos_lr | bool | False | يستخدم مجدول معدل التعلم جيب التمام، حيث يقوم بضبط معدل التعلم باتباع منحنى جيب التمام عبر العصور (epochs). يساعد في إدارة معدل التعلم لتحقيق تقارب أفضل. |
close_mosaic | int | 10 | يعطل زيادة البيانات بنمط الفسيفساء (mosaic) في آخر N عصور لتثبيت التدريب قبل اكتماله. ضبط القيمة على 0 يعطل هذه الميزة. |
resume | bool | False | يستأنف التدريب من آخر نقطة تفتيش (checkpoint) تم حفظها. يقوم تلقائيًا بتحميل أوزان النموذج، وحالة المُحسن (optimizer)، وعدد العصور، مما يضمن استمرار التدريب بسلاسة. |
amp | bool | True | يُمكّن تدريب الدقة المختلطة التلقائية (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) في النماذج المدربة لتقدير الوضع، مما يؤثر على التركيز على التنبؤ الدقيق للنقاط الرئيسية للوضع. |
kobj | float | 1.0 | وزن خسارة وجود النقاط الرئيسية (keypoint objectness) في نماذج تقدير الوضع، مما يوازن بين ثقة الكشف ودقة الوضع. |
rle | float | 1.0 | وزن خسارة تقدير احتمالية اللوغاريتم المتبقية (residual log-likelihood estimation) في نماذج تقدير الوضع، مما يؤثر على دقة تحديد مواقع النقاط الرئيسية. |
angle | float | 1.0 | وزن خسارة الزاوية في نماذج OBB، مما يؤثر على دقة تنبؤات زاوية صندوق الإحاطة الموجه. |
nbs | int | 64 | حجم الدفعة الاسمي (nominal batch size) لتطبيع الخسارة. |
overlap_mask | bool | True | يحدد ما إذا كان يجب دمج أقنعة الكائنات في قناع واحد للتدريب، أو الاحتفاظ بها منفصلة لكل كائن. في حالة التداخل، يتم وضع القناع الأصغر فوق القناع الأكبر أثناء الدمج. |
mask_ratio | int | 4 | نسبة التقليل (downsample) لأقنعة التجزئة (segmentation masks)، مما يؤثر على دقة الأقنعة المستخدمة أثناء التدريب. |
dropout | float | 0.0 | معدل الإسقاط (dropout) للتنظيم في مهام التصنيف، مما يمنع الإفراط في التخصيص عن طريق حذف الوحدات عشوائيًا أثناء التدريب. |
val | bool | True | يُمكّن التحقق (validation) أثناء التدريب، مما يسمح بالتقييم الدوري لأداء النموذج على مجموعة بيانات منفصلة. |
plots | bool | True | ينشئ ويحفظ رسومًا بيانية لمقاييس التدريب والتحقق، بالإضافة إلى أمثلة التنبؤ، مما يوفر رؤى مرئية حول أداء النموذج وتقدم التعلم. |
compile | bool أو str | False | يُمكّن تجميع الرسم البياني لـ PyTorch 2.x torch.compile مع 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 واحد؛ سيؤدي التدريب باستخدام وحدات GPU متعددة (DDP) إلى ظهور الخطأ على الفور.
إعدادات زيادة البيانات والمعاملات الفائقة
تعد تقنيات زيادة البيانات ضرورية لتحسين قوة وأداء نماذج 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 | يقص الصورة بدرجة محددة، مما يحاكي تأثير عرض الكائنات من زوايا مختلفة. |
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 | يجمع أجزاءً من صورتين، مما ينشئ مزيجاً جزئياً مع الحفاظ على مناطق متميزة. يعزز متانة النموذج من خلال إنشاء سيناريوهات حجب (occlusion). |
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 فقط). يقبل قائمة من كائنات التحويل لاحتياجات التعزيز المتخصصة. |
يمكن تعديل هذه الإعدادات لتلبية المتطلبات المحددة لمجموعة البيانات والمهمة قيد التنفيذ. يمكن أن يساعد التجريب بقيم مختلفة في العثور على استراتيجية التعزيز المثلى التي تؤدي إلى أفضل أداء للنموذج.
لمزيد من المعلومات حول عمليات تعزيز التدريب، راجع قسم المراجع.
التسجيل (Logging)
عند تدريب نموذج YOLO26، قد تجد أنه من القيم متابعة أداء النموذج بمرور الوقت. وهنا يأتي دور التسجيل. يوفر Ultralytics YOLO دعماً لثلاثة أنواع من المسجلات - Comet و ClearML و TensorBoard.
لاستخدام مسجل، حدده من القائمة المنسدلة في مقتطف الكود أعلاه وقم بتشغيله. سيتم تثبيت المسجل المختار وتهيئته.
Comet
Comet هي منصة تسمح لعلماء البيانات والمطورين بتتبع ومقارنة وشرح وتحسين التجارب والنماذج. إنها توفر وظائف مثل المقاييس في الوقت الفعلي، وفروق الكود (code diffs)، وتتبع المعلمات الفائقة.
لاستخدام 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. فيما يلي مثال لكليهما:
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)لمزيد من التفاصيل، راجع قسم إعدادات التدريب.
ما هي الميزات الرئيسية لوضع التدريب (Train mode) في Ultralytics YOLO26؟
تشمل الميزات الرئيسية لوضع التدريب في Ultralytics YOLO26 ما يلي:
- تنزيل تلقائي لمجموعة البيانات: يقوم بتنزيل مجموعات البيانات القياسية تلقائياً مثل COCO و VOC و ImageNet.
- دعم تعدد الـ GPU: توسيع نطاق التدريب عبر وحدات GPU متعددة لمعالجة أسرع.
- تكوين المعلمات الفائقة: تخصيص المعلمات الفائقة من خلال ملفات YAML أو وسائط CLI.
- التصور والمراقبة: تتبع مقاييس التدريب في الوقت الفعلي للحصول على رؤى أفضل.
تجعل هذه الميزات التدريب فعالاً وقابلاً للتخصيص ليناسب احتياجاتك. لمزيد من التفاصيل، راجع قسم الميزات الرئيسية لوضع التدريب.
كيف يمكنني استئناف التدريب من جلسة تمت مقاطعتها في Ultralytics YOLO26؟
لاستئناف التدريب من جلسة تمت مقاطعتها، اضبط وسيط resume على True وحدد المسار إلى آخر نقطة تفتيش (checkpoint) تم حفظها.
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' كجهاز التدريب الخاص بك.
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 بتكوين مجموعة متنوعة من إعدادات التدريب مثل حجم الدفعة (batch size)، ومعدل التعلم، والحقب (epochs)، والمزيد من خلال الوسائط. إليك نظرة عامة موجزة:
| المعامل | الافتراضي | الوصف |
|---|---|---|
model | None | المسار إلى ملف النموذج للتدريب. |
data | None | المسار إلى ملف تكوين مجموعة البيانات (على سبيل المثال، coco8.yaml). |
epochs | 100 | العدد الإجمالي لحقب التدريب. |
batch | 16 | حجم الدفعة، قابل للتعديل كرقم صحيح أو وضع تلقائي. |
imgsz | 640 | حجم الصورة المستهدف للتدريب. |
device | None | جهاز (أجهزة) الحوسبة للتدريب مثل cpu أو 0 أو 0,1 أو mps. |
save | True | يُمكّن حفظ نقاط تفتيش التدريب وأوزان النموذج النهائية. |
للحصول على دليل متعمق حول إعدادات التدريب، راجع قسم إعدادات التدريب.