共计 1630 个字符,预计需要花费 5 分钟才能阅读完成。
背景介绍
Cityscapes 是自动驾驶和计算机视觉领域广泛使用的街景语义分割数据集,由奔驰等公司联合发布。它包含来自 50 个不同城市的街景图像,涵盖各种天气、季节和交通状况。这个数据集特别适合用于训练和评估语义分割模型,帮助算法理解道路场景中的各种物体(如车辆、行人、交通标志等)。

下载指南
- 访问 Cityscapes 官方网站(https://www.cityscapes-dataset.com/)
- 点击 ”Register” 注册账号
- 填写注册信息后,登录邮箱验证
- 登录后,阅读并同意数据集使用协议
-
在 ”Downloads” 页面选择需要下载的数据包
-
关键文件说明 :
leftImg8bit_trainvaltest.zip:训练 / 验证 / 测试集图像gtFine_trainvaltest.zip:精细标注数据gtCoarse.zip:粗糙标注数据
数据结构解析
解压后的目录结构如下:
cityscapes
├── leftImg8bit
│ ├── train
│ ├── val
│ └── test
└── gtFine
├── train
├── val
└── test
leftImg8bit:包含原始街景图像(分辨率 2048×1024)gtFine:包含精细标注(19 类语义标签)- 19 类与 34 类的区别在于标签的精细程度,19 类是更通用的分类
代码实战
import os
import cv2
import numpy as np
# 加载图像和对应的标注
def load_cityscapes_sample(img_path, label_path):
try:
img = cv2.imread(img_path)
label = cv2.imread(label_path, cv2.IMREAD_GRAYSCALE)
if img is None or label is None:
raise FileNotFoundError("无法加载图像或标注文件")
return img, label
except Exception as e:
print(f"加载数据时出错: {e}")
return None, None
# 示例使用
img_path = "cityscapes/leftImg8bit/train/aachen/aachen_000000_000019_leftImg8bit.png"
label_path = "cityscapes/gtFine/train/aachen/aachen_000000_000019_gtFine_labelIds.png"
img, label = load_cityscapes_sample(img_path, label_path)
if img is not None and label is not None:
print(f"图像尺寸: {img.shape}, 标注尺寸: {label.shape}")
避坑指南
- 下载速度慢 :
- 使用学术网络或 VPN
- 尝试非高峰时段下载
-
使用下载工具(如 wget)支持断点续传
-
解压失败 :
- 确保下载文件完整(检查 MD5)
- 使用 7 -Zip 等专业解压工具
-
确保磁盘空间充足
-
路径问题 :
- 注意 Windows 和 Linux 路径格式差异
- 使用 os.path.join 构建跨平台路径
扩展应用
Cityscapes 数据集常用于训练语义分割模型如:
- FCN
- U-Net
- DeepLab 系列
- PSPNet
训练流程通常包括:
- 数据预处理(resize、归一化)
- 模型定义
- 损失函数选择(交叉熵、Dice 等)
- 训练和验证
思考题
- 如何将 Cityscapes 数据集转换为更适合小显存显卡训练的格式?
- 尝试使用 matplotlib 可视化原始图像和对应的语义标注
- 思考如何解决类别不平衡问题(如道路像素远多于交通标志)
参考资料
- 官方文档:https://www.cityscapes-dataset.com/dataset-overview/
- 标注说明:https://github.com/mcordts/cityscapesScripts
- 相关论文:https://arxiv.org/abs/1604.01685
正文完
