训练简单的语义分割网络深陷网络设计师
这个例子展示了如何创建和训练一个简单的语义分割网络使用深层网络设计师。
语义分割描述的过程将每个像素的图像与一个类标签(如花,人,路,天空,海洋,或车)。应用语义分割包括自主驾驶的道路分割为医学诊断和癌症细胞分割。欲了解更多,请看开始使用语义分割使用深度学习(计算机视觉工具箱)。
训练数据进行预处理
训练一个语义分割网络,你需要一组图片和相应的pixel-labeled图片的集合。pixel-labeled图像是一个图像,每个像素值表示像素的分类标签。这个例子使用一个简单的数据集32-by-32三角形出于演示目的的图像。你可以交互式地标签像素和出口数据为计算机视觉应用程序使用的标签图片标志(计算机视觉工具箱)。更多信息在创建语义分割训练数据的应用程序,看看标签像素为语义分割(计算机视觉工具箱)。
加载训练数据。
dataFolder = fullfile (toolboxdir (“愿景”),…“visiondata”,“triangleImages”);imageDir = fullfile (dataFolder,“trainingImages”);labelDir = fullfile (dataFolder,“trainingLabels”);
创建一个ImageDatastore
包含图像。
imd = imageDatastore (imageDir);
创建一个PixelLabelDatastore
包含地面实况像素标签。这个数据集有两个类:“三角形”
和“背景”
。
一会= [“三角形”,“背景”];labelIDs = (255 0);一会,pxds = pixelLabelDatastore (labelDir labelIDs);
将图像数据存储和数据存储到一个像素标签CombinedDatastore
对象使用结合
函数。结合数据存储之间保持平价的图像底层的数据存储。
cd =结合(imd, pxds);
构建网络
打开深层网络设计师。
deepNetworkDesigner
深陷网络设计师,你可以建立,编辑和火车深度学习网络。暂停上空白的网络并点击新。
创建一个语义分割网络的拖动图层层的图书馆到设计师窗格。
连接层的顺序:
imageInputLayer
与InputSize
设置为32岁,32岁,1
convolution2dLayer
与FilterSize
设置为3,3
,NumFilters
设置为64年
,填充
设置为1,1,1,1
reluLayer
maxPooling2dLayer
与PoolSize
设置为2、2
,步
设置为2、2
,填充
设置为0,0,0,0
convolution2dLayer
与FilterSize
设置为3,3
,NumFilters
设置为64年
,填充
设置为1,1,1,1
reluLayer
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(层)
。
32 32层= [imageInputLayer ([1]) convolution2dLayer ([3, 3], 64“填充”,1,1,1,1)reluLayer maxPooling2dLayer ((2, 2),“步”,(2,2))convolution2dLayer ([3, 3], 64“填充”,1,1,1,1)reluLayer transposedConv2dLayer((4, 4), 64年,“步”(2,2),“种植”,1,1,1,1)convolution2dLayer ([1], 2) softmaxLayer pixelClassificationLayer];
这个网络是一个简单的语义分割网络基于一个将采样和upsampling设计。网络上构建语义分割的更多信息,参见创建一个语义分割网络(计算机视觉工具箱)。
导入数据
导入培训数据存储的数据选项卡上,选择导入数据>导入数据存储。选择CombinedDatastore
对象cd
作为训练数据。验证数据的选择没有一个
。通过点击导入训练数据进口。
深层网络设计师显示导入的语义分割数据的预览。预览显示训练图像和地面真理像素标签。网络需要输入图像(左)和返回一个为每个像素分类为三角形或背景(右)。
列车网络的
设置培训方案和培训网络。
在培训选项卡上,单击培训方案。集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
(计算机视觉工具箱),unetLayers
(计算机视觉工具箱)。一个例子,演示如何使用deeplabv3plusLayers
函数创建一个DeepLab v3 +网络,看到的语义分割与深度学习(计算机视觉工具箱)。
另请参阅
深层网络设计师|图片标志(计算机视觉工具箱)|pixelLabelDatastore
(计算机视觉工具箱)|semanticseg
(计算机视觉工具箱)|labeloverlay
(图像处理工具箱)|pixelClassificationLayer
(计算机视觉工具箱)|trainingOptions
|deeplabv3plusLayers
(计算机视觉工具箱)|segnetLayers
(计算机视觉工具箱)|unetLayers
(计算机视觉工具箱)
相关的话题
- 语义分割使用深度学习
- 开始使用语义分割使用深度学习(计算机视觉工具箱)
- 标签像素为语义分割(计算机视觉工具箱)
- Pretrained深层神经网络
- 开始使用深层网络设计师