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