Набор данных Cityscapes

Набор данных Cityscapes — это масштабный бенчмарк для семантической сегментации, сосредоточенный на сценах городских улиц, снятых в 50 европейских городах. Он предоставляет высококачественные аннотации на уровне пикселей и является одним из наиболее широко используемых наборов данных для исследований в области автономного вождения и понимания городских сцен с помощью моделей Ultralytics YOLO.

Ключевые особенности

  • Точные аннотации Cityscapes включают 2 975 изображений для обучения, 500 изображений для валидации и 1 525 изображений для тестирования.
  • Набор данных охватывает 19 классов для оценки, включая категории дорог, транспорта, людей, зданий, объектов, природы и неба.
  • Cityscapes предоставляет стандартизированные метрики оценки, такие как среднее пересечение по объединению (mIoU) для семантической сегментации, что позволяет эффективно сравнивать производительность моделей.

Структура набора данных

Конфигурация Ultralytics ожидает следующую структуру после подготовки:

cityscapes/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
└── masks/
    ├── train/
    ├── val/
    └── test/

Семантические маски представляют собой одноканальные PNG-файлы. Исходные идентификаторы меток Cityscapes отображаются на стандартные 19 идентификаторов обучения через раздел label_mapping, а игнорируемые или пустые метки отображаются на 255, чтобы они были исключены из обучения и оценки. Скачай официальные архивы leftImg8bit и gtFine с сайта Cityscapes и распакуй их в корневую папку набора данных; блок подготовки в cityscapes.yaml затем организует изображения и маски в эту структуру.

Применение

Cityscapes широко используется для обучения и оценки моделей глубокого обучения в семантической сегментации, особенно для автономного вождения, передовых систем помощи водителю (ADAS) и городской робототехники.

Его изображения высокого разрешения и детальные аннотации также делают его ценным для исследований в области анализа сцен в реальном времени, распознавания полос и препятствий, а также для любой задачи, требующей плотного понимания сложных городских сред на уровне пикселей.

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 в своих исследованиях или разработках, пожалуйста, сошлися на следующую статью:

Цитата
@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.

Часто задаваемые вопросы (FAQ)

Что такое набор данных Cityscapes и почему он важен для компьютерного зрения?

Набор данных Cityscapes — это масштабный бенчмарк для семантической сегментации, сосредоточенный на сценах городских улиц, снятых в 50 европейских городах. Он содержит 5 000 точно аннотированных изображений по 19 классам оценки, что делает его фундаментальным ресурсом для исследований автономного вождения и понимания городских сцен. Его изображения высокого разрешения, плотные аннотации и стандартизированная метрика среднего пересечения по объединению (mIoU) делают его идеальным для бенчмаркинга моделей плотного предсказания.

Как обучить модель YOLO, используя набор данных Cityscapes?

Чтобы обучить модель 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?

После подготовки набор данных организуется в директории images/{train,val,test}/ и masks/{train,val,test}/, где каждое изображение сопоставлено с одноканальной PNG-маской. YAML-файл Ultralytics связывает каждое изображение с его маской через поле masks_dir: masks и использует label_mapping для преобразования исходных идентификаторов меток Cityscapes в стандартные 19 последовательных идентификаторов обучения, отображая игнорируемые и пустые метки на 255.

Нужно ли скачивать Cityscapes вручную?

Да. Для использования Cityscapes необходимо принять условия использования на официальном сайте. Скачай и распакуй leftImg8bit и gtFine в корень набора данных cityscapes, прежде чем использовать блок подготовки в cityscapes.yaml для создания ожидаемой структуры images/ и masks/.

Почему в Cityscapes используется label_mapping?

Исходные маски Cityscapes хранят оригинальные идентификаторы меток, которые отличаются от 19 идентификаторов обучения, используемых для оценки. Раздел label_mapping преобразует действительные метки в последовательные идентификаторы классов от 0 до 18 и назначает 255 игнорируемым и пустым меткам, чтобы они исключались из функции потерь и метрик во время обучения и валидации.

Комментарии