主要内容

赛格莱特

创建SegNet层语义分割

描述

例子

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

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

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

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

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

例子

全部折叠

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

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

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

imd = imageDatastore (imageDir);

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

一会= [“三角形”“背景”];标签id = [255 0];

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

一会,pxds = pixelLabelDatastore (labelDir labelIDs);

创建SegNet层。

imageSize = [32 32];numClasses = 2;lgraph = segnetLayers (numClasses图象尺寸,2)
lgraph=LayerGraph,属性为:层:[31x1 nnet.cnn.layer.layer]连接:[34x2表]输入名称:{'inputImage'}输出名称:{'pixelLabels'}

创建用于训练语义分割网络的像素标签图像数据存储。

pxds pximds = pixelLabelImageDatastore (imd);

设置培训选项。

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

培训网络。

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

显示网络。

情节(lgraph)

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

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

imageSize = [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)

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

输入参数

全部折叠

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

  • 格式为[高度宽度].

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

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

预训练网络模型,记为“vgg16”“vgg19”.这些型号的编码器深度为5。当你使用“vgg16”模型时,必须指定RGB输入。您可以转换灰度图像到RGB使用im2gray函数。

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

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

名称-值对的观点

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

例子:“NumConvolutionLayers”,1

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

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

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

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

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

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

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

输出参数

全部折叠

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

提示

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

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

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

  • 网络所产生的赛格莱特金宝app支持GPU代码生成深度学习一旦他们训练trainNetwork(深度学习工具箱). 看见深度学习代码生成(深度学习工具箱)详情和例子。

工具书类

何凯,张旭东,任舜,孙杰。深入研究整流器:在图像网分类上超越人类水平的表现。IEEE计算机视觉国际会议论文集. 2015, 1026–1034.

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

扩展功能

另请参阅

对象

功能

介绍了R2017b