Ultralytics YOLO27:

Conjunto de datos Cityscapes#

El conjunto de datos Cityscapes es un benchmark a gran escala de segmentación semántica de escenas urbanas capturadas en 50 ciudades europeas, con 2.975 imágenes de entrenamiento anotadas detalladamente y 500 imágenes de validación distribuidas en 19 clases. Es uno de los conjuntos de datos más utilizados para la 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 imágenes de validación distribuidas en 19 clases; el archivo también incluye 1.525 imágenes de prueba, pero las máscaras publicadas solo etiquetan el vehículo propio y el borde de la imagen; las anotaciones reales de las clases no se han publicado, y para obtener las puntuaciones oficiales del conjunto de prueba es necesario enviar las predicciones al servidor de evaluación de Cityscapes.
  • El conjunto de datos abarca 19 clases de evaluación que incluyen las categorías plana, humana, vehículo, construcción, objeto, naturaleza y cielo.
  • Cityscapes proporciona métricas de evaluación estandarizadas como la intersección media sobre la unión (mIoU) para la segmentación semántica, lo que permite comparar eficazmente el rendimiento de los modelos.
  • Antes de comprometerte con la descarga manual de ~11 GB, comprueba el funcionamiento de tu flujo de entrenamiento con el subconjunto de 8 imágenes Cityscapes8.

Estructura del dataset#

La configuración de Ultralytics espera la siguiente estructura después de la preparación:

cityscapes/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
└── masks/
    ├── train/
    ├── val/
    └── test/
Descarga manual obligatoria

Cityscapes no dispone de descarga automática del archivo. Crea una cuenta en el sitio web de Cityscapes, 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 según la estructura images/ y masks/ anterior 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 IDs 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.

Nota

Las máscaras gtFine/test publicadas solo etiquetan las regiones del vehículo propio y del borde de la imagen; todas las demás clases están vacías. Calcula el mIoU en la división val para la evaluación local; para obtener las puntuaciones oficiales del conjunto de prueba es necesario enviar las predicciones al servidor de evaluación de Cityscapes.

Aplicaciones#

Cityscapes se utiliza ampliamente para entrenar y evaluar modelos de aprendizaje profundo en segmentación semántica, especialmente para la conducción autónoma, los sistemas avanzados de asistencia al conductor (ADAS) y la robótica urbana.

Sus imágenes de alta resolución y sus 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 una comprensión densa a nivel de píxel de entornos urbanos complejos. Los modelos de segmentación semántica YOLO26 preentrenados 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 de referencia completa. Puedes organizar, visualizar y gestionar los datos de Cityscapes durante todo el flujo de desarrollo del modelo con Ultralytics Platform.

YAML del dataset#

Un archivo YAML del 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/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 utilizar los siguientes fragmentos de código. Para consultar una lista completa de los argumentos disponibles, visita la página de entrenamiento del modelo.

Ejemplo de entrenamiento
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 distribuye bajo una licencia personalizada para uso no comercial: es gratuito 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 requieren un permiso independiente del equipo de Cityscapes.

Si utilizas el conjunto de datos Cityscapes en tu trabajo de investigación o desarrollo, cita el siguiente artículo:

Cita
@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 por computador. 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 un benchmark a gran escala de segmentación semántica de escenas urbanas de 50 ciudades europeas, ampliamente utilizado como referencia estándar para la investigación sobre conducción autónoma y ADAS. Sus 19 clases de evaluación anotadas detalladamente, sus imágenes de alta resolución y su métrica estandarizada de intersección media sobre la unión (mIoU) lo convierten en uno de los benchmarks más citados 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 utilizar los siguientes fragmentos de código. Para consultar una lista detallada de los argumentos disponibles, visita la página de entrenamiento del modelo.

    Ejemplo de entrenamiento
    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)
  • Después de la preparación, el conjunto de datos se organiza en los directorios images/{train,val,test}/ y masks/{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 campo masks_dir: masks y utiliza label_mapping para convertir los ID de etiquetas originales de Cityscapes en los 19 IDs de entrenamiento contiguos estándar, asignando las etiquetas ignoradas y vacías a 255. Las máscaras de la división test solo etiquetan las regiones del vehículo propio y del borde, así que utiliza val para las comprobaciones locales de mIoU.

  • Sí. Crea una cuenta en el sitio web de Cityscapes y descarga los archivos leftImg8bit_trainvaltest.zip y gtFine_trainvaltest.zip (~11 GB en total). Extrae ambos en la raíz del conjunto de datos cityscapes; Ultralytics los reorganiza automáticamente según la estructura esperada images/ y masks/ la primera vez que entrenas.

  • Las máscaras de origen de Cityscapes almacenan ID de etiquetas originales que difieren de los 19 IDs de entrenamiento utilizados para la evaluación. La sección label_mapping convierte las etiquetas válidas en los ID de clase contiguos 018 y asigna 255 a las etiquetas ignoradas y vacías para excluirlas de la pérdida y de las métricas durante el entrenamiento y la validación.

  • No. Cityscapes se distribuye bajo una licencia para uso no comercial que permite la investigación académica, la docencia 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. Ponte directamente en contacto con el equipo de Cityscapes para consultar las opciones de licencia comercial.

Comentarios