一、数据集概览

1、数据在官网注册下载,https://www.cityscapes-dataset.com/  ,官网也可以在benchmarks中查看当前流行的神经网络速度和准确率等指标。

2、数据预处理和评估结果代码下载:https://github.com/mcordts/cityscapesScripts

       原图存放在leftImg8bit文件夹中,精细标注的数据存放在gtFine (gt : ground truth) 文件夹中 。其中,训练集共2975张(train),验证集500张(val),都有相应的精细标注的标签。但是,测试集(test)只给了原图,没有给标签,官方用于线上评估大家提交的代码(防止有人用test集训练刷指标)。因此,实际使用中可以用validation集做test使用。

      标签文件中每张图像对应4个文件:

  • _gtFine_polygons.json存储的标注的第一手数据,即类("label": "sky","building","sidewalk",等)及其在图像中对应的区域(由多边形"polygon"顶点在图像中的像素坐标给出的封闭区域);
  • _gtFine_labelIds.png的值是0-33,不同的值代表不同的类,值和类的对应关系在代码中cityscapesscripts/helpers/labels.py中定义;
  • _gtFine_instaceIds.png是实例分割的结果,即对同一类中的不同个体进行区分;
  • _gtFine_color.png是为了可视化,不同类别与色彩的对应关系也在labels.py文件中给出。

二、训练准备

     训练使用的label的图片应该是值为0~n的单通道的灰度图,其中n表示类别。

     cityscapesScripts/helpers/labels.py文件中定义了不同类别和Id值的对应方式、class和category的对应关系等。训练时可以选择自己感兴趣的类别进行训练,如labels.py中给的trainId的19类的例子,不感兴趣的类别trainId设为255,ignoreInEval改为True。使用训练数据的两种方法:

  1. 运行cityscapesscripts/preparation/createTrainIdLabelImgs.py代码,会调用labels.py中的类别定义,从json文件中生成19类的用于训练的_gtFine_labelTrainIds.png,进而进行训练。
  2. 使用_gtFine_labelIds.png的数据,在load时通过代码将不需要的类对应的值设为255(ignore),并建立class_map将训练使用的类依次映射到0~18的连续值。

 

三、测试训练结果

    通过cityscapesscritps/evaluation/evalPixelLevelSemanticLabeling.py可以比较groudtruth和神经网络预测的结果图像,计算出classes IoU和Categories IoU. 

    但是这个代码要求输入的是labelIds,所以要求把根据TrainIds预测的图像转化为34类的Id,不方便。我修改的代码可以直接输入_gtFine_labelTrainIds.png和按照trainIds生成的图片;另外由于输入图像的分辨率高2048*1024,实际神经网络输出的分辨率可能不同,代码中修改resize的参数,可以评估修改了分辨率的预测图像。程序下载链接:https://download.csdn.net/download/cxiazaiyu/10637603 。

 


 

 

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐