Meet YOLO26: next-gen vision AI.

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

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

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

Link to this sectionتنسيقات مجموعات البيانات المدعومة#

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

Link to this sectionتنسيق قناع 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.

Link to this sectionتنسيق تسمية المضلعات لـ YOLO#

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

يتم اختيار هذا المسار تلقائياً عند إغفال masks_dir في ملف YAML الخاص بمجموعة البيانات. السلوك:

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

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

Link to this sectionتنسيق YAML لمجموعة البيانات#

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

المفتاحالوصف
pathالدليل الجذري لمجموعة البيانات.
trainمسار صور التدريب بالنسبة إلى path، أو مسار مطلق.
valمسار صور التحقق بالنسبة إلى path، أو مسار مطلق.
testمسار اختياري لصور الاختبار.
masks_dirاسم الدليل المستخدم للأقنعة الدلالية. أغفل هذا المفتاح للتبديل إلى تنسيق تسمية المضلعات 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 وتتجاهل التسميات غير المستخدمة.

Link to this sectionالاستخدام#

قم بتدريب نموذج تجزئة دلالية 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)

Link to this sectionمجموعات البيانات المدعومة#

توفر Ultralytics ملفات YAML لمجموعة بيانات التجزئة الدلالية لهذه المجموعات:

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

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

Link to this sectionالخيار أ — أقنعة 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

Link to this sectionالخيار ب — تسميات المضلعات#

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

names:
    0: person
    1: car

Link to this sectionأسئلة شائعة#

Link to this sectionما الفرق بين أقنعة التجزئة الدلالية وتسميات التجزئة للمثيلات؟#

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

Link to this sectionما هي قيمة البكسل التي يتم تجاهلها أثناء التدريب؟#

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

Link to this sectionهل تحتاج أسماء ملفات القناع إلى مطابقة أسماء ملفات الصور؟#

نعم. يجب أن يكون لكل قناع دلالي نفس اسم الملف كالصورة المقابلة. يستبدل محمل مجموعة البيانات مكون دليل images بـ masks_dir ويبحث عن ملفات الأقنعة المطابقة.

Link to this sectionهل يمكنني استخدام معرفات تسمية مجموعة البيانات الأصلية مباشرة؟#

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

Link to this sectionهل يمكنني استخدام مجموعة بيانات التجزئة للمثيلات الخاصة بي لتدريب التجزئة الدلالية؟#

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

التعليقات