主要内容gydF4y2Ba

unetLayersgydF4y2Ba

创建U-Net层用于语义分割gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

lgraphgydF4y2Ba= unetLayers (gydF4y2Ba图象尺寸gydF4y2Ba,gydF4y2BanumClassesgydF4y2Ba)gydF4y2Ba返回U-Net网络。gydF4y2BaunetLayersgydF4y2Ba在网络中包括一个像素分类层,以预测输入图像中每个像素的分类标签。gydF4y2Ba

使用gydF4y2BaunetLayersgydF4y2Ba创建U-Net网络架构。您必须使用深度学习工具箱™功能训练网络gydF4y2BatrainNetworkgydF4y2Ba(深度学习工具箱)gydF4y2Ba.gydF4y2Ba

[gydF4y2BalgraphgydF4y2Ba,gydF4y2BaoutputSizegydF4y2Ba= unetLayers(gydF4y2Ba图象尺寸gydF4y2Ba,gydF4y2BanumClassesgydF4y2Ba)gydF4y2Ba还返回U-Net网络输出大小的大小。gydF4y2Ba

___gydF4y2Ba= unetLayers (gydF4y2Ba图象尺寸gydF4y2Ba,gydF4y2BanumClassesgydF4y2Ba,gydF4y2Ba名称,值gydF4y2Ba)gydF4y2Ba使用一个或多个名称-值对参数指定选项。将每个属性名用引号括起来。例如,gydF4y2BaunetLayers(图象尺寸、numClasses NumFirstEncoderFilters, 64)gydF4y2Ba另外,将输出通道的数量设置为gydF4y2Ba64gydF4y2Ba对于第一个编码器阶段。gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

创建一个编码器-解码器深度为3的U-Net网络。gydF4y2Ba

imageSize = [480 640 3];numClasses = 5;encoderDepth = 3;lgraph = unetLayers(imageSize,numClasses,gydF4y2Ba“EncoderDepth”gydF4y2BaencoderDepth)gydF4y2Ba
lgraph = LayerGraph with properties: Layers: [46x1 nnet.cnn.layer.Layer] Connections: [48x2 table] InputNames: {'ImageInputLayer'} OutputNames: {' segment - layer '}gydF4y2Ba

显示网络。gydF4y2Ba

情节(lgraph)gydF4y2Ba

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

将训练图像和像素标签加载到工作区中。gydF4y2Ba

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

创建一个gydF4y2BaimageDatastoregydF4y2Ba对象来存储训练图像。gydF4y2Ba

imds = imageDatastore(imageDir);gydF4y2Ba

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

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

创建一个gydF4y2BapixelLabelDatastoregydF4y2Ba对象来存储训练图像的真实像素标签。gydF4y2Ba

pxds = pixelLabelDatastore(labelDir,classNames,labelIDs);gydF4y2Ba

创建U-Net网络。gydF4y2Ba

imageSize = [32 32];numClasses = 2;lgraph = unetLayers(imageSize, numClasses)gydF4y2Ba
lgraph = LayerGraph with properties: Layers: [58×1 nnet.cnn.layer.Layer] Connections: [61×2 table] InputNames: {'ImageInputLayer'} OutputNames: {' segment - layer '}gydF4y2Ba

创建用于训练网络的数据存储。gydF4y2Ba

Ds = combine(imds,pxds);gydF4y2Ba

设置培训选项。gydF4y2Ba

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

培训网络。gydF4y2Ba

net = trainNetwork(ds,lgraph,options)gydF4y2Ba
单CPU训练。初始化输入数据规范化。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | | |丧失准确性  | |========================================================================================| | 1 | 1 | 00:00:04 | 75.57% | 2.4341 | 0.0010 | | 10 | | 00:00:36 | 96.02% | 0.4517 | 0.0010 | | 20 | 20 | 00:01:13 | 97.62% | 0.2324 | 0.0010 ||========================================================================================|gydF4y2Ba
net = DAGNetwork with properties: Layers: [58×1 nnet.cnn.layer.Layer] Connections: [61×2 table] InputNames: {'ImageInputLayer'} OutputNames: {' segment - layer '}gydF4y2Ba

输入参数gydF4y2Ba

全部折叠gydF4y2Ba

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

  • 形式为[的2元向量gydF4y2Ba高度gydF4y2Ba,gydF4y2Ba宽度gydF4y2Ba].gydF4y2Ba

  • 形式为[的3元向量gydF4y2Ba高度gydF4y2Ba,gydF4y2Ba宽度gydF4y2Ba,gydF4y2Ba深度gydF4y2Ba].gydF4y2Ba深度gydF4y2Ba是图像通道的数量。集gydF4y2Ba深度gydF4y2Ba来gydF4y2Ba3.gydF4y2Ba对于RGB图像,到gydF4y2Ba1gydF4y2Ba对于灰度图像,或者对于多光谱和高光谱图像的通道数。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba

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

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba

名称-值参数gydF4y2Ba

例子:gydF4y2Ba“EncoderDepth”,3gydF4y2Ba

编码器深度,指定为正整数。U-Net由编码器子网和相应的解码器子网组成。这些网络的深度决定了在处理过程中输入图像下采样或上采样的次数。编码器网络对输入图像进行2倍的采样gydF4y2BaDgydF4y2Ba,在那里gydF4y2BaDgydF4y2Ba的值gydF4y2BaEncoderDepthgydF4y2Ba.解码器网络对编码器网络输出进行2倍的采样gydF4y2BaDgydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba

请注意gydF4y2Ba

NumOutputChannelsgydF4y2Ba重命名为gydF4y2BaNumFirstEncoderFiltersgydF4y2Ba并且在将来的版本中不受支持。金宝app使用gydF4y2BaNumFirstEncoderFiltersgydF4y2Ba代替。gydF4y2Ba

第一个编码器阶段的输出通道数,指定为正整数或正整数的向量。在随后的每个编码器阶段,输出通道的数量增加一倍。gydF4y2BaunetLayersgydF4y2Ba设置每个解码器阶段中的输出通道数,以匹配相应编码器阶段中的输出通道数。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba

第一个编码器阶段的输出通道数,指定为正整数或正整数的向量。在随后的每个编码器阶段,输出通道的数量增加一倍。的gydF4y2BaunetLayersgydF4y2Ba函数将每个解码器阶段中的输出通道数设置为与相应编码器阶段中的输出通道数匹配。gydF4y2Ba

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba

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

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

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

数据类型:gydF4y2Ba单gydF4y2Ba|gydF4y2Ba双gydF4y2Ba|gydF4y2Baint8gydF4y2Ba|gydF4y2Baint16gydF4y2Ba|gydF4y2Baint32gydF4y2Ba|gydF4y2Baint64gydF4y2Ba|gydF4y2Bauint8gydF4y2Ba|gydF4y2Bauint16gydF4y2Ba|gydF4y2Bauint32gydF4y2Ba|gydF4y2Bauint64gydF4y2Ba

填充类型,指定为gydF4y2Ba“相同”gydF4y2Ba或gydF4y2Ba“有效”gydF4y2Ba.的填充类型指定填充样式gydF4y2Baconvolution2dLayergydF4y2Ba(深度学习工具箱)gydF4y2Ba在编码器和解码器子网络中。输出特征映射的空间大小取决于填充的类型。如果你指定填充类型为:gydF4y2Ba

  • “相同”gydF4y2Ba-零填充应用于卷积层的输入,这样输出和输入特征映射是相同的大小。gydF4y2Ba

  • “有效”gydF4y2Ba-零填充不应用于卷积层的输入。卷积层只返回没有零填充的卷积值。输出特征映射比输入特征映射小。gydF4y2Ba

请注意gydF4y2Ba

以确保gydF4y2Ba高度gydF4y2Ba而且gydF4y2Ba宽度gydF4y2Bamax-pooling层的输入是偶数的,选择网络输入图像大小来确认这些标准中的任何一个:gydF4y2Ba

  • 如果你指定gydF4y2Ba“ConvolutionPadding”gydF4y2Ba作为gydF4y2Ba“相同”gydF4y2Ba,则gydF4y2Ba高度gydF4y2Ba而且gydF4y2Ba宽度gydF4y2Ba输入图像的值必须是2的倍数gydF4y2BaDgydF4y2Ba.gydF4y2Ba

  • 如果你指定gydF4y2Ba“ConvolutionPadding”gydF4y2Ba作为gydF4y2Ba“有效”gydF4y2Ba,则gydF4y2Ba高度gydF4y2Ba而且gydF4y2Ba宽度gydF4y2Ba的输入图像必须这样选择gydF4y2Ba hgydF4y2Ba egydF4y2Ba 我gydF4y2Ba ggydF4y2Ba hgydF4y2Ba tgydF4y2Ba −gydF4y2Ba ∑gydF4y2Ba 我gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba DgydF4y2Ba 2gydF4y2Ba 我gydF4y2Ba (gydF4y2Ba fgydF4y2Ba hgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 而且gydF4y2Ba wgydF4y2Ba 我gydF4y2Ba dgydF4y2Ba tgydF4y2Ba hgydF4y2Ba −gydF4y2Ba ∑gydF4y2Ba 我gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba DgydF4y2Ba 2gydF4y2Ba 我gydF4y2Ba (gydF4y2Ba fgydF4y2Ba wgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba 2的倍数是多少gydF4y2BaDgydF4y2Ba.gydF4y2Ba

    在哪里gydF4y2BafgydF4y2BahgydF4y2Ba而且gydF4y2BafgydF4y2BawgydF4y2Ba分别为二维卷积核的高和宽。gydF4y2BaDgydF4y2Ba是编码器深度。gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

输出参数gydF4y2Ba

全部折叠gydF4y2Ba

表示U-Net网络体系结构的层,返回为gydF4y2BalayerGraphgydF4y2Ba(深度学习工具箱)gydF4y2Ba对象。gydF4y2Ba

网络输出图像大小,返回形式为[gydF4y2Ba高度gydF4y2Ba,gydF4y2Ba宽度gydF4y2Ba,gydF4y2Ba渠道gydF4y2Ba].gydF4y2Ba渠道gydF4y2Ba是输出通道的数量,它等于在输入处指定的类的数量。的gydF4y2Ba高度gydF4y2Ba而且gydF4y2Ba宽度gydF4y2Ba从网络输出图像的好坏取决于填充卷积的类型。gydF4y2Ba

  • 如果你指定gydF4y2Ba“ConvolutionPadding”gydF4y2Ba作为gydF4y2Ba“相同”gydF4y2Ba,则gydF4y2Ba高度gydF4y2Ba而且gydF4y2Ba宽度gydF4y2Ba网络输出图像的图像与网络输入图像的图像相同。gydF4y2Ba

  • 如果你指定gydF4y2Ba“ConvolutionPadding”gydF4y2Ba作为gydF4y2Ba“有效”gydF4y2Ba,则gydF4y2Ba高度gydF4y2Ba而且gydF4y2Ba宽度gydF4y2Ba网络输出图像的大小小于网络输入图像的大小。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

更多关于gydF4y2Ba

全部折叠gydF4y2Ba

U-Net架构gydF4y2Ba

  • U-Net结构由编码器子网和解码器子网组成,它们由桥接部分连接。gydF4y2Ba

  • U-Net结构中的编码器和解码器子网络由多个阶段组成。gydF4y2BaEncoderDepthgydF4y2Ba,它指定编码器和解码器子网络的深度,设置阶段数。gydF4y2Ba

  • U-Net编码器子网内的阶段由两组卷积层和ReLU层组成,然后是2 × 2最大池化层。解码器子网络由一个转置卷积层组成,用于上采样,然后是两组卷积层和ReLU层。gydF4y2Ba

  • 桥段由两组卷积层和ReLU层组成。gydF4y2Ba

  • 将所有卷积层的偏差项初始化为零。gydF4y2Ba

  • 编码器和解码器子网络中的卷积层权值使用gydF4y2Ba“他”gydF4y2Ba权重初始化方法gydF4y2Ba[2]gydF4y2Ba.gydF4y2Ba

提示gydF4y2Ba

  • 使用gydF4y2Ba“相同”gydF4y2Ba在卷积层中填充以保持从输入到输出的相同数据大小,并允许使用广泛的输入图像大小集。gydF4y2Ba

  • 使用基于补丁的方法对大图像进行无缝分割。方法可以提取图像补丁gydF4y2BarandomPatchExtractionDatastoregydF4y2Ba在图像处理工具箱™功能。gydF4y2Ba

  • 使用gydF4y2Ba“有效”gydF4y2Ba使用基于补丁的方法进行分割时防止边界工件的填充。gydF4y2Ba

  • 可以使用。创建的网络gydF4y2BaunetLayersgydF4y2Ba函数用于GPU代码生成后的训练用gydF4y2BatrainNetworkgydF4y2Ba(深度学习工具箱)gydF4y2Ba.详细信息和示例请参见gydF4y2Ba深度学习代码生成gydF4y2Ba(深度学习工具箱)gydF4y2Ba.gydF4y2Ba

兼容性的考虑gydF4y2Ba

全部展开gydF4y2Ba

不建议从R2019b开始gydF4y2Ba

参考文献gydF4y2Ba

[1]罗内伯格,O. P.费舍尔和T.布罗克斯。U-Net:用于生物医学图像分割的卷积网络gydF4y2Ba医学图像计算与计算机辅助干预(MICCAI)gydF4y2Ba.Vol. 9351, 2015, pp. 234-241。gydF4y2Ba

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

扩展功能gydF4y2Ba

另请参阅gydF4y2Ba

对象gydF4y2Ba

功能gydF4y2Ba

在R2018b中引入gydF4y2Ba