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 🚀 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#
- احفظ صورك تحت مجلدات التقسيم مثل
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: buildingLink to this sectionالخيار ب — تسميات المضلعات#
- قم بترتيب الصور وملفات المضلعات
.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: carLink 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.