semanticseg
基于深度学习的语义图像分割
语法
描述
中的图像集合的语义分割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(我)
进行图像语义分割。
[C分数]= semanticseg(净,我“MiniBatchSize”、32);
将分割结果叠加在图像上并显示结果。
B = labeloverlay(I, C);图imshow (B)
显示分类分数。
图显示亮度图像(分数)轴广场colorbar
创建一个只有三角形的二进制掩码。
Bw = c ==“三角形”;图imshow (BW)
评估语义分割测试集
在一组测试图像上运行语义分割,并将结果与地面真相数据进行比较。
加载预训练的网络。
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损失是基于测量两个分割图像之间重叠的Tversky指数[1].特沃斯基指数 在一个图像 和对应的基础真理 是由
对应于类和 相当于没有上课 .
元素的数量是沿着的前两个维度吗 .
而且 是控制每个类的假阳性和假阴性对损失的贡献的权重因素。
损失 除以类的数量 是由
分类层模板
复制分类层模板到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函数forwardLoss
在tverskyPixelClassificationLayer
所有的支持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}我)
参考文献
[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)
分割测试图像使用semanticseg
并显示结果使用labeloverlay
.
C = semanticseg (imgTest,净);B = labeloverlay (imgTest C);图imshow (B)
输入参数
我
- - - - - -输入图像
数字数组
输入图像,指定为下列之一。
图像类型 | 数据格式 |
---|---|
单张二维灰度图像 | 二维大小矩阵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
对象
网络,指定为SeriesNetwork
(深度学习工具箱),DAGNetwork
(深度学习工具箱),或dlnetwork
(深度学习工具箱)对象。
roi
- - - - - -感兴趣的区域
第4单元数值向量|6-element向量
感兴趣的区域,指定为下列之一。
图像类型 | ROI格式 |
---|---|
二维图像 | 形式为[的四元向量x,y,宽度,高度] |
三维图像 | 形式为[的六元向量x,y,z,宽度,高度,深度] |
该向量定义了完全包含在输入图像中的感兴趣的矩形或立方区域。感兴趣区域外的图像像素被分配为<未定义的
>分类标签。如果输入图像由一系列图像组成,则semanticseg
适用于相同的roi
给系列中的所有图片。
ds
- - - - - -收集的图片
数据存储对象
指定为数据存储的图像集合。的读
函数必须返回数字数组、单元格数组或表。对于有多列的单元格数组或表,函数只处理第一列。
有关更多信息,请参见用于深度学习的数据存储(深度学习工具箱).
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:“ExecutionEnvironment”
,“图形”
OutputType
- - - - - -返回细分类型
“分类”
(默认)|“双”
|“uint8”
返回的分割类型,指定为“分类”
,“双”
,或“uint8”
.当你指定“双”
或“uint8”
,函数将分割结果作为包含标签id的标签数组返回。这些id是整数值,对应于在输入网络中使用的分类层中定义的类名。
您不能使用OutputType
财产的ImageDatastore
对象的输入。
MiniBatchSize
- - - - - -组图片
128
(默认)|整数
图像组,指定为整数。图像被分组并作为批处理一起处理。批处理用于处理大量的图像集合,提高了计算效率。增加的MiniBatchSize
的值提高了效率,但也占用了更多的内存。
ExecutionEnvironment
- - - - - -硬件资源
“汽车”
(默认)|“图形”
|“cpu”
使用网络处理图像的硬件资源,指定为“汽车”
,“图形”
,或“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
(深度学习工具箱)对象,则由'指定的类的数量类
’必须匹配分类输出层中的类数量。默认情况下,当'类
的价值“汽车”
,使用分类输出层自动设置类。
WriteLocation
- - - - - -文件夹位置
松材线虫病
(当前工作目录)(默认)|字符串标量|特征向量
文件夹位置,指定为松材线虫病
(当前工作文件夹)、字符串标量或字符向量。指定的文件夹必须存在并具有写权限。
此属性仅在使用可以处理图像的数据存储时应用。
NamePrefix
- - - - - -应用于输出文件名的前缀
“pixelLabel”
(默认)|字符串标量|特征向量
应用于输出文件名的前缀,指定为字符串标量或字符向量。镜像文件名称如下:
,在那里前缀
_N
. png
对应于输入图像文件的索引,N
洛桑国际管理发展学院。文件
(N).
此属性仅在使用可以处理图像的数据存储时应用。
详细的
- - - - - -显示进度信息
“真正的”
(默认)|“假”
显示进度信息,指定为“真正的”
或“假”
.
此属性仅在使用可以处理图像的数据存储时应用。
UseParallel
- - - - - -运行并行计算
“假”
(默认)|真正的
输出参数
C
——分类标签
分类数组
类别标签,作为类别数组返回。分类数组将标签与输入图像中的每个像素或体素关联起来。返回的图像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三维图像 | 4-D数组的大小H——- - - - - -W——- - - - - -D——- - - - - -P.元素C (我,j,k,p)是分配给体素的类别标签我 (我,j,k,p). |
分数
——信心得分
数字数组
中的每个分类标签的信心得分C
,作为between值的数组返回0
而且1
.分数表示预测标签的置信度C
.评分值越高表明对预测标签的置信度越高。
图像类型 | 分数格式 |
---|---|
单一的二维图像 | 二维大小矩阵H——- - - - - -W.元素分数 (我,j)为像素的分类评分我 (我,j). |
一系列的P二维图像 | 三维尺寸阵列H——- - - - - -W——- - - - - -P.元素分数 (我,j,p)为像素的分类评分我 (我,j,p). |
单一的三维图像 | 三维尺寸阵列H——- - - - - -W——- - - - - -D.元素分数 (我,j,k)为体素的分类评分我 (我,j,k). |
一系列的P三维图像 | 4-D数组的大小H——- - - - - -W——- - - - - -D——- - - - - -P.元素分数 (我,j,k,p)为体素的分类评分我 (我,j,k,p). |
allScores
-所有标签类别的得分
数字数组
输入网络可以分类的所有标签类别的分数,作为数字数组返回。数组的格式如下表所示。l表示标签类别的总数。
图像类型 | 所有分数格式 |
---|---|
单一的二维图像 | 三维尺寸阵列H——- - - - - -W——- - - - - -l.元素allScores (我,j,问的分数问像素处的标签我 (我,j). |
一系列的P二维图像 | 4-D数组的大小H——- - - - - -W——- - - - - -l——- - - - - -P.元素allScores (我,j,问,p的分数问像素处的标签我 (我,j,p). |
单一的三维图像 | 4-D数组的大小H——- - - - - -W——- - - - - -D——- - - - - -l.元素allScores (我,j,k,问的分数问体素上的标签我 (我,j,k). |
一系列的P三维图像 | 5-D数组的大小H——- - - - - -W——- - - - - -D——- - - - - -l——- - - - - -P.元素allScores (我,j,k,问,p的分数问体素上的标签我 (我,j,k,p). |
pxds
-语义分割结果
PixelLabelDatastore
对象
语义分割结果,返回为pixelLabelDatastore
对象。对象中包含的所有图像的语义分割结果ds
输入对象。每个图像的结果被单独保存uint8
PNG图像的标签矩阵。您可以使用读
(pxds
)返回分配给图像的分类标签ds
.
扩展功能
自动并行支持
通过使用并行计算工具箱™自动并行运行计算来加速代码。
平行运行,集合“UseParallel”
来真正的
或使用“计算机视觉工具箱”首选项默认启用此选项。
有关更多信息,请参见并行计算工具箱支持.
版本历史
介绍了R2017b
另请参阅
功能
应用程序
对象
ImageDatastore
|pixelLabelDatastore
|dlnetwork
(深度学习工具箱)
主题
- 开始使用深度学习进行语义分割
- MATLAB中的深度学习(深度学习工具箱)
- 用于深度学习的数据存储(深度学习工具箱)
外部网站
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。