نظرة عامة على مجموعات بيانات التقسيم الدلالي#
يسند التقسيم الدلالي تسمية فئة واحدة إلى كل بكسل في الصورة. وعلى عكس تقسيم الكائنات الفردية، لا يفصل التقسيم الدلالي بين الكائنات الفردية التي تنتمي إلى الفئة نفسها. والهدف التدريبي هو خريطة فئات كثيفة تخزّن معرّف فئة لكل بكسل.
يوضح هذا الدليل تنسيق مجموعة البيانات الذي تستخدمه نماذج 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
# تحميل نموذج مُدرّب مسبقًا للتجزئة الدلالية
model = YOLO("yolo26n-sem.pt")
# التدريب على مجموعة بيانات Cityscapes8 للتجزئة الدلالية
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). بعد ذلك، تحوّل أداة التحميل المضلعات إلى أقنعة لكل صورة أثناء التشغيل. تُضاف فئةbackgroundإضافية لمجموعات البيانات متعددة الفئات (N > 1)، ويُبنى النموذج بقنوات إخراجN + 1. أما التدريب على مجموعات البيانات أحادية الفئة (N == 1) فيبقى بفئة واحدة — إذ يُظهر القناع الفئة التي أعلنت عنها بوصفها1، والبكسلات غير المغطاة بوصفها0.تتضمن Ultralytics ملفات YAML جاهزة للاستخدام لمجموعات بيانات Cityscapes (19 فئة للمشاهد الحضرية)، والمجموعة الفرعية خفيفة الوزن Cityscapes8 لاختبار مسارات المعالجة، وADE20K (150 فئة لتحليل المشاهد). توثّق كل صفحة قائمة الفئات الدقيقة وخطوات التنزيل ومثال تدريب تم التحقق منه.