Ultralytics YOLO27:

Dataset Cityscapes#

O dataset Cityscapes é um benchmark de grande escala de segmentação semântica de cenas de ruas urbanas capturadas em 50 cidades europeias, com 2.975 imagens de treino finamente anotadas e 500 imagens de validação distribuídas por 19 classes. É um dos datasets mais utilizados para investigação em condução autónoma e compreensão de cenas urbanas com modelos Ultralytics YOLO.

Principais funcionalidades#

  • As anotações finas do Cityscapes incluem 2.975 imagens de treino e 500 imagens de validação distribuídas por 19 classes; o arquivo também inclui 1.525 imagens de teste, mas as máscaras disponibilizadas apenas identificam o veículo ego e a margem da imagem — as anotações reais das classes são ocultadas, e as pontuações oficiais do conjunto de teste exigem o envio das previsões para o servidor de avaliação do Cityscapes.
  • O dataset abrange 19 classes de avaliação que incluem as categorias plana, humana, veículo, construção, objeto, natureza e céu.
  • O Cityscapes fornece métricas de avaliação padronizadas, como a média da interseção sobre a união (mIoU) para segmentação semântica, permitindo comparar eficazmente o desempenho dos modelos.
  • Antes de iniciares o download manual de ~11 GB, valida o teu pipeline de treino com o subconjunto de 8 imagens Cityscapes8.

Estrutura do Conjunto de Dados#

A configuração da Ultralytics espera a seguinte estrutura após a preparação:

cityscapes/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
└── masks/
    ├── train/
    ├── val/
    └── test/
Transferência manual obrigatória

O Cityscapes não tem download automático de arquivos. Cria uma conta no site do Cityscapes, depois transfere os arquivos leftImg8bit_trainvaltest.zip e gtFine_trainvaltest.zip (~11 GB no total) e extrai ambos na raiz do dataset cityscapes. A Ultralytics reorganiza-os automaticamente no formato images/ e masks/ acima na primeira vez que treinares.

As máscaras semânticas são ficheiros PNG de canal único. Os IDs de etiquetas originais do Cityscapes são mapeados para os 19 IDs de treino padrão através da secção label_mapping, e as etiquetas ignoradas ou vazias são mapeadas para 255, para que sejam excluídas do treino e da avaliação.

Nota

As máscaras gtFine/test disponibilizadas publicamente apenas identificam as regiões do veículo ego e da margem da imagem — todas as outras classes são vazias. Calcula o mIoU na divisão val para avaliação local; as pontuações oficiais do conjunto de teste exigem o envio das previsões para o servidor de avaliação do Cityscapes.

Aplicações#

O Cityscapes é amplamente utilizado para treinar e avaliar modelos de aprendizagem profunda em segmentação semântica, particularmente para condução autónoma, sistemas avançados de assistência ao condutor (ADAS) e robótica urbana.

As suas imagens de alta resolução e anotações detalhadas também o tornam valioso para investigação sobre interpretação de cenas em tempo real, compreensão de faixas e obstáculos e qualquer tarefa que exija compreensão densa ao nível dos píxeis de ambientes urbanos complexos. Os modelos YOLO26 pré-treinados de segmentação semântica atingem até 83,6 mIoU no conjunto de validação do Cityscapes — consulta a página de modelos de segmentação semântica para ver a tabela completa de benchmarks. Podes organizar, visualizar e gerir dados do Cityscapes ao longo de todo o fluxo de desenvolvimento de modelos com a Ultralytics Platform.

YAML do Conjunto de Dados#

Um ficheiro YAML do dataset define os caminhos, as classes, o diretório de máscaras e o mapeamento de etiquetas do Cityscapes. O ficheiro cityscapes.yaml é mantido em 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)

Utilização#

Para treinar um modelo YOLO26n-sem no dataset Cityscapes durante 100 épocas com um tamanho de imagem de 1024, podes utilizar os seguintes excertos de código. Para obteres uma lista abrangente dos argumentos disponíveis, consulta a página de Treino do modelo.

Exemplo de treino
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)

Citações, licença e agradecimentos#

O Cityscapes é disponibilizado sob uma licença não comercial personalizada — é gratuito para investigação e avaliação académicas, mas a utilização comercial, o licenciamento ou a redistribuição dos dados requerem autorização separada da equipa do Cityscapes.

Se utilizares o dataset Cityscapes no teu trabalho de investigação ou desenvolvimento, cita o seguinte artigo:

Citação
@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}
}

Gostaríamos de agradecer à equipa do Cityscapes por criar e manter este recurso valioso para as comunidades de condução autónoma e visão computacional. Para obteres mais informações sobre o dataset Cityscapes e os seus criadores, visita o site do dataset Cityscapes.

Perguntas frequentes#

  • O dataset Cityscapes é um benchmark de grande escala de segmentação semântica de cenas de ruas urbanas em 50 cidades europeias, amplamente utilizado como referência padrão para investigação em condução autónoma e ADAS. As suas 19 classes de avaliação finamente anotadas, imagens de alta resolução e métrica padronizada de média da interseção sobre a união (mIoU) fazem dele um dos benchmarks mais citados para modelos de compreensão densa de cenas.

  • Para treinar um modelo YOLO26n-sem no dataset Cityscapes durante 100 épocas com um tamanho de imagem de 1024, podes utilizar os seguintes excertos de código. Para obteres uma lista detalhada dos argumentos disponíveis, consulta a página de Treino do modelo.

    Exemplo de treino
    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)
  • Após a preparação, o dataset é organizado nos diretórios images/{train,val,test}/ e masks/{train,val,test}/, com cada imagem associada a uma máscara PNG de canal único. O ficheiro YAML da Ultralytics associa cada imagem à sua máscara através do campo masks_dir: masks e utiliza label_mapping para converter os IDs de etiquetas originais do Cityscapes nos 19 IDs de treino contíguos padrão, mapeando as etiquetas ignoradas e vazias para 255. As máscaras da divisão test apenas identificam as regiões do veículo ego e da margem, por isso utiliza val para verificações locais de mIoU.

  • Sim. Cria uma conta no site do Cityscapes e transfere os arquivos leftImg8bit_trainvaltest.zip e gtFine_trainvaltest.zip (~11 GB no total). Extrai ambos na raiz do dataset cityscapes — a Ultralytics reorganiza-os automaticamente no formato esperado images/ e masks/ na primeira vez que treinares.

  • As máscaras de origem do Cityscapes armazenam IDs de etiquetas originais que diferem dos 19 IDs de treino utilizados para avaliação. A secção label_mapping converte as etiquetas válidas em IDs de classe contíguos 018 e atribui 255 às etiquetas ignoradas e vazias, para que sejam excluídas da função de perda e das métricas durante o treino e a validação.

  • Não. O Cityscapes é disponibilizado sob uma licença não comercial que permite investigação académica, ensino e avaliação, mas proíbe a utilização comercial, o licenciamento ou a venda do dataset ou de trabalhos derivados. Contacta diretamente a equipa do Cityscapes para obteres informações sobre opções de licenciamento comercial.

Comentários