浅谈图像分割中预测图与标签图的对应关系
文章目录
- 前言
- 一、one-hot 编码
- 1.1 什么是one-hot编码?
- 1.2 one-hot编码做了什么?
- 二、图像分割的标签图
- 2.1 one-hot编码 结果
- 2.2 模型的预测结果图
前言
当接触深度学习中图像处理时,往往最开始了解的是图片分类的项目,其实图像分割跟图想分类比较类似,只不过图像分类是以图片为单位的,而图像分割是是以像素为单位的。
一、one-hot 编码
one-hot 编码,也称“独热编码”。这是在机器学习与深度学习中经常会遇到一个名词。也是图像分割与分类中很重要的一种标签处理方式。
1.1 什么是one-hot编码?
在机器学习的书籍里翻译的话是:One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由独立的寄存器位,并且在任意时候只有一位有效。说人话版本:One-Hot编码 是将 离散变量 转为 二进制向量
先来了解什么是离散变量?
离散是指一种无序、互相独立、互不干扰的关系。例如图像分类中,分三类:猫、狗、鸟。这三个类别就是离散变量,它们之间不存在任何关系,如谁大谁小,谁前谁后,每一类都是独立的。
再来看什么是二进制向量?
首先,我们需要了解二进制的基本概念。二进制是计算机中最常用的数制,它只有两个数字:0和1。每一个0或1被称为一个比特(bit)。在计算机内部,所有的信息,包括文字、图片、声音等,最终都会被转换成由0和1组成的二进制代码进行存储和处理。
为什么要转为二进制向量? —— 继续离线变量的例子,假设将“猫、狗、鸟”分为三类,给的标签是【0-猫,1-狗,2-鸟】,但是这样的表示会让这三个互相独立的类别存在了特定关系,如0<1<2,要后续计算loss时,岂不是不对等了。所以需要用一个方式来处理,这种方式就是one-hot编码。(
注:简单来说,就是我们知道这三类是离线变量,但计算机又不知道,所以我们需要告诉计算机,这三个类别是互不干扰的独立关系,后续计算要一律平等。
1.2 one-hot编码做了什么?
one-hot编码会根据二进制关系将【0-猫,1-狗,2-鸟】变成下列:
猫:【1,0,0】
狗:【0,1,0】
鸟:【0,0,1】
在三维坐标系下,[1, 0, 0]、[0, 1, 0]和[0, 0, 1]这三个向量是互相正交垂直的,这样也就使得三个类别都是独立关系。
例如,在图像分类训练中,一幅标注类别为狗的图,经过softmax预测结果为【0.1,0.7,0.2】,那它就会和标签【0,1,0】进行loss计算。
二、图像分割的标签图
上面以图像分类进行了举例说明,而对于图像分割来说,可以理解为:图像分类的标签是一维向量,图像分割的标签是三维向量。下面是一张常见的初学语义分割资料里的一张标签图,先理解到每个像素都有一个类别即可
2.1 one-hot编码 结果
首先,要知道标签图是一个单通道的灰度图,数值从0到255。假设:图像分割为4类,【0-背景,1-人,2-树,3-房子】,一般情形下,背景类(即不需要预测的区域)要算一类。其中标签图如下:
这时使用one-hot编码,是对每一个像素点进行编码,如上图有4*4=16个像素点,其中编码关系如下:
0-:【1,0,0,0】
1-:【0,1,0,0】
2-:【0,0,1,0】
3-:【0,0,0,1】
图像分割标签图采用one-hot编码,为每一个类别创建一个输出通道
可以看到每一个通道,只要属于该类别的才是1,其余类别都是0。其实画立体图更好理解,但不想浪费时间弄,可以参考下面这个常用图
2.2 模型的预测结果图
在训练时,模型预测最后输出的结果图通道数是根据要分的类别来定的,如上面例子分4类,要预测图的通道数也是4,以此来与标签图进行loss计算。
在训练完模型后,进行预测时,会进行一个max比较操作,找出所有类别通道中概率最高的那个,如【0.1,0.05,0.85,0.1】,那最高的就是第2类通道,即该像素点被预测为第2类。