SemanticSeg.

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

描述

例子

C= semanticseg(一世网络使用深度学习返回输入图像的语义分割。输入网络必须是一个系列网络Dagnetwork.目的。

[C分数AllScores.] = semanticseg(一世网络使用每个分类标签的分类分数返回输入图像的语义分割C.该函数以阵列返回对应于输入图像中的每个像素或体素的阵列中的分数。AllScores.包含输入网络可以对所有标签类别进行分类的分数。

[___] = semanticseg(一世网络ROI.返回针对输入图像的矩形子区域一个语义分割。

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

该功能支持使用多个MATL万博1manbetxAB的并行计算®工人。您可以使用实现并行计算计算机视觉工具箱首选项对话。

[___] = semanticseg(___名称,价值通过一个或多个名称值对参数指定的其他选项返回语义分段。

例子

全部折叠

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

加载备用网络。

data = load('trianglesemationnetwork');net = data.net.
net =带有属性的串行network:图层:[10x1 nnet.cnn.layer.layer]输入名称:{'imageInput'} OutputNames:{'classOutput'}

列出网络层。

net.layers.
ANS = 10x1层阵列,带有层数:1'ImageInput'图像输入32x32x1图像与“Zerocenter”归一化2'CONC_1'卷积64 3x3x1卷绕卷曲[1 1]和填充[1 1 1 1] 3'Relu_1'Relu Relu 4“MaxPool”最大池2X2 MAX汇集步进[2 2]和填充[0 0 0 0] 5'CONC_2'卷积64 3x3x64卷绕卷曲[1 1]和填充[1 1 1 1] 6'Relu_2'Relu Relu7'转置-Cron'转换卷积64 4x4x64转向卷绕升降卷曲[2 2]和裁剪[1 1 1 1] 8'conv_3'卷积2 1x1x64卷曲的卷发[11]和填充[0 0 0 0] 9'softmax'softmax softmax 10'classoctput'像素分类层类加权交叉熵丢失,课程“三角形”和“背景”

读取并显示测试图像。

我= imread('triangletest.jpg'); 图1(I)

执行语义图像分割。

[C,分数]=语义词组(I,净,“MiniBatchSize”,32);

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

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

显示分类分数。

图于imagesc(得分)轴广场彩色栏

仅使用三角形创建二进制掩码。

Bw = c =='三角形';图imshow(bw)

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

加载备用网络。

data = load('trianglesemationnetwork');净= data.net;

负载测试图像使用imageDatastore

dataDir=fullfile(toolboxdir('想象'),'VisionData'“triangleImages”); testImageDir=fullfile(dataDir,“testImages”);IMDS = imageDatastore(testImageDir)
IMDS = IMAGEDATASTORE具有属性:文件:{'... /工具箱/ vision / VisionData / triangingImages / testimages / image_001.jpg';'... /工具箱/ vision / Visiondata / triangingimages / testimages / image_002.jpg';'/工具箱/ vision / Visiondata / triangimages / testimages / image_003.jpg'...和97更多}文件夹:{'... / build / matlab / toolbox / vision / Visiondata / triangleImages / testimges'} alternatefilesystemroots:{} readce万博1manbetx

负载地面真理测试标签。

testlabeldir = fullfile(datadir,'testlabels');ClassNames = [“三角形”“背景”];pixelLabelID = [255 0];一会,pxdsTruth = pixelLabelDatastore (testLabelDir pixelLabelID);

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

pxdsResults=semanticseg(imds,net,“MiniBatchSize”4.'writeelocation',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 =具有属性的语义发行级别:confusionmatrix:[2x2表] normalizedconfusionmatrix:[2x2表] datasetmetrics:[1x5表]类测量仪:[2x3表] ImageMetrics:[100x5表]

此示例显示如何定义和创建使用Tversky丢失的自定义像素分类层。

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

TVERSKY损失

TVersky丢失是基于TVersky索引来测量两个分段图像之间的重叠[1]。TVERSKY索引 TI. C 在一个图像之间 y 和相应的地面真相 T. 是(谁)给的

TI. C = σ. m = 1 m y 厘米 T. 厘米 σ. m = 1 m y 厘米 T. 厘米 + α σ. m = 1 m y 厘米 T. C m + β σ. m = 1 m y C m T. 厘米

  • C 对应于类和 C 相当于不在课堂上 C

  • m 是沿着前两个维度的元素数量 y

  • α β 为加权控制的贡献因素误报和每个类化妆的损失假阴性。

亏损 L. 超过课程数量 C 是(谁)给的

L. = σ. C = 1 C 1 - TI. C

分类层模板

将分类图层模板复制到MATLAB®中的新文件中。此模板概述了分类层的结构,并包括定义图层行为的函数。其余的示例显示了如何完成tverskyPixelClassificationLayer

Classdef.tverskyPixelClassificationLayer < nnet.layer.ClassificationLayer特性%可选属性结尾方法功能丢失=转发器(图层,y,t)%层前向损耗函数进入此处结尾结尾结尾

声明图层特性

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

  • 姓名- 图层名称,指定为字符向量或字符串标量。要在图层图中包含此图层,您必须指定非空白的唯一层名称。如果您使用此图层培训系列网络姓名被设置为'',然后软件在培训时间自动分配名称。

  • 描述- 图层的单​​行描述,指定为字符向量或字符串标量。当图层以a中显示时,会出现此说明大批。如果未指定图层描述,则软件将显示图层类名。

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

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

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

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

TVERSKY损失需要一个小的恒定值来防止划分为零。指定属性,埃斯利昂,保持这个值。它还需要两个可变属性a莱卡bet这分别控制了误报和假阴性的加权。

Classdef.tverskyPixelClassificationLayer < nnet.layer.ClassificationLayer特性(持续的)%小常数,以防止分割零。epsilon = 1e-8;结尾特性误报和假否定的%默认加权系数阿尔法= 0.5;贝塔= 0.5;结尾......结尾

创建构造函数

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

指定要分配给的可选输入参数名称姓名酒店在创作。

功能talls = tverskypixelclassificationlayer(名称,alpha,beta)%layer = tverskypixelclassificationlayer(name)创建一个tversky%像素分类层具有指定名称。%设置图层名称layer.name = name;%设定层性质tillay.alpha = alpha;tillay.beta = beta;%设置图层描述layer.description =.'TVERSKY LOSY';结尾

创建正向损失函数

创建名为的函数forwardloss.这返回网络和培训目标的预测之间的加权交叉熵损失。语法forwardloss.损失= forwardLoss(层,Y, T)哪里y是先前层的输出和T.代表培训目标。

对于语义分割的问题,尺寸T.匹配y哪里y是一个4 d尺寸H-借-W.-借-K.-借-N哪里K.是课程数量,也是N是迷你批量尺寸。

的大小y依赖于先前层的输出。以确保y与尺寸相同T.,你必须包括输出层之前输出正确的尺寸层。例如,为了确保y4-D数组的预测得分是什么K.类,您可以包含完全连接的大小层K.或者是一个卷积层K.过滤器后跟输出层之前的软MAX层。

功能丢失=转发器(图层,y,t)% loss = forwardLoss(layer, Y, T)返回Tversky loss between%预测y和训练目标t。Pcnot=1-Y;Gcnot=1-T;TP=总和(总和(Y*T,1),2);FP=总和(总和(Y.*Gcnot,1),2);FN=总和(总和(Pcnot.*T,1),2);numer=TP+layer.Epsilon;denom=TP+layer.Alpha*FP+layer.Beta*FN+layer.Epsilon;%计算Tversky指数losstic = 1  - 数值/denom;lossti = sum(losstic,3);%返回平均电视索引丢失N =尺寸(Y,4);损耗=总和(lossTI)/ N;结尾

向后损失功能

作为forwardloss.功能完全支持自动微分,无需为向万博1manbetx后损耗创建功能。

有关支持自动区分的函数列表,请参见万博1manbetx支持dlarray的函数列表万博1manbetx(深度学习工具箱)。

已完成的图层

完成了已完成的图层tverskyPixelClassificationLayer.m

Classdef.tverskyPixelClassificationLayer < nnet.layer.ClassificationLayer%此图层实现了用于培训的TVERSKY丢失功能%语义分割网络。% 参考%Salehi,Seyed Sadegh Mohseni,Deniz Erdogmus和Ali Ghotipour。% "Tversky损失函数的图像分割使用3D充分%卷积的深网络。“机器国际研讨会医学成像学习。Springer,Cham,2017。----------%特性(持续的)%小常数,以防止分割零。epsilon = 1e-8;结尾特性%默认权重系数为假阳性和假%否定阿尔法= 0.5;贝塔= 0.5;结尾方法功能talls = tverskypixelclassificationlayer(名称,alpha,beta)%layer = tverskypixelclassificationlayer(名称,alpha,beta)创建一个tversky%像素分类层具有指定名称和属性α和β。%设置图层名称。layer.name = name;tillay.alpha = alpha;tillay.beta = beta;%设置图层描述。layer.description =.'TVERSKY LOSY';结尾功能丢失=转发器(图层,y,t)% loss = forwardLoss(layer, Y, T)返回Tversky loss between%预测y和训练目标t。Pcnot=1-Y;Gcnot=1-T;TP=总和(总和(Y*T,1),2);FP=总和(总和(Y.*Gcnot,1),2);FN=总和(总和(Pcnot.*T,1),2);numer=TP+layer.Epsilon;denom=TP+layer.Alpha*FP+layer.Beta*FN+layer.Epsilon;%计算tversky指数losstic = 1  - 数值/denom;lossti = sum(losstic,3);%返回平均电视索引丢失。N =尺寸(Y,4);损耗=总和(lossTI)/ N;结尾结尾结尾

GPU的兼容性

MATLAB函数在计算机中的应用forwardloss.tverskyPixelClassificationLayer所有支持万博1manbetxGPUArray.输入,因此该层与GPU兼容。

检查输出层有效性

创建图层的实例。

tallay = tverskypixelclassificationlayer('tversky',0.7,0.3);

使用checkLayer.指定有效的输入大小为典型的输入的单次观察到层的大小。的层期望一个H-借-W.-借-K.-借-N阵列输入,其中K.是课程数量,也是N在小批量的观测次数。

numClasses = 2;validInputSize = [4 4 numClasses];validInputSize checkLayer(层,'观察树',4)
跳过GPU测试。找不到兼容的GPU设备。不向后运行nnet.checklayer.TestOutputLayer。。。。。。。。完成nnet.checklayer.TestOutputLayerWithoutBackward测试摘要:8通过,0失败,0不完整,2跳过。经过的时间:1.088秒。

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

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

创建一个使用该网络的语义分段网络tverskyPixelClassificationLayer

图层= [imageInputlayer([32 32 1])卷积2dlayer(3,64,“填充”1)BatchnormalizationLayer Ruilulayer MaxPooling2dlayer(2,'走吧',2)convolution2dLayer(3,64,“填充”,1)reluLayer转座层(4,64,'走吧'2.“种植”,1)convolution2dLayer(1,2)softmaxLayer tverskyPixelClassificationLayer('tversky',0.3,0.7)]
layers=11x1层阵列,带层:1''图像输入32x32x1图像,带“零中心”规格化2''卷积64 3x3卷积,带跨距[1]和填充[1 1 1]3''批量规格化批规格化4''ReLU ReLU 5''最大池2x2最大池,带跨距[2]和填充[0 0 0]6''卷积64 3x3卷积带跨步[1 1]和填充[1 1 1 1]7''ReLU ReLU 8''转置卷积64 4x4转置卷积带跨步[2 2]和裁剪[1 1 1]9''卷积2 1x1卷积带跨步[1 1 1]和填充[0 0 0 0]10''Softmax Softmax 11'tversky'分类输出tversky损失

负载训练数据用于语义分割imageDatastore像素标签数据库

datasetdir = fullfile(toolboxdir('想象'),'VisionData'“triangleImages”);IMAGEDIR =完整文件(dataSetDir,'培训码');labeldir = fullfile(datasetdir,'训练标签');IMDS = IMAGEDATASTORE(IMAGEDIR);ClassNames = [“三角形”“背景”];labelids = [255 0];pxds = pixellabeldataStore(Labeldir,ClassNames,LabelIds);

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

ds = pixellabelimagedataStore(IMDS,PXD);

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

选择= trainingOptions ('亚当'......“InitialLearnRate”,1e-3,......'maxepochs',100,......“LearnRateDropFactor”, 5 e 1,......'学习ropperiod'20,......“LearnRateSchedule”“分段”......“MiniBatchSize”,50);net = trainnetwork(ds,图层,选项);
单CPU训练。初始化输入数据规范化。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | | |丧失准确性  | |========================================================================================| | 1 | 1 |就是| | 1.2933 | 0.0010 50.32%||13 | 50 | 00:00:21 | 98.83% | 0.0987 | 0.0010 | | 25 | 100 | 00:00:42 | 99.33% | 0.0547 | 0.0005 | | 38 | 150 | 00:01:03 | 99.37% | 0.0473 | 0.0005 | | 50 | 200 | 00:01:27 | 99.48% | 0.0401 | 0.0003 | | 63 | 250 | 00:01:49 | 99.48% | 0.0384 | 0.0001 | | 75 | 300 | 00:02:11 | 99.54% | 0.0348 | 0.0001 | | 88 | 350 | 00:02:34 | 99.51% | 0.0352 | 6.2500e-05 | | 100 | 400 | 00:02:56 | 99.56% | 0.0330 | 6.2500e-05 | |========================================================================================|

通过分割一个测试图像,并且显示该分割结果评估训练网络。

我= imread('triangletest.jpg');[c,得分] = SemanticSeg(I,Net);B = Labeloverlay(I,C);蒙太奇({i,b})

参考文献

[1] Salehi,Seyed Sadegh Mohseni,Deniz Erdogmus和Ali Ghotipour。“使用3D完全卷积的深网络的图像分割的TVERSKY损失功能。”医学成像机器学习国际研讨会.Springer,Cham,2017。

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

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

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

负载培训数据

该示例使用32×32三角形图像的简单数据集进行说明。数据集包括随附的像素标签地面真实数据。使用imageDatastoreA.像素标签数据库

datafolder = fullfile(toolboxdir('想象'),'VisionData'“triangleImages”);imagefoldertrain = fullfile(datafolder,'培训码');labelfoldertrain = fullfile(datafolder,'训练标签');

创建一个imageDatastore对于图像。

imdsTrain = imageDatastore(imageFolderTrain);

创建一个像素标签数据库对于地面真值像素标签。

ClassNames = [“三角形”“背景”];标签= [255 0];pxdsTrain = pixelLabelDatastore(labelFolderTrain,类名,标签)
pxdstrain = pixellabeldataStore与属性:文件:{200x1 cell} classNames:{2x1 cell} readsize:1 readfcn:@readdataStoreimage alternatefilesystemroots:{}

创建语义分段网络

此示例使用基于扩展卷积的简单语义分段网络。

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

pximdstrain = pixellabelimagedataStore(imdstrain,pxdstrain);TBL = CONSECHANCHLABEL(PXIMDSTRAIN)
TBL =.2×3表名称PixelCount ImagePixelCount ______________ __________ _______________ { '三角形'} 10326 2.048e + 05 { '背景'} 1.9447e + 05 2.048e + 05

大多数像素标签用于背景。这种阶级失衡使学习过程偏向于主导阶级。要解决这个问题,可以使用类权重来平衡类。可以使用几种方法来计算类权重。一种常见的方法是逆频率加权,其中类权重是类频率的倒数。这个方法增加了给予未表示的类的权重。使用反频率加权计算类别权重。

numberpixels = sum(tbl.pixelcount);频率= tbl.pixelcount / numperspixels;Classweights = 1 ./频率;

通过使用具有与输入图像大小对应的输入大小的图像输入层,创建用于像素分类的网络。接下来,指定三个卷积、批处理规范化和ReLU层块。对于每个卷积层,指定32个3乘3的滤波器,增加膨胀因子,并通过设置“填充”选择“相同”.要对像素进行分类,需要包含一个卷积层K.1比1卷积,在哪里K.是类的数量,后跟一个softmax层和一个PixelclassificationLayer.用相反的类权重。

inputSize = [32 32 1];filterSize = 3;numFilters = 32;numClasses =元素个数(类名);[imageInputLayer(inputSize)]卷积2dlayer (filterSize,numFilters,)“DilationFactor”1.“填充”“相同”)BatchnormalizationLayer Rufulayer Convolution2dlayer(过滤,NumFilters,“DilationFactor”2.“填充”“相同”)BatchnormalizationLayer Rufulayer Convolution2dlayer(过滤,NumFilters,“DilationFactor”4.“填充”“相同”)batchNormalizationLayer reluLayer convolution2dLayer(1,numClasses)softmaxLayer pixelClassificationLayer(“类”一会,'classweight',classWeights)];

火车网络

指定培训选项。

选择= trainingOptions ('sgdm'......'maxepochs',100,......“MiniBatchSize”, 64,......“InitialLearnRate”,1E-3);

使用培训网络Trainnetwork.

net = trainnetwork(pximdstrain,图层,选项);
单CPU训练。初始化输入数据规范化。|========================================================================================| | 时代| |迭代时间| Mini-batch | Mini-batch |基地学习  | | | | ( hh: mm: ss) | | |丧失准确性  | |========================================================================================| | 1 | 1 |就是| | 1.6825 | 0.0010 91.62%||17 | 50 | 00:00:19 | 88.56% | 0.2393 | 0.0010 | | 34 | 100 | 00:00:41 | 92.08% | 0.1672 | 0.0010 | | 50 | 150 | 00:01:01 | 93.17% | 0.1472 | 0.0010 | | 67 | 200 | 00:01:22 | 94.15% | 0.1313 | 0.0010 | | 84 | 250 | 00:01:42 | 94.47% | 0.1167 | 0.0010 | | 100 | 300 | 00:02:05 | 95.04% | 0.1100 | 0.0010 | |========================================================================================|

测试网络

加载测试数据。创建一个imageDatastore对于图像。创建一个像素标签数据库对于地面真值像素标签。

imageFolderTest=fullfile(数据文件夹,“testImages”);imdstest = imageageataStore(imagefoldertest);labelfoldertest = fullfile(datafolder,'testlabels');pxdsTest = pixelLabelDatastore(labelFolderTest,类名,标签);

利用测试数据和训练网络进行预测。

pxdsPred = semanticseg(imdsTest,网,“MiniBatchSize”,32,'writeelocation',Tempdir);
运行语义分割网络--------------------------*处理了100幅图像。

使用预测精度评估预测精度评估评估

度量= evaluateSemanticSegmentation(pxdsPred,pxdsTest);
评估语义分割结果---------------------------------------- *选择指标:全球精度,类准确性,IOU,加权IOU,BF得分。*加工100张图像。*即将完成...完成。*数据集的指标:GlobalAccuracy MeanAccuracy MeanIoU WeightedIoU MeanBFScore ______________ ____________ _______ ___________ ___________ 0.95237 0.97352 0.72081 0.92889 0.46416

有关评估语义分割网络的更多信息,请参见评估评估

分段新映像

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

imgtest = imread('triangletest.jpg');图imshow(imgTest)

段使用测试图像SemanticSeg.并使用显示结果Labeloverlay.

c = SemanticSeg(IMGTest,Net);B = Labeloverlay(IMGTEST,C);图imshow (B)

输入参数

全部折叠

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

图像类型 数据格式
单个二维灰度图像 2-D矩阵大小H-借-W.
单个2-D彩色图像或2-D多光谱图像 3-D尺寸阵列H-借-W.-借-C.颜色通道的数量C为彩色图像是3。
一系列的P.二维图像 4-D尺寸阵列H-借-W.-借-C-借-P..颜色通道的数量C为1表示灰度图像,3表示彩色图像。
具有深度的单个3-D灰度图像D. 3-D尺寸阵列H-借-W.-借-D.
单个3-D彩色图像或3-D多光谱图像 4-D尺寸阵列H-借-W.-借-D.-借-C.颜色通道的数量C为彩色图像是3。
一系列的P.3-D图像 5-D阵列大小H-借-W.-借-D.-借-C-借-P.

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

数据类型:uint8.|uint16|int16|双重的|单身的|逻辑

网络,指定为a系列网络或者一个Dagnetwork.目的。

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

图像类型 ROI格式
2-d的图像 形式的4个元素矢量[Xy宽度高度]
3-D图像 形式的6个元素矢量[XyZ.宽度高度深度]

矢量定义了完全包含在输入图像中的矩形或立方体的感兴趣区域。分配了感兴趣区域之外的图像像素<未定义>分类标签。如果输入图像由一系列图像中的,然后SemanticSeg.应用相同ROI.在系列中的所有图像。

图像采集,指定为数据存储。这数据存储的函数必须返回一个数字数组,单元格数组或表。对于具有多列的单元格阵列或表,该功能仅处理第一列。

有关详细信息,请参阅深入学习的数据购物(深度学习工具箱)。

名称值对参数

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

例子:'executionenvironment''GPU'

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

你不能使用OutputType财产与A.imageageAtastore.对象的输入。

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

使用网络处理图像的硬件资源,指定为'汽车''GPU', 或者'中央处理器'

执行环境 描述
'汽车' 如果可用,请使用GPU。否则,使用CPU。使用GPU需要并行计算工具箱和CUDA®使英伟达®GPU具有计算能力3.0或更高。
'GPU' 使用GPU。如果不可用合适的GPU,则该函数返回错误消息。
'中央处理器' 使用CPU。

性能优化,指定为'汽车''mex', 或者'没有任何'

加速 描述
'汽车' 自动应用适合输入网络和硬件资源的许多优化。
'mex' 编译并执行MEX功能。仅使用GPU时可用此选项。使用GPU需要并行计算工具箱和支持CUDA的NVIDIA GPU,其计算能力为3.0或更高。如果不可用并行计算工具箱或合适的GPU,则该函数返回错误。
'没有任何' 禁用所有加速度。

默认选项是'汽车'. 如果你使用'汽车'选项,MATLAB不会生成MEX功能。

使用'加速'选择权'汽车''mex'可以提供绩效福利,但牺牲了增加的初始运行时间。具有兼容参数的后续调用更快。使用新输入数据计划多次调用函数时,使用性能优化。

'mex'选项基于函数调用中使用的网络和参数生成并执行MEX函数。您可以一次使用与单个网络相关联的多个MEX函数。清除网络变量还清除与该网络相关联的任何MEX功能。

'mex'选项仅在使用GPU时可用。您还必须安装C/ c++编译器。有关安装说明,请参见墨西哥人设置(GPU编码器)。

'mex'加速并不支持所有层。万博1manbetx有关受支持的层的列表,请参见万博1manbetx万博1manbetx支撑层(GPU编码器)。

文件夹位置,指定为pwd(您的当前工​​作文件夹),串标,或特征向量。指定文件夹必须存在并有写入权限。

此属性仅在使用时适用imageageAtastore.对象的输入。

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

  • 字首_N.png哪里N对应于输入图像文件的索引,IMDS.FILE.N)。

此属性仅在使用时适用imageageAtastore.对象的输入。

显示进度信息,指定为“真正的”'错误的'

此属性仅在使用时适用imageageAtastore.对象的输入。

输出参数

全部折叠

分类标签,作为分类数组返回。分类阵列将标签与输入图像中的每个像素或体素相关联。返回的图像读物数据存储)有一对一的对应于由返回的分类矩阵读物像素标签数据库)。标签阵列对应的所述输入图像的像素或体素的元素的元素。如果您选择的投资回报率,那么标签仅限于关心区域内的区域。所述感兴趣区域之外的图像的像素和体素被分配<未定义>分类标签。

图像类型 分类标签格式
单一的二维图像 2-D矩阵大小H-借-W..元素C一世j)是指定给该像素的分类标签一世一世j)。
一系列的P.二维图像 3-D尺寸阵列H-借-W.-借-P..元素C一世jP.)是指定给该像素的分类标签一世一世jP.)。
单个3-D图像 3-D尺寸阵列H-借-W.-借-D..元素C一世jK.)是分配给体素的分类标签一世一世jK.)。
一系列的P.3-D图像 4-D尺寸阵列H-借-W.-借-D.-借-P..元素C一世jK.P.)是分配给体素的分类标签一世一世jK.P.)。

每个分类标签的信任度得分C,作为一系列值返回0.1.分数表示对预测标签的置信度C.更高的分数值表示在预测标签更高的信心。

图像类型 分数格式
单一的二维图像 2-D矩阵大小H-借-W..元素分数一世j)是像素的分类分数一世一世j)。
一系列的P.二维图像 3-D尺寸阵列H-借-W.-借-P..元素分数一世jP.)是像素的分类分数一世一世jP.)。
单个3-D图像 3-D尺寸阵列H-借-W.-借-D..元素分数一世jK.)voxel的分类得分是一世一世jK.)。
一系列的P.3-D图像 4-D尺寸阵列H-借-W.-借-D.-借-P..元素分数一世jK.P.)voxel的分类得分是一世一世jK.P.)。

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

图像类型 所有的分数格式
单一的二维图像 3-D尺寸阵列H-借-W.-借-L..元素AllScores.一世j问:)是的分数问:在像素的标签一世一世j)。
一系列的P.二维图像 4-D尺寸阵列H-借-W.-借-L.-借-P..元素AllScores.一世j问:P.)是的分数问:在像素的标签一世一世jP.)。
单个3-D图像 4-D尺寸阵列H-借-W.-借-D.-借-L..元素AllScores.一世jK.问:)是的分数问:体素上的标记一世一世jK.)。
一系列的P.3-D图像 5-D阵列大小H-借-W.-借-D.-借-L.-借-P..元素AllScores.一世jK.问:P.)是的分数问:体素上的标记一世一世jK.P.)。

语义细分结果,作为一个返回像素标签数据库对象该对象包含该对象中包含的所有图像的语义分割结果DS.输入对象。每个图像的结果保存为单独的uint8.PNG图像的标签矩阵。你可以用PXDS.)返回分配给图像的分类标签DS.

输出的图像读物DS.)与的输出中的类别矩阵有一一对应关系读物PXDS.)。

扩展能力

在R2017B中介绍