نظرة عامة على مجموعات بيانات التجزئة الدلالية (Semantic Segmentation)
تقوم التجزئة الدلالية بتعيين تسمية فئة واحدة لكل بكسل في الصورة. وعلى عكس التجزئة المثيلية (Instance Segmentation)، لا تقوم التجزئة الدلالية بفصل الكائنات الفردية من نفس الفئة. هدف التدريب هو خريطة فئات كثيفة حيث يخزن كل بكسل معرف فئة (Class ID).
يشرح هذا الدليل تنسيق مجموعة البيانات المستخدم بواسطة نماذج التجزئة الدلالية Ultralytics YOLO ويسرد تكوينات مجموعات البيانات المضمنة المتاحة للتدريب والتحقق من الصحة.
تنسيقات مجموعات البيانات المدعومة
يتم دعم تنسيقين للتسميات. يختار محمل مجموعة البيانات المسار بناءً على ما إذا كان ملف YAML الخاص بمجموعة البيانات يحدد مفتاح masks_dir.
تنسيق قناع PNG
تستخدم مجموعات بيانات التجزئة الدلالية ملف صورة واحداً وملف قناع واحداً لكل عينة. القناع عبارة عن صورة ذات قناة واحدة، عادة بصيغة PNG، حيث تمثل قيمة كل بكسل فهرس الفئة للبكسل المقابل في الصورة.
- تمثل قيم البكسل
0و1و2... معرفات الفئات من تعيينnamesفي مجموعة البيانات. - تُعامل قيمة البكسل
255كتسمية تجاهل (ignore label) ويتم استبعادها من حساب الخسارة والمقاييس. - يجب أن تستخدم ملفات الأقنعة نفس الاسم الأساسي (stem) لملف الصورة المطابق لها، على سبيل المثال
frankfurt_000000_000294.png. - امتدادات الأقنعة المدعومة هي
.pngو.PNGو.bmpو.tif.
يحافظ التخطيط الافتراضي على الصور والأقنعة في مجلدات متوازية. تستبدل قيمة 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.
تنسيق تسمية المضلع (Polygon) لـ 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كتسمية تجاهل.
استخدم هذا المسار عندما تكون بياناتك مصنفة بالفعل كمضلعات مثيل وتريد نموذج تجزئة دلالية من نفس الملفات.
تنسيق YAML لمجموعة البيانات
يتم تكوين مجموعات بيانات التجزئة الدلالية باستخدام ملفات YAML. الحقول الرئيسية هي:
| المفتاح | الوصف |
|---|---|
path | الدليل الجذر لمجموعة البيانات. |
train | مسار صورة التدريب بالنسبة إلى path، أو مسار مطلق. |
val | مسار صورة التحقق بالنسبة إلى path، أو مسار مطلق. |
test | مسار صورة الاختبار الاختياري. |
masks_dir | اسم الدليل المستخدم للأقنعة الدلالية. احذف هذا المفتاح للتبديل إلى تنسيق تسمية المضلع 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. - لا تضف إدخال "خلفية" (background) إلى
names. بالنسبة لمجموعات البيانات متعددة الفئات، يقوم المحمل بإلحاق واحدة تلقائياً؛ بالنسبة لمجموعات البيانات ذات الفئة الواحدة، يظل التدريب على فئة واحدة — تصبح فئتك المعلنة1في القناع وتصبح البكسلات غير المغطاة0.
path: path/to/my-polygon-dataset
train: images/train
val: images/val
names:
0: person
1: carأسئلة شائعة
ما الفرق بين أقنعة التجزئة الدلالية وتسميات التجزئة المثيلية؟
أقنعة التجزئة الدلالية هي خرائط بكسل كثيفة. يخزن كل بكسل معرف فئة، وتوجد صورة قناع واحدة لكل صورة تدريب. تسميات التجزئة المثيلية في Ultralytics YOLO تستخدم ملفات نصية مع إحداثيات مضلعة، صف واحد لكل مثيل كائن.
ما هي قيمة البكسل التي يتم تجاهلها أثناء التدريب؟
تُستخدم قيمة البكسل 255 كتسمية تجاهل. يتم تخطي هذه البكسلات أثناء حساب الخسارة والمقاييس، وهو أمر مفيد للمناطق الفارغة، أو البكسلات غير المصنفة، أو الفئات خارج مجموعة تسميات التدريب.
هل يجب أن تتطابق أسماء ملفات القناع مع أسماء ملفات الصور؟
نعم. يجب أن يكون لكل قناع دلالي نفس الاسم الأساسي للملف للصورة المقابلة. يستبدل محمل مجموعة البيانات مكون دليل images بـ masks_dir ويبحث عن ملفات الأقنعة المطابقة.
هل يمكنني استخدام معرفات تسمية مجموعة البيانات الأصلية مباشرة؟
نعم، إذا كانت تتطابق بالفعل مع معرفات فئات names الخاصة بك. إذا كانت مجموعة بيانات المصدر تستخدم معرفات غير متجاورة أو تتضمن تسميات يجب تجاهلها، أضف قسماً لـ label_mapping لتحويل قيم بكسل المصدر إلى معرفات تدريب.
هل يمكنني استخدام مجموعة بيانات التجزئة المثيلية الخاصة بي لتدريب التجزئة الدلالية؟
نعم. تستخدم مجموعات بيانات التجزئة المثيلية تسميات مضلع Ultralytics YOLO (ملف .txt واحد لكل صورة يحتوي على صفوف <class-index> <x1> <y1> <x2> <y2> ...)، ويمكن إعادة استخدام نفس الملفات للتجزئة الدلالية — فقط احذف masks_dir من ملف YAML الخاص بمجموعة البيانات. يقوم المحمل بتحويل المضلعات إلى أقنعة لكل صورة أثناء التشغيل. بالنسبة لمجموعات البيانات متعددة الفئات (N > 1) يتم إلحاق فئة background إضافية ويتم بناء النموذج بـ N + 1 قنوات إخراج. بالنسبة لمجموعات البيانات ذات الفئة الواحدة (N == 1) يظل التدريب على فئة واحدة — يُظهر القناع فئتك المعلنة كـ 1 والبكسلات غير المغطاة كـ 0.