Ultralytics YOLO27:

نظرة عامة على مجموعات بيانات التجزئة الدلالية#

تُسند التجزئة الدلالية تسمية فئة واحدة إلى كل بكسل في الصورة. وعلى خلاف تجزئة المثيلات، لا تفصل التجزئة الدلالية بين الكائنات الفردية من الفئة نفسها. ويكون هدف التدريب خريطة فئات كثيفة، حيث يخزن كل بكسل معرّف فئة.

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

تنسيقات مجموعات البيانات المدعومة#

يُدعَم تنسيقان للتسميات. يختار محمّل مجموعة البيانات أقنعة PNG عندما يعرّف YAML الخاص بمجموعة البيانات مفتاح masks_dir، أو عندما يكون مجلد masks/ موجودًا بالفعل بجوار صورك في جذر مجموعة البيانات؛ وإلا فإنه يعود إلى تسميات مضلعات YOLO.

تنسيق قناع PNG#

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

  • تمثل قيم البكسلات 0 و1 و2 و... معرّفات الفئات من تعيين مجموعة البيانات names.
  • تُعامل قيمة البكسل 255 على أنها تسمية التجاهل، وتُستبعد من حساب الخسارة والمقاييس.
  • ينبغي أن تستخدم ملفات الأقنعة الاسم الأساسي نفسه لملف الصورة المطابق لها، مثل frankfurt_000000_000294.png.
  • يُحلّ تعيين ملفات الأقنعة إلى .png افتراضيًا؛ وإذا لم يُعثر عليه، تُقبل أيضًا امتدادات الصور الأخرى المدعومة. استخدم تنسيقات غير فاقدة مثل .png أو .tiff، لأن الضغط الفاقد (مثل .jpg) يُفسد قيم بكسلات معرّفات الفئات.

يُبقي التخطيط الافتراضي الصور والأقنعة في مجلدات متوازية. وتستبدل قيمة masks_dir من YAML الخاص بمجموعة البيانات مكوّن المسار images للعثور على الأقنعة.

dataset/
├── images/
│   ├── train/
│   └── val/
└── masks/
    ├── train/
    └── val/

على سبيل المثال، تُقرن صورة موجودة في images/train/aachen_000000_000019.png بقناع موجود في masks/train/aachen_000000_000019.png عندما يكون masks_dir: masks.

تنسيق تسميات مضلعات YOLO#

إذا كانت مجموعة بياناتك تحتوي بالفعل على تسميات مضلعات Ultralytics YOLO (ملف .txt واحد لكل صورة، مع صفوف <class-index> <x1> <y1> <x2> <y2> ...)، فيمكنك تدريب التجزئة الدلالية مباشرةً منها — من دون الحاجة إلى تحويل أقنعة PNG. راجع تنسيق مجموعة بيانات تجزئة المثيلات لمعرفة تخطيط الصفوف.

يُحدَّد هذا المسار تلقائيًا عندما يحذف YAML الخاص بمجموعة البيانات masks_dir ولا يوجد مجلد masks/ بجوار صورك في جذر مجموعة البيانات — أزل أي مجلد masks/ متبقٍّ أو أعد تسميته، وإلا فسيعود المحمّل إلى وضع أقنعة PNG ويبحث عن الأقنعة هناك بدلًا من ذلك. السلوك:

  • تُحوَّل المضلعات إلى قناع دلالي لكل صورة عند التحميل، وتُرتَّب حسب المساحة بحيث تتغلب الكائنات الأصغر على الأكبر في مناطق التداخل.
  • متعدد الفئات (N > 1 في names): تُضاف فئة background إضافية بعد الفئات المعلنة للبكسلات التي لا يغطيها أي مضلع. ويُبنى النموذج باستخدام N + 1 قنوات إخراج، وتكون القناة الأخيرة للخلفية.
  • أحادي الفئة (N == 1 في names): يظل التدريب على فئة واحدة. ويكون القناع ثنائيًا، فتظهر الفئة المعلنة كـ 1، وتظهر البكسلات التي لا يغطيها أي مضلع كـ 0. ولا تُضاف فئة خلفية إضافية إلى names.
  • تستخدم البكسلات المضافة بواسطة الحشو الناتج عن زيادة البيانات (مثل الاقتصاص العشوائي) 255 أيضًا كتسمية تجاهل.

استخدم هذا المسار عندما تكون بياناتك معنونة بالفعل كمضلعات مثيلات وتريد نموذج تجزئة دلالية من الملفات نفسها.

تنسيق YAML لمجموعة البيانات#

تُكوَّن مجموعات بيانات التجزئة الدلالية باستخدام ملفات YAML. والحقول الرئيسية هي:

المفتاحالوصف
pathدليل جذر مجموعة البيانات.
trainمسار صور التدريب بالنسبة إلى path، أو مسار مطلق.
valمسار صور التحقق بالنسبة إلى path، أو مسار مطلق.
testمسار اختياري لصور الاختبار.
masks_dirاسم الدليل المستخدم للأقنعة الدلالية. احذف هذا المفتاح (مع عدم وجود مجلد masks/ في جذر مجموعة البيانات) للتبديل إلى تنسيق تسميات مضلعات YOLO.
namesتعيين معرّف الفئة إلى اسم الفئة.
label_mappingتعيين اختياري من معرّفات مجموعة البيانات المصدر إلى معرّفات التدريب أو ignore_label.
ultralytics/cfg/datasets/cityscapes8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Cityscapes semantic segmentation dataset (19 classes)
# Documentation: https://docs.ultralytics.com/datasets/semantic/cityscapes8
# Example usage: yolo semantic train data=cityscapes8.yaml model=yolo26n-sem.pt
# parent
# ├── ultralytics
# └── datasets
#     └── cityscapes8 ← downloads here (small subset)
#         └── images
#         └── masks

# Dataset root directory
path: cityscapes8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images

masks_dir: masks # semantic mask directory

# Cityscapes 19-class labels
names:
  0: road
  1: sidewalk
  2: building
  3: wall
  4: fence
  5: pole
  6: traffic light
  7: traffic sign
  8: vegetation
  9: terrain
  10: sky
  11: person
  12: rider
  13: car
  14: truck
  15: bus
  16: train
  17: motorcycle
  18: bicycle

# Map source label IDs to train IDs; ignore_label is converted to 255.
label_mapping:
  -1: ignore_label
  0: ignore_label
  1: ignore_label
  2: ignore_label
  3: ignore_label
  4: ignore_label
  5: ignore_label
  6: ignore_label
  7: 0
  8: 1
  9: ignore_label
  10: ignore_label
  11: 2
  12: 3
  13: 4
  14: ignore_label
  15: ignore_label
  16: ignore_label
  17: 5
  18: ignore_label
  19: 6
  20: 7
  21: 8
  22: 9
  23: 10
  24: 11
  25: 12
  26: 13
  27: 14
  28: 15
  29: ignore_label
  30: ignore_label
  31: 16
  32: 17
  33: 18

# Download URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/cityscapes8.zip

استخدم label_mapping عندما لا تتطابق معرّفات الأقنعة المصدرية بالفعل مع معرّفات فئات التدريب المتتالية. تتضمن Cityscapes وADE20K تعيينات تحوّل معرّفات التسميات الأصلية إلى معرّفات تدريب التجزئة الدلالية في YOLO وتتجاهل التسميات غير المستخدمة.

الاستخدام#

درّب نموذج YOLO26 للتجزئة الدلالية باستخدام Python أو CLI:

مثال
from ultralytics import YOLO

# Load a pretrained semantic segmentation model
model = YOLO("yolo26n-sem.pt")

# Train on the Cityscapes8 semantic segmentation dataset
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

مجموعات البيانات المدعومة#

توفر Ultralytics ملفات YAML لمجموعات بيانات التجزئة الدلالية لهذه المجموعات. راجع صفحة مهمة التجزئة الدلالية للاطلاع على جدول قياس أداء النماذج المدرَّبة مسبقًا كاملًا.

  • Cityscapes: مجموعة بيانات لتجزئة المشاهد الحضرية الدلالية، تضم 19 فئة تدريب.
  • Cityscapes8: مجموعة فرعية من Cityscapes تتكون من 8 صور للاختبارات السريعة وفحوصات CI.
  • ADE20K: مجموعة بيانات لتحليل المشاهد، تضم 150 فئة دلالية.

إضافة مجموعة البيانات الخاصة بك#

الخيار أ — أقنعة PNG#

  1. احفظ صورك ضمن مجلدات التقسيم مثل images/train وimages/val.
  2. احفظ قناعًا أحادي القناة واحدًا لكل صورة ضمن مجلدات الأقنعة المناظرة، مثل masks/train وmasks/val.
  3. تأكد من أن قيم بكسلات القناع هي معرّفات فئات. استخدم 255 للبكسلات التي ينبغي تجاهلها.
  4. أنشئ YAML لمجموعة البيانات باستخدام path وtrain وval وmasks_dir وnames.
  5. أضف label_mapping فقط عندما تحتاج معرّفات الأقنعة إلى تحويلها إلى معرّفات تدريب متتالية.
path: path/to/my-semantic-dataset
train: images/train
val: images/val
masks_dir: masks

names:
    0: background
    1: road
    2: building

الخيار ب — تسميات المضلعات#

  1. رتّب الصور وملفات المضلعات .txt تمامًا كما هو الحال في تجزئة المثيلات.
  2. أنشئ YAML لمجموعة البيانات باستخدام path وtrain وval وnamesواحذف masks_dir.
  3. تأكد من عدم وجود مجلد masks/ بجوار صورك في جذر مجموعة البيانات — إذ يؤدي وجوده وحده إلى تحويل المحمّل إلى وضع أقنعة PNG حتى من دون masks_dir في YAML.
  4. لا تضف إدخالًا باسم "background" إلى names. ففي مجموعات البيانات متعددة الفئات، يضيفه المحمّل تلقائيًا؛ أما في مجموعات البيانات أحادية الفئة، فيبقى التدريب على فئة واحدة — وتصبح فئتك المعلنة 1 في القناع، بينما تصبح البكسلات غير المغطاة 0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val

names:
    0: person
    1: car

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

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

  • أقنعة التجزئة الدلالية خرائط بكسلات كثيفة. يخزن كل بكسل معرّف فئة، وتوجد صورة قناع واحدة لكل صورة تدريب. أما تسميات تجزئة المثيلات في Ultralytics YOLO فتستخدم ملفات نصية تحتوي على إحداثيات المضلعات، مع صف واحد لكل مثيل كائن.

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

  • نعم. ينبغي أن يحمل كل قناع دلالي الاسم الأساسي نفسه للصورة المقابلة. يستبدل محمّل مجموعة البيانات مكوّن الدليل images بـ masks_dir ويبحث عن ملفات الأقنعة المطابقة، ثم يعود إلى امتدادات الصور المدعومة الأخرى (.jpg و.tiff وما إلى ذلك) إذا لم يُعثر على قناع .png — مع أن التنسيقات غير الفاقدة موصى بها فقط، لأن آلية الرجوع لا تفرض ذلك.

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

  • نعم. تستخدم مجموعات بيانات تجزئة المثيلات تسميات مضلعات Ultralytics YOLO (ملف .txt واحد لكل صورة مع صفوف <class-index> <x1> <y1> <x2> <y2> ...)، ويمكن إعادة استخدام الملفات نفسها للتجزئة الدلالية — ما عليك سوى حذف masks_dir من YAML الخاص بمجموعة البيانات، والتأكد من عدم وجود مجلد masks/ بجوار صورك في جذر مجموعة البيانات (فوجوده وحده يُفعّل وضع أقنعة PNG حتى من دون تعيين masks_dir). ثم يحوّل المحمّل المضلعات إلى أقنعة لكل صورة أثناء التشغيل. بالنسبة إلى مجموعات البيانات متعددة الفئات (N > 1)، تُضاف فئة background إضافية، ويُبنى النموذج باستخدام N + 1 قنوات إخراج. أما مجموعات البيانات أحادية الفئة (N == 1)، فيبقى التدريب على فئة واحدة — ويعرض القناع فئتك المعلنة كـ 1 والبكسلات غير المغطاة كـ 0.

  • تتضمن Ultralytics ملفات YAML جاهزة للاستخدام لمجموعات Cityscapes (19 فئة لمشاهد حضرية)، والمجموعة الفرعية الخفيفة Cityscapes8 لاختبار مسارات المعالجة، وADE20K (150 فئة لتحليل المشاهد). توثق كل صفحة قائمة الفئات الدقيقة وخطوات التنزيل ومثال تدريب موثّقًا.

التعليقات