Conjunto de datos Cityscapes#
El conjunto de datos Cityscapes es una referencia a gran escala de segmentación semántica de escenas urbanas captadas en 50 ciudades europeas, con 2.975 imágenes de entrenamiento anotadas con precisión y 500 imágenes de validación distribuidas en 19 clases. Es uno de los conjuntos de datos más utilizados en investigación sobre conducción autónoma y comprensión de escenas urbanas con modelos de Ultralytics YOLO.
Características principales#
- Las anotaciones detalladas de Cityscapes incluyen 2.975 imágenes de entrenamiento y 500 de validación distribuidas en 19 clases; el archivo también incluye 1.525 imágenes de prueba, pero sus máscaras publicadas solo etiquetan el vehículo propio y el borde de la imagen: las anotaciones de las clases reales no se publican, y para obtener puntuaciones oficiales en el conjunto de prueba hay que enviar predicciones al servidor de evaluación de Cityscapes.
- El conjunto de datos abarca 19 clases de evaluación de las categorías plana, humana, vehículo, construcción, objeto, naturaleza y cielo.
- Cityscapes ofrece métricas de evaluación estandarizadas, como la intersección media sobre unión (mIoU) para la segmentación semántica, que permiten comparar eficazmente el rendimiento de los modelos.
- Antes de comprometerte con la descarga manual de ~11 GB, comprueba que tu flujo de entrenamiento funciona con el subconjunto de 8 imágenes Cityscapes8.
Estructura del conjunto de datos#
Tras la preparación, la configuración de Ultralytics espera la siguiente estructura:
cityscapes/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── masks/
├── train/
├── val/
└── test/Cityscapes no ofrece descarga automática de archivos. Crea una cuenta en el sitio web de Cityscapes, descarga los archivos leftImg8bit_trainvaltest.zip y gtFine_trainvaltest.zip (~11 GB en total) y extráelos en la raíz del conjunto de datos cityscapes. La primera vez que entrenes, Ultralytics los reorganizará automáticamente con la estructura images/ y masks/ indicada arriba.
Las máscaras semánticas son archivos PNG de un solo canal. Los ID de etiqueta originales de Cityscapes se convierten en los 19 ID de entrenamiento estándar mediante la sección label_mapping, y las etiquetas ignoradas o vacías se asignan a 255 para excluirlas del entrenamiento y la evaluación.
Las máscaras gtFine/test publicadas solo etiquetan el vehículo propio y los bordes de la imagen; todas las demás clases están vacías. Calcula mIoU en la partición val para la evaluación local; para obtener puntuaciones oficiales en el conjunto de prueba hay que enviar predicciones al servidor de evaluación de Cityscapes.
Aplicaciones#
Cityscapes se usa ampliamente para entrenar y evaluar modelos de aprendizaje profundo en segmentación semántica, especialmente para conducción autónoma, sistemas avanzados de asistencia a la conducción (ADAS) y robótica urbana.
Sus imágenes de alta resolución y anotaciones detalladas también lo hacen valioso para investigar la interpretación de escenas en tiempo real, la comprensión de carriles y obstáculos, y cualquier tarea que requiera comprender a nivel de píxel entornos urbanos complejos. Los modelos preentrenados de segmentación semántica 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 referencia. Puedes organizar, visualizar y gestionar los datos de Cityscapes durante todo el flujo de desarrollo del modelo con Ultralytics Platform.
YAML del conjunto de datos#
Un archivo YAML del conjunto de datos define las rutas de Cityscapes, las clases, el directorio de máscaras y la correspondencia de etiquetas. 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 con el conjunto de datos Cityscapes durante 100 épocas y con un tamaño de imagen de 1024, puedes usar los siguientes fragmentos de código. Consulta la página de entrenamiento del modelo para ver la lista completa de argumentos disponibles.
from ultralytics import YOLO
# Cargar un modelo
model = YOLO("yolo26n-sem.pt") # Carga un modelo preentrenado (recomendado para el entrenamiento)
# Entrenar el modelo
results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)Citas, licencia y agradecimientos#
Cityscapes se distribuye con una licencia personalizada para uso no comercial: es gratuito para investigación académica y evaluación, pero el uso comercial, la concesión de licencias o la redistribución de los datos requieren un permiso aparte del equipo de Cityscapes.
Si utilizas el conjunto de datos Cityscapes en tus investigaciones o trabajos de desarrollo, 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 reconocer la labor del equipo de Cityscapes por crear y mantener este valioso recurso para las comunidades de conducción autónoma y visión artificial. Para obtener más información sobre el conjunto de datos Cityscapes y sus creadores, visita el sitio web del conjunto de datos Cityscapes.
Preguntas frecuentes#
El conjunto de datos Cityscapes es una referencia a gran escala de segmentación semántica de escenas urbanas en 50 ciudades europeas, y se utiliza ampliamente como referencia estándar en investigación sobre conducción autónoma y ADAS. Sus 19 clases de evaluación anotadas con precisión, las imágenes de alta resolución y la métrica estandarizada de intersección media sobre unión (mIoU) lo convierten en una de las referencias más citadas para modelos de comprensión densa de escenas.
Para entrenar un modelo YOLO26n-sem con el conjunto de datos Cityscapes durante 100 épocas y con un tamaño de imagen de 1024, puedes usar los siguientes fragmentos de código. Consulta la página de entrenamiento del modelo para ver una lista detallada de los argumentos disponibles.
Ejemplo de entrenamientofrom ultralytics import YOLO # Cargar un modelo model = YOLO("yolo26n-sem.pt") # Carga un modelo preentrenado (recomendado para el entrenamiento) # Entrenar el modelo results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)Tras la preparación, el conjunto de datos se organiza en los directorios
images/{train,val,test}/ymasks/{train,val,test}/, y cada imagen se empareja con una máscara PNG de un solo canal. El archivo YAML de Ultralytics empareja cada imagen con su máscara mediante el campomasks_dir: masksy utilizalabel_mappingpara convertir los ID de etiqueta originales de Cityscapes en los 19 ID de entrenamiento contiguos estándar, asignando las etiquetas ignoradas y vacías a255. Las máscaras de la particióntestsolo etiquetan el vehículo propio y los bordes, así que usavalpara comprobar localmente mIoU.Sí. Crea una cuenta en el sitio web de Cityscapes y descarga los archivos
leftImg8bit_trainvaltest.zipygtFine_trainvaltest.zip(~11 GB en total). Extráelos en la raíz del conjunto de datoscityscapes: la primera vez que entrenes, Ultralytics los reorganizará automáticamente con la estructura esperadaimages/ymasks/.Las máscaras de origen de Cityscapes almacenan ID de etiqueta originales que difieren de los 19 ID de entrenamiento usados para la evaluación. La sección
label_mappingconvierte las etiquetas válidas en ID de clase contiguos0–18y asigna255a las etiquetas ignoradas y vacías para excluirlas de la pérdida y las métricas durante el entrenamiento y la validación.No. Cityscapes se distribuye con una licencia para uso 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 obras derivadas. Contacta directamente con el equipo de Cityscapes para consultar las opciones de licencia comercial.