乐趣区

关于图像分割:技术博客丨动手实践系列CV语义分割

作者:游璐颖,福州大学,Datawhale 成员

图像宰割是计算机视觉中除了分类和检测外的另一项根本工作,它意味着要将图片依据内容宰割成不同的块。相比图像分类和检测,宰割是一项更精密的工作,因为须要对每个像素点分类。

如下图的街景宰割,因为对每个像素点都分类,物体的轮廓是精准勾画的,而不是像检测那样给出边界框。

图像宰割能够分为以下三个子畛域:语义宰割、实例宰割、全景宰割。

由比照图可发现,语义宰割是从像素档次来辨认图像,为图像中的每个像素制订类别标记,目前广泛应用于医学图像和无人驾驶等;实例宰割绝对更具备挑战性,不仅须要正确检测图像中的指标,同时还要准确的宰割每个实例;全景宰割综合了两个工作,要求图像中的每个像素点都必须被调配给一个语义标签和一个实例 id。

01 语义宰割中的关键步骤

在进行网络训练时,时常须要对语义标签图或是实例宰割图进行预处理。如对于一张黑白的标签图,通过色彩映射表失去每种色彩所代表的类别,再将其转换成相应的掩膜或 Onehot 编码实现训练。这里将会对于其中的关键步骤进行解说。

首先,以语义宰割工作为例,介绍标签的不同表达形式。

1.1 语义标签图
语义宰割数据集中包含原图和语义标签图,两者的尺寸大小雷同,均为 RGB 图像。

在标签图像中,红色和彩色别离代表边框和背景,而其余不同色彩代表不同的类别:

1.2 单通道掩膜
每个标签的 RGB 值与各自的标注类别对应,则能够很容易地查找标签中每个像素的类别索引,生成单通道掩膜 Mask。

如上面这种图,标注类别包含:Person、Purse、Plants、Sidewalk、Building。将语义标签图转换为单通道掩膜后为右图所示,尺寸大小不变,但通道数由 3 变为 1。

每个像素点地位一一对应。

1.3 Onehot 编码
Onehot 作为一种编码方式,能够对每一个单通道掩膜进行编码。

比方对于上述掩膜图 Mask,图像尺寸为,标签类别共有 5 类,咱们须要将这个 Mask 变为一个 5 个通道的 Onehot 输入,尺寸为,也就是将掩膜中值全为 1 的像素点抽取出生成一个图,相应地位置为 1,其余为 0。再将全为 2 的抽取出再生成一个图,相应地位置为 1,其余为 0,以此类推。

02 语义宰割实际

接下来以 Pascal VOC 2012 语义宰割数据集为例,介绍不同表达形式之间应该如何互相转换。

实际采纳的是 Pascal VOC 2012 语义宰割数据集,它是语义宰割工作中非常重要的数据集,有 20 类指标,这些指标包含人类、机动车类以及其余类,可用于指标类别或背景的宰割。

数据集开源地址:

https://gas.graviti.cn/datase…

2.1 数据集读取
本次应用格物钛数据平台服务来实现数据集的在线读取,平台反对多种数据集类型,且提供了很多公开数据集便于应用。在应用之前先进行一些必要的筹备工作:

  • Fork 数据集:如果须要应用公开数据集,则须要将其先 fork 到本人的账户。
  • 获取 AccessKey:获取应用 SDK 与格物钛数据平台交互所需的密钥,链接为 https://gas.graviti.cn/tensor…
  • 了解 Segment:数据集的进一步划分,如 VOC 数据集分成了“train”和“test”两个局部。

2.2 色彩映射表
在失去黑白语义标签图后,则能够构建一个色彩表映射,列出标签中每个 RGB 色彩的值及其标注的类别。

2.3 Label 与 Onehot 转换
依据映射表,实现语义标签图与 Onehot 编码的互相转换:

2.4 Onehot 与 Mask 转换
同样,借助映射表,实现单通道掩膜 Mask 与 Onehot 编码的互相转换:

更多信息请拜访格物钛官网

退出移动版