YOLO Vision 2026:

Dataset Cityscapes#

O conjunto de dados Cityscapes é um benchmark de segmentação semântica em larga escala de cenas de ruas urbanas capturadas em 50 cidades europeias, com 2.975 imagens de treino detalhadamente anotadas e 500 imagens de validação em 19 classes. É um dos conjuntos de dados mais amplamente utilizados para pesquisa de condução autônoma e compreensão de cenas urbanas com os modelos Ultralytics YOLO.

Principais recursos#

  • As anotações finas do Cityscapes incluem 2.975 imagens de treino e 500 imagens de validação em 19 classes; o arquivo também traz 1.525 imagens de teste, mas as máscaras disponibilizadas rotulam apenas o veículo do motorista (ego-vehicle) e a borda da imagem — as anotações reais de classes são retidas, e as pontuações oficiais do conjunto de teste exigem o envio de previsões para o servidor de avaliação do Cityscapes.
  • O dataset abrange 19 classes de avaliação distribuídas pelas categorias de solo, humano, veículo, construção, objeto, natureza e céu.
  • O Cityscapes fornece métricas de avaliação padronizadas, como a mean Intersection over Union (mIoU) para segmentação semântica, permitindo a comparação eficaz do desempenho dos modelos.
  • Antes de se comprometer com o download manual de ~11 GB, faça uma verificação rápida do seu pipeline de treinamento com o subconjunto Cityscapes8 de 8 imagens.

Estrutura do Dataset#

A configuração do Ultralytics espera o seguinte layout após a preparação:

cityscapes/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
└── masks/
    ├── train/
    ├── val/
    └── test/
Download manual necessário

O Cityscapes não possui download automático de arquivos. Crie uma conta no site do Cityscapes, depois baixe os arquivos leftImg8bit_trainvaltest.zip e gtFine_trainvaltest.zip (~11 GB no total) e extraia ambos na raiz do conjunto de dados cityscapes. O Ultralytics os reorganiza automaticamente no layout images/ e masks/ acima na primeira vez em que você treina.

As máscaras semânticas são arquivos PNG de canal único. Os IDs de rótulo originais do Cityscapes são mapeados para os 19 IDs de treino padrão através da seção label_mapping, e os rótulos ignorados ou nulos são mapeados para 255 para que sejam excluídos do treinamento e da avaliação.

Nota

As máscaras gtFine/test lançadas publicamente rotulam apenas o veículo do motorista e as regiões de borda da imagem — todas as outras classes são nulas. Calcule o mIoU na divisão val para avaliação local; as pontuações oficiais do conjunto de teste exigem o envio de previsões para o servidor de avaliação do Cityscapes.

Aplicações#

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

Suas imagens de alta resolução e anotações detalhadas também o tornam valioso para pesquisas sobre parsing de cenas em tempo real, compreensão de faixas e obstáculos, e qualquer tarefa que exija compreensão densa a nível de pixel de ambientes urbanos complexos. Modelos de segmentação semântica YOLO26 pré-treinados atingem até 83,6 de mIoU no conjunto de validação do Cityscapes — consulte a página de modelos de segmentação semântica para ver a tabela completa de benchmarks. Você pode organizar, visualizar e gerenciar os dados do Cityscapes ao longo do fluxo de trabalho de desenvolvimento de modelos com a Ultralytics Platform.

YAML do Dataset#

Um arquivo YAML de conjunto de dados define os caminhos, as classes, o diretório de máscaras e o mapeamento de rótulos do Cityscapes. O arquivo 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)

Uso#

Para treinar um modelo YOLO26n-sem no conjunto de dados Cityscapes por 100 epochs com um tamanho de imagem de 1024, você pode usar os seguintes trechos de código. Para obter uma lista abrangente de argumentos disponíveis, consulte a página de Training do modelo.

Exemplo de Treinamento
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 é lançado sob uma licença personalizada não comercial — gratuito para pesquisa acadêmica e avaliação, mas o uso comercial, licenciamento ou redistribuição dos dados requer permissão separada da equipe do Cityscapes.

Se você usar o conjunto de dados Cityscapes em sua pesquisa ou trabalho de desenvolvimento, por favor cite 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 à equipe do Cityscapes por criar e manter este recurso valioso para as comunidades de condução autônoma e visão computacional. Para obter mais informações sobre o conjunto de dados Cityscapes e seus criadores, visite o site do conjunto de dados Cityscapes.

FAQ#

  • O conjunto de dados Cityscapes é um benchmark de segmentação semântica em larga escala de cenas de ruas urbanas em 50 cidades europeias, amplamente utilizado como referência padrão para pesquisas de condução autônoma e ADAS. Suas 19 classes de avaliação finamente anotadas, imagens de alta resolução e a métrica padronizada de mean Intersection over Union (mIoU) o tornam um dos benchmarks mais citados para modelos de compreensão densa de cenas.

  • Para treinar um modelo YOLO26n-sem no conjunto de dados Cityscapes por 100 épocas com um tamanho de imagem de 1024, você pode usar os seguintes trechos de código. Para obter uma lista detalhada de argumentos disponíveis, consulte a página de Training do modelo.

    Exemplo de Treinamento
    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 conjunto de dados é organizado nos diretórios images/{train,val,test}/ e masks/{train,val,test}/, com cada imagem emparelhada a uma máscara PNG de canal único. O arquivo YAML da Ultralytics emparelha cada imagem com sua máscara através do campo masks_dir: masks, e usa label_mapping para converter os IDs de rótulo originais do Cityscapes nos 19 IDs de treino contíguos padrão, mapeando rótulos ignorados e nulos para 255. As máscaras da divisão test rotulam apenas regiões do veículo do motorista e de borda, portanto, use val para verificações locais de mIoU.

  • Sim. Crie uma conta no site do Cityscapes e baixe os arquivos leftImg8bit_trainvaltest.zip e gtFine_trainvaltest.zip (~11 GB no total). Extraia ambos na raiz do conjunto de dados cityscapes — a Ultralytics os reorganiza automaticamente no layout esperado images/ e masks/ na primeira vez em que você treina.

  • As máscaras de origem do Cityscapes armazenam IDs de rótulos originais que diferem dos 19 IDs de treino usados para avaliação. A seção label_mapping converte rótulos válidos em IDs de classe contíguos 018, e atribui 255 a rótulos ignorados e nulos para que sejam excluídos da perda e das métricas durante o treinamento e a validação.

  • Não. O Cityscapes é lançado sob uma licença não comercial que permite pesquisa acadêmica, ensino e avaliação, mas proíbe o uso comercial, licenciamento ou venda do conjunto de dados ou trabalhos derivados. Entre em contato diretamente com a equipe do Cityscapes para opções de licenciamento comercial.

Comentários