نظرة عامة على مجموعات بيانات التجزئة الدلالية#
تُسند التجزئة الدلالية تسمية فئة واحدة إلى كل بكسل في الصورة. وعلى خلاف تجزئة المثيلات، لا تفصل التجزئة الدلالية بين الكائنات الفردية من الفئة نفسها. ويكون هدف التدريب خريطة فئات كثيفة، حيث يخزن كل بكسل معرّف فئة.
يشرح هذا الدليل تنسيق مجموعة البيانات المستخدم في نماذج 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 🚀 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#
- احفظ صورك ضمن مجلدات التقسيم مثل
images/trainوimages/val. - احفظ قناعًا أحادي القناة واحدًا لكل صورة ضمن مجلدات الأقنعة المناظرة، مثل
masks/trainوmasks/val. - تأكد من أن قيم بكسلات القناع هي معرّفات فئات. استخدم
255للبكسلات التي ينبغي تجاهلها. - أنشئ YAML لمجموعة البيانات باستخدام
pathوtrainوvalوmasks_dirوnames. - أضف
label_mappingفقط عندما تحتاج معرّفات الأقنعة إلى تحويلها إلى معرّفات تدريب متتالية.
path: path/to/my-semantic-dataset
train: images/train
val: images/val
masks_dir: masks
names:
0: background
1: road
2: buildingالخيار ب — تسميات المضلعات#
- رتّب الصور وملفات المضلعات
.txtتمامًا كما هو الحال في تجزئة المثيلات. - أنشئ YAML لمجموعة البيانات باستخدام
pathوtrainوvalوnames— واحذفmasks_dir. - تأكد من عدم وجود مجلد
masks/بجوار صورك في جذر مجموعة البيانات — إذ يؤدي وجوده وحده إلى تحويل المحمّل إلى وضع أقنعة PNG حتى من دونmasks_dirفي YAML. - لا تضف إدخالًا باسم "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 فئة لتحليل المشاهد). توثق كل صفحة قائمة الفئات الدقيقة وخطوات التنزيل ومثال تدريب موثّقًا.