主要内容

semanticseg

使用深度学习语义图像分割

描述

例子

C= semanticseg (,网络)返回一个输入图像的语义分割使用深度学习。

(C,分数,allScores)= semanticseg (,网络)也返回分类得分为每个分类标签C。函数返回数组中的分数对应于输入图像中每个像素或体素。

(___)= semanticseg (,网络,roi)返回一个语义分割矩形次区域的输入图像。

pxds= semanticseg (ds,网络)返回的集合的语义分割图像ds,一个数据存储对象。

支持并行计算使用多个MAT金宝appLAB的函数®工人。您可以启用并行计算使用计算机视觉工具箱的偏好对话框。

(___)= semanticseg (___,名称,值)返回语义分割与附加选项指定一个或多个参数名称-值对。

例子

全部折叠

覆盖图像分割结果并显示结果。

加载一个pretrained网络。

data =负载(“triangleSegmentationNetwork”);网= data.net
网= SeriesNetwork属性:层:x1 nnet.cnn.layer.Layer [10] InputNames: {“imageinput”} OutputNames: {“classoutput”}

列出网络层。

net.Layers
ans x1 = 10层阵列层:1“imageinput”图像输入32 x32x1图像“zerocenter”正常化64 3 x3x1 conv_1的二维卷积运算与步幅[1]和填充[1 1 1 1]3‘relu_1 ReLU ReLU 4“maxpool”二维最大池2 x2马克斯池步(2 - 2)和填充[0 0 0 0]64 3 x3x64 conv_2的二维卷积运算与步幅[1]和填充[1 1 1 1]6‘relu_2 ReLU ReLU 7 transposed-conv二维卷积转置64 4 x4x64转置运算与步幅2[2]和裁剪(1 1 1)8“conv_3”二维卷积2 1 x1x64旋转步[1]和填充[0 0 0 0]9 ' softmax softmax softmax 10“classoutput”像素分类层类加权熵损失类“三角形”和“背景”

读取和显示测试图像。

我= imread (“triangleTest.jpg”);图imshow(我)

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

执行语义图像分割。

[C分数]= semanticseg(净,我“MiniBatchSize”、32);

覆盖图像分割结果并显示结果。

B = labeloverlay (C);图imshow (B)

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

显示分类的分数。

图显示亮度图像(分数)轴广场colorbar

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

创建一个二进制面具只有三角形。

BW C = = =“三角形”;图imshow (BW)

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

在测试集上运行语义分割的图像和针对地面实况数据的比较结果。

加载一个pretrained网络。

data =负载(“triangleSegmentationNetwork”);网= data.net;

使用负载测试图像imageDatastore

dataDir = fullfile (toolboxdir (“愿景”),“visiondata”,“triangleImages”);testImageDir = fullfile (dataDir,“testImages”);imd = imageDatastore (testImageDir)
imd = ImageDatastore属性:文件:{"…/工具箱/视觉/ visiondata / triangleImages / testImages / image_001.jpg”;’……/工具箱/视觉/ visiondata / triangleImages / testImages / image_002.jpg”;’……/工具箱/视觉/ visiondata / triangleImages / testImages / image_003.jpg”……文件夹和97}:{…/构建/ matlab工具箱/视觉/ visiondata triangleImages / testImages '} AlternateFileSystemRoots: {} ReadSize: 1标签:{}SupportedOutput金宝appFormats: [“png”“jpg”“jpeg”“tif”“tiff”] DefaultOutputFormat:“png”ReadFcn: @readDatastoreImage

负载地面实况测试标签。

testLabelDir = fullfile (dataDir,“testLabels”);一会= [“三角形”“背景”];pixelLabelID = (255 0);一会,pxdsTruth = pixelLabelDatastore (testLabelDir pixelLabelID);

运行测试的语义分割图像的批量大小4。你可以增加批量大小根据你的系统内存资源增加吞吐量。

pxdsResults = semanticseg (imd,净,“MiniBatchSize”4“WriteLocation”,tempdir);
运行的语义分割网络- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 100张图片处理。

比较结果对地面真理。

指标= evaluateSemanticSegmentation (pxdsResults pxdsTruth)
评估语义分割结果- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *选定指标:全球准确性、类准确性,借据,加权借据,BF的分数。* 100(加工)图像。*完成……完成了。*数据集指标:GlobalAccuracy MeanAccuracy MeanIoU WeightedIoU _______ MeanBFScore * * *…………0.90624 0.95085 - 0.61588 0.87529 - 0.40652
与属性指标= semanticSegmentationMetrics: ConfusionMatrix: [2 x2表]NormalizedConfusionMatrix: [2 x2表]DataSetMetrics: [1 x5表]ClassMetrics: [2 x3表]ImageMetrics: [100 x5表)

这个例子显示了如何定义和创建一个自定义像素分类层使用特沃斯基的损失。

这一层可以使用语义分割训练网络。想要了解更多关于创建自定义深度学习层,明白了定义定制的深度学习层(深度学习工具箱)

特沃斯基损失

特沃斯基损失是基于Tversky指数测量两个分割图像重叠(1]。特沃斯基指数 “透明国际” c 在一个图像 Y 和相应的地面实况 T 是由

“透明国际” c = = 1 Y 厘米 T 厘米 = 1 Y 厘米 T 厘米 + α = 1 Y 厘米 T c + β = 1 Y c T 厘米

  • c 对应于类和 c 对应于在课堂上不是 c

  • 是在前两个维度的元素数量的 Y

  • α β 权重因素控制假阳性和假阴性的贡献使每个类的损失。

损失 l 类的数量 C 是由

l = c = 1 C 1 - - - - - - “透明国际” c

分类层模板

分类层模板复制到一个新文件在MATLAB®。这个模板轮廓的结构分类层和包含功能定义层的行为。其他的例子显示了如何完成tverskyPixelClassificationLayer

classdeftverskyPixelClassificationLayer < nnet.layer.ClassificationLayer属性%可选属性结束方法函数损失= forwardLoss(层,Y, T)%层转发损失函数结束结束结束

声明层属性

默认情况下,自定义输出层有以下属性:

  • 的名字——层名称,指定为一个特征向量或字符串标量。包括这一层一层图,您必须指定一个非空的独特的层的名字。如果你训练一系列网络与这一层的名字被设置为,然后在训练时软件自动分配一个名称。

  • 描述——一行的描述层,指定为一个特征向量或字符串标量。这个描述层显示在一个时出现数组中。如果你不指定层的描述,然后软件显示层的类名。

  • 类型层类型,指定为一个特征向量或字符串标量。的价值类型当层显示在一个出现数组中。如果你不指定层类型,那么软件显示“分类层”“回归层”

自定义分类层也有以下属性:

  • 类的输出层,指定为一个分类向量,字符串数组,单元阵列的特征向量,或“汽车”。如果“汽车”,然后在训练时软件自动设置类。如果您指定一个字符串数组或单元阵列的特征向量str,然后输出层的软件设置类分类(str, str)。默认值是“汽车”

如果层没有其他属性,那么您可以省略的属性部分。

特沃斯基损失需要防止除零小恒定值。指定属性,ε,这个值。还需要两个变量属性lphaβ控制假阳性和假阴性的权重,分别。

classdeftverskyPixelClassificationLayer < nnet.layer.ClassificationLayer属性(常量)%小防止除零常数。ε= 1 e-8;结束属性%假阳性和假阴性的默认权重系数α= 0.5;β= 0.5;结束结束

创建构造函数

创建的函数结构层和初始化层属性。指定任何变量需要创建构造函数作为输入层。

指定一个可选的输入参数名称来分配的的名字属性在创建。

函数层= tverskyPixelClassificationLayer(名称、α,β)% = tverskyPixelClassificationLayer层创建一个特沃斯基(名字)%像素分类层与指定的名称。%设置图层名称层。的名字=name;%设置层属性层。α=α;层。β=beta;%设置层描述层。Description =“特沃斯基损失”;结束

创建向前损失函数

创建一个函数命名forwardLoss返回加权预测之间的交叉熵损失由网络和训练目标。的语法forwardLoss损失= forwardLoss(层,Y, T),在那里Y前一层的输出和吗T代表的培训目标。

为语义分割问题,的尺寸T匹配的尺寸Y,在那里Y是一个四维数组的大小H——- - - - - -W——- - - - - -K——- - - - - -N,在那里K类的数量,N是mini-batch大小。

的大小Y依赖于前一层的输出。以确保Y一样的尺寸吗T,你必须包括一层输出层之前,输出正确的大小。例如,以确保Y是一个四维数组的预测成绩K类,您可以包括一个完全连接层的大小K或一个回旋的层K过滤器softmax层之前输出层。

函数损失= forwardLoss(层,Y, T)% = forwardLoss损失(层,Y, T)返回Tversky损失之间%预测T Y和培训目标。Pcnot = 1 y;Gcnot = 1 - t;TP =总和(总和(y * T, 1), 2);FP =总和(总和(y * Gcnot, 1), 2);FN =总和(总和(Pcnot。* T, 1), 2);号码= TP + layer.Epsilon;分母项= TP +层。α* FP +层。β*FN + layer.Epsilon;%计算Tversky指数lossTIc = 1 - numer. /分母项;lossTI = (lossTIc, 3)之和;%返回平均Tversky指数损失N =大小(Y, 4);损失= (lossTI) / N;结束

落后的损失函数

随着forwardLoss功能完全支持自动分化,不需要创金宝app建一个函数的落后的损失。

一个功能列表,支持自动分化,明白了金宝app与dlarray支持函数的列表金宝app(深度学习工具箱)

完成一层

提供了完整的层tverskyPixelClassificationLayer.m

classdeftverskyPixelClassificationLayer < nnet.layer.ClassificationLayer%这一层实现了Tversky损失函数进行训练%的语义分割网络。%的引用%萨利希,赛义德Sadegh穆赫辛尼经常,Deniz Erdogmus,阿里Gholipour。%”Tversky损失函数完全使用3 d图像分割%卷积网络。”我nternational Workshop on Machine%的学习在医学成像。施普林格,可汗,2017。% - - - - - - - - - - -属性(常量)%小防止除零常数。ε= 1 e-8;结束属性%默认的假阳性和假权重系数%底片α= 0.5;β= 0.5;结束方法函数层= tverskyPixelClassificationLayer(名称、α,β)% = tverskyPixelClassificationLayer层(名称、α,β)创建了一个特沃斯基%像素分类层α和β与指定的名称和属性。%设置图层名称。层。的名字=name; layer.Alpha = alpha; layer.Beta = beta;%设置层描述。层。Description =“特沃斯基损失”;结束函数损失= forwardLoss(层,Y, T)% = forwardLoss损失(层,Y, T)返回Tversky损失之间%预测T Y和培训目标。Pcnot = 1 y;Gcnot = 1 - t;TP =总和(总和(y * T, 1), 2);FP =总和(总和(y * Gcnot, 1), 2);FN =总和(总和(Pcnot。* T, 1), 2);号码= TP + layer.Epsilon;分母项= TP +层。α* FP +层。β*FN + layer.Epsilon;%计算tversky指数lossTIc = 1 - numer. /分母项;lossTI = (lossTIc, 3)之和;%返回平均tversky指数损失。N =大小(Y, 4);损失= (lossTI) / N;结束结束结束

GPU的兼容性

MATLAB函数中使用forwardLosstverskyPixelClassificationLayer所有的支金宝app持gpuArray输入层是GPU兼容。

检查输出层有效性

创建一个实例的层。

层= tverskyPixelClassificationLayer (“特沃斯基”,0.7,0.3);

检查层使用的有效性checkLayer(深度学习工具箱)。指定有效输入尺寸大小的单个观察典型的输入层。层预计H——- - - - - -W——- - - - - -K——- - - - - -N数组的输入,K类的数量,Nmini-batch是观测的数量。

numClasses = 2;validInputSize = 4 numClasses [4];validInputSize checkLayer(层,“ObservationDimension”4)
跳过GPU测试。不兼容的GPU设备发现。跳过代码生成的兼容性测试。检查代码生成层的有效性,指定“CheckCodegenCompatibility”和“ObservationDimension”选项。nnet.checklayer运行。TestOutputLayerWithoutBackward ........ Done nnet.checklayer.TestOutputLayerWithoutBackward __________ Test Summary: 8 Passed, 0 Failed, 0 Incomplete, 2 Skipped. Time elapsed: 0.31452 seconds.

测试总结报告通过,失败了,不完整,并跳过测试。

使用自定义层语义分割网络

创建一个语义分割网络使用tverskyPixelClassificationLayer

32 32层= [imageInputLayer ([1]) convolution2dLayer (64,“填充”1)batchNormalizationLayer reluLayer maxPooling2dLayer (2“步”,2)convolution2dLayer (64,“填充”64年,1)reluLayer transposedConv2dLayer(4日,“步”2,“种植”1)convolution2dLayer (1、2) softmaxLayer tverskyPixelClassificationLayer (“特沃斯基”,0.3,0.7);

负荷训练数据的语义分割使用imageDatastorepixelLabelDatastore

dataSetDir = fullfile (toolboxdir (“愿景”),“visiondata”,“triangleImages”);imageDir = fullfile (dataSetDir,“trainingImages”);labelDir = fullfile (dataSetDir,“trainingLabels”);imd = imageDatastore (imageDir);一会= [“三角形”“背景”];labelIDs = (255 0);一会,pxds = pixelLabelDatastore (labelDir labelIDs);

把图像和像素标签数据通过数据存储结合

ds =结合(imd, pxds);

设置培训方案和培训网络。

选择= trainingOptions (“亚当”,“InitialLearnRate”1 e - 3,“MaxEpochs”,100,“LearnRateDropFactor”,5 e 1,“LearnRateDropPeriod”,20岁,“LearnRateSchedule”,“分段”,“MiniBatchSize”,50);网= trainNetwork (ds、层、期权);
培训在单CPU。初始化输入数据规范化。| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | | |时代迭代时间| Mini-batch | Mini-batch |基地学习| | | | (hh: mm: ss) | | |损失精度率| | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | 1 | 1 | 00:00:01 | 50.32% | 1.2933 | 0.0010 | | 13 | 50 | 00:00:20 | 98.83% | 0.0991 | 0.0010 | | 25 | 100 | 00:00:37 | 99.33% | 0.0549 | 0.0005 | | | 150 | 00:00:53 | 99.37% | 0.0465 | 0.0005 | | 200 | | 00:01:07 | 99.48% | 0.0400 | 0.0003 | 63 | 250 | | 00:01:20 | 99.47% | 0.0385 | 0.0001 | 75 | 300 | | 00:01:31 | 99.54% | 0.0349 | 0.0001 | 88 | 350 | | 00:01:42 | 99.51% | 0.0353 | 6.2500 e-05 | | 100 | 400 | 00:01:53 | 99.56% | 0.0331 | 6.2500 e-05 | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |培训完成:马克思时代完成。

评估由分段训练网络的测试图像和显示分割结果。

我= imread (“triangleTest.jpg”);[C分数]= semanticseg(我,净);B = labeloverlay (C);蒙太奇({B}我)

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

引用

[1]萨利希,赛义德Sadegh穆赫辛尼经常Deniz Erdogmus,阿里Gholipour。“特沃斯基损失函数图像分割使用3 d完全卷积深度网络。”国际研讨会在医学成像机器学习。施普林格,可汗,2017。

火车语义分割网络使用扩张的隆起。

语义分割图像的每个像素分类网络,导致图像分割的类。应用语义分割包括自主驾驶的道路分割为医学诊断和癌症细胞分割。欲了解更多,请看开始使用语义分割使用深度学习

语义分割网络像DeepLab[1]充分利用通过卷积扩张(也称为深黑色的卷曲),因为他们可以增加图层的接受域的面积(输入层可以看到)没有增加参数的数量和计算。

负荷训练数据

32-by-32三角形的示例使用一个简单的数据集图像出于演示目的。附带的数据集包括像素标签地面实况数据。加载训练数据使用imageDatastore和一个pixelLabelDatastore

dataFolder = fullfile (toolboxdir (“愿景”),“visiondata”,“triangleImages”);imageFolderTrain = fullfile (dataFolder,“trainingImages”);labelFolderTrain = fullfile (dataFolder,“trainingLabels”);

创建一个imageDatastore的图像。

imdsTrain = imageDatastore (imageFolderTrain);

创建一个pixelLabelDatastore地面真理像素标签。

一会= [“三角形”“背景”];标签= (255 0);pxdsTrain = pixelLabelDatastore (labelFolderTrain、类名、标签)
pxdsTrain = PixelLabelDatastore属性:文件:{200}x1细胞类名:{2 x1细胞}ReadSize: 1 ReadFcn: @readDatastoreImage AlternateFileSystemRoots: {}

创建语义分割网络

这个例子使用一个简单的语义分割网络基于扩张的隆起。

创建一个数据源为训练数据和像素计数为每个标签。

ds =结合(imdsTrain pxdsTrain);台= countEachLabel (pxdsTrain)
台=2×3表名字PixelCount __________ ImagePixelCount * * *售予{“三角形”}10326 2.048 e + 05年{‘背景’}1.9447 e + 05年2.048 e + 05

大多数为背景像素标签。这类失衡偏见学习过程有利于统治阶级的。为了解决这个问题,使用类权重平衡类。您可以使用几种方法来计算类权重。一个常见的方法是逆频率加权类权重类频率的倒数。这种方法增加了重量给下类表示。使用逆频率加权计算类权重。

numberPixels =总和(tbl.PixelCount);频率=(资源。P我xelCount / numberPixels; classWeights = 1 ./ frequency;

创建一个网络通过使用一个图像像素分类输入层的大小对应于输入图像的大小。接下来,指定三个街区的卷积,批正常化,和ReLU层。对于每一个卷积层,3×3的过滤器指定32随着膨胀因素和垫的输入,所以他们是相同的大小输出通过设置“填充”选项“相同”。对像素进行分类,包括卷积的一层K1×1的卷积,K是类的数量,其次是softmax层和pixelClassificationLayer逆向类权重。

inputSize = [32 32 1];filterSize = 3;numFilters = 32;numClasses =元素个数(类名);层= [imageInputLayer inputSize convolution2dLayer (filterSize numFilters,“DilationFactor”,1“填充”,“相同”)batchNormalizationLayer reluLayer convolution2dLayer (filterSize numFilters,“DilationFactor”2,“填充”,“相同”)batchNormalizationLayer reluLayer convolution2dLayer (filterSize numFilters,“DilationFactor”4“填充”,“相同”numClasses) batchNormalizationLayer reluLayer convolution2dLayer (1) softmaxLayer pixelClassificationLayer (“类”一会,“ClassWeights”classWeights)];

列车网络的

指定培训选项。

选择= trainingOptions (“个”,“MaxEpochs”,100,“MiniBatchSize”,64,“InitialLearnRate”1 e - 3);

列车网络使用trainNetwork

网= trainNetwork (ds、层、期权);
培训在单CPU。初始化输入数据规范化。| = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | | |时代迭代时间| Mini-batch | Mini-batch |基地学习| | | | (hh: mm: ss) | | |损失精度率| | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = | | 1 | 1 | 00:00:01 | 91.62% | 1.6825 | 0.0010 | | 17 | 50 | 00:00:17 | 88.56% | 0.2393 | 0.0010 | | 100 | | 00:00:29 | 92.08% | 0.1672 | 0.0010 | | 150 | | 00:00:41 | 93.17% | 0.1472 | 0.0010 | 67 | 200 | | 00:00:54 | 94.15% | 0.1313 | 0.0010 | 84 | 250 | | 00:01:06 | 94.47% | 0.1167 | 0.0010 | 100 | 300 | | 00:01:18 | 95.04% | 0.1100 | 0.0010 | | = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = |培训完成:马克思时代完成。

测试网络

负载测试数据。创建一个imageDatastore的图像。创建一个pixelLabelDatastore地面真理像素标签。

imageFolderTest = fullfile (dataFolder,“testImages”);imdsTest = imageDatastore (imageFolderTest);labelFolderTest = fullfile (dataFolder,“testLabels”);pxdsTest = pixelLabelDatastore (labelFolderTest、类名、标签);

使用测试数据做出预测和训练网络。

pxdsPred = semanticseg (imdsTest净,“MiniBatchSize”32岁的“WriteLocation”,tempdir);
运行的语义分割网络- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * 100张图片处理。

评估预测精度evaluateSemanticSegmentation

指标= evaluateSemanticSegmentation (pxdsPred pxdsTest);
评估语义分割结果- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *选定指标:全球准确性、类准确性,借据,加权借据,BF的分数。* 100(加工)图像。*完成……完成了。*数据集指标:GlobalAccuracy MeanAccuracy MeanIoU WeightedIoU _______ MeanBFScore * * *…………0.95237 0.97352 - 0.72081 0.92889 - 0.46416

在语义分割评估网络的更多信息,见evaluateSemanticSegmentation

段新形象

读取和显示测试图像triangleTest.jpg

imgTest = imread (“triangleTest.jpg”);图imshow (imgTest)

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

段测试图像使用semanticseg使用和显示结果labeloverlay

C = semanticseg (imgTest,净);B = labeloverlay (imgTest C);图imshow (B)

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

输入参数

全部折叠

输入图像,指定为以下之一。

图像类型 数据格式
单一的二维灰度图像 二维矩阵的大小H——- - - - - -W
单一的二维彩色图像或二维多光谱图像 三维数组的大小H——- - - - - -W——- - - - - -C。颜色通道的数量C对彩色图像3。
一系列的P二维图像 四维数组的大小H——- - - - - -W——- - - - - -C——- - - - - -P。颜色通道的数量C是1灰度图像和彩色图像3。
3 d灰度图像与深度D 三维数组的大小H——- - - - - -W——- - - - - -D
单一的三维彩色图像或三维多光谱图像 四维数组的大小H——- - - - - -W——- - - - - -D——- - - - - -C。颜色通道的数量C对彩色图像3。
一系列的P三维图像 5 d的数组的大小H——- - - - - -W——- - - - - -D——- - - - - -C——- - - - - -P

输入图像也可以gpuArray(并行计算工具箱)包含一个前图像类型(需要并行计算工具箱™)。

数据类型:uint8|uint16|int16|||逻辑

网络,作为一个指定SeriesNetwork(深度学习工具箱),DAGNetwork(深度学习工具箱),或dlnetwork(深度学习工具箱)对象。

感兴趣的区域,指定为以下之一。

图像类型 ROI格式
二维图像 第4单元向量的形式x,y,宽度,高度]
三维图像 6-element向量的形式x,y,z,宽度,高度,深度]

向量定义了一个矩形或立方形的地区利益完全包含在输入图像。图像像素以外的地区利益分配<未定义的>分类标签。如果输入图像由一系列图像,然后semanticseg适用于相同的roi所有图片系列。

收藏的图片,指定为一个数据存储。的数据存储的函数必须返回一个数值数组,细胞数组,或表。对于细胞数组或包含多个列的表,只有第一列功能流程。

有关更多信息,请参见数据存储深度学习(深度学习工具箱)

名称-值参数

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

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“ExecutionEnvironment”,“图形”

返回细分类型,指定为“分类”,“双”,或“uint8”。当你指定“双”“uint8”,该函数返回分割结果作为一个标签数组包含标签id。IDs是整数值,对应分类层中定义的类名称中使用输入网络。

你不能使用OutputType财产的ImageDatastore对象的输入。

组图片,指定为一个整数。分组和处理在一起作为一个批处理图片。批次用于处理大量图像和提高计算效率。增加的MiniBatchSize“价值增加了效率,但也要占用更多的记忆空间。

与网络硬件资源来处理图像,指定为“汽车”,“图形”,或“cpu”

ExecutionEnvironment 描述
“汽车” 使用GPU如果可用。否则,使用CPU。使用CUDA GPU需要并行计算工具箱和®使英伟达®GPU。关于支持计算能力的信息,看到金宝appGPU计算的需求(并行计算工具箱)
“图形” 使用GPU。如果没有一个合适的GPU,函数返回一个错误消息。
“cpu” 使用CPU。

性能优化,指定为“汽车”,墨西哥人的,或“没有”

加速度 描述
“汽车” 自动应用一些优化适合输入网络和硬件资源。
墨西哥人的 编译和执行一个墨西哥人的功能。此选项仅在使用GPU可用。你还必须有一个C / c++编译器安装。设置说明,请参阅墨西哥人设置(GPU编码器)
“没有” 禁用所有加速度。

默认的选项是“汽车”。如果你使用“汽车”选项,然后MATLAB不生成一个墨西哥人的功能。

使用“加速”选项“汽车”墨西哥人的可以提供性能优势,但在初始运行时间增加为代价的。后续调用与兼容的参数是更快。使用性能优化计划多次调用该函数时使用新的输入数据。

墨西哥人的选项生成并执行一个墨西哥人函数基于网络和参数在函数调用中使用。你可以有几个墨西哥人函数与一个网络。结算网络变量也清除任何墨西哥人功能与网络有关。

墨西哥人的选项仅当你使用GPU。使用GPU并行计算需要工具箱和CUDA NVIDIA GPU启用。关于支持计算能力的信息,看到金宝appGPU计算的需求(并行计算工具箱)。如果并行计算工具箱或合适的GPU不可用,那么函数将返回一个错误。

墨西哥人的加速度不支持所有层。金宝app支持层的列表,请参阅金宝app金宝app支持层(GPU编码器)

类的像素或体素进行分类,指定为“汽车”单元阵列的特征向量,一个字符串向量,或分类向量。如果该值是一个分类向量Y,那么向量的元素排序和命令类别(Y)

如果网络是一个dlnetwork(深度学习工具箱)对象,然后指定的类的数量的“必须匹配网络的输出的通道数量预测。默认情况下,当“的有价值“汽车”从1到,屈指可数的类C,在那里C是网络的输出层的通道数量。

如果网络是一个SeriesNetwork(深度学习工具箱)DAGNetwork(深度学习工具箱)对象,然后指定的类的数量的“必须匹配分类输出层的类的数量。默认情况下,当“的有价值“汽车”,使用分类的类是自动设置输出层。

文件夹位置,指定为松材线虫病(您当前的工作目录),字符串标量或特征向量。指定的文件夹必须存在,有写权限。

这个属性只适用于当使用一个能够处理图像数据存储。

前缀用于输出文件名称,指定为一个字符串标量或特征向量。图像文件命名如下:

  • 前缀_N. png,在那里N对应于输入图像的索引文件,imds.Files(N)。

这个属性只适用于当使用一个能够处理图像数据存储。

显示进度信息,指定为“真正的”“假”

这个属性只适用于当使用一个能够处理图像数据存储。

运行并行计算,指定为“真正的”“假”

并行运行,设置“UseParallel”真正的使用计算机视觉或默认启用这个工具箱™偏好。

有关更多信息,请参见并行计算工具箱支持金宝app

输出参数

全部折叠

分类标签,作为分类数组返回。分类数组与一个标签输入图像中每个像素或体素。返回的图片readall(数据存储)与返回的分类矩阵一一对应readall(pixelLabelDatastore)。标签数组的元素对应于输入图像的像素或体素元素。如果你选择一个ROI,那么标签仅限于ROI内的区域。感兴趣的图像像素和像素点以外的地区分配<未定义的>分类标签。

图像类型 分类标签格式
单一的二维图像 二维矩阵的大小H——- - - - - -W。元素C(,j)是分配给像素的分类标签(,j)。
一系列的P二维图像 三维数组的大小H——- - - - - -W——- - - - - -P。元素C(,j,p)是分配给像素的分类标签(,j,p)。
单一的三维图像 三维数组的大小H——- - - - - -W——- - - - - -D。元素C(,j,k)是分类标签分配给体素(,j,k)。
一系列的P三维图像 四维数组的大小H——- - - - - -W——- - - - - -D——- - - - - -P。元素C(,j,k,p)是分类标签分配给体素(,j,k,p)。

信心得分为每个分类标签C,作为一个数组返回值之间01。分数代表信心预测标签C。更高分数值表明预测的信心标签。

图像类型 分数格式
单一的二维图像 二维矩阵的大小H——- - - - - -W。元素分数(,j)是像素的分类评分(,j)。
一系列的P二维图像 三维数组的大小H——- - - - - -W——- - - - - -P。元素分数(,j,p)是像素的分类评分(,j,p)。
单一的三维图像 三维数组的大小H——- - - - - -W——- - - - - -D。元素分数(,j,k)是体素的分类评分(,j,k)。
一系列的P三维图像 四维数组的大小H——- - - - - -W——- - - - - -D——- - - - - -P。元素分数(,j,k,p)是体素的分类评分(,j,k,p)。

分数为所有标签输入网络分类的类别,作为数字数组返回。数组的格式如下表中所描述的。l代表标签类的总数。

图像类型 所有分数格式
单一的二维图像 三维数组的大小H——- - - - - -W——- - - - - -l。元素allScores(,j,)的分数在像素标签(,j)。
一系列的P二维图像 四维数组的大小H——- - - - - -W——- - - - - -l——- - - - - -P。元素allScores(,j,,p)的分数在像素标签(,j,p)。
单一的三维图像 四维数组的大小H——- - - - - -W——- - - - - -D——- - - - - -l。元素allScores(,j,k,)的分数在体元标签(,j,k)。
一系列的P三维图像 5 d的数组的大小H——- - - - - -W——- - - - - -D——- - - - - -l——- - - - - -P。元素allScores(,j,k,,p)的分数在体元标签(,j,k,p)。

语义分割的结果,作为一个返回pixelLabelDatastore对象。对象包含的语义分割结果中包含的图片ds输入对象。为每个图像保存为单独的结果uint8标签PNG图像的矩阵。您可以使用(pxds)返回分配给图像的分类标签ds

图像的输出readall(ds)与分类矩阵一一对应的输出readall(pxds)。

扩展功能

版本历史

介绍了R2017b

另请参阅

功能

应用程序

对象

外部网站