zoukankan      html  css  js  c++  java
  • 【DL】如何生成用于训练的数据集

    操作步骤:

    1. 使用标注工具生成标注文件;

    博主使用labelme开源工具标注文件;

    labelme的安装和使用清参考here;

    2. 基于标注数据文件和样本图片生成对应的json目录;

    每个样本文件生成的json目录包含的内容有原图/

    img.png: 对应的局部的jpg原图文件,训练时要用

    label.png: 标注语义图像,训练时要用

    label_names.txt: 在这张图像上目标分类名称

    label_viz.png:  标签可视化,用于让我们确认是否标记正确

    3. 将局部类别标签转换为全局类别标签文件,得到用于训练的样本对;

    4. 分离训练集和验证集用于训练;

    注意,

    1. 数据集的标注;

    2. 数据集的路径和生成过程;

    3. 原博客中有错误(也有可能与使用的软件版本等有关);最后生成的png是灰度图像,像素值是全局类别数值;

    遇到的错误

    File "/home/xxx/miniconda3/envs/open_mmlab/lib/python3.8/site-packages/torch/nn/functional.py", line 3163, in interpolate
    return torch._C._nn.upsample_bilinear2d(input, output_size, align_corners, sfl[0], sfl[1])
    RuntimeError: It is expected output_size equals to 2, but got size 3

    原因:生成的全局类别标签图像文件的数据尺寸有问题;

    解决方法:

    # new = new + np.expand_dims(index_all*(np.array(img) == index_json),-1)
    new = new + index_all*(np.array(img) == index_json)

    特别注意,

    保存图像的时候要注意保存成png格式的图像,因为jpg格式会在存储时对图像进行压缩,导致mask图像不准确。

     在PIL中,图像有很多种模式,如'L'模式,’P'模式,还有常见的'RGB'模式,模式'L'为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。模式“P”为8位彩色图像,它的每个像素用8个bit表示,其对应的彩色值是按照调色板索引值查询出来的。标签图像的模式正是'P'模式,因此测试时要生成对应标签图像的图片的话,构建一个调色板即可。

    参考

    1. 语义分割中单类别和多类别图片数据标注,以及灰度类别转换

    2. UNet/UNet++多类别分割

    做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
    版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
  • 相关阅读:
    理解和配置 Linux 下的 OOM Killer
    ARM各种版本号知识以及型号的发展(三星为例)
    GCC 编译使用动态链接库和静态链接库
    insmod module_param 模块参数
    cgic 写CGI程序
    嵌入式应用中CGI编程中POST、GET及环境变量详解
    CGI技术原理
    h264 流、帧结构
    LocalDate、LocalDateTime与timestamp、Date的转换
    Java8中 Date和LocalDateTime的相互转换
  • 原文地址:https://www.cnblogs.com/happyamyhope/p/14805186.html
Copyright © 2011-2022 走看看