语义分割

你需要知道的三件事

什么是语义分割?

语义分割是一种深度学习算法,它将一个标签或类别与图像中的每个像素相关联。它用于识别形成不同类别的像素集合。例如,自动驾驶汽车需要识别车辆、行人、交通标志、人行道和其他道路特征。

语义分割在自动驾驶、医学成像、工业检测等领域有着广泛的应用。

语义分割的一个简单例子是将图像分成两类。例如,在图1中,一个显示海滩上的人的图像与一个显示图像像素的版本相匹配,该像素被分割为两个单独的类:person和background。

图1:图像和标记的像素。

语义分割并不局限于两个范畴。您可以更改对图像内容进行分类的类别数。同样的图像可以分为四类:人,天空,水,和背景。

语义分割与目标检测有何不同?

语义分割可以作为目标检测的一个有用的替代方法,因为它允许感兴趣的对象在像素级跨越图像中的多个区域。与对象检测不同,此技术可以干净地检测形状不规则的对象,而对象检测必须将对象放入一个包围框中(图2)。

图2:对象检测,显示用来识别对象的边界框。

如何使用语义分割?

由于语义分割对图像中的像素进行标记,因此它比其他形式的目标检测更精确。这使得语义分割在需要精确的图像映射的各种行业的应用中非常有用,比如:

  • 自主驾驶-通过将道路与行人、人行道、电线杆和其他车辆等障碍物分开来识别车辆的可行驶路径
  • 工业检测-用于检测材料缺陷,如晶圆片检查
  • 卫星图像-用于识别山脉、河流、沙漠和其他地形
  • 医学成像-用于分析和检测细胞内的癌变异常
  • 机器人视觉-用于识别和导航物体和地形

图3:多光谱卫星图像的语义分割。

语义分割的工作原理

训练语义分割网络对图像进行分类的过程如下:

  1. 分析一组像素标记的图像。
  2. 创建一个语义分割网络。
  3. 训练网络对图像进行像素分类。
  4. 评估网络的准确性。

示例:自动驾驶应用程序

图4中的序列显示了一个用于自动驾驶的真实世界的语义分割示例。道路的图像被自动从其他车辆中分割出来。下一节将介绍如何创建这些网络。

图4:自动驾驶应用程序的语义分割。

理解体系结构

一种常用的语义分割方法是建立一个基于a的分割网卷积神经网络(CNN)体系结构。一个典型的CNN架构如图5所示。

CNN将整个图像分类为许多预定义的类别之一。

图5:CNN的典型结构。

要在像素级别而不是整个图像进行分类,您可以附加一个CNN的反向实现。上采样过程与下采样过程执行相同的次数,以确保最终图像与输入图像的大小相同。最后,使用像素分类输出层,将每个像素映射到特定的类。这形成了一个编码-解码器架构,它支持语义分割。

图6:CNN在每一层执行与图像相关的功能,然后使用池化层(绿色)向下采样图像。这个过程在网络的前半部分重复几次。该图前半部分的输出后面是等量的反池层(橙色)。

利用MATLAB进行语义分割

在MATLAB中,进行语义分割的工作流程有以下五个步骤:

  1. 标签数据或获取标签数据。
  2. 为原始图像和标记图像创建一个数据存储。
  3. 分区的数据存储。
  4. 导入一个CNN并将其修改为一个SegNet。
  5. 培训和评估网络。

步骤1:标记数据或获取标记数据。

深度学习模型建立在大量的数据基础上,语义分割也不例外。一种选择是在互联网上找到有标签的数据。如果您有自己的数据集,可以在MATLAB中使用Image Labeler应用程序。您可以使用此数据集来训练SegNet。

图7:MATLAB Image Labeler应用程序对图像进行标记,进行语义分割。

了解更多

步骤2:为原始图像和标记图像创建一个数据存储。

当处理大量数据时,通常不可能将所有信息加载到内存中。要管理大型数据集,可以使用数据存储。数据存储包含您想要访问的文件的位置,并且只允许您在需要操作文件时将它们读入内存。

创建一个SegNet,你需要两个数据存储:

  1. ImageDatastore,其中包含原始图像
  2. PixelLabelDatastore,其中包含已标记的图像

步骤3:对数据存储进行分区。

当创建一个SegNet,你必须把数据存储分为两部分:

  1. 训练集,用来训练赛格特
  2. 用于评估网络准确性的测试集

图8:公路场景,显示彩色图像(左)和相应的标记像素(右)。

步骤4:导入一个CNN并将其修改为一个SegNet。

加载一个预先训练好的网络,例如VGG16,并使用SegNetLayers命令,创建了像素级标记所需的编码-解码器架构。

图9:用MATLAB中的一行代码创建SegNet架构。

第五步:培训和评估网络。

在最后一步中,为网络设置超参数并训练网络。

如何学习更多的语义分割

s manbetx 845支万博1manbetx持使用语义分割进行图像分析的产品包括MATLAB®,计算机视觉的工具箱用于像素标记的™,以及深度学习工具箱用于创建和培训网络。

在CUDA上支持训练和预测万博1manbetx®有能力的GPU与计算能力3.0或更高。建议并要求使用GPU并行计算工具箱™。

软件参考

免费试用

30天的探索就在你的指尖。