Tập dữ liệu Cityscapes
Tập dữ liệu Cityscapes là một tập dữ liệu benchmark semantic segmentation quy mô lớn, tập trung vào các cảnh đường phố đô thị được ghi lại tại 50 thành phố ở châu Âu. Tập dữ liệu này cung cấp các chú thích ở cấp độ pixel chất lượng cao và là một trong những tập dữ liệu được sử dụng rộng rãi nhất cho nghiên cứu về xe tự lái và hiểu cảnh quan đô thị với các mô hình Ultralytics YOLO.
Các 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, 500 ảnh kiểm chứng và 1.525 ảnh kiểm tra.
- Tập dữ liệu bao phủ 19 lớp đánh giá trải rộng trên các danh mục đường sá, phương tiện, con người, công trình, vật thể, thiên nhiên và bầu trời.
- Cityscapes cung cấp các chỉ số đánh giá tiêu chuẩn như mean Intersection over Union (mIoU) cho semantic segmentation, cho phép so sánh hiệu quả hiệu suất của các mô hì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/Các mặt nạ (masks) ngữ nghĩa là các tệp PNG đơn kênh. Các ID nhãn gốc của Cityscapes được ánh xạ sang 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 nhãn trống được ánh xạ sang 255 để chúng bị loại trừ khỏi quá trình huấn luyện và đánh giá. Tải xuống các kho lưu trữ leftImg8bit và gtFine chính thức từ trang web Cityscapes và giải nén chúng vào thư mục gốc của tập dữ liệu; sau đó khối chuẩn bị trong cityscapes.yaml sẽ sắp xếp các ảnh và mặt nạ vào bố cục này.
Ứng dụng
Cityscapes được sử dụng rộng rãi để huấn luyện và đánh giá các mô hình deep learning trong semantic segmentation, đặc biệt là cho autonomous driving, các hệ thống hỗ trợ lái xe tiên tiến (ADAS) và robot đô thị.
Hình ảnh có độ phân giải cao và các chú thích chi tiết của nó cũng tạo nên giá trị cho nghiên cứu về phân tích cảnh quan thời gian thực, hiểu làn đường và vật cản, cũng như bất kỳ tác vụ nào yêu cầu hiểu biết sâu sắc ở cấp độ pixel về các môi trường đô thị phức tạp.
YAML tập dữ liệu
Một tệp YAML tập dữ liệu định nghĩa các đường dẫn, các lớp, thư mục mặt nạ và ánh xạ nhãn cho 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 mô hình YOLO26n-sem trên tập dữ liệu 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ố khả dụng, hãy tham khảo trang Training của mô hình.
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 và Ghi nhận
Nếu bạn sử dụng tập dữ liệu Cityscapes trong nghiên cứu hoặc công việ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 gửi lời cảm ơn đến nhóm Cityscapes vì đã tạo ra và duy trì nguồn tài nguyên quý giá này cho cộng đồng xe tự lái và thị giác máy tính. Để biết thêm thông tin về tập dữ liệu Cityscapes và những người tạo ra nó, hãy truy cập trang web tập dữ liệu Cityscapes.
Câu hỏi thường gặp
Tập dữ liệu Cityscapes là gì và tại sao nó lại quan trọng đối với thị giác máy tính?
Tập dữ liệu Cityscapes là một benchmark semantic segmentation quy mô lớn, tập trung vào các cảnh đường phố đô thị được ghi lại tại 50 thành phố ở châu Âu. Nó chứa 5.000 hình ảnh được chú thích chi tiết qua 19 lớp đánh giá, trở thành nguồn tài nguyên nền tảng cho nghiên cứu về xe tự lái và hiểu cảnh quan đô thị. Hình ảnh độ phân giải cao, chú thích dày đặc và chỉ số mean Intersection over Union (mIoU) tiêu chuẩn hóa làm cho nó trở nên lý tưởng để đánh giá các mô hình dự đoán dày đặc.
Làm thế nào tôi có thể huấn luyện mô hình YOLO bằng tập dữ liệu Cityscapes?
Để huấn luyện mô hình YOLO26n-sem trên tập dữ liệu Cityscapes trong 100 epoch với kích thước ảnh 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ố khả dụng, hãy tham khảo trang Training của mô hình.
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)Tập dữ liệu Cityscapes được cấu trúc như thế nào?
Sau khi chuẩn bị, tập dữ liệu được sắp xếp vào các thư mục images/{train,val,test}/ và masks/{train,val,test}/, với mỗi hình ảnh được ghép nối với một mặt nạ PNG đơn kênh. Tệp YAML của Ultralytics ghép nối từng ảnh với mặt nạ của nó thông qua trường masks_dir: masks và sử dụng label_mapping để chuyển đổi ID nhãn gốc của Cityscapes 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à nhãn trống thành 255.
Tôi có cần tải xuống Cityscapes theo cách thủ công không?
Có. Cityscapes yêu cầu chấp nhận các điều khoản của tập dữ liệu trên trang web chính thức. Tải xuống và giải nén leftImg8bit và gtFine vào thư mục gốc của tập dữ liệu cityscapes trước khi sử dụng khối chuẩn bị trong cityscapes.yaml để tạo bố cục images/ và masks/ như mong đợi.
Tại sao Cityscapes sử dụng label_mapping?
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_mapping chuyển đổi các nhãn hợp lệ thành ID lớp liên tục từ 0 đến 18, và gán 255 cho các nhãn bị bỏ qua và nhãn trống để chúng bị loại trừ khỏi hàm mất mát (loss) và các chỉ số trong quá trình huấn luyện và kiểm chứng.