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/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.
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 🚀 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.
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:
@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 treinofrom 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}/emasks/{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 campomasks_dir: maskse utilizalabel_mappingpara converter os IDs de etiquetas originais do Cityscapes nos 19 IDs de treino contíguos padrão, mapeando as etiquetas ignoradas e vazias para255. As máscaras da divisãotestapenas identificam as regiões do veículo ego e da margem, por isso utilizavalpara verificações locais de mIoU.Sim. Cria uma conta no site do Cityscapes e transfere os arquivos
leftImg8bit_trainvaltest.zipegtFine_trainvaltest.zip(~11 GB no total). Extrai ambos na raiz do datasetcityscapes— a Ultralytics reorganiza-os automaticamente no formato esperadoimages/emasks/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_mappingconverte as etiquetas válidas em IDs de classe contíguos0–18e atribui255à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.