Ultralytics YOLO27:

Conjunto de dados Cityscapes#

O conjunto de dados Cityscapes é um benchmark de segmentação semântica em grande escala de cenas de ruas urbanas captadas em 50 cidades europeias, com 2.975 imagens de treino anotadas ao pormenor e 500 imagens de validação distribuídas por 19 classes. É um dos conjuntos de dados mais utilizados na investigação sobre condução autónoma e compreensão de cenas urbanas com modelos Ultralytics YOLO.

Principais funcionalidades#

  • As anotações detalhadas do Cityscapes incluem 2.975 imagens de treino e 500 imagens de validação distribuídas por 19 classes; o arquivo também contém 1.525 imagens de teste, mas as máscaras publicadas identificam apenas o veículo do ego e a margem da imagem — as anotações das classes reais não são disponibilizadas, e para obter pontuações oficiais no conjunto de teste é necessário submeter as previsões ao servidor de avaliação do Cityscapes.
  • O conjunto de dados abrange 19 classes de avaliação das categorias plana, humana, veículo, construção, objeto, natureza e céu.
  • O Cityscapes disponibiliza 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 te comprometeres com a transferência manual de ~11 GB, verifica se o teu pipeline de treino funciona com o subconjunto de 8 imagens Cityscapes8.

Estrutura do conjunto de dados#

Após a preparação, a configuração da Ultralytics espera a seguinte estrutura:

cityscapes/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
└── masks/
    ├── train/
    ├── val/
    └── test/
É necessário fazer o download manualmente

O Cityscapes não tem transferência automática de arquivos. Cria uma conta no site do Cityscapes, transfere os arquivos leftImg8bit_trainvaltest.zip e gtFine_trainvaltest.zip (~11 GB no total) e extrai ambos para a raiz do conjunto de dados cityscapes. A Ultralytics reorganiza-os automaticamente na estrutura images/ e masks/ acima na primeira vez que iniciares o treino.

As máscaras semânticas são ficheiros 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 secção label_mapping, e os rótulos ignorados ou vazios são mapeados para 255 para que sejam excluídos do treino e da avaliação.

Nota

As máscaras gtFine/test disponibilizadas publicamente identificam apenas o veículo do ego e as regiões da margem da imagem — todas as outras classes são vazias. Calcula o mIoU na divisão val para a avaliação local; para obter pontuações oficiais no conjunto de teste é necessário submeter as previsões ao 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 na condução autónoma, em sistemas avançados de assistência ao condutor (ADAS) e na robótica urbana.

As imagens de alta resolução e as anotações detalhadas também o tornam valioso para a investigação sobre parsing de cenas em tempo real, compreensão de faixas e obstáculos e qualquer tarefa que exija uma 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 do modelo com a Ultralytics Platform.

YAML do conjunto de dados#

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

Uso#

Para treinar um modelo YOLO26n-sem no conjunto de dados Cityscapes durante 100 épocas, com um tamanho de imagem de 1024, podes utilizar os seguintes excertos de código. Para consultar a lista completa de argumentos disponíveis, visita a página de treino do modelo.

Exemplo de treino
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-sem.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)

# Treinar o modelo
results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)

Citações, licença e agradecimentos#

O Cityscapes é disponibilizado ao abrigo de uma licença personalizada para uso não comercial — 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 Cityscapes.

Se utilizares o conjunto de dados 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 Cityscapes por criar e manter este valioso recurso para as comunidades de condução autónoma e visão por computador. Para obteres mais informações sobre o conjunto de dados Cityscapes e os seus criadores, visita o site do conjunto de dados Cityscapes.

Perguntas frequentes#

  • O conjunto de dados Cityscapes é um benchmark de segmentação semântica em grande escala de cenas de ruas urbanas em 50 cidades europeias, amplamente utilizado como referência padrão na investigação sobre condução autónoma e ADAS. As 19 classes de avaliação anotadas ao pormenor, as imagens de alta resolução e a métrica padronizada da 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 conjunto de dados Cityscapes durante 100 épocas, com um tamanho de imagem de 1024, podes utilizar os seguintes excertos de código. Para consultar uma lista detalhada dos argumentos disponíveis, visita a página de treino do modelo.

    Exemplo de treino
    from ultralytics import YOLO
    
    # Carregar um modelo
    model = YOLO("yolo26n-sem.pt")  # carregue um modelo pré-treinado (recomendado para treinamento)
    
    # Treinar o modelo
    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 com uma máscara PNG de canal único. O ficheiro YAML da Ultralytics emparelha cada imagem com a respetiva máscara através do campo masks_dir: masks e utiliza label_mapping para converter os IDs de rótulo originais do Cityscapes nos 19 IDs de treino contíguos padrão, mapeando os rótulos ignorados e vazios para 255. As máscaras da divisão test identificam apenas o veículo do ego e as regiões da margem, por isso utiliza val para verificações locais do 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 para a raiz do conjunto de dados cityscapes — a Ultralytics reorganiza-os automaticamente na estrutura esperada images/ e masks/ na primeira vez que iniciares o treino.

  • As máscaras de origem do Cityscapes armazenam IDs de rótulo originais diferentes dos 19 IDs de treino utilizados na avaliação. A secção label_mapping converte os rótulos válidos em IDs de classe contíguos 0–18 e atribui 255 aos rótulos ignorados e vazios para que sejam excluídos da perda e das métricas durante o treino e a validação.

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

Comentários