此示例显示如何使用深网络设计器创建和培训简单的语义分段网络。
语义分割描述了将图像的每个像素与类标签相关联的过程(例如花那人那路那天空那海洋, 或者车).语义分割的应用包括用于自动驾驶的道路分割和用于医疗诊断的癌细胞分割。想要了解更多,请看使用深度学习开始语义分割(电脑视觉工具箱).
要训练一个语义分割网络,需要一组图像及其对应的像素标记图像集合。像素标记图像是指每个像素值代表该像素的分类标签的图像。为了进行说明,本例使用了一个简单的32 × 32三角形图像数据集。您可以交互式地标签像素和导出标签数据的计算机视觉应用程序使用图像贴标器(电脑视觉工具箱).有关创建语义分段应用程序的培训数据的更多信息,请参阅语义分割标签像素(电脑视觉工具箱).
加载训练数据。
datafolder = fullfile(toolboxdir('想象'),......'VisionData'那“triangleImages”);imagedir = fullfile(datafolder,'培训码');labelDir = fullfile (dataFolder,'训练标签');
创建一个imageageAtastore.
包含图像。
IMDS = IMAGEDATASTORE(IMAGEDIR);
创建一个PixelLabelDatastore
包含地面真相像素标签。此数据集有两个类:“三角形”
和“背景”
.
一会= [“三角形”那“背景”];labelids = [255 0];pxds = pixellabeldataStore(Labeldir,ClassNames,LabelIds);
将图像数据存储和像素标签数据存储组合到一个ConventDatastore.
对象使用结合
功能。组合数据存储在底层数据存储中的一对图像之间维护奇偶校验。
CDS =组合(IMDS,PXD);
打开深度网络设计师。
DeepNetWorkDesigner.
在深度网络设计师中,您可以构建,编辑和培训深入学习网络。暂停空白的网络然后点击新.
创建一个语义分割网络通过拖动层从图书馆库到设计师窗格。
按以下顺序连接图层:
imageInputlayer.
和InputSize
设置32,32,1.
convolution2dLayer
和FilterSize
设置3,3
那NumFilters
设置64.
,填充
设置1, 1, 1, 1
抵押者
maxpooling2dlayer.
和PoolSize
设置2,2
那步行
设置2,2
,填充
设置0, 0, 0, 0
convolution2dLayer
和FilterSize
设置3,3
那NumFilters
设置64.
,填充
设置1, 1, 1, 1
抵押者
transposedConv2dLayer
和FilterSize
设置4,4
那NumFilters
设置64.
那步行
设置2,2
那和裁剪
设置1, 1, 1, 1
convolution2dLayer
和FilterSize
设置1, - 1
那NumFilters
设置2
,填充
设置0, 0, 0, 0
softmaxlayer.
PixelclassificationLayer.
您还可以在命令行中创建此网络,然后将网络导入深网络设计器DeepNetWorkDesigner(层)
.
图层= [imageInputlayer([32 32 1])卷积2dlayer([3,3],64,'填充',[1,1,1,1])Ruilulayer MaxPooling2dlayer([2,2],'走吧',[2,2])卷积2dlayer([3,3],64,'填充',[1,1,1,1])Rublayer TranspoSedConv2dlayer([4,4],64,'走吧'(2, 2),“种植”,[1,1,1,1])卷积2dlayer ([1,1],2) softmaxLayer pixelClassificationLayer];
该网络是一种基于下采样和上采样设计的简单语义分段网络。有关构建语义分段网络的更多信息,请参阅创建一个语义分割网络(电脑视觉工具箱).
要导入训练数据存储,请在数据选项卡,选择导入数据>导入数据存储.选择ConventDatastore.
目的CDS
作为培训数据。对于验证数据,请选择没有一个
.通过单击导入培训数据进口.
深度网络设计器显示导入的语义分段数据的预览。预览显示培训图像和地面真相像素标签。网络需要输入图像(左),并将每个像素的分类返回为三角形或背景(右)。
设置培训选项,培训网络。
在这一点训练选项卡,单击培训方案.集InitialLearnRate到0.001
那MaxEpochs到One hundred.
,MiniBatchSize到64.
.通过单击设置培训选项关闭.
点击培训网络火车.
一旦培训完成,点击出口将培训的网络导出到工作区。训练有素的网络存储在变量中trainedNetwork_1
.
利用测试数据和训练好的网络进行预测。
段使用测试图像SemanticSeg.
.控件在图像上显示标签Labeloverlay.
功能。
imgtest = imread('triangletest.jpg');testSeg = semanticseg (imgTest trainedNetwork_1);testImageSeg = labeloverlay (imgTest testSeg);
显示结果。
图imshow (testImageSeg)
网络成功地标记了测试图像中的三角形。
本例中训练的语义分割网络非常简单。要构造更复杂的语义分割网络,可以使用计算机视觉工具箱功能segnetLayers
(电脑视觉工具箱)那deeplabv3pluslayers.
(电脑视觉工具箱),不平衡
(电脑视觉工具箱).展示如何使用的示例deeplabv3pluslayers.
函数创建DeepLab v3+网络,请参见深度学习的语义细分(电脑视觉工具箱).
深层网络设计师|图像贴标器(电脑视觉工具箱)|pixelLabelDatastore
(电脑视觉工具箱)|SemanticSeg.
(电脑视觉工具箱)|Labeloverlay.
(图像处理工具箱)|PixelclassificationLayer.
(电脑视觉工具箱)|trainingOptions
|deeplabv3pluslayers.
(电脑视觉工具箱)|segnetLayers
(电脑视觉工具箱)|不平衡
(电脑视觉工具箱)