Ultralytics YOLO27:

مجموعة بيانات Cityscapes#

تُعد مجموعة بيانات Cityscapes معيارًا مرجعيًا واسع النطاق لـالتقسيم الدلالي لمشاهد الشوارع الحضرية الملتقطة في 50 مدينة أوروبية، وتضم 2,975 صورة تدريب مشروحة بدقة و500 صورة تحقق موزعة على 19 فئة. وهي إحدى أكثر مجموعات البيانات استخدامًا في أبحاث القيادة الذاتية وفهم المشاهد الحضرية باستخدام نماذج Ultralytics YOLO.

الميزات الرئيسية#

  • تتضمن التعليقات التوضيحية الدقيقة في Cityscapes عدد 2,975 صورة تدريب و500 صورة تحقق موزعة على 19 فئة؛ كما يضم الأرشيف 1,525 صورة اختبار، لكن الأقنعة المنشورة لها لا تُصنّف سوى المركبة الذاتية للسيارة وحدود الصورة — أما التعليقات التوضيحية الحقيقية للفئات فمحجوبة، وتتطلب درجات مجموعة الاختبار الرسمية إرسال التنبؤات إلى خادم تقييم Cityscapes.
  • تغطي مجموعة البيانات 19 فئة للتقييم، تشمل فئات الأسطح المستوية والبشر والمركبات والإنشاءات والكائنات والطبيعة والسماء.
  • توفر Cityscapes مقاييس تقييم موحّدة مثل متوسط التقاطع على الاتحاد (mIoU) للتقسيم الدلالي، مما يتيح مقارنة فعّالة لأداء النماذج.
  • قبل الالتزام بالتنزيل اليدوي الذي يبلغ حجمه ~11 GB، تحقّق مبدئيًا من مسار التدريب لديك باستخدام مجموعة Cityscapes8 الفرعية المكوّنة من 8 صور.

بنية مجموعة البيانات#

يتوقع تكوين Ultralytics التخطيط التالي بعد الإعداد:

cityscapes/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
└── masks/
    ├── train/
    ├── val/
    └── test/
التنزيل اليدوي مطلوب

لا توفر Cityscapes تنزيلًا تلقائيًا للأرشيف. أنشئ حسابًا على موقع Cityscapes، ثم نزّل أرشيفي leftImg8bit_trainvaltest.zip وgtFine_trainvaltest.zip (بحجم إجمالي يبلغ ~11 GB) واستخرجهما إلى جذر مجموعة البيانات cityscapes. تعيد Ultralytics تنظيمهما تلقائيًا إلى التخطيطين images/ وmasks/ الموضحين أعلاه عند إجراء التدريب للمرة الأولى.

الأقنعة الدلالية عبارة عن ملفات PNG أحادية القناة. تُحوَّل معرّفات التسميات الأصلية في Cityscapes إلى معرّفات التدريب القياسية البالغ عددها 19 عبر قسم label_mapping، بينما تُحوَّل التسميات المتجاهلة أو الفارغة إلى 255 لاستبعادها من التدريب والتقييم.

ملاحظة

لا تصنّف أقنعة gtFine/test المنشورة للعامة سوى مناطق المركبة الذاتية للسيارة وحدود الصورة — وجميع الفئات الأخرى فارغة. احسب mIoU على تقسيم val لإجراء التقييم المحلي؛ وتتطلب درجات مجموعة الاختبار الرسمية إرسال التنبؤات إلى خادم تقييم Cityscapes.

التطبيقات#

تُستخدم Cityscapes على نطاق واسع لتدريب وتقييم نماذج التعلم العميق في التقسيم الدلالي، ولا سيما من أجل القيادة الذاتية وأنظمة مساعدة السائق المتقدمة (ADAS) والروبوتات الحضرية.

تجعل صورها عالية الدقة وتعليقاتها التوضيحية المفصلة منها موردًا قيّمًا أيضًا للبحث في تحليل المشاهد في الوقت الفعلي، وفهم المسارات والعوائق، وأي مهمة تتطلب فهمًا كثيفًا على مستوى البكسل للبيئات الحضرية المعقدة. تصل نماذج التقسيم الدلالي YOLO26 المُدرَّبة مسبقًا إلى 83.6 mIoU كحد أقصى على مجموعة تحقق Cityscapes — راجع صفحة نماذج التقسيم الدلالي للاطلاع على جدول المعايير الكامل. يمكنك تنظيم بيانات Cityscapes وتصويرها وإدارتها طوال سير عمل تطوير النموذج باستخدام Ultralytics Platform.

YAML مجموعة البيانات#

يحدّد ملف YAML لمجموعة البيانات مسارات Cityscapes وفئاتها ودليل الأقنعة وتعيين التسميات. ويُدار ملف cityscapes.yaml في https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/cityscapes.yaml.

ultralytics/cfg/datasets/cityscapes.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Cityscapes semantic segmentation dataset (19 classes)
# Documentation: https://docs.ultralytics.com/datasets/semantic/cityscapes
# Example usage: yolo semantic train data=cityscapes.yaml model=yolo26n-sem.pt
# parent
# ├── ultralytics
# └── datasets
#     └── cityscapes ← downloads here (11 GB)
#         └── images
#         └── masks

# Dataset root directory
path: cityscapes # dataset root dir
train: images/train # train images (relative to 'path') 2975 images
val: images/val # val images (relative to 'path') 500 images
test: images/test # test images (relative to 'path') 1525 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

# Preparation script (requires manual Cityscapes download)
download: |
  from pathlib import Path
  from shutil import copy2

  cityscapes_dir = Path(yaml["path"])  # dataset root dir
  # Download and extract the official Cityscapes leftImg8bit and gtFine archives into cityscapes_dir first.
  leftimg8bit_dir = cityscapes_dir / "leftImg8bit"
  gtfine_dir = cityscapes_dir / "gtFine"

  for split in ("train", "val", "test"):
      print(f"Processing {split} set")
      src_image_dir = leftimg8bit_dir / split
      dst_image_dir = cityscapes_dir / "images" / split
      dst_mask_dir = cityscapes_dir / "masks" / split
      dst_image_dir.mkdir(parents=True, exist_ok=True)
      dst_mask_dir.mkdir(parents=True, exist_ok=True)

      image_paths = sorted(src_image_dir.rglob("*_leftImg8bit.png"))
      for image_path in image_paths:
          relative_path = image_path.relative_to(src_image_dir)
          mask_path = gtfine_dir / split / relative_path.parent / image_path.name.replace(
              "_leftImg8bit.png", "_gtFine_labelIds.png"
          )
          if not mask_path.exists():
              raise FileNotFoundError(f"Mask not found for {image_path}: {mask_path}")

          image_name = image_path.name.replace("_leftImg8bit", "")
          mask_name = mask_path.name.replace("_gtFine_labelIds", "")
          copy2(image_path, dst_image_dir / image_name)
          copy2(mask_path, dst_mask_dir / mask_name)

الاستخدام#

لتدريب نموذج YOLO26n-sem على مجموعة بيانات Cityscapes لمدة 100 حقبة وبحجم صورة يبلغ 1024، يمكنك استخدام مقتطفات التعليمات البرمجية التالية. للحصول على قائمة شاملة بالوسائط المتاحة، راجع صفحة التدريب الخاصة بالنموذج.

مثال على التدريب
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)

الاقتباسات والترخيص والشكر#

تُنشر Cityscapes بموجب ترخيص مخصص غير تجاري — وهي مجانية للبحث الأكاديمي والتقييم، لكن الاستخدام التجاري أو الترخيص أو إعادة توزيع البيانات يتطلب إذنًا منفصلًا من فريق Cityscapes.

إذا استخدمت مجموعة بيانات Cityscapes في عملك البحثي أو التطويري، فيُرجى الاستشهاد بالورقة البحثية التالية:

اقتباس
@inproceedings{Cordts2016Cityscapes,
  title={The Cityscapes Dataset for Semantic Urban Scene Understanding},
  author={Cordts, Marius and Omran, Mohamed and Ramos, Sebastian and Rehfeld, Timo and Enzweiler, Markus and Benenson, Rodrigo and Franke, Uwe and Roth, Stefan and Schiele, Bernt},
  booktitle={Proc. of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
  year={2016}
}

نود توجيه الشكر إلى فريق Cityscapes لإنشاء هذا المورد القيّم وصيانته لخدمة مجتمعي القيادة الذاتية ورؤية الحاسوب. لمزيد من المعلومات حول مجموعة بيانات Cityscapes ومنشئيها، تفضل بزيارة موقع مجموعة بيانات Cityscapes.

الأسئلة الشائعة#

  • تُعد مجموعة بيانات Cityscapes معيارًا مرجعيًا واسع النطاق لـالتقسيم الدلالي لمشاهد الشوارع الحضرية في 50 مدينة أوروبية، وتُستخدم على نطاق واسع كمرجع قياسي لأبحاث القيادة الذاتية وADAS. وتجعل فئاتها الـ19 المشروحة بدقة، وصورها عالية الدقة، ومقياس متوسط التقاطع على الاتحاد الموحّد (mIoU) منها أحد أكثر المعايير المرجعية استشهادًا بها لنماذج الفهم الكثيف للمشاهد.

  • لتدريب نموذج YOLO26n-sem على مجموعة بيانات Cityscapes لمدة 100 حقبة وبحجم صورة يبلغ 1024، يمكنك استخدام مقتطفات التعليمات البرمجية التالية. للحصول على قائمة مفصلة بالوسائط المتاحة، راجع صفحة التدريب الخاصة بالنموذج.

    مثال على التدريب
    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo26n-sem.pt")  # load a pretrained model (recommended for training)
    
    # Train the model
    results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)
  • بعد الإعداد، تُنظَّم مجموعة البيانات في الدليلين images/{train,val,test}/ وmasks/{train,val,test}/، مع إقران كل صورة بقناع PNG أحادي القناة. يقرن ملف YAML في Ultralytics كل صورة بقناعها عبر الحقل masks_dir: masks، ويستخدم label_mapping لتحويل معرّفات تسميات Cityscapes الأصلية إلى معرّفات التدريب القياسية الـ19 المتتالية، مع تعيين التسميات المتجاهلة والفارغة إلى 255. لا تصنّف أقنعة تقسيم test سوى مناطق المركبة الذاتية للسيارة والحدود، لذا استخدم val لإجراء فحوصات mIoU المحلية.

  • نعم. أنشئ حسابًا على موقع Cityscapes ونزّل أرشيفي leftImg8bit_trainvaltest.zip وgtFine_trainvaltest.zip (بحجم إجمالي يبلغ ~11 GB). استخرجهما إلى جذر مجموعة البيانات cityscapes — تعيد Ultralytics تنظيمهما تلقائيًا إلى التخطيط المتوقع images/ وmasks/ عند إجراء التدريب للمرة الأولى.

  • تخزّن أقنعة Cityscapes المصدرية معرّفات تسميات أصلية تختلف عن معرّفات التدريب الـ19 المستخدمة في التقييم. يحوّل قسم label_mapping التسميات الصالحة إلى معرّفات فئات متتالية 018، ويعيّن 255 للتسميات المتجاهلة والفارغة، بحيث تُستبعد من الخسارة والمقاييس أثناء التدريب والتحقق.

  • لا. تُنشر Cityscapes بموجب ترخيص غير تجاري يتيح البحث الأكاديمي والتدريس والتقييم، لكنه يحظر الاستخدام التجاري أو ترخيص مجموعة البيانات أو الأعمال المشتقة منها أو بيعها. تواصل مباشرةً مع فريق Cityscapes لمعرفة خيارات الترخيص التجاري.

التعليقات