Набор данных Cityscapes#
Набор данных Cityscapes — это масштабный бенчмарк семантической сегментации уличных сцен в 50 европейских городах. Он содержит 2 975 тщательно размеченных обучающих изображений и 500 проверочных изображений, охватывающих 19 классов. Это один из наиболее широко используемых наборов данных в исследованиях автономного вождения и понимания городских сцен с моделями Ultralytics YOLO.
Основные особенности#
- Тщательная разметка Cityscapes включает 2 975 обучающих изображений и 500 проверочных изображений для 19 классов; архив также содержит 1 525 тестовых изображений, но их опубликованные маски размечают только автомобиль, в котором находится камера, и границу изображения — настоящие метки классов не предоставляются, а для получения официальных результатов на тестовой выборке нужно отправить предсказания на сервер оценки Cityscapes.
- Набор данных охватывает 19 классов оценки из категорий «плоские поверхности», «люди», «транспортные средства», «строения», «объекты», «природа» и «небо».
- Cityscapes предоставляет стандартизированные метрики оценки, например среднее пересечение по объединению (mIoU) для семантической сегментации, что позволяет эффективно сравнивать производительность моделей.
- Прежде чем решиться на ручную загрузку объёмом ~11 ГБ, проверь работу конвейера обучения на подмножестве Cityscapes8 из 8 изображений.
Структура набора данных#
После подготовки Ultralytics ожидает следующую структуру:
cityscapes/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── masks/
├── train/
├── val/
└── test/Cityscapes не поддерживает автоматическую загрузку архивов. Создай учётную запись на сайте Cityscapes, затем скачай архивы leftImg8bit_trainvaltest.zip и gtFine_trainvaltest.zip (всего ~11 ГБ) и распакуй оба в корневую папку набора данных cityscapes. При первом запуске обучения Ultralytics автоматически реорганизует файлы в структуру images/ и masks/, показанную выше.
Семантические маски — это одноканальные файлы PNG. Исходные ID меток Cityscapes преобразуются в стандартные 19 ID классов для обучения с помощью раздела label_mapping, а игнорируемые метки и метки void преобразуются в 255 и исключаются из обучения и оценки.
В опубликованных масках gtFine/test размечены только автомобиль, в котором находится камера, и границы изображения — все остальные классы считаются void. Для локальной оценки вычисляй mIoU на разделе val; чтобы получить официальные результаты на тестовой выборке, нужно отправить предсказания на сервер оценки Cityscapes.
Применение#
Cityscapes широко используется для обучения и оценки моделей глубокого обучения в области семантической сегментации, в особенности для автономного вождения, продвинутых систем помощи водителю (ADAS) и городской робототехники.
Изображения высокого разрешения и подробная разметка делают этот набор данных ценным для исследований в области разбора сцен в реальном времени, распознавания полос и препятствий, а также любых задач, требующих плотного понимания сложной городской среды на уровне пикселей. Предварительно обученные модели YOLO26 для семантической сегментации достигают mIoU до 83,6 на проверочной выборке Cityscapes — полную таблицу бенчмарков смотри на странице моделей семантической сегментации. Ты можешь организовывать данные Cityscapes, визуализировать их и управлять ими на всех этапах разработки модели с помощью Ultralytics Platform.
Файл YAML набора данных#
YAML-файл набора данных задаёт пути Cityscapes, классы, каталог масок и преобразование меток. Файл cityscapes.yaml находится в https://github.com/ultralytics/ultralytics/blob/main/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
# Загрузить модель
model = YOLO("yolo26n-sem.pt") # загрузить предварительно обученную модель (рекомендуется для обучения)
# Обучить модель
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 # Загрузить модель model = YOLO("yolo26n-sem.pt") # загрузить предварительно обученную модель (рекомендуется для обучения) # Обучить модель 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для преобразования исходных ID меток Cityscapes в стандартные 19 последовательных ID классов для обучения, сопоставляя игнорируемые метки и метки void со значением255. Маски разделаtestразмечают только автомобиль, в котором находится камера, и границы, поэтому для локальной проверки mIoU используйval.Да. Создай учётную запись на сайте Cityscapes и скачай архивы
leftImg8bit_trainvaltest.zipиgtFine_trainvaltest.zip(всего ~11 ГБ). Распакуй оба в корневую папку набора данныхcityscapes— при первом запуске обучения Ultralytics автоматически реорганизует их в ожидаемую структуруimages/иmasks/.В исходных масках Cityscapes хранятся ID меток, отличающиеся от 19 ID классов для обучения, используемых при оценке. Раздел
label_mappingпреобразует допустимые метки в последовательные ID классов0–18, а игнорируемым меткам и меткам void присваивает255, чтобы исключить их из функции потерь и метрик при обучении и валидации.Нет. Cityscapes распространяется по лицензии для некоммерческого использования, которая разрешает академические исследования, преподавание и оценку, но запрещает коммерческое использование, лицензирование и продажу набора данных или производных работ. Чтобы узнать о вариантах коммерческого лицензирования, свяжись напрямую с командой Cityscapes.