Ultralytics YOLO27: انضم إلى قائمة الانتظار.
Get Started
درّب أول نموذج YOLO لديك·البيانات·الدرس 5/10
الدرسمبتدئ

كتابة ملف YAML لمجموعة البيانات

اكتب ملف data.yaml لتحديد مجلداتك لـ Ultralytics وتسمية فئاتك، واجعل مساراته صالحة من أي مكان، واختبره سريعًا باستخدام yolo val.

ملف YAML لمجموعة البيانات هو العقد الذي يربط مجلداتك بكل أمر من أوامر Ultralytics. إذا أخطأت في مسار، فلن يعمل شيء؛ وإذا أخطأت في ترتيب الفئات، فسيعمل كل شيء، لكن كل تنبؤ سيحمل اسمًا خاطئًا دون أي تحذير.

في هذا الدرس، ستكتب data.yaml لمجموعة بيانات الحبوب، وستتعلم بالتحديد كيف يحل Ultralytics مساراتها كي تعمل على جهاز زميلك أيضًا، وستتحقق من ذلك بتشغيل التحقق من الصحة في سطر واحد يمنحك كذلك خط الأساس الذي ينبغي لتدريبك تجاوزه.

النتيجة

يمكنك كتابة data.yaml صالحًا من أي دليل عمل، والحفاظ على اتساق فهارس الفئات، وقراءة سطر الفحص yolo val للتأكد من اتصال مجموعة البيانات.

المسار السريع
إذا كنت تعرف الأساسيات بالفعل، فإليك النسخة المختصرة.
  1. عيّن path إلى جذر مجموعة البيانات، وعيّن train/val إلى مجلدات الصور نسبةً إليه.

  2. أدرج names على هيئة فهرس ← اسم، بما يطابق ملفات التسميات تمامًا.

  3. شغّل yolo val model=yolo26n.pt data=my_dataset/data.yaml واقرأ سطر الفحص.

  4. اجعل path مسارًا مطلقًا قبل مشاركته؛ ولا تضف فئات جديدة إلا في نهاية القائمة.

عملي

كتابة الملف#

صفحة الملف الشخصي في منصة Ultralytics تعرض مجموعات بيانات المستخدم، مع زر «مجموعة بيانات جديدة»

تحتوي مجموعات البيانات في منصة Ultralytics على فئاتها وتقسيماتها الخاصة، ويشير التدريب إليها بمعرّف URI مثل data=ul://username/datasets/name. أما على جهازك، فيؤدي ملف YAML دور هذا العقد. احفظ الملف باسم my_dataset/data.yaml:

path: my_dataset # dataset root: absolute, or relative to where you run yolo
train: images/train # relative to path
val: images/val # relative to path
# test: images/test  # optional held-out split

names:
  0: pill
المفتاحمطلوبالمعنى
pathلاجذر مجموعة البيانات؛ ويكون كل من train وval وtest مسارات نسبية إليه. إذا حُذف، فيُستخدم المجلد الذي يحتوي ملف YAML نفسه.
train, valنعممجلد صور، أو ملف .txt يسرد مسارات الصور، أو قائمة بأي منهما
testلاصور الاختبار المحجوبة عن التدريب، ويُقيَّم النموذج عليها باستخدام split=test فقط
namesنعمفهرس الفئة ← الاسم؛ ويحدد عدد عناصر القائمة عدد الفئات
downloadلاعنوان URL أو نص برمجي يجلب مجموعة البيانات عند غياب صورها

يشير train وval إلى مجلدي الصور؛ ويُعثر على التسميات باستبدال images بـ labels. يُعد ملف YAML لمجموعة coco8 مرجعًا أدنى صالحًا للعمل، ويوضح ملف YAML لمجموعة VOC مثالًا أكبر.

مثال تطبيقي: اختبره سريعًا#

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

yolo val model=yolo26n.pt data=my_dataset/data.yaml
val: Scanning my_dataset/labels/val... 23 images, 0 backgrounds, 0 corrupt: 100%
                 Class     Images  Instances      Box(P          R      mAP50  mAP50-95)
                   all         23        399     0.0256    0.00251      0.001     0.0002

اقرأ النتائج بالترتيب:

  1. Scanning my_dataset/labels/val: المجلد الذي حدده Ultralytics فعليًا. تحقق من أنه المجلد الذي قصدته.
  2. 23 images, 0 backgrounds, 0 corrupt: لكل صورة تحقق من الصحة ملف تسمية صالح. إذا ظهرت صور خلفية لم تقصدها أو كان أي عدد غير صحيح، فارجع إلى الدرس السابق.
  3. 399 عنصرًا: تحتوي ملفات التسميات على 399 حبّة.
  4. mAP50-95 بقيمة 0.0002: النتيجة صحيحة وليست مؤشرًا على عطل. لا تتضمن COCO فئة للحبوب، لذا لا يستطيع النموذج المدرّب مسبقًا العثور عليها. وهذه النتيجة القريبة من الصفر هي خط الأساس. عندما تكون فئاتك موجودة في COCO، مثل الأشخاص أو السيارات، يعطي الأمر نفسه خط أساس ذا دلالة.

اجعل المسارات صالحة من أي مكان#

ترجع معظم أخطاء «لم يُعثر على الصور» إلى المسارات. يحل Ultralytics المسار path على النحو التالي:

datasets_dir إعداد في Ultralytics؛ ويعرضه yolo settings، ويوضح دليل الإعدادات كيفية تغييره. تعتمد مجموعات البيانات المضمنة على هذا الخيار الاحتياطي: يعيّن coco8.yaml قيمة path: coco8 إضافةً إلى عنوان URL لـ download:، ولذلك يعمل data=coco8.yaml من أي مجلد.

قواعد اتخاذ القرار:

  • هل تعمل وحدك ودائمًا من مجلد المشروع؟ يكفي حينها استخدام مسار نسبي path.
  • زملاء الفريق أو الخوادم أو CI أو دفاتر الملاحظات في مجلدات أخرى؟ استخدم مسارًا مطلقًا path.
  • هل البيانات موجودة في مكان آخر وينبغي جلبها تلقائيًا؟ أضف download: مع رابط ZIP.

تعامل مع فهارس الفئات على أنها ثابتة ملزمة#

العدد الصحيح في بداية كل سطر تسمية هو فهرس في names. تتحقق Ultralytics من النطاق — Label class 1 exceeds dataset class count 1 — لكنها لا تستطيع التحقق من المعنى. إذا صدّرت أداة التوسيم لديك 0: forklift, 1: person بينما يذكر ملف YAML لديك 0: person, 1: forklift، فسينجح التدريب، وستبدو mAP في التحقق جيدة، لكن كل تنبؤ سيحمل اسمًا خاطئًا. اجعل لقائمة الفئات مصدرًا موحدًا للحقيقة، تتشاركه أداة التوسيم ونص التحويل وملف YAML وشيفرة النشر.

تجنّب هذه الأخطاء#

المسار النسبي انطلاقًا من المجلد الخطأ

العَرَض: FileNotFoundError: Dataset 'data.yaml' images not found, missing path '.../datasets/my_dataset/images/val'، مع ملاحظة عن مجلد تنزيل مجموعة البيانات. السبب: شغّلت الأمر من مجلد آخر، لذا لم يكن path النسبي موجودًا، وبحث Ultralytics بدلًا من ذلك ضمن datasets_dir. الحل: شغّل الأمر من مجلد المشروع، أو اجعل path مسارًا مطلقًا.

إعادة ترتيب الأسماء إجراء هدّام

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

تُدمج القوائم في مقياس واحد

يدمج val: [images/val_day, images/val_night] كلا المجلدين في مجموعة تحقق واحدة ويعرض قيمة واحدة. لرؤية نتائج النهار والليل كلٌّ على حدة — أو مجموعة انحدار منتقاة إلى جانب عينة إنتاج حديثة — احتفظ بملف YAML لكل مجموعة وتحقق من كل واحدة. يتناول تقسيم مجموعة البيانات على النحو الصحيح تقسيم test الذي تقيّمه مرة واحدة فقط باستخدام split=test.

إعدادات التدريب مثل زيادة البيانات والتخزين المؤقت هي وسيطات لـ train وليست مفاتيح YAML؛ وتجدها جميعًا في مرجع الإعدادات.

جرّبه

اكتب my_dataset/data.yaml وشغّل yolo val model=yolo26n.pt data=my_dataset/data.yaml. سجّل أعداد الصور والخلفيات والملفات التالفة والعينات، وقيمة mAP50-95 الأساسية. ثم انسخ cd إلى مجلد مختلف، وأعد التشغيل باستخدام المسار الوارد في ملف YAML، واقرأ الخطأ، وأصلح ملف YAML كي يعمل الأمر من أي مكان. سلّم ملف YAML المصحح وسطرَي الفحص.

متى يُعدّ مكتملًا
تكون قد أتممت الدرس عند تحقق جميع الشروط التالية.
  • يُبلغ yolo val عن 23 صورة و0 خلفية و0 ملفات تالفة لملف YAML لديك.

  • لقد سجّلت قيمة mAP50-95 الأساسية المُسبقة التدريب لمجموعة البيانات.

  • يعمل ملف YAML لديك من أي مجلد عمل لأن path مطلق.

عرض الحل
path: /home/you/projects/pills/my_dataset # absolute path to the dataset root
train: images/train
val: images/val

names:
  0: pill
val: Scanning /home/you/projects/pills/my_dataset/labels/val... 23 images, 0 backgrounds, 0 corrupt
                   all         23        399     0.0256    0.00251      0.001     0.0002

من مجلد آخر، فشل الإصدار النسبي مع Dataset ... images not found لأن my_dataset لم يكن موجودًا هناك، كما لم توجد نسخة في المسار البديل datasets_dir. يزيل المسار المطلق path هذا البحث. تبلغ قيمة mAP50-95 الأساسية نحو 0: فالنموذج المُسبق التدريب لا يتضمن فئة للأقراص.

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

أصبحت البيانات متصلة وسُجّلت القيمة الأساسية. الخطوة التالية هي تدريب YOLO26 عليها.

سجّل الدخول لحفظ التقدم