一、简介
CityScapes数据集:广泛用于计算机视觉任务的城市场景分割数据集,包含来自各个城市街道的高分辨率图像(每个图像都有像素级别的标签,标识不同的物体和场景类别)
Cityscapes数据集有fine和coarse两套评测标准,fine提供5000张精细标注的图像,coarse提供5000张精细标注和20000张粗糙标注的图像。
一般用gt fine样本集进行训练和评估,图片可分为2975张train训练图、500张val验证图、1525张test测试图,每张图片大小都是1024x2048
二、CityScapes数据集下载
数据集官网:Login – Cityscapes Dataset
注册账号后,需要通过官方发送的账号激活邮件,激活账号
由于官网下载比较慢,可以在以下链接中下载部分相关的数据集:
三、数据集理解
各路径下的各文件名的含义如下:
{root}/{type}{video}/{split}/{city}/{city}_{seq:0>6}_{frame:0>6}_{type}{ext}
-
root:Cityscapes数据集的根文件夹
-
type:数据集的类型/模态,例如gtFine表示精细的地面真值,leftImg8bit表示左侧的8位图像
-
split:数据集的划分,即训练集(train)、验证集(val)、测试集(test)、额外的训练集(train_extra)或演示视频(demoVideo)。【请注意,不是所有类型的数据都包括各种划分,所以有时候会有空的文件夹】
-
city:数据所属的城市
-
seq:序列号,由6位数字组成
-
frame:帧编号,由6位数字组成
-
ext:文件的扩展名,可选地包含后缀,例如_polygons.json表示地面真值文件
type的取值:
-
gtFine:精细的标注数据,包括2975个训练样本、500个验证样本和1525个测试样本。
-
标注数据:使用包含各个多边形的JSON文件进行编码,提供像素值编码标签的PNG图像。这种类型的标注数据用于验证、测试,并可选择用于训练
-
-
gtCoarse:粗略的标注数据,适用于所有的训练和验证图像,以及另外19998个训练图像(train_extra)。这些标注数据可以用于训练,可以和gtFine一起使用,也可以单独用于弱监督设置
-
gtBbox3d:车辆的3D边界框标注
-
gtBboxCityPersons:行人边界框标注,适用于所有的训练和验证图像。边界框的四个值是(x,y,w,h),其中(x,y)是左上角的坐标,(w,h)是宽度和高度
-
leftImg8bit:左侧的8位LDR格式图像,这是标准的带有注释的图像
-
leftImg8bit_blurred:左侧的8位LDR格式图像,人脸和车牌已经模糊处理。在原始图像上进行结果计算,但在可视化时使用模糊处理后的图像
-
leftImg16bit:左侧的16位HDR格式图像,每个像素有16位的颜色深度,包含更多信息,特别是在场景非常暗或非常亮的部分。【图像以非标准的16位PNG格式存储,不是所有库都支持】
-
rightImg8bit:右侧的8位LDR格式立体视图
-
rightImg16bit:右侧的16位HDR格式立体视图
-
timestamp:记录时间(以纳秒为单位),每个序列的第一帧的时间戳始终为0
-
disparity:预计算的视差深度图。要获取视差值,对于每个像素p(p > 0),计算公式为:d = (float(p) - 1.) / 256.,其中p=0表示无效测量。【图像以非标准的16位PNG格式存储,不是所有库都支持】
-
camera:内部和外部相机校准
-
vehicle:车辆测距、GPS坐标和室外温度的车辆测距、GPS坐标和室外温度数据
split的取值:
-
train:通常用于训练,包含2975个带有精细和粗略标注的图像
-
val:用于超参数验证或者训练,包含500个带有精细和粗略标注的图像
-
test:用于在评估服务器上进行测试。标注数据不公开,但提供了方便起见的自车和校正边界的标注
-
train_extra:可选择用于训练,包含19998个带有粗略标注的图像
-
demoVideo:用于定性评估的视频序列,这些视频没有标注数据可用
四、数据集使用
输入数据input data:以“left/rightimg8bitxxxx”名字命名
目标数据target data:输入数据的真值,一般以“gtxxxx”名字命名
“xxxx_labelIds.png”文件包含图像每个像素的标签值,每个标签值(id)的含义如下:
实际训练中,训练标签值(trainId)是实际计算Loss所用的标签值,255表示背景(即无需分类的物体)
需要分类的物体的训练标签值是0到N的自然整数,其所对应的ignoreInEval值是False
可以根据实际的分类需要自定义数据集的分类数量
4.1gtFine
原始精细标注数据集:每张图片对应四张标注文件
xxx_gtFine_color.png(标注的可视化图片)
xxx_gtFine_instanceIds.png(实例分割标签)
xxx_gtFine_labelsIds.png(对应第一部分id列)
xxx_gtFine_polygons.json(手工标注的第一手数据)
对训练有用的:xxx_instanceIds.png用于做实例分割训练;xxx_labelsIds.png用于做语义分割训练,它们的像素值就是class值;xxx_polygons.json用labelme工具标注后所生成的文件,主要记录了每个多边形标注框上的点集坐标
4.2leftImg8bit
CityScapes数据集:来源于双摄像头拍摄的立体视频序列
leftImg:来自左摄像头的图片
8bit:都是每个分量为8bit的24位深度的图片
5.数据集标签处理
5.1下载官网的工具包
工具包链接:GitHub - mcordts/cityscapesScripts: README and scripts for the Cityscapes Dataset
将数据集放在工具包里的路径下
5.2更改labels.py文件
更改labels.py文件中不需要分类物体的trainId和ignoreInEval值
trainId:标签的像素值,表示类别
e.g.将ignoreInEval都设置为False,road设为1,其他设为0(表示训练两类)
5.3运行createTrainIdLabelImgs.py文件
将代码里的路径换成自己的cityscapes数据集的路径,然后直接运行
生成trainid标签文件,生成的标签文件在原数据集路径下,文件名为:
xxxx_gtFine_labelTrainIds.png
6.精度指标
Cityscapes评测集的四项相关指标:IoU class 、 iIoU class、 IoU category 、 iIou category iIoUclass,IoUcategory,iIoUcategory:对模型整体进行评估的基础上,从不同角度对模型算法的效果探讨,从而优化和改进模型效果
-
IoUClass:更多考虑全局场景的分割结果准确度,是默认的优先参照指标
-
iIoUClass:更看重算法在各个实例之间的分割准确度,是在IoUClass的基础上,对图像场景进行实例级的分割和结果预测。场景中的每个实例作为分割对象,类别相同的不同个体实例在该项评估中分别进行评测得到最终的结果
-
IoU指标根据分割的粒度区分为Class和Category,其中19个细分类别(Class)被划分为7个粗分类别(Category)进行粗粒度的分割,并给出相应的评估指标IoUCategory和iIoUCategory