文章目录

  • 前言
  • 第一次标注的流程
    • imageLabeler
    • 加载图片
    • 添加标签
    • 标注
    • 标签导出
    • 输出文件解释
      • imageLabelingSession.mat
      • gTruth.mat和PixelLabelData文件夹
  • 第二次标注的流程
  • 更换路径之后的继续标注
    • 修改DataSource
    • 修改LabelData
    • 保存修改后的文件
    • 加载图像和标签

edited by nrzheng,2022.2.12

前言

遥感图像地物分类可以通过深度学习语义分割的方法来解决。这种有监督的方法需要标签当作真值进行训练。标签的生成可以采用MATLAB的标注工具imageLabeler完成。

第一次标注的流程

以下是第一次标注的标注流程,就是只有原始图像的情况下。

imageLabeler

在MATLAB的命令行窗口输入imageLabeler,即可自动打开该工具,或者在MATLAB菜单的“APP”中也可以找到。imageLabeler界面如下所示:

加载图片

添加标签

根据你的任务划分类别,然后进行添加。语义分割的标签格式要选择Pixel label

添加之后,左边的工具栏就会出现添加的类别及对应的颜色。标注的时候可以选择切换。

标注

根据类别定义进行标注。这边标注不能留空白,不然导出的时候会自动补0,而且很不规范。

解决类别间隙的问题,需要重复的去叠加修改标签,标多了就会找到诀窍。但问题是遥感图像一景都很大,就会很卡。所以修起来比较繁琐,不仅细小还卡。

解决这个问题可以将图像切割成小图标注,再拼接,或者下采样等方法。

标签导出

这是很关键的一步,标注过程中要记得及时保存,需要保存的有两个地方:

  • Save–>Session:保存imageLabelingSession.mat文件
  • Export Labels–>To File:保存gTruth.mat文件和PixelLabelData标签文件,里面是一张肉眼看着的黑图,因为像素值都是0,1,2等很小的值
  • 最好都保存到同一个文件夹里

保存后的文件夹目录如下:

try│  example.jpg│  └─example_label│  gTruth.mat│  imageLabelingSession.mat│  └─PixelLabelDataLabel_1.png

输出文件解释

imageLabelingSession.mat

这里面语义分割我就注意到了两个字段:

  • ImageFilenames:imageLabelingSession.ImageFilenames就是图像的绝对路径
  • FileName:这个imageLabelingSession.mat的绝对路径

gTruth.mat和PixelLabelData文件夹

PixelLabelData文件夹里存放的就是标签图像。是png格式。命名是“Label_1.png”、“Label_2.png”这种。

不过肉眼看起来是黑色的,因为像素值都是0,1,2等的类别,灰度值低,自然就是黑色的。若有需要,可以转成三通道的RGB图像可视化查看。

gTruth.mat文件可以加载到MATLAB工作区查看,加载进去之后是groundTruth对象,有三个字段(如下图):

  • DataSource:gTruth.DataSource.Source中存储的就是原始图像的绝对路径,这是一个N×1N\times1N×1的cell数组,每个元素表示一个图像路径
  • LabelDefinitions:gTruth.LabelDefinitions存储的是定义的类别的名字及对应的标签值
  • LabelData:gTruth.LabelData.PixelLabelData中存储的就是标签图像的绝对路径,同样也是一个N×1N\times1N×1的cell数组,刚好和上面的PixelLabelData文件夹里的一一对应
  • (这里只用一张图做示例,所以每个字段里面只有一个)

第二次标注的流程

第二次标注直接Load—>Session,选择保存了的imageLabelSession.mat文件。

更换路径之后的继续标注

有时候,需要换电脑标注,或者移动了路径,或者更改了原来的名字,都会导致加载Session的时候报错。

这是因为Session文件中的FileName存储了自己的位置,现在位置变了,自己都找不到了,所以没办法加载。可以将imageLabelingSession中的FileName改成这个session新的位置,直接将.mat加载到MATLAB的工作区,就可以直接改,图见《输出文件解释—imageLabelingSession.mat》。

改完后再次在imageLabeler中加载Session还是会出现以下错误:

这是因为imageLabelingSession.mat中的ImageFilenames中存储的是原图的位置,这个位置也是原来的位置,没有更新,所以找不到。

那么理论上,更新完这个路径之后,就可以加载出图像,但是问题是,这个量是只读的,没办法修改。(我没找到修改的方法)

所以换电脑或者换路径怎么标注这个问题卡了我很久。。。

后来发现,其实gTruth.mat这个文件才是关键!!!(上面都是废话了)

所以!怎么解决呢?就是把gTruth.mat中的几个路径改了就可以读到标签了。(先把gTruth.mat加载到MATLAB工作区)

修改DataSource

gTruth中的DataSource存放的是原图的所有路径。这是第一个要改的,就是告诉imageLabeler,你的这个标签对应的图像是哪一张,代码如下:

% 更改gTruth的DataSource,也就是原图路径
currentPathDataSource = "E:\try\try";
newPathDataSource = "E:\try\new";
alternativePaths = {[currentPathDataSource newPathDataSource]};
unresolvedPaths = changeFilePaths(gTruth,alternativePaths);

修改LabelData

gTruth中的LabelData存放的是标签(就是那个“黑”图)的路径。这也是要改的,就是告诉imageLabeler,你的标签存在哪里,代码如下:

% 更改gTruth的DataSource的LabelData,也就是标签路径
currentPathPixels = "E:\matlab_code\play_play\PixelLabelData";
newPathPixels = "E:\try\new\example_label\PixelLabelData";
alternativePaths = {[currentPathPixels newPathPixels]};
unresolvedPaths = changeFilePaths(gTruth,alternativePaths);

保存修改后的文件

只要修改这两个就可以了,gTruth中的LabelDefinitions存储的是标签的类别啥的,没有路径,所以无需修改。

然后要把工作区的gTruth另存为,替换掉原来的gTruth。

加载图像和标签

经过上面的步骤,我们的gTruth就可以用了。

然后步骤还是跟第一次标注一样。先添加图片。但是就不需要添加标签啥的了。

只要将gTruth.mat导入就可以显示:

如果加载的gTruth是原来的没修改的,就会出现以下错误:

所以说,修改完之后,记得要另存为,把原来的替换掉。那如果不替换的话,Import Labels的时候可以选择直接从工作区载入。

这样就可以把别的电脑标注一半的,拿过来继续标注;或者解决自己改了原来的路径之后,打不开的问题。

MATLAB的iamgeLabeler制作语义分割标签及路径修改相关推荐

  1. 憨批的语义分割6——制作语义分割数据标签

    憨批的语义分割6--制作语义分割数据集 学习前言 制作工具Labelme Labelme的使用 标签文件内容 学习前言 有些小伙伴问怎么制作数据集,其实我也没有去制作过--所以也要学学啦, 制作工具L ...

  2. 自己制作语义分割语义分割数据集

    最近在用deeplab,需要自己标注数据集,整理一下. 制作语义分割数据集大致需要 (1)使用labelme对数据进行标注,生成对应图片的json格式. (2)执行label下的labelme_jso ...

  3. 统计语义分割标签文件夹中的分割类别以及像素点数目

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.前言 二.代码 2.结果示例 一.前言 提示:统计语义分割标签文件夹中的分割类别以及像素点数目: 二.代码 提示:代码如 ...

  4. 语义分割标签处理RBG 到gray再转回RGB(通用)

    语义分割标签处理RBG 到gray再转回RGB import numpy as np import cv2 import os from PIL import Image# moon 编码过程 地面, ...

  5. CVPR2020:点云弱监督三维语义分割的多路径区域挖掘

    CVPR2020:点云弱监督三维语义分割的多路径区域挖掘 Multi-Path Region Mining for Weakly Supervised 3D Semantic Segmentation ...

  6. 语义分割标签制作全过程(适合新手)

    本人刚接触这方面不久,在网上搜索了很多文章,发现很多文章都存在一些弊端,自己做了一些总结,方法比较基础,但亲测有效. 首先,我们得有一些原始图片,然后通过labelme标注后得到json文件(labe ...

  7. 语义分割标签npy文件保存为图片的几种方式详细讨论

    拿到一个分割数据集,总共7类,里面的图片都是.npy格式,为了查看分割标签的情况,现在要将npy文件转为图片格式.首先这个数据集的标签图的像素值是0~6,单通道灰度图,所以标签如果显示成图片的话应该是 ...

  8. 语义分割标签彩图是索引图像

    在做分割实验的时候很困惑:为什么分割图是彩色的而不是灰色的,因为不是一个像素值就可以代表一种标签代表吗,比如一张图里有六种标签,那么我在分割标签图里用0~5的像素值去表示不就行了吗?为此,我将一张ma ...

  9. 在MATLAB环境下使用深度学习网络DeepLabV3+进行语义分割(云图分割)

    摘要:本文主要讲述在MATLAB2020a环境下利用深度神经网络DeepLabV3+进行语义分割,分割感图像中的云层.讲述了:1.训练数据的获取.训练集制作:2.DeepLabV3+模型的构建:3.D ...

最新文章

  1. 点石关键词排名优化软件_关键词点击排名优化
  2. SDN 网络技术创新探索 | 移动云 TeaTalk 线上直播 倒计时启动中
  3. java kettle log_kettle使用log4j管理输出日志
  4. 使用生成器创建新的迭代模式
  5. Pyechart:30分钟学会pyecharts数据可视化
  6. 在团800运维工作总结之couchbase使用
  7. 注解之RetentionPolicy,ElementType
  8. CC_STACKPROTECTOR防内核堆栈溢出补丁分析【转】
  9. 内网通免广告/积分码
  10. 计算机系女生节条幅,2018女生节横幅 最新女生节横幅标语 2018高校女生节横幅...
  11. 计算机怎么改鼠标标志,图文帮你如何自定义电脑鼠标指针的图标
  12. INVECAS发布全球首创的HDMI(R)2.1,搭载HDCP2.3芯片和IP解决方案,适用于电视、AVR、条形音响和机顶盒
  13. 一文彻底搞懂替罪羊树
  14. 第一讲——什么是计算机网络?
  15. EDA 电子设计自动化VHDL系列课程12 – 用点阵显示器 设计彩灯或动画
  16. ELK系列之Mac安装kibana报错License information could not be obtained from Elasticsearch due to [invalid_inde
  17. 如何免费建立自己的一个HTML网站(完全免费)
  18. Windows共享、打印机操作、远程桌面
  19. FPGA_demo2:按键测试
  20. 斑马GK888T 203dpi二维条码码打印机不动产登记

热门文章

  1. linux命令行安装 php_如何在 Linux 命令行中使用和执行 PHP 代码
  2. 一场漫步园林的视听盛宴
  3. Linux pg打桩(1)单线程
  4. nodejs 通过ffmpeg,实现微信jsapi上传mp3录音
  5. linux php控制面板_Linux无需控制面板搭建discuz教程
  6. Access 2010 无法导入EXCEL表 的正确对应方法
  7. [免费下载][SCI期刊]印刷版A reinforced exploration mechanism whale optimization algorithm
  8. linux串口蜂鸣器报警电路,基于51单片机的蜂鸣器鸣叫震动主从机同步报警设计-BELL--(电路图+程序源码)...
  9. thinking point
  10. 试用Microsoft Research的wallop