Dataset Cityscapes#
El conjunto de datos Cityscapes es una prueba de referencia a gran escala de segmentación semántica de escenas urbanas callejeras capturadas en 50 ciudades europeas, con 2975 imágenes de entrenamiento minuciosamente anotadas y 500 imágenes de validación en 19 clases. Es uno de los conjuntos de datos más utilizados para la investigación de conducción autónoma y la comprensión de escenas urbanas con modelos de Ultralytics YOLO.
Características clave#
- Las anotaciones detalladas de Cityscapes incluyen 2975 imágenes de entrenamiento y 500 imágenes de validación en 19 clases; el archivo también incluye 1525 imágenes de prueba, pero sus máscaras publicadas solo etiquetan el vehículo propio y el borde de la imagen — las anotaciones de clases reales no se incluyen, y las puntuaciones oficiales del conjunto de prueba requieren enviar las predicciones al servidor de evaluación de Cityscapes.
- El conjunto de datos abarca 19 clases de evaluación que incluyen categorías de superficies planas, humanos, vehículos, construcción, objetos, naturaleza y cielo.
- Cityscapes proporciona métricas de evaluación estandarizadas como la intersección sobre la unión media (mIoU) para la segmentación semántica, lo que permite una comparación eficaz del rendimiento del modelo.
- Antes de comprometerte con la descarga manual de ~11 GB, verifica el funcionamiento de tu canalización de entrenamiento con el subconjunto de 8 imágenes Cityscapes8.
Estructura del dataset#
La configuración de Ultralytics espera la siguiente estructura tras la preparación:
cityscapes/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── masks/
├── train/
├── val/
└── test/Cityscapes no tiene descarga automática de archivos. Crea una cuenta en el sitio web de Cityscapes, luego descarga los archivos leftImg8bit_trainvaltest.zip y gtFine_trainvaltest.zip (~11 GB en total) y extrae ambos en la raíz del conjunto de datos cityscapes. Ultralytics los reorganiza automáticamente en el diseño de images/ y masks/ la primera vez que entrenas.
Las máscaras semánticas son archivos PNG de un solo canal. Los ID de etiquetas originales de Cityscapes se asignan a los 19 ID de entrenamiento estándar a través de la sección label_mapping, y las etiquetas ignoradas o nulas se asignan a 255 para que se excluyan del entrenamiento y la evaluación.
Las máscaras publicadas de gtFine/test solo etiquetan el vehículo propio y las regiones de los bordes de la imagen; todas las demás clases son nulas. Calcula el mIoU en la división val para la evaluación local; las puntuaciones oficiales del conjunto de prueba requieren enviar las predicciones al servidor de evaluación de Cityscapes.
Aplicaciones#
Cityscapes se utiliza ampliamente para entrenar y evaluar modelos de deep learning en segmentación semántica, particularmente para conducción autónoma, sistemas avanzados de asistencia al conductor (ADAS) y robótica urbana.
Sus imágenes de alta resolución y sus anotaciones detalladas también lo hacen valioso para la investigación sobre análisis de escenas en tiempo real, comprensión de carriles y obstáculos, y cualquier tarea que requiera una comprensión detallada a nivel de píxel de entornos urbanos complejos. Los modelos de segmentación semántica preentrenados YOLO26 alcanzan hasta 83.6 mIoU en el conjunto de validación de Cityscapes; consulta la página de modelos de segmentación semántica para ver la tabla completa de puntos de referencia. Puedes organizar, visualizar y gestionar los datos de Cityscapes a lo largo del flujo de trabajo de desarrollo del modelo con Ultralytics Platform.
YAML del dataset#
Un archivo YAML de conjunto de datos define las rutas, las clases, el directorio de máscaras y la asignación de etiquetas de Cityscapes. El archivo cityscapes.yaml se mantiene en 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)Uso#
Para entrenar un modelo YOLO26n-sem en el conjunto de datos Cityscapes durante 100 épocas con un tamaño de imagen de 1024, puedes usar los siguientes fragmentos de código. Para obtener una lista completa de los argumentos disponibles, consulta la página de entrenamiento del modelo.
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)Citas, Licencia y Agradecimientos#
Cityscapes se publica bajo una licencia personalizada no comercial, gratuita para la investigación académica y la evaluación, pero el uso comercial, la concesión de licencias o la redistribución de los datos requiere un permiso por separado del equipo de Cityscapes.
Si utilizas el conjunto de datos Cityscapes en tu trabajo de investigación o desarrollo, por favor cita el siguiente artículo:
@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}
}Queremos agradecer al equipo de Cityscapes por crear y mantener este valioso recurso para las comunidades de conducción autónoma y visión por ordenador. Para obtener más información sobre el conjunto de datos Cityscapes y sus creadores, visita el sitio web del conjunto de datos Cityscapes.
FAQ#
El conjunto de datos Cityscapes es una prueba de referencia a gran escala de segmentación semántica de escenas urbanas callejeras en 50 ciudades europeas, ampliamente utilizada como referencia estándar para la investigación de conducción autónoma y ADAS. Sus 19 clases de evaluación detalladas, sus imágenes de alta resolución y su métrica estandarizada de intersección sobre la unión media (mIoU) lo convierten en uno de los puntos de referencia más citados para los modelos de comprensión detallada de escenas.
Para entrenar un modelo YOLO26n-sem en el conjunto de datos Cityscapes durante 100 épocas con un tamaño de imagen de 1024, puedes usar los siguientes fragmentos de código. Para obtener una lista detallada de los argumentos disponibles, consulta la página de entrenamiento del modelo.
Ejemplo de entrenamientofrom 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)Después de la preparación, el conjunto de datos se organiza en los directorios
images/{train,val,test}/ymasks/{train,val,test}/, donde cada imagen se empareja con una máscara PNG de un solo canal. El archivo YAML de Ultralytics vincula cada imagen con su máscara a través del campomasks_dir: masks, y utilizalabel_mappingpara convertir los ID de etiquetas originales de Cityscapes en los 19 ID de entrenamiento contiguos estándar, asignando las etiquetas ignoradas y nulas a255. Las máscaras de la divisióntestsolo etiquetan el vehículo propio y las regiones de los bordes, así que usavalpara las comprobaciones locales de mIoU.Sí. Crea una cuenta en el sitio web de Cityscapes y descarga los archivos
leftImg8bit_trainvaltest.zipygtFine_trainvaltest.zip(~11 GB en total). Extrae ambos en la raíz del conjunto de datoscityscapes; Ultralytics los reorganiza automáticamente en el diseño esperado deimages/ymasks/la primera vez que entrenas.Las máscaras de origen de Cityscapes almacenan los ID de etiquetas originales que difieren de los 19 ID de entrenamiento utilizados para la evaluación. La sección
label_mappingconvierte las etiquetas válidas en ID de clase contiguos0–18, y asigna255a las etiquetas ignoradas y nulas para que se excluyan de la pérdida y de las métricas durante el entrenamiento y la validación.No. Cityscapes se publica bajo una licencia no comercial que permite la investigación académica, la enseñanza y la evaluación, pero prohíbe el uso comercial, la concesión de licencias o la venta del conjunto de datos o de trabajos derivados. Ponte en contacto directamente con el equipo de Cityscapes para conocer las opciones de licencias comerciales.