主要内容

segnetLayers

为语义分割创建SegNet层

描述

例子

lgraph= segnetLayers (图象尺寸numClasses模型返回SegNet层,lgraph,这是预初始化的层和权重从预训练模型

SegNet是一种用于语义图像分割的卷积神经网络。网络使用pixelClassificationLayer预测输入图像中每个像素的分类标签。

使用segnetLayers为SegNet创建网络架构。您必须使用深度学习工具箱™功能训练网络trainNetwork(深度学习工具箱)

lgraph= segnetLayers (图象尺寸numClassesencoderDepth返回使用指定编码器深度配置的未初始化SegNet层。

lgraph= segnetLayers (图象尺寸numClassesencoderDepth名称,值返回带有一个或多个指定的附加选项的SegNet层名称,值对参数。

例子

全部折叠

加载训练图像和像素标签。

dataSetDir = fullfile(toolboxdir(“愿景”),“visiondata”“triangleImages”);imageDir = fullfile(dataSetDir,“trainingImages”);labelDir = fullfile(dataSetDir,“trainingLabels”);

创建一个包含训练图像的图像数据存储。

imds = imageDatastore(imageDir);

定义类名及其关联的标签id。

classNames = [“三角形”“背景”];labelIDs = [255 0];

创建一个像素标签数据存储,存储训练图像的真实像素标签。

pxds = pixelLabelDatastore(labelDir,classNames,labelIDs);

创建SegNet层。

imageSize = [32 32];numClasses = 2;lgraph = segnetLayers(imageSize,numClasses,2)
lgraph = LayerGraph with properties: Layers: [31x1 nnet.cnn.layer.Layer] Connections: [34x2 table] InputNames: {'inputImage'} OutputNames: {'pixelLabels'}

结合图像和像素标签数据,训练一个语义分割网络。

Ds = combine(imds,pxds);

设置培训选项。

选项= trainingOptions(“个”“InitialLearnRate”1 e - 3,...“MaxEpochs”, 20岁,“VerboseFrequency”10);

培训网络。

net = trainNetwork(ds,lgraph,options)
单CPU训练。初始化输入数据规范化。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | | |丧失准确性  | |========================================================================================| | 1 | 1 | 00:00:04 | 39.86% | 0.7677 | 0.0010 | | 10 | | 00:00:25 | 50.15% | 0.7397 | 0.0010 | | 20 | 20 | 00:00:50 | 67.35% | 0.6898 | 0.0010 ||========================================================================================| 培训完成:马克思时代完成。
net = DAGNetwork with properties: Layers: [31x1 nnet.cnn.layer.Layer] Connections: [34x2 table] InputNames: {'inputImage'} OutputNames: {'pixelLabels'}

显示网络。

情节(lgraph)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

创建编码器/解码器深度为4的SegNet层。

imageSize = [480 640 3];numClasses = 5;encoderDepth = 4;lgraph = segnetLayers(imageSize,numClasses,encoderDepth)
lgraph = LayerGraph with properties: Layers: [59x1 nnet.cnn.layer.Layer] Connections: [66x2 table] InputNames: {'inputImage'} OutputNames: {'pixelLabels'}

显示网络。

图绘制(lgraph)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

输入参数

全部折叠

网络输入图像大小,指定为a:

  • 格式为[的2元向量高度宽度].

  • 格式为[的3元素向量高度宽度深度].深度是图像通道的数量。集深度3.对于RGB图像,1对于灰度图像,或者对于多光谱和高光谱图像的通道数。

语义分割中的类数,指定为大于1的整数。

预训练的网络模型,指定为“vgg16”“vgg19”.这些模型的编码器深度为5。当你使用“vgg16”模型时,必须指定RGB输入。方法将灰度图像转换为RGBim2gray函数。

编码器深度,指定为正整数。

SegNet由编码器和相应的解码器子网络组成。这些网络的深度决定了输入图像在处理时向下采样或向上采样的次数。编码器网络对输入图像进行2倍的采样D,在那里D的值encoderDepth.解码器网络对编码器网络输出进行2倍的采样D

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:“NumConvolutionLayers”,1

每个编码器和解码器部分中的卷积层数,指定为正整数或正整数的向量。

NumConvolutionLayers 描述
标量 所有编码器和解码器部分使用相同数量的层。
向量 k的第Th元素NumConvolutionLayers卷积层数是多少k编码器段和相应的解码器段。典型值范围为[1,3]。

SegNet编码器网络中每个部分的输出通道数,指定为正整数或正整数的向量。segnetLayers设置解码器中的输出通道数以匹配相应的编码器部分。

NumOutputChannels 描述
标量 所有编码器和解码器部分使用相同数量的输出通道。
向量 k的第Th元素NumOutputChannels输出通道的数量是多少k编码器段和相应的解码器段。

卷积层过滤器大小,指定为正奇数整数或正奇数的2元素行向量。典型值在[3,7]范围内。

FilterSize 描述
标量 过滤器是方形的。
二元行向量

滤镜尺寸为[高度宽度].

输出参数

全部折叠

表示SegNet网络架构的层,返回为layerGraph(深度学习工具箱)对象。

提示

  • SegNet编码器和解码器子网络中的部分由卷积层、批处理归一化层和ReLU层组成。

  • 所有卷积层都被配置为偏差项固定为零。

  • 编码器和解码器子网络中的卷积层权重使用'初始化同行'权重初始化方法。为“vgg16”“vgg19”模型中,仅使用MSRA初始化解码器子网。[1]

  • segnetLayers金宝app支持GPU代码生成深度学习一旦他们训练trainNetwork(深度学习工具箱).看到深度学习代码生成(深度学习工具箱)有关详细信息和示例。

参考文献

[1]何K,张旭光,任淑娟,孙杰。“深入研究整流器:在ImageNet分类上超越人类水平的性能。”IEEE计算机视觉国际会议论文集.2015年,1026 - 1034。

[2]巴德里纳拉亚南,V.肯德尔,R.西波拉。Segnet:一种用于图像分割的深度卷积编码器-解码器架构arXiv.预印本arXiv: 1511.0051, 2015。

扩展功能

版本历史

在R2017b中引入

另请参阅

对象

功能