主要内容

semanticseg

基于深度学习的语义图像分割

描述

例子

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

C分数allScores) = semanticseg (网络中每个类别标签的分类分数C.该函数以数组形式返回与输入图像中的每个像素或体素对应的分数。

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

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

该函数支持使用多个MATLAB并行计算®工人。方法可以启用并行计算计算机视觉工具箱首选项对话框。

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

例子

全部折叠

在图像上叠加分割结果并显示结果。

加载预训练的网络。

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

列出网络层。

网layers
ans = 10x1带有图层的图层数组:1“imageinput”图像输入32 x32x1图像“zerocenter”正常化2 conv_1二维卷积64 3 x3x1旋转步[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 1]8 'conv_3' 2-D Convolution 2 1x1x64 convolutions with stride [1 1] and padding [0 0 0 0] 9 'softmax' Softmax softmax 10 'classoutput' Pixel Classification Layer Class weighted cross-entropy loss with classes 'triangle' and 'background'

读取并显示测试图像。

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

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

进行图像语义分割。

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

将分割结果叠加在图像上并显示结果。

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

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

显示分类分数。

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

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

创建一个只有三角形的二进制掩码。

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

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

在一组测试图像上运行语义分割,并将结果与地面真相数据进行比较。

加载预训练的网络。

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

使用负载测试图像imageDatastore

dataDir = fullfile (toolboxdir (“愿景”),“visiondata”“triangleImages”);testImageDir = fullfile (dataDir,“testImages”);imd = imageDatastore (testImageDir)
imds = ImageDatastore属性:Files:{'…/toolbox/vision/visiondata/triangleImages/testImages/image_001.jpg';’……/工具箱/视觉/ visiondata / triangleImages / testImages / image_002.jpg”;’……/工具箱/视觉/ visiondata / triangleImages / testImages / image_003.jpg”……和97多个}文件夹:{'…/build/matlab/toolbox/vision/visiondata/triangleImages/testImages'} AlternateFileSystemRoots: {} ReadSize: 1 Labels: {} SupportedOutputFormats: ["png" "jpg" "jpeg" "tif" "tiff"] DefaultOutputFormat: "png" ReadFcn: @readDatastoreImage . txt

加载地面真实性测试标签。

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

在批处理大小为4的所有测试图像上运行语义分割。您可以根据系统内存资源增加批处理大小以增加吞吐量。

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

将结果与实际情况进行比较。

指标= evaluateSemanticSegmentation (pxdsResults pxdsTruth)
评估语义分割结果---------------------------------------- *选择的指标:全局精度、类精度、IoU、加权IoU、BF评分。*处理了100张图像。*完成……完成了。*数据集指标:GlobalAccuracy MeanAccuracy MeanIoU WeightedIoU MeanBFScore  ______________ ____________ _______ ___________ ___________ 0.90624 0.95085 0.61588 0.87529 0.40652
metrics = semanticSegmentationMetrics with properties: ConfusionMatrix: [2x2 table] NormalizedConfusionMatrix: [2x2 table] DataSetMetrics: [1x5 table] ClassMetrics: [2x3 table] ImageMetrics: [100x5 table]

这个例子展示了如何定义和创建一个使用Tversky损耗的自定义像素分类层。

该层可用于训练语义分割网络。要了解关于创建自定义深度学习层的更多信息,请参见定义自定义深度学习层(深度学习工具箱)

特沃斯基损失

Tversky损失是基于测量两个分割图像之间重叠的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属性%可选属性结束方法函数loss (layer, Y, T)%层正向损失函数在这里结束结束结束

声明层属性

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

  • 的名字-层名,指定为字符向量或字符串标量。要在图层图中包含此图层,必须指定一个非空的惟一图层名。如果你用这一层训练一个串联网络的名字被设置为,然后软件在训练时自动分配一个名字。

  • 描述-层的一行描述,指定为字符向量或字符串标量。当该层显示在数组中。如果不指定层描述,则软件显示层类名称。

  • 类型-层的类型,指定为字符向量或字符串标量。的价值类型控件中显示该层时显示数组中。如果您不指定层类型,那么软件将显示“分类层”“回归层”

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

  • -输出层的类,指定为分类向量、字符串数组、字符向量的单元格数组或“汽车”.如果“汽车”,然后软件在训练时间自动设置课程。如果指定字符串数组或字符向量的单元格数组str,则软件将输出层的类设置为分类(str, str).默认值为“汽车”

如果该层没有其他属性,则可以省略属性部分。

特沃斯基损耗需要一个小的常数值,以防止被零除法。指定属性,ε,以保持该值。它还需要两个变量属性Alpha而且β分别控制假阳性和假阴性的权重。

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

创建构造函数

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

对象指定一个可选的输入参数名的名字属性在创建。

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

创建前向丢失函数

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

对于语义分割问题,维数T尺寸匹配Y,在那里Y是大小的4-D数组吗H——- - - - - -W——- - - - - -K——- - - - - -N,在那里K是多少班,和N是小批量尺寸。

的大小Y取决于前一层的输出。以确保Y是一样的尺寸吗T,你必须在输出层之前包含一个输出正确大小的层。例如,要确保Y是预测分数的4-D数组K类中,可以包含一个完全连接的大小层K或者一个卷积层K在输出层之前加上一个softmax层的过滤器。

函数loss (layer, Y, T)% loss = forwardLoss(layer, Y, T)返回之间的Tversky损失预测Y和训练目标T。Pcnot = 1 y;Gcnot = 1 - t;TP =总和(总和(y * T, 1), 2);FP =总和(总和(y * Gcnot, 1), 2);FN =总和(总和(Pcnot。* T, 1), 2);number = TP + layer.Epsilon;denom = TP + layer。α* FP +层。β*FN + layer.Epsilon;%计算特维斯基指数lossTIc = 1 - number ./denom;lossTI = (lossTIc, 3)之和;回报率平均特维斯基指数损失N =大小(Y, 4);损失= (lossTI) / N;结束

落后的损失函数

随着forwardLoss函数完全支持自动微分,不需要为反向丢失创建函数。

有关支持自动微分的函数列表,请参见dlarray支持的函数列表(深度学习工具箱)

完成一层

中提供了完整的层tverskyPixelClassificationLayer.m

classdeftverskyPixelClassificationLayer < nnet.layer.ClassificationLayer这一层实现了训练用的Tversky损失函数%语义分割网络。%的引用萨利希,赛义德·萨德格·莫赫塞尼,丹尼斯·埃尔多格摩斯和阿里·戈里波尔。Tversky损失函数用于三维完整图像分割卷积深度网络。”国际机器研讨会医学影像学习。施普林格可汗,2017。% ----------属性(常量)小常数,防止被零除。ε= 1 e-8;结束属性%假阳性和假的默认权重系数%底片α= 0.5;β= 0.5;结束方法函数layer = tverskyPixelClassificationLayer(name, alpha, beta)% layer = tverskyPixelClassificationLayer(name, alpha, beta)创建一个Tversky%像素分类层的指定名称和属性alpha和beta。设置图层名称。层。的名字=name; layer.Alpha = alpha; layer.Beta = beta;设置层描述。层。Description =“特沃斯基损失”结束函数loss (layer, Y, T)% loss = forwardLoss(layer, Y, T)返回之间的Tversky损失预测Y和训练目标T。Pcnot = 1 y;Gcnot = 1 - t;TP =总和(总和(y * T, 1), 2);FP =总和(总和(y * Gcnot, 1), 2);FN =总和(总和(Pcnot。* T, 1), 2);number = TP + layer.Epsilon;denom = TP + layer。α* FP +层。β*FN + layer.Epsilon;%计算tversky索引lossTIc = 1 - number ./denom;lossTI = (lossTIc, 3)之和;返回平均特维斯基指数损失。N =大小(Y, 4);损失= (lossTI) / N;结束结束结束

GPU的兼容性

所用的MATLAB函数forwardLosstverskyPixelClassificationLayer所有的支持gpuArray输入,所以该层是GPU兼容的。

检查输出层有效性

创建一个层的实例。

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

通过使用验证层的有效性checkLayer(深度学习工具箱).指定有效的输入大小为对层的典型输入的单个观察的大小。该层期望H——- - - - - -W——- - - - - -K——- - - - - -N数组的输入,K是多少班,和N是小批中的观察数。

numClasses = 2;validInputSize = [4 4 numClasses];validInputSize checkLayer(层,“ObservationDimension”4)
跳过GPU测试。没有找到兼容的GPU设备。跳过代码生成兼容性测试。要检查代码生成层的有效性,请指定“CheckCodegenCompatibility”和“ObservationDimension”选项。运行nnet.checklayer.TestOutputLayerWithoutBackward……完成nnet.checklayer.TestOutputLayerWithoutBackward __________测试总结:8通过,0失败,0不完整,2跳过。时间流逝:0.31452秒。

测试摘要报告通过、失败、不完整和跳过测试的数量。

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

创建一个使用tverskyPixelClassificationLayer

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

加载训练数据进行语义分割使用imageDatastore而且pixelLabelDatastore

dataSetDir = fullfile (toolboxdir (“愿景”),“visiondata”“triangleImages”);imageDir = fullfile (dataSetDir,“trainingImages”);labelDir = fullfile (dataSetDir,“trainingLabels”);imd = imageDatastore (imageDir);一会= [“三角形”“背景”];labelIDs = [255 0];pxds = pixelLabelDatastore(labelDir, classNames, 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 | | 0.0331 | 6.2500 e-05 99.56%  | |========================================================================================| 培训完成:马克思时代完成。

通过对测试图像进行分割并显示分割结果,对训练后的网络进行评价。

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

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

参考文献

[1] Salehi, Seyed Sadegh Mohseni, Deniz Erdogmus和Ali Gholipour。利用三维全卷积深度网络进行图像分割的Tversky损失函数。机器学习在医学成像中的国际研讨会.施普林格可汗,2017。

训练一个使用扩展卷积的语义分割网络。

语义分割网络对图像中的每个像素进行分类,从而得到按类分割的图像。语义分割的应用包括用于自动驾驶的道路分割和用于医疗诊断的癌细胞分割。要了解更多,请参见开始使用深度学习进行语义分割

像DeepLab[1]这样的语义分割网络大量使用了扩展卷积(也称为atrous卷积),因为它们可以增加层的接受域(层可以看到的输入区域),而不增加参数或计算的数量。

负荷训练数据

该示例使用一个32 × 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属性:Files: {200x1 cell} ClassNames: {2x1 cell} 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层的三个块。对于每个卷积层,指定32个增加膨胀因子的3 × 3滤波器,并填充输入,使它们与输出大小相同“填充”选项“相同”.为了分类像素,包括一个卷积层与K1×1的卷积,K是类的数量,后面是一个softmax层和一个pixelClassificationLayer用逆类权值。

inputSize = [32 32 1];filterSize = 3;numFilters = 32;numClasses =元素个数(类名);layers = [imageInputLayer(inputSize) convolution2dLayer(filterSize,numFilters,“DilationFactor”, 1“填充”“相同”(filterSize,numFilters,“DilationFactor”2,“填充”“相同”(filterSize,numFilters,“DilationFactor”4“填充”“相同”(1,numClasses)“类”一会,“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 | | 0.1100 | 0.0010 95.04%  | |========================================================================================| 培训完成:马克思时代完成。

测试网络

加载测试数据。创建一个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);
评估语义分割结果---------------------------------------- *选择的指标:全局精度、类精度、IoU、加权IoU、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)

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

分割测试图像使用semanticseg并显示结果使用labeloverlay

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

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

输入参数

全部折叠

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

图像类型 数据格式
单张二维灰度图像 二维大小矩阵H——- - - - - -W
单张二维彩色图像或二维多光谱图像 三维尺寸阵列H——- - - - - -W——- - - - - -C.颜色通道的数量C为3,用于彩色图像。
一系列的P二维图像 4-D数组的大小H——- - - - - -W——- - - - - -C——- - - - - -P.颜色通道的数量C为1用于灰度图像,为3用于彩色图像。
单幅带深度的三维灰度图像D 三维尺寸阵列H——- - - - - -W——- - - - - -D
单幅三维彩色图像或三维多光谱图像 4-D数组的大小H——- - - - - -W——- - - - - -D——- - - - - -C.颜色通道的数量C为3,用于彩色图像。
一系列的P三维图像 5-D数组的大小H——- - - - - -W——- - - - - -D——- - - - - -C——- - - - - -P

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

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

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

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

图像类型 ROI格式
二维图像 形式为[的四元向量xy宽度高度
三维图像 形式为[的六元向量xyz宽度高度深度

该向量定义了完全包含在输入图像中的感兴趣的矩形或立方区域。感兴趣区域外的图像像素被分配为<未定义的>分类标签。如果输入图像由一系列图像组成,则semanticseg适用于相同的roi给系列中的所有图片。

指定为数据存储的图像集合。的函数必须返回数字数组、单元格数组或表。对于有多列的单元格数组或表,函数只处理第一列。

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

名称-值参数

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

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:“ExecutionEnvironment”“图形”

返回的分割类型,指定为“分类”“双”,或“uint8”.当你指定“双”“uint8”,函数将分割结果作为包含标签id的标签数组返回。这些id是整数值,对应于在输入网络中使用的分类层中定义的类名。

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

图像组,指定为整数。图像被分组并作为批处理一起处理。批处理用于处理大量的图像集合,提高了计算效率。增加的MiniBatchSize的值提高了效率,但也占用了更多的内存。

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

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

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

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

默认选项是“汽车”.如果您使用“汽车”选项,那么MATLAB就不会生成MEX函数。

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

墨西哥人的选项根据函数调用中使用的网络和参数生成并执行MEX函数。您可以同时拥有与单个网络相关联的多个MEX函数。清除网络变量也会清除与该网络关联的任何MEX函数。

墨西哥人的选项仅在使用GPU时可用。使用GPU需要并行计算工具箱和CUDA支持的NVIDIA GPU.有关支持的计算功能的信息,请参见GPU计算的需求(并行计算工具箱).如果并行计算工具箱或合适的GPU不可用,则函数返回错误。

墨西哥人的加速并不支持所有层。有关受支持层的列表,请参见支持层(GPU编码器)

分类像素或体素的类,指定为“汽车”,字符向量、字符串向量或类别向量的单元格数组。如果值是一个分类向量Y,则对向量的元素进行排序,并根据类别(Y)

如果网络是dlnetwork(深度学习工具箱)对象,则由'指定的类的数量'必须与网络预测输出的频道数量相匹配。默认情况下,当'的价值“汽车”,从1到编号C,在那里C是网络输出层的通道数。

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

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

此属性仅在使用可以处理图像的数据存储时应用。

应用于输出文件名的前缀,指定为字符串标量或字符向量。镜像文件名称如下:

  • 前缀_N. png,在那里N对应于输入图像文件的索引,洛桑国际管理发展学院。文件N).

此属性仅在使用可以处理图像的数据存储时应用。

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

此属性仅在使用可以处理图像的数据存储时应用。

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

平行运行,集合“UseParallel”真正的或使用计算机视觉工具箱™首选项默认启用此功能。

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

输出参数

全部折叠

类别标签,作为类别数组返回。分类数组将标签与输入图像中的每个像素或体素关联起来。返回的图像readall数据存储)与返回的类别矩阵一一对应readallpixelLabelDatastore).标签数组的元素对应于输入图像的像素或体素元素。如果选择一个ROI,那么标签将局限于该ROI内的区域。感兴趣区域外的图像像素和体素被分配为<未定义的>分类标签。

图像类型 分类标签格式
单一的二维图像 二维大小矩阵H——- - - - - -W.元素Cj)是分配给像素的分类标签j).
一系列的P二维图像 三维尺寸阵列H——- - - - - -W——- - - - - -P.元素Cjp)是分配给像素的分类标签jp).
单一的三维图像 三维尺寸阵列H——- - - - - -W——- - - - - -D.元素Cjk)是分配给体素的类别标签jk).
一系列的P三维图像 4-D数组的大小H——- - - - - -W——- - - - - -D——- - - - - -P.元素Cjkp)是分配给体素的类别标签jkp).

中的每个分类标签的信心得分C,作为between值的数组返回0而且1.分数表示预测标签的置信度C.评分值越高表明对预测标签的置信度越高。

图像类型 分数格式
单一的二维图像 二维大小矩阵H——- - - - - -W.元素分数j)为像素的分类评分j).
一系列的P二维图像 三维尺寸阵列H——- - - - - -W——- - - - - -P.元素分数jp)为像素的分类评分jp).
单一的三维图像 三维尺寸阵列H——- - - - - -W——- - - - - -D.元素分数jk)为体素的分类评分jk).
一系列的P三维图像 4-D数组的大小H——- - - - - -W——- - - - - -D——- - - - - -P.元素分数jkp)为体素的分类评分jkp).

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

图像类型 所有分数格式
单一的二维图像 三维尺寸阵列H——- - - - - -W——- - - - - -l.元素allScoresj的分数像素处的标签j).
一系列的P二维图像 4-D数组的大小H——- - - - - -W——- - - - - -l——- - - - - -P.元素allScoresjp的分数像素处的标签jp).
单一的三维图像 4-D数组的大小H——- - - - - -W——- - - - - -D——- - - - - -l.元素allScoresjk的分数体素上的标签jk).
一系列的P三维图像 5-D数组的大小H——- - - - - -W——- - - - - -D——- - - - - -l——- - - - - -P.元素allScoresjkp的分数体素上的标签jkp).

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

的输出中的图像readallds)与的输出中的范畴矩阵一一对应readallpxds).

扩展功能

版本历史

介绍了R2017b

另请参阅

功能

应用程序

对象

外部网站

Baidu
map