Bộ dữ liệu Cityscapes#
Dataset Cityscapes là một benchmark semantic segmentation quy mô lớn về cảnh đường phố đô thị được chụp tại 50 thành phố ở châu Âu, với 2.975 ảnh huấn luyện được chú thích chi tiết và 500 ảnh kiểm định trên 19 lớp. Đây là một trong những dataset được sử dụng rộng rãi nhất cho nghiên cứu lái xe tự động và hiểu cảnh đô thị với các model Ultralytics YOLO.
Tính năng chính#
- Các chú thích chi tiết của Cityscapes bao gồm 2.975 ảnh huấn luyện và 500 ảnh kiểm định trên 19 lớp; tệp lưu trữ cũng cung cấp 1.525 ảnh kiểm tra, nhưng các mặt nạ được phát hành của chúng chỉ gán nhãn xe tự lái và viền ảnh — các chú thích lớp thực tế bị giữ lại và điểm số tập kiểm tra chính thức yêu cầu gửi dự đoán đến Cityscapes evaluation server.
- Tập dữ liệu bao gồm 19 lớp đánh giá trải dài trên các danh mục phẳng, con người, phương tiện, xây dựng, đối tượng, thiên nhiên và bầu trời.
- Cityscapes cung cấp các chỉ số đánh giá chuẩn hóa như mean Intersection over Union (mIoU) cho semantic segmentation, cho phép so sánh hiệu suất model một cách hiệu quả.
- Trước khi tiến hành tải xuống thủ công ~11 GB, hãy kiểm tra tính hợp lệ của pipeline huấn luyện của bạn với tập con Cityscapes8 gồm 8 ảnh.
Cấu trúc tập dữ liệu#
Cấu hình Ultralytics yêu cầu bố cục sau sau khi chuẩn bị:
cityscapes/
├── images/
│ ├── train/
│ ├── val/
│ └── test/
└── masks/
├── train/
├── val/
└── test/Cityscapes không có tính năng tự động tải xuống tệp lưu trữ. Hãy tạo một tài khoản trên Cityscapes website, sau đó tải xuống các tệp lưu trữ leftImg8bit_trainvaltest.zip và gtFine_trainvaltest.zip (tổng cộng ~11 GB) và giải nén cả hai vào thư mục gốc của dataset cityscapes. Ultralytics sẽ tự động sắp xếp lại chúng thành bố cục images/ và masks/ ở trên vào lần đầu tiên bạn huấn luyện.
Các mặt nạ ngữ nghĩa là các tệp PNG một kênh. Các ID nhãn Cityscapes gốc được ánh xạ tới 19 ID huấn luyện tiêu chuẩn thông qua phần label_mapping, và các nhãn bị bỏ qua hoặc trống được ánh xạ tới 255 để chúng bị loại khỏi quá trình huấn luyện và đánh giá.
Các mặt nạ gtFine/test được phát hành công khai chỉ gán nhãn cho các vùng xe tự lái và viền ảnh — tất cả các lớp khác đều trống. Tính toán mIoU trên tập chia val để đánh giá cục bộ; điểm số tập kiểm tra chính thức yêu cầu gửi dự đoán đến Cityscapes evaluation server.
Ứng dụng#
Cityscapes được sử dụng rộng rãi để huấn luyện và đánh giá các model deep learning trong semantic segmentation, đặc biệt là cho autonomous driving, hệ thống hỗ trợ người lái nâng cao (ADAS) và robot đô thị.
Các hình ảnh độ phân giải cao và chú thích chi tiết của nó cũng làm cho nó có giá trị cho nghiên cứu phân tích cảnh thời gian thực, hiểu làn đường và vật cản, và bất kỳ tác vụ nào yêu cầu hiểu mức độ điểm ảnh dày đặc của các môi trường đô thị phức tạp. Các model semantic segmentation YOLO26 được huấn luyện trước đạt tới 83,6 mIoU trên tập kiểm định Cityscapes — hãy xem trang semantic segmentation models để có bảng benchmark đầy đủ. Bạn có thể tổ chức, trực quan hóa và quản lý dữ liệu Cityscapes trong suốt vòng đời phát triển model với Ultralytics Platform.
YAML tập dữ liệu#
Một tệp YAML của dataset định nghĩa các đường dẫn, lớp, thư mục mặt nạ và ánh xạ nhãn của Cityscapes. Tệp cityscapes.yaml được duy trì tại 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)Cách sử dụng#
Để huấn luyện model YOLO26n-sem trên dataset Cityscapes trong 100 epochs với kích thước ảnh là 1024, bạn có thể sử dụng các đoạn mã sau. Để có danh sách đầy đủ các đối số có sẵn, hãy tham khảo trang Training của model.
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)Trích dẫn, Giấy phép và Ghi nhận#
Cityscapes được phát hành theo custom non-commercial license — miễn phí cho nghiên cứu học thuật và đánh giá, nhưng việc sử dụng thương mại, cấp phép hoặc phân phối lại dữ liệu đòi hỏi sự cho phép riêng từ nhóm Cityscapes.
Nếu bạn sử dụng bộ dữ liệu Cityscapes trong công việc nghiên cứu hoặc phát triển của mình, vui lòng trích dẫn bài báo sau:
@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}
}Chúng tôi xin cảm ơn nhóm Cityscapes vì đã tạo và duy trì nguồn tài nguyên có giá trị này cho cộng đồng lái xe tự động và thị giác máy tính. Để biết thêm thông tin về dataset Cityscapes và những người tạo ra nó, hãy truy cập Cityscapes dataset website.
Câu hỏi thường gặp#
Dataset Cityscapes là một benchmark semantic segmentation quy mô lớn về cảnh đường phố đô thị trên 50 thành phố ở châu Âu, được sử dụng rộng rãi như một tài liệu tham khảo chuẩn cho nghiên cứu lái xe tự động và ADAS. 19 lớp đánh giá được chú thích chi tiết, hình ảnh độ phân giải cao và chỉ số mean Intersection over Union (mIoU) chuẩn hóa của nó làm cho nó trở thành một trong những benchmark được trích dẫn nhiều nhất cho các model hiểu cảnh dày đặc.
Để huấn luyện model YOLO26n-sem trên dataset Cityscapes trong 100 epochs với kích thước ảnh là 1024, bạn có thể sử dụng các đoạn mã sau. Để có danh sách chi tiết các đối số có sẵn, hãy tham khảo trang Training của model.
Ví dụ về Trainingfrom 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)Sau khi chuẩn bị, dataset được tổ chức thành các thư mục
images/{train,val,test}/vàmasks/{train,val,test}/, với mỗi ảnh được ghép nối với một mặt nạ PNG một kênh. Tệp YAML của Ultralytics ghép nối mỗi ảnh với mặt nạ của nó thông qua trườngmasks_dir: masks, và sử dụnglabel_mappingđể chuyển đổi các ID nhãn Cityscapes gốc thành 19 ID huấn luyện liên tục tiêu chuẩn, ánh xạ các nhãn bị bỏ qua và trống tới255. Mặt nạ của tập chiatestchỉ gán nhãn các vùng xe tự lái và viền, vì vậy hãy sử dụngvalđể kiểm tra mIoU cục bộ.Có. Hãy tạo một tài khoản trên Cityscapes website và tải xuống các tệp lưu trữ
leftImg8bit_trainvaltest.zipvàgtFine_trainvaltest.zip(tổng cộng ~11 GB). Giải nén cả hai vào thư mục gốc của datasetcityscapes— Ultralytics sẽ tự động sắp xếp lại chúng thành bố cụcimages/vàmasks/dự kiến vào lần đầu tiên bạn huấn luyện.Các mặt nạ nguồn của Cityscapes lưu trữ các ID nhãn gốc khác với 19 ID huấn luyện được sử dụng để đánh giá. Phần
label_mappingchuyển đổi các nhãn hợp lệ thành các ID lớp liên tục0–18, và gán255cho các nhãn bị bỏ qua và trống để chúng bị loại khỏi hàm mất mát và các chỉ số trong quá trình huấn luyện và kiểm định.Không. Cityscapes được phát hành theo non-commercial license cho phép nghiên cứu học thuật, giảng dạy và đánh giá, nhưng cấm sử dụng thương mại, cấp phép hoặc bán dataset hoặc các tác phẩm phái sinh. Hãy liên hệ trực tiếp với nhóm Cityscapes để biết các tùy chọn cấp phép thương mại.