segnetLayers

为语义分割创建SEGNET层

描述

例子

LGRAPH.= segnetlayers(图片尺寸numclasses.模型返回SEGNET图层,LGRAPH.,这是用倒雷定的层和重量预先统筹模型

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

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

LGRAPH.= segnetlayers(图片尺寸numclasses.encoderDepth返回使用指定编码器深度配置的未初始化的SegNet层。

LGRAPH.= segnetlayers(图片尺寸numclasses.encoderDepth名称,价值返回一个由一个或多个指定的附加选项返回SEGNET图层名称,价值对参数。

例子

全部折叠

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

dataSetDir = fullfile (toolboxdir ('想象'),'VisionData'“triangleImages”);imagedir = fullfile(datasetdir,'培训码');labelDir = fullfile (dataSetDir,'训练标签');

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

IMDS = IMAGEDATASTORE(IMAGEDIR);

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

一会= [“三角形”“背景”];labelids = [255 0];

创建一个像素标签数据存储,保存训练图像的ground truth像素标签。

pxds = pixellabeldataStore(Labeldir,ClassNames,LabelIds);

创建SegNet层。

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

创建一个像素标签图像数据存储,用于培训语义分段网络。

pximds = pixellabelimagedataStore(IMDS,PXD);

设置培训选项。

选择= trainingOptions (“个”'italllearnrate',1e-3,......'maxepochs'20,“VerboseFrequency”10);

训练网络。

网= trainNetwork (pximds lgraph,选项)
单CPU训练。初始化输入数据规范化。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | | |丧失准确性  | |========================================================================================| | 1 | 1 | 00:00:04 | | 0.7662 | 0.0010 42.11%||10 | 10 | 00:00:35 | 50.77% | 0.7390 | 0.0010 | | 20 | 20 | 00:01:12 | 66.19% | 0.6918 | 0.0010 | |========================================================================================|
net = DAGNetwork with properties: Layers: [31x1 net.cnn.layer. layer] Connections: [34x2 table] InputNames: {'inputImage'} OutputNames: {'pixelLabels'}

显示网络。

情节(lgraph)

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

图像= [480 640 3];numclasses = 5;EncoderDepth = 4;Lgraph = SegnetLayers(图像化,NumClasses,EncoderDepth)
lgraph = LayerGraph with properties: Layers: [59x1 net.cnn.layer. layer] Connections: [66x2 table] InputNames: {'inputImage'} OutputNames: {'pixelLabels'}

显示网络。

图绘制(lgraph)

输入参数

全部折叠

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

  • 格式的2元素矢量[高度宽度].

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

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

预训练网络模型,记为“vgg16”'vgg19'.这些型号的编码器深度为5。

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

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

名称-值对的观点

指定可选的逗号分离对名称,价值参数。姓名是参数名称和价值为对应值。姓名必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:'numonvolutionlayers',1

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

NumConvolutionLayers 描述
标量子 所有编码器和解码器部分使用相同数量的层。
向量 K.Th元素NumConvolutionLayers是卷积层数的数量K.编码器部分和相应的解码器部分。典型值在[1,3]范围内。

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

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

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

FilterSize 描述
标量子 过滤器是正方形。
2-element行向量

过滤器的大小为[高度宽度].

输出参数

全部折叠

代表SEGNET网络架构的图层,返回ASlayerGraph对象。

提示

  • SEGNET编码器和解码器子网内的部分由卷积,批量归一化和Relu层组成。

  • 所有卷积层配置成使得偏置项固定为零。

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

  • 网络所产生的segnetLayers万博1manbetx支持GPU代码生成深度学习一旦他们训练Trainnetwork..看到深度学习代码生成(深度学习工具箱)获取详细信息和示例。

参考文献

何凯,张旭东,任舜,孙杰。深入研究整流器:在图像网分类上超越人类水平的表现。IEEE计算机愿景国际会议的诉讼程序.2015年,1026 - 1034。

Badrinarayanan V., A. Kendall, R. Cipolla。“Segnet:一种用于图像分割的深度卷积编码器-解码器架构”。arxiv.预印亚克西夫:1511.0051,2015。

扩展能力

在R2017B中介绍