语义分割
三件事情你需要知道的
语义分割与目标检测有何不同?
语义分割可以是物体检测有用的替代方案,因为它允许的在像素级利益跨越多个区域中的图像中的对象。这种技术干净地检测出形状不规则,而相比之下,对象检测,其中,对象必须适合的边界框(图2)中的对象。
如何语义分割使用?
因为语义分割图像中的像素标记,它比其他形式的物体检测更精确。这使得用于在各种需要精确的图像的地图,诸如产业应用语义分割有用:
- 自动驾驶-通过将道路与行人、人行道、电线杆和其他车辆等障碍物分开,为汽车确定可行驶的道路
- 工业检测-用于检测材料中的缺陷,如晶片检验
- 卫星图像- 用于识别山脉,河流,沙漠和其他地形
- 医学成像- 用于分析和检测在细胞癌变的异常
- 机器人视觉- 用于识别和导航对象和地形
例如:自动驾驶的应用
在图4中示出了该序列用于自动驾驶语义分割的一个真实的例子。道路的图像会自动从其他车辆分割。下一节将展示如何创建这些网络。
理解体系结构
语义分割的一种常见方法是创建一个SegNet,这是基于卷积神经网络(CNN)架构。一个典型的CNN架构显示在图5。
此CNN整个图像分类成多个预定义的类别之一。
为了在像素级别,而不是整个图像进行分类,可以追加一个反向实施CNN的。上采样处理中执行相同的次数作为下采样过程,以确保最终的图像的尺寸与输入图像相同。最后,一个像素分类输出层被使用,其中,每个像素到某一类映射。这形成编码器 - 解码器的体系结构,这使得语义分割。
步骤1:标注数据或获取标注数据。
深学习模型是建立在大量的数据,以及语义分割也不例外。一种选择是在互联网上找到的标签数据。如果你有自己的数据集,你可以使用MATLAB中的图像贴标应用。您可以使用此数据集来训练SegNet。
学到更多
步骤2:为原始图像和带标签的图像创建数据存储。
当有大量数据的工作,它往往无法加载所有的信息到内存中。要管理大型数据集,您可以使用的数据存储。数据存储区包含您要访问的文件的位置,它可以让你阅读到内存只有当你需要对文件进行操作。
要创建一个SegNet,您需要两个数据存储:
- ImageDatastore,其中包含的原始图像
- PixelLabelDatastore,其中包含已标记的图像
步骤3:对数据存储进行分区。
当创建一个SegNet时,你必须将数据存储划分为两个部分:
- 训练集,用于训练SegNet
- 测试集,用来评估网络的准确性
步骤4:导入一个CNN并将其修改为SegNet。
加载预训练的网络,诸如VGG16,以及使用该SegNetLayers命令,创建所必需的像素级的标记编码器 - 解码器架构。
第五步:训练和评估网络。
在最后一步中,为网络设置超参数并训练网络。
如何进一步了解语义分割
视频
- 语义分割概述(造成车厢)
- 揭秘深学习:语义分割和部署(47:09)——网络研讨会
- 基于深度学习的脑肿瘤三维图像分割(3:14)
例子及如何
- 语义分割和部署——网络研讨会
- 多光谱图像的语义分割使用Deep学习——示例