主要内容

evaluateSemanticSegmentation

根据基本事实评估语义分割数据集

描述

例子

舰导弹= evaluateSemanticSegmentation (dsResultsdsTruth计算各种指标来评估语义分割结果的质量,dsResults,对抗ground truth分割,dsTruth

舰导弹= evaluateSemanticSegmentation (imageSetConfusion一会计算各种指标来评估来自混淆矩阵的语义分割结果的质量,imageSetConfusion,使用分割类一会

舰导弹blockMetrics= evaluateSemanticSegmentation(blockSetConfusion一会计算各种指标来评估来自混淆矩阵的基于块的语义分割结果的质量,blockSetConfusion与类一会

___= evaluateSemanticSegmentation(___名称,值使用一个或多个计算语义分割指标名称,值对参数来控制求值。

例子

全部折叠

triangleImages数据集有100张带有ground truth标签的测试图像。定义数据集的位置。

dataSetDir = fullfile(toolboxdir(“愿景”),“visiondata”“triangleImages”);

定义测试图像的位置。

testImagesDir = fullfile(dataSetDir,“testImages”);

定义基本真值标签的位置。

testLabelsDir = fullfile(dataSetDir,“testLabels”);

创建一个包含测试图像的imageDatastore。

imds = imageDatastore(testImagesDir);

定义类名及其关联的标签id。

classNames = [“三角形”“背景”];labelIDs = [255 0];

创建一个pixelLabelDatastore,保存测试图像的真实像素标签。

pxdsTruth = pixelLabelDatastore(testLabelsDir,classNames,labelIDs);

的训练图像上加载一个经过训练的语义分割网络triangleImages

净=负荷(“triangleSegmentationNetwork”);Net = net.net;

在测试映像上运行网络。预测的标签被写入磁盘的临时目录中,并作为pixelLabelDatastore返回。

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

根据实际情况评估预测结果。

metrics = evaluateSemanticSegmentation(pxdsResults,pxdsTruth);
评估语义分割结果---------------------------------------- *选择的指标:全局精度,类别精度,IoU,加权IoU, BF分数。*处理了100张图像。*完成……完成了。*数据集指标:GlobalAccuracy MeanAccuracy MeanIoU WeightedIoU MeanBFScore  ______________ ____________ _______ ___________ ___________ 0.90624 0.95085 0.61588 0.87529 0.40652

属性的属性semanticSegmentationMetrics对象。

指标
metrics = semanticSegmentationMetrics with properties: ConfusionMatrix: [2x2 table] NormalizedConfusionMatrix: [2x2 table] DataSetMetrics: [1x5 table] ClassMetrics: [2x3 table] ImageMetrics: [100x5 table]

显示分类精度,交集与联合,以及每个类的边界F-1分数。这些值存储在ClassMetrics财产。

指标。ClassMetrics
ans =2×3表精确度IoU MeanBFScore ________ _______ ___________ triangle 1 0.33005 0.028664 background 0.9017 0.9017 0.78438

对象中存储的标准化混淆矩阵NormalizedConfusionMatrix财产。

指标。ConfusionMatrix
ans =2×2表三角形背景________ __________三角形4730 0背景9601 88069

输入参数

全部折叠

由语义分割产生的预测像素标签,指定为数据存储或数据存储对象的单元格数组。dsResults可以是返回分类图像的任何数据存储,例如PixelLabelDatastorepixelLabelImageDatastore.的dsResults)必须返回分类数组、单元格数组或表。如果函数返回一个多列单元格数组或表,第二列必须包含分类数组。

Ground truth像素标签,指定为数据存储或数据存储对象的单元格数组。dsResults可以是返回分类图像的任何数据存储,例如PixelLabelDatastorepixelLabelImageDatastore.使用dsTruth)必须返回分类数组、单元格数组或表。如果函数返回一个多列单元格数组或表,第二列必须包含分类数组。

分割图像中的类的混淆矩阵,指定为以下之一,其中F是数据集中图像的数量。

  • F行和一个具有名称的变量ConfusionMatrix.表中的每一行都包含一个单元格数组,其中包含对应图像的混淆矩阵。

  • F-by-one单元格数组。单元格数组的每个元素都包含对应图像的混淆矩阵。

分段块的混淆矩阵,指定为带有的表B行和三列,其中B是数据集中所有图像的块总数。这三列是变量ImageNumberConfusionMatrix,BlockInfo.可以通过命令获取格式正确的表segmentationConfusionMatrix函数调用基于块的应用函数。有关示例,请参见在基于块的工作流中计算分割指标

类名,指定为字符串数组或字符向量的单元格数组。

例子:["天空" "草地" "建筑物" "人行道"]

名称-值参数

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

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:metrics = evaluateSemanticSegmentation(pxdsResults,pxdsTruth,' metrics ',"bfscore")只计算每个类、每个图像和整个数据集的平均BF分数。

中的分割度量semanticSegmentationMetrics计算,指定为逗号分隔的对,由“指标”和一个字符串向量。对象中的变量DataSetMetricsClassMetrics,ImageMetrics要计算的表。ConfusionMatrix而且NormalizedConfusionMatrix的值都被计算“指标”

价值 描述 聚合数据集度量 图像度量 类指标
“所有”

评估所有的语义分割指标。

函数不包括MeanBFScore当您指定混淆矩阵(imageSetConfusionblockSetConfusion)作为函数的输入。

所有聚合数据集指标 所有图像指标 所有类度量
“准确性”

准确率表示每个类的正确识别像素的百分比。如果您想知道每个类正确识别像素的程度,可以使用精度度量。

  • 对于每一节课,精度是根据基本真理,正确分类的像素与该类像素总数的比率。换句话说,

    准确度评分= TP / (TP + FN)

    TP是真阳性的数量,FN是假阴性的数量。

  • 对于聚合数据集,MeanAccuracy平均值是多少精度所有图像中的所有类。

  • 对于每一张图像,MeanAccuracy平均值是多少精度在那个图像中所有的类中。

类精度是一个类似于全局精度的简单度量,但它可能会产生误导。例如,将所有像素标记为“car”将为“car”类提供满分(尽管对其他类来说不是)。使用类精度结合IoU更完整的评估分割结果。

MeanAccuracy MeanAccuracy 精度
“bfscore”

边界F1 (BF)轮廓匹配分数表示每个类的预测边界与真实边界的对齐程度。如果你想要一个比借条指标更好地与人类定性评估相关的指标,可以使用BF评分。

  • 对于每一节课,MeanBFScore是该类在所有图像上的平均BF分数。

  • 对于每一张图像,MeanBFScore是该特定图像中所有职业的平均BF分数。

  • 对于聚合数据集,MeanBFScore为所有图像中所有职业的平均BF分数。

有关更多信息,请参见bfscore

当您指定混淆矩阵(imageSetConfusionblockSetConfusion)作为函数的输入。

MeanBFScore MeanBFScore MeanBFScore
“global-accuracy”

GlobalAccuracy是无论类别如何,正确分类的像素与像素总数的比率。如果您希望快速且计算成本低廉地估计正确分类像素的百分比,请使用全局精度度量。

GlobalAccuracy GlobalAccuracy 没有一个
“借据”

交集除以并集(IoU),也称为Jaccard相似系数,是最常用的度量。如果你想要一个统计精度测量来惩罚误报,可以使用IoU度量。

  • 对于每一节课,借据是该类中正确分类的像素与基本真实像素和预测像素总数的比率。换句话说,

    欠条分数= TP / (TP + FP + FN)

    图像描述了真阳性(TP)、假阳性(FP)和假阴性(FN)。

  • 对于每一张图像,MeanIoU是该图中所有班级的平均欠条分数。

  • 对于聚合数据集,MeanIoU为所有图像中所有类别的IoU平均得分。

有关更多信息,请参见jaccard

MeanIoU MeanIoU 借据
“weighted-iou” 每个类别的平均借据,按该类别的像素数加权。如果图像具有不成比例的大小的类,则使用此度量,以减少小类中的错误对总质量分数的影响。 WeightedIoU WeightedIoU 没有一个

例子:metrics = evaluateSemanticSegmentation(pxdsResults,pxdsTruth,' metrics ',["global-accuracy","iou"])计算整个数据集、图像和类的全局准确性和IoU指标。

数据类型:字符串

标志在命令窗口中显示评估进度信息,指定为逗号分隔的对,由“详细”,要么1真正的)或0).

显示的信息包括进度条、运行时间、估计剩余时间和数据集指标。

例子:metrics = evaluateSemanticSegmentation(pxdsResults, pxdsTruth,'Verbose',0)计算分段指标而不显示进度信息。

数据类型:逻辑

输出参数

全部折叠

语义分割度量,返回为semanticSegmentationMetrics对象。

基于块的语义分割度量,返回为F-by-one单元格数组,其中F是数据集中图像的数量。单元格数组中的每个元素都包含有关为相应图像中的所有块计算的所有度量的信息,格式为表格。

每张桌子都有Kf)行,其中Kf的块数f数据集中的图像。该表最多有五个变量:

  • 表中总是包含BlockInfo变量。这个变量中的表数据是提供关于块的空间信息的结构。结构体的四个字段是BlockStartWorldBlockEndWorldDataStartWorld,DataEndWorld.有关这些字段的详细信息,请参见IncludeBlockInfo的名称-值对参数应用函数。

  • 表中包含指标DataSetMetrics的属性舰导弹输出参数。默认情况下,度量值为GlobalAccuracyMeanAccuracyMeanIoU,WeightedIoU.但是,如果您创建舰导弹属性指定要计算的度量的子集指标参数,则表仅包含指定的度量。

提示

  • 值为类或图像度量中,指示在使用度量时计算度量期间缺少一个或多个类evaluateSemanticSegmentation函数。在这种情况下,软件无法准确地计算指标。

    方法可以找到缺少的类ClassMetrics属性,该属性为每个类提供度量。为了更准确地评估您的网络,请使用包含缺失类的更多数据来增强您的ground truth。

参考文献

[1]克苏尔卡,G., D.拉勒斯,F.佩罗宁。“什么是一个好的语义分割评价指标?”英国机器视觉会议论文集, 2013, pp. 32.1-32.11。

扩展功能

版本历史

在R2017b中引入