Conjunto de dados Cityscapes

O conjunto de dados Cityscapes é um benchmark de segmentação semântica em larga escala focado em cenas de ruas urbanas capturadas em 50 cidades europeias. Ele fornece anotações de alta qualidade ao nível de pixel e é um dos conjuntos de dados mais amplamente utilizados para pesquisa em direção autônoma e compreensão de cenas urbanas com modelos Ultralytics YOLO.

Principais Recursos

  • As anotações detalhadas do Cityscapes incluem 2.975 imagens de treinamento, 500 imagens de validação e 1.525 imagens de teste.
  • O conjunto de dados abrange 19 classes de avaliação, abrangendo categorias de estrada, veículo, humano, 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 do modelo.

Estrutura do conjunto de dados

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

cityscapes/
├── images/
│   ├── train/
│   ├── val/
│   └── test/
└── masks/
    ├── train/
    ├── val/
    └── test/

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 treinamento padrão através da seção label_mapping, e rótulos ignorados ou nulos são mapeados para 255 para que sejam excluídos do treinamento e da avaliação. Baixe os arquivos oficiais leftImg8bit e gtFine do site do Cityscapes e extraia-os na raiz do conjunto de dados; o bloco de preparação em cityscapes.yaml organiza então as imagens e máscaras neste layout.

Aplicações

O Cityscapes é amplamente utilizado para treinar e avaliar modelos de deep learning em segmentação semântica, particularmente para direçã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 em análise de cena em tempo real, compreensão de faixas e obstáculos, e qualquer tarefa que exija compreensão densa ao nível de pixel de ambientes urbanos complexos.

YAML do conjunto de dados

Um arquivo YAML de conjunto de dados define os caminhos, classes, diretório de máscara e 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, podes usar os seguintes trechos de código. Para uma lista abrangente de argumentos disponíveis, consulta a página de Treinamento 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 e Agradecimentos

Se usares o conjunto de dados Cityscapes na tua pesquisa ou trabalho de desenvolvimento, por favor 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 à equipe do Cityscapes por criar e manter este recurso valioso para as comunidades de direção autônoma e visão computacional. Para mais informações sobre o conjunto de dados Cityscapes e seus criadores, visita o site do conjunto de dados Cityscapes.

Perguntas Frequentes

O que é o conjunto de dados Cityscapes e por que ele é importante para a visão computacional?

O conjunto de dados Cityscapes é um benchmark de segmentação semântica em larga escala focado em cenas de ruas urbanas capturadas em 50 cidades europeias. Ele contém 5.000 imagens finamente anotadas em 19 classes de avaliação, tornando-o um recurso fundamental para pesquisa em direção autônoma e compreensão de cenas urbanas. Suas imagens de alta resolução, anotações densas e métrica padronizada de mean Intersection over Union (mIoU) o tornam ideal para fazer benchmarking de modelos de previsão densa.

Como posso treinar um modelo YOLO usando o conjunto de dados Cityscapes?

Para treinar um modelo YOLO26n-sem no conjunto de dados Cityscapes por 100 epochs com um tamanho de imagem de 1024, podes usar os seguintes trechos de código. Para uma lista detalhada de argumentos disponíveis, consulta a página de Treinamento 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)

Como o conjunto de dados Cityscapes é estruturado?

Após a preparação, o conjunto de dados é organizado em diretórios images/{train,val,test}/ e masks/{train,val,test}/, com cada imagem pareada com uma máscara PNG de canal único. O arquivo YAML do Ultralytics pareia cada imagem com sua máscara através do campo masks_dir: masks e usa label_mapping para converter IDs de rótulo originais do Cityscapes nos 19 IDs de treinamento contíguos padrão, mapeando rótulos ignorados e nulos para 255.

Preciso baixar o Cityscapes manualmente?

Sim. O Cityscapes exige a aceitação dos termos do conjunto de dados no site oficial. Baixe e extraia leftImg8bit e gtFine na raiz do conjunto de dados cityscapes antes de usar o bloco de preparação em cityscapes.yaml para criar o layout images/ e masks/ esperado.

Por que o Cityscapes usa label_mapping?

As máscaras de origem do Cityscapes armazenam IDs de rótulo originais que diferem dos 19 IDs de treinamento usados para avaliação. A seção label_mapping converte rótulos válidos em IDs de classe contíguos de 0 a 18, 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.

Comentários