DeepLabV3+(tensorflow)工程应用系列(一)—— 自己制作语义分割数据集

一、概述

  在实际的工程应用中,我们通常要制作自己的数据集,进而完成实际场景下的任务。关于语义分割任务数据集的基本介绍以及规范,请参考我总结的官网博客,PASCAL VOC 2012 数据集解析。在该系列博客中,将详细介绍【DeepLabV3+】的整个应用过程:数据制作,数据生成,代码解析,网络结构解析,论文翻译以及解析。

二、软件安装(Labelme)

  本次数据制作,选择普遍使用的标注软件,Labelme。该软件是一个图形界面的图像标注软件,来自于 http://labelme.csail.mit.edu/ 。它是用 Python 语言编写的,图形界面使用的是 Qt(PyQt)。

  1. 配置环境(anaconda+windows10)

    conda create --name=labelme python=3.6
    source activate labelme
    pip install pyqt5  # pyqt5 can be installed via pip on python3
    pip install labelme
    

    激活环境,运行软件:
    在这里插入图片描述
    软件启动界面如下图所示:
    DeepLabV3+(tensorflow)工程应用系列(一)—— 自己制作语义分割数据集_第1张图片

三、软件使用以及数据生成

  1. 数据标注
    选择【Edit】=>【Create Ploygons】后,进入该模式下编辑,见下图所示,我们标注了三类对象,分别是 person,plant,chair,标注完成后,保存数据,会生成 Json 文件。

    生成 Json 的文件如下图所示:
    DeepLabV3+(tensorflow)工程应用系列(一)—— 自己制作语义分割数据集_第2张图片

  2. 数据生成及可视化

    使用命令工具,【labelme_draw_json 2007_004000.json】,可视化标注的结果,如下图所示,并且会自动生成背景类,

    DeepLabV3+(tensorflow)工程应用系列(一)—— 自己制作语义分割数据集_第3张图片

    使用软件命令【labelme_json_to_dataset 2007_004000.json】,生成标签数据,如下图所示,img:原图,label:掩码图,label_names:类别,label_viz:可视化结果(背景默认是第0类),
    DeepLabV3+(tensorflow)工程应用系列(一)—— 自己制作语义分割数据集_第4张图片

  3. 批量生成数据
    在【2.】和【3.】中,我们展示了如何标注数据,并生成标签数据,这些操作都是针对单个数据处理。在实际的项目中,数据集规模往往非常大,不可能手动运行。然而,【Labelme】软件没有提供批量生成标签的代码,因此我们需要作相应的处理,Python【exe.py】代码如下:

    # 【exe.py】
    import os
    
    path = '.\\image44\\'  # 存放原图像和标注软件生成的Json文件
    file = os.listdir(path)
    
    # 循环调用exe(labelme_json_to_dataset)程序,name1是传入参数
    for name in file:
        if name.endswith('.json'):
            print(name)
            name1 = path + name
            os.system('labelme_json_to_dataset ' + name1)
    

    Windows下,【labelme_json_to_dataset.exe】应用程序路径,
    DeepLabV3+(tensorflow)工程应用系列(一)—— 自己制作语义分割数据集_第5张图片
    Adaconda Prompt 下运行【exe.py】,就可以将 Labelme 标注文件生成掩码图,便于训练使用,
    DeepLabV3+(tensorflow)工程应用系列(一)—— 自己制作语义分割数据集_第6张图片
    运行【python exe.py】后,生成的三个文件夹分别对应三张图片以及其Json文件转换的掩码图,DeepLabV3+(tensorflow)工程应用系列(一)—— 自己制作语义分割数据集_第7张图片

  4. 问题点
    在实际情况下,图像中并没有包含所有的类,可能仅仅标注少的几类。那么,按照上述生成方式,会出现类别错误。如下图所示,不同的图片中,天空的掩码颜色并没有保持一致(左图是黄色,右图是绿色):
    DeepLabV3+(tensorflow)工程应用系列(一)—— 自己制作语义分割数据集_第8张图片
    针对上述问题,需要修改源代码,打开【C:\Users\ll_66\Anaconda3\envs\labelme\Lib\site-packages\labelme\cli】下的脚本文件【json_to_dataset.py】,具体修改见下图所示,修改完成后保存,然后重新运行命令 【python exe.py】即可,
    DeepLabV3+(tensorflow)工程应用系列(一)—— 自己制作语义分割数据集_第9张图片

四、参考资源

  1. https://blog.csdn.net/u014061630/article/details/88756644(介绍的非常详细,全面)
  2. 语义分割数据制作(介绍Ubuntu下利用Labelme制作数据)

你可能感兴趣的:(语义分割数据集,Labelme制作数据集,DeepLab语义分割,深度学习)