Cityscapes 데이터셋#
Cityscapes 데이터셋은 유럽 50개 도시에서 촬영한 도심 거리 장면으로 구성된 대규모 시맨틱 세그멘테이션 벤치마크입니다. 19개 클래스에 대해 정밀하게 주석 처리된 학습 이미지 2,975개와 검증 이미지 500개가 포함됩니다. 자율 주행 연구와 Ultralytics YOLO 모델을 활용한 도심 장면 이해 분야에서 가장 널리 사용되는 데이터셋 중 하나입니다.
주요 기능#
- Cityscapes 정밀 주석에는 19개 클래스에 걸친 학습 이미지 2,975개와 검증 이미지 500개가 포함됩니다. 아카이브에는 테스트 이미지 1,525개도 포함되어 있지만, 공개된 마스크에는 자차와 이미지 테두리만 레이블링되어 있습니다. 실제 클래스 주석은 공개되지 않으며, 공식 테스트 세트 점수를 얻으려면 Cityscapes 평가 서버에 예측 결과를 제출해야 합니다.
- 이 데이터셋은 평면, 사람, 차량, 구조물, 객체, 자연 및 하늘 카테고리에 걸친 평가 클래스 19개를 다룹니다.
- Cityscapes는 시맨틱 세그멘테이션을 위한 평균 교집합 대비 합집합(mIoU)과 같은 표준화된 평가 메트릭을 제공하여 모델 성능을 효과적으로 비교할 수 있도록 합니다.
- 약 11 GB를 수동으로 다운로드하기 전에, 이미지 8개로 구성된 Cityscapes8 하위 집합으로 학습 파이프라인이 제대로 작동하는지 확인하세요.
데이터셋 구조#
준비가 완료되면 Ultralytics 설정에서 다음 디렉터리 구조를 사용합니다:
cityscapes/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── masks/
├── train/
├── val/
└── test/Cityscapes에는 자동 아카이브 다운로드 기능이 없습니다. Cityscapes 웹사이트에서 계정을 만든 후 leftImg8bit_trainvaltest.zip 및 gtFine_trainvaltest.zip 아카이브(총 약 11 GB)를 다운로드하고, 두 아카이브를 모두 cityscapes 데이터셋 루트에 압축 해제합니다. 처음 학습을 시작하면 Ultralytics가 이를 위에서 설명한 images/ 및 masks/ 구조로 자동 재구성합니다.
시맨틱 마스크는 단일 채널 PNG 파일입니다. 원본 Cityscapes 레이블 ID는 label_mapping 섹션을 통해 표준 19개 학습 ID에 매핑되며, 무시 또는 비유효 레이블은 255에 매핑되어 학습 및 평가에서 제외됩니다.
공개된 gtFine/test 마스크에는 자차와 이미지 테두리 영역만 레이블링되어 있으며, 나머지 클래스는 모두 비유효 영역입니다. 로컬 평가에서는 val 분할을 사용해 mIoU를 계산하세요. 공식 테스트 세트 점수를 얻으려면 Cityscapes 평가 서버에 예측 결과를 제출해야 합니다.
응용 분야#
Cityscapes는 특히 자율 주행, 첨단 운전자 보조 시스템(ADAS) 및 도시 로보틱스와 관련된 시맨틱 세그멘테이션 분야에서 딥러닝 모델을 학습하고 평가하는 데 널리 사용됩니다.
고해상도 이미지와 상세한 주석 덕분에 실시간 장면 파싱, 차선 및 장애물 이해, 복잡한 도심 환경에 대한 조밀한 픽셀 수준의 이해가 필요한 작업 연구에도 유용합니다. 사전 학습된 YOLO26 시맨틱 세그멘테이션 모델은 Cityscapes 검증 세트에서 최대 83.6 mIoU를 기록합니다. 전체 벤치마크 표는 시맨틱 세그멘테이션 모델 페이지를 참조하세요. Ultralytics Platform을 사용하면 모델 개발 워크플로 전반에서 Cityscapes 데이터를 구성하고, 시각화하며, 관리할 수 있습니다.
데이터셋 YAML#
데이터셋 YAML 파일은 Cityscapes 경로, 클래스, 마스크 디렉터리 및 레이블 매핑을 정의합니다. cityscapes.yaml 파일은 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)사용법#
Cityscapes 데이터셋으로 YOLO26n-sem 모델을 100 에포크 동안 이미지 크기 1024로 학습하려면 다음 코드 예제를 사용할 수 있습니다. 사용 가능한 인수의 전체 목록은 모델 학습 페이지를 참조하세요.
from ultralytics import YOLO
# 모델 로드
model = YOLO("yolo26n-sem.pt") # 사전 학습된 모델을 불러옵니다(학습에 권장).
# 모델 학습
results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)인용, 라이선스 및 감사의 말#
Cityscapes는 비상업적 용도의 독자 라이선스로 공개됩니다. 학술 연구 및 평가에는 무료로 사용할 수 있지만, 데이터를 상업적으로 사용하거나 라이선스를 부여하거나 재배포하려면 Cityscapes 팀의 별도 허가가 필요합니다.
연구 또는 개발 작업에서 Cityscapes 데이터셋을 사용하는 경우 다음 논문을 인용해 주세요:
@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}
}자율 주행 및 컴퓨터 비전 커뮤니티에 유용한 리소스를 만들고 관리해 온 Cityscapes 팀에 감사의 뜻을 전합니다. Cityscapes 데이터셋 및 제작자에 대한 자세한 내용은 Cityscapes 데이터셋 웹사이트를 방문하세요.
자주 묻는 질문#
Cityscapes 데이터셋은 유럽 50개 도시의 도심 거리 장면으로 구성된 대규모 시맨틱 세그멘테이션 벤치마크이며, 자율 주행 및 ADAS 연구의 표준 참조 자료로 널리 사용됩니다. 정밀하게 주석 처리된 19개 평가 클래스, 고해상도 이미지 및 표준화된 평균 교집합 대비 합집합(mIoU) 메트릭을 갖춰, 조밀한 장면 이해 모델을 위한 가장 많이 인용되는 벤치마크 중 하나입니다.
Cityscapes 데이터셋으로 YOLO26n-sem 모델을 100 에포크 동안 이미지 크기 1024로 학습하려면 다음 코드 예제를 사용할 수 있습니다. 사용 가능한 인수의 자세한 목록은 모델 학습 페이지를 참조하세요.
학습 예제from ultralytics import YOLO # 모델 로드 model = YOLO("yolo26n-sem.pt") # 사전 학습된 모델을 불러옵니다(학습에 권장). # 모델 학습 results = model.train(data="cityscapes.yaml", epochs=100, imgsz=1024)준비 후 데이터셋은
images/{train,val,test}/및masks/{train,val,test}/디렉터리로 구성되며, 각 이미지에는 단일 채널 PNG 마스크가 하나씩 대응됩니다. Ultralytics YAML 파일은masks_dir: masks필드를 통해 각 이미지와 마스크를 연결하고,label_mapping을 사용해 원본 Cityscapes 레이블 ID를 표준 19개 연속 학습 ID로 변환하며, 무시 및 비유효 레이블은255에 매핑합니다.test분할의 마스크에는 자차 및 테두리 영역만 레이블링되어 있으므로, 로컬 mIoU 검사는val을 사용하세요.예. Cityscapes 웹사이트에서 계정을 만든 다음
leftImg8bit_trainvaltest.zip및gtFine_trainvaltest.zip아카이브(총 약 11 GB)를 다운로드합니다. 두 아카이브를 모두cityscapes데이터셋 루트에 압축 해제하면, 처음 학습을 시작할 때 Ultralytics가 예상되는images/및masks/구조로 자동 재구성합니다.Cityscapes 원본 마스크에는 평가에 사용하는 19개 학습 ID와 다른 원본 레이블 ID가 저장되어 있습니다.
label_mapping섹션은 유효한 레이블을 연속적인 클래스 ID0–18로 변환하고, 무시 및 비유효 레이블을255에 할당하여 학습 및 검증 중 손실과 메트릭 계산에서 제외합니다.아니요. Cityscapes는 학술 연구, 교육 및 평가에는 사용할 수 있지만 데이터셋 또는 파생 저작물의 상업적 사용, 라이선스 부여 또는 판매는 금지하는 비상업적 라이선스로 공개됩니다. 상업적 라이선스 옵션은 Cityscapes 팀에 직접 문의하세요.