主要内容

semanticseg

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

描述

例子

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

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

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

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

该函数支持使用多个MATL金宝appAB进行并行计算®工人。属性可以启用并行计算计算机视觉工具箱首选项对话框。

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

例子

全部折叠

覆盖分段结果在图像上显示并显示结果。

加载一个预先训练的网络。

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

列出网络图层。

网。layers
ans = 10x1 Layer array with layers: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]5 conv_2卷积64 3 x3x64旋转步[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 1 x1x64旋转步[1]和填充[0 0 0 0]9 ' softmax softmax softmax 10“classoutput”像素分类层类加权熵损失类“三角形”和“背景”

读取并显示测试图像。

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

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

执行语义图像分割。

[C分数]= semanticseg(净,我'minibatchsize',32);

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

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

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

显示分类评分。

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

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

创建一个只有三角形的二元遮罩。

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

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

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

加载一个预先训练的网络。

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

使用imageDatastore

datadir = fullfile(toolboxdir(“愿景”),“visiondata”“triangleImages”);testimagedir = fullfile(Datadir,“testImages”);imd = imageDatastore (testImageDir)
images:{'…/toolbox/vision/visiondata/triangleImages/ testestimages /image_001.jpg';’……/工具箱/视觉/ visiondata / triangleImages / testImages / image_002.jpg”;’……/工具箱/视觉/ visiondata / triangleImages / testImages / image_003.jpg”……和97个更多的}文件夹:{'…/build/matlab/toolbox/vision/visiondata/triangleImages/testImages'} alteratefilesystemroots: {} ReadSize: 1标签:{}Supported金宝appOutputFormats: ["png" "jpg" "jpeg" "tif" "tiff"] DefaultOutputFormat: "png" ReadFcn: @readDatastoreImage

负载地面真值测试标签。

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

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

pxdsresults = semanticseg(IMDS,NET,'minibatchsize',4,“WriteLocation”, tempdir);
运行语义分割网络------------------------------- * Processed 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损失的自定义像素分类层。

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

特沃斯基损失

特沃斯基损耗是基于测量两幅分割图像重叠的特沃斯基指数[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 = forwardLoss(layer, Y, T)%层前向损失功能到这里结束结束结束

声明图层属性

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

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

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

  • 类型-层的类型,指定为字符向量或字符串标量。的价值类型当层显示在数组中。如果未指定图层类型,则软件显示“分类层”“回归层”

自定义分类图层还具有以下酒店:

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

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

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

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

创建构造函数

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

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

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

创建前向损失函数

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

对于语义分割问题,维度T尺寸匹配Y, 在哪里Y4-D阵列的大小H-经过-W-经过-K-经过-N, 在哪里K是班数,和N为迷你批量大小。

的大小Y取决于前一层的输出。以确保Y大小是一样的吗T,则必须在输出层之前包含输出正确大小的层。例如,为了确保Y4-D数组的预测得分是什么K类,您可以包含大小完全连接的层K或者是一个卷积层K过滤器在输出层之前跟随一个softmax层。

函数loss = forwardLoss(layer, Y, T)% loss = forwardLoss(layer, Y, T)返回Tversky loss between%预测Y和训练目标T。pcnot = 1-y;gcnot = 1-t;TP = SUM(SUM(Y. * T,1),2);fp = sum(和(y. * gcnot,1),2);fn = sum(sum(pcnot。* t,1),2);nomer = tp + layer.epsilon;denom = tp + tillay.alpha * fp + layer.beta * fn + layer.epsilon;%计算Tversky指数loss = 1 - number ./denom;lossTI = (lossTIc, 3)之和;回报率平均特沃斯基指数损失N =大小(Y, 4);损失= (lossTI) / N;结束

落后的损失函数

随着forwardLoss功能完全支持自动差异化,不需要金宝app为向后丢失创建功能。

有关支持自动区分的函数列表,请参见金宝appDlarray支持的函数列表金宝app(深度学习工具箱)

完成一层

所述完成层提供于tverskyPixelClassificationLayer.m

classdeftverskyPixelClassificationLayer < nnet.layer.ClassificationLayer%这一层实现了用于训练的Tversky损失函数%语义分割网络。%的引用萨利希、赛义德·萨德格·莫赫塞尼、丹尼兹·埃尔多格穆斯和阿里·古尔利普尔。% "Tversky损失函数的图像分割使用3D充分%卷积深度网络。”国际机器研讨会%医学影像学习。施普林格可汗,2017。% ----------属性(常量)%防止被零除的小常数。ε= 1 e-8;结束属性%默认权重系数为假阳性和假%底片α= 0.5;β= 0.5;结束方法函数图层= tverskyPixelClassificationLayer(name, alpha, beta)% layer = tverskyPixelClassificationLayer(name, alpha, beta)创建Tversky%像素分类层与指定的名称和属性alpha和beta。%设置图层名称。layer.name = name;层。α=α;层。β=beta;%设置图层描述。层。Description =“特沃斯基损失”结束函数loss = forwardLoss(layer, Y, T)% loss = forwardLoss(layer, Y, T)返回Tversky loss between%预测Y和训练目标T。pcnot = 1-y;gcnot = 1-t;TP = SUM(SUM(Y. * T,1),2);fp = sum(和(y. * gcnot,1),2);fn = sum(sum(pcnot。* t,1),2);nomer = tp + layer.epsilon;denom = tp + tillay.alpha * fp + layer.beta * fn + layer.epsilon;%计算特沃斯基指数loss = 1 - number ./denom;lossTI = (lossTIc, 3)之和;回报率平均特沃斯基指数损失。N =大小(Y, 4);损失= (lossTI) / N;结束结束结束

GPU的兼容性

所用的MATLAB函数forwardLosstverskyPixelClassificationLayer所有的支金宝app持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跳过。时间:1.2631秒。

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

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

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

layers = [imageInputLayer([32 32 1])]'填充',1) batchNormalizationLayer reluLayer maxPooling2dLayer(2,“步”, 2) convolution2dLayer (64,'填充',1)Rublayer TranspodingConv2dlayer(4,64,“步”2,'裁剪',1)卷积2dlayer (1,2) softmaxLayer tverskyPixelClassificationLayer(“特沃斯基”, 0.3, 0.7)
图层= 11x1层阵列,带有图层:1''图像输入32x32x1图像,具有“Zerocenter”归一化2''卷积64 3x3卷绕卷曲[1 1]和填充[1 1 1 1] 3''批量归一化批量归一化4''Relu Relu 5''MAX汇集2x2 max汇集步进[2 2]和填充[0 0 0 0] 6''卷积64 3x3卷绕卷发[1 1]和填充[1 1 1 1] 7''ReluRelu 8''转换卷积64 4x4转置卷绕升级[2 2]和裁剪[1 1 1 1] 9''卷积2 1x1卷曲的卷发[11]和填充[0 0 0 0] 10''softmax softmax11'TVERSKY'分类输出TVERSKY LOST

负载训练数据用于语义分割imageDatastorepixelLabelDatastore

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

使用关联图像和像素标签数据pixelLabelImageDatastore

ds = pixelLabelImageDatastore (imd, pxds);

设置培训选项,培训网络。

选择= trainingOptions (“亚当”...“InitialLearnRate”1 e - 3,...“MaxEpochs”, 100,...“LearnRateDropFactor”, 5 e 1,...“LearnRateDropPeriod”, 20岁,...'shownrateschedule'“分段”...'minibatchsize', 50);网= trainNetwork (ds、层、期权);
单CPU训练。初始化输入数据规范化。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | | |丧失准确性  | |========================================================================================| | 1 | 1 |就是| | 1.2933 | 0.0010 50.32%||13 | 50 | 00:00:17 | 98.83% | 0.0987 | 0.0010 | | 25 | 100 | 00:00:33 | 99.33% | 0.0547 | 0.0005 | | 38 | 150 | 00:00:50 | 99.37% | 0.0473 | 0.0005 | | 50 | 200 | 00:01:06 | 99.48% | 0.0401 | 0.0003 | | 63 | 250 | 00:01:22 | 99.48% | 0.0384 | 0.0001 | | 75 | 300 | 00:01:38 | 99.54% | 0.0348 | 0.0001 | | 88 | 350 | 00:01:54 | 99.51% | 0.0352 | 6.2500e-05 | | 100 | 400 | 00:02:10 | 99.56% | 0.0330 | 6.2500e-05 | |========================================================================================|

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

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

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

参考文献

Salehi, Seyed Sadegh Mohseni, Deniz Erdogmus和Ali Gholipour。使用3D全卷积深度网络进行图像分割的特沃斯基损失函数医学影像中的机器学习国际研讨会.施普林格可汗,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 with properties: Files: {200x1 cell} ClassNames: {2x1 cell} ReadSize: 1 ReadFcn: @readDatastoreImage AlternateFileSystemRoots: {}

创建语义分割网络

这个例子使用了一个基于扩展卷积的简单语义分割网络。

为训练数据创建一个数据源,并获取每个标签的像素计数。

pximdstrain = pixellabelimagedataStore(imdstrain,pxdstrain);TBL = CONSECHANCELABEL(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 =元素个数(类名);[imageInputLayer(inputSize)]卷积2dlayer (filterSize,numFilters,)“DilationFactor”,1,'填充'“相同”) batchNormalizationLayer reluLayer卷积2dlayer (filterSize,numFilters,“DilationFactor”2,'填充'“相同”) batchNormalizationLayer reluLayer卷积2dlayer (filterSize,numFilters,“DilationFactor”,4,'填充'“相同”) batchNormalizationLayer reluLayer卷积2dlayer (1,numClasses) softmaxLayer pixelClassificationLayer(“类”一会,“ClassWeights”classWeights)];

列车网络的

指定培训选项。

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

培训网络使用trainNetwork

网= trainNetwork (pximdsTrain层,选项);
单CPU训练。初始化输入数据规范化。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | | |丧失准确性  | |========================================================================================| | 1 | 1 |就是| | 1.6825 | 0.0010 91.62%||17 | 50 | 00:00:17 | 88.56% | 0.2393 | 0.0010 | | 34 | 100 | 00:00:34 | 92.08% | 0.1672 | 0.0010 | | 50 | 150 | 00:00:51 | 93.17% | 0.1472 | 0.0010 | | 67 | 200 | 00:01:08 | 94.15% | 0.1313 | 0.0010 | | 84 | 250 | 00:01:24 | 94.47% | 0.1167 | 0.0010 | | 100 | 300 | 00:01:42 | 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);
运行语义分割网络------------------------------- * Processed 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)

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

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

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

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

输入参数

全部折叠

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

图像类型 数据格式
单个2-D灰度图像 二维矩阵的大小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,…,的家

例子:“ExecutionEnvironment”“图形”

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

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

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

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

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

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

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

默认选项是“汽车”.如果你使用“汽车”选项,则MATLAB永远不会生成MEX函数。

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

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

墨西哥人的选项仅在使用GPU时可用。使用GPU需要并行计算工具箱和CUDA启用的NVIDIA GPU.有关支持的计算能力的信息,请参见金宝appGPU通金宝app过发布支持(并行计算工具箱).如果并行计算工具箱或合适的GPU不可用,则该函数返回一个错误。

墨西哥人的加速不支持指定为金宝appdlnetwork(深度学习工具箱)对象。

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

像素或体素被分类到的类,指定为“汽车”,字符向量、字符串向量或分类向量的单元格数组。如果该值是一个类别向量Y,然后对向量中的元素进行排序和排序类别(Y)

如果网络是dlnetwork(深度学习工具箱)对象中指定的类的数量’必须匹配网络预测输出的频道数。默认情况下,当'有价值“汽车”在美国,课程编号从1到1C, 在哪里C为网络输出层中的信道数。

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

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

此属性仅在使用ImageDatastore对象的输入。

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

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

此属性仅在使用ImageDatastore对象的输入。

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

此属性仅在使用ImageDatastore对象的输入。

输出参数

全部折叠

类别标签,作为类别数组返回。分类数组将标签关联到输入图像中的每个像素或体素。返回的图像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值的数组返回01.分数表示对预测标签的置信度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