evaluateSemanticSegmentation

Оцените семантический набор данных сегментации против наземной истины

Синтаксис

ssm = evaluateSemanticSegmentation(pxdsResults,pxdsTruth)
ssm = evaluateSemanticSegmentation(pxdsResults,pxdsTruth,Name,Value)

Описание

пример

ssm = evaluateSemanticSegmentation(pxdsResults,pxdsTruth) вычисляет различные метрики, чтобы оценить качество семантических результатов сегментации, pxdsResults, против наземной сегментации истины, pxdsTruth.

ssm = evaluateSemanticSegmentation(pxdsResults,pxdsTruth,Name,Value) вычисляет семантические метрики сегментации с помощью одного или нескольких аргументов пары Name,Value, чтобы управлять оценкой.

Примеры

свернуть все

Оцените результаты семантической сегментации путем вычисления матрицы беспорядка и метрик для каждого класса, каждого изображения и целого набора данных.

Выполните семантическую сегментацию

Маркируйте каждый пиксель в серии изображений или как объект или как фон. Этот пример использует набор данных triangleImages, который имеет 100 тестовых изображений треугольников с заземляющими метками истины.

Задайте местоположение набора данных, протестируйте изображения и заземляющие метки истины.

dataSetDir = fullfile(toolboxdir('vision'),'visiondata','triangleImages');
testImagesDir = fullfile(dataSetDir,'testImages');
testLabelsDir = fullfile(dataSetDir,'testLabels');

Создайте datastore изображений, содержащий тестовые изображения.

imds = imageDatastore(testImagesDir);

Задайте имена классов и их связанную метку IDs.

classNames = ["triangle","background"];
labelIDs = [255 0];

Создайте пиксельный datastore метки, содержащий заземляющие пиксельные метки истины для тестовых изображений.

pxdsTruth = pixelLabelDatastore(testLabelsDir,classNames,labelIDs);

Загрузите семантическую сеть сегментации, которая была обучена на учебных изображениях шумных форм.

net = load('triangleSegmentationNetwork');
net = net.net;

Запустите сеть на тестовых изображениях. Предсказанные метки записаны в диск во временной папке и возвращены как pixelLabelDatastore.

pxdsResults = semanticseg(imds,net,"WriteLocation",tempdir);
Running semantic segmentation network
-------------------------------------
* Processing 100 images.
* Progress: 100.00%

Вычислите метрики матрицы и сегментации беспорядка

Оцените результаты прогноза против наземной истины. По умолчанию evaluateSemanticSegmentation вычисляет все доступные метрики, включая матрицу беспорядка, нормированную матрицу беспорядка, метрики набора данных, метрики класса и метрики изображений.

metrics = evaluateSemanticSegmentation(pxdsResults,pxdsTruth)
Evaluating semantic segmentation results
---------------------------------------[==================================================] 100%
Elapsed time: 00:00:01
Estimated time remaining: 00:00:00
* Finalizing... Done.
* Data set metrics:

    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]

Чтобы исследовать результаты, отобразите точность классификации, пересечение по объединению и контур F-1 счет к каждому классу. Эти значения хранятся в свойстве ClassMetrics. Кроме того, отобразите нормированную матрицу беспорядка.

metrics.ClassMetrics
ans=2×3 table
                  Accuracy      IoU      MeanBFScore
                  ________    _______    ___________

    triangle            1     0.33005     0.028664  
    background     0.9017      0.9017      0.78438  

metrics.NormalizedConfusionMatrix
ans=2×2 table
                  triangle    background
                  ________    __________

    triangle            1            0  
    background     0.0983       0.9017  

Входные параметры

свернуть все

Предсказанные пиксельные метки, следующие из семантической сегментации, заданной как объект PixelLabelDatastore или массив ячеек объектов PixelLabelDatastore.

Оснуйте пиксельные метки истины, заданные как объект PixelLabelDatastore или массив ячеек объектов PixelLabelDatastore.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: metrics = evaluateSemanticSegmentation(pxdsResults,pxdsTruth,'Metrics',"bfscore") вычисляет только средний счет BF каждого класса, каждого изображения и целого набора данных.

Метрики сегментации в semanticSegmentationMetrics, чтобы вычислить, заданный как пара, разделенная запятой, состоящая из 'Metrics' и вектор строк. Этот аргумент задает который переменные в DataSetMetrics, ClassMetrics и таблицах ImageMetrics, чтобы вычислить. ConfusionMatrix и NormalizedConfusionMatrix вычисляются независимо от значения 'Metric'.

ЗначениеОписаниеМетрика набора агрегированных данныхМетрика изображенийМетрика класса
"all"Оцените все семантические метрики сегментации.Все агрегированные данные установили метрикиВсе метрики изображенийВсе метрики класса
"accuracy"

Точность указывает на процент правильно идентифицированных пикселей для каждого класса. Используйте метрику точности, если вы хотите знать, как хорошо каждый класс правильно идентифицирует пиксели.

  • Для каждого класса Accuracy является отношением правильно классифицированных пикселей к общему количеству пикселей в том классе, согласно наземной истине. Другими словами,

    Счет точности = TP / (TP + FN)

    TP является количеством истинных положительных сторон, и FN является количеством ложных отрицательных сторон.

  • Для набора агрегированных данных MeanAccuracy является средний Accuracy всех классов во всех изображениях.

  • Для каждого изображения MeanAccuracy является средний Accuracy всех классов в том конкретном изображении.

Точность класса является простой метрикой, аналогичной глобальной точности, но это может вводить в заблуждение. Например, маркировка всех пикселей "автомобиль" дает совершенный счет к "автомобильному" классу (несмотря на то, что не для других классов). Используйте точность класса в conjuction с IoU для более полной оценки результатов сегментации.

MeanAccuracyMeanAccuracyAccuracy
"bfscore"

Счет соответствия контура граничного F1 (BF) указывает, как хорошо предсказанный контур каждого класса выравнивается с истинным контуром. Используйте счет BF, если вы хотите метрику, которая имеет тенденцию коррелировать лучше с человеческой качественной оценкой, чем метрика IoU.

  • Для каждого класса MeanBFScore является средним счетом BF того класса по всем изображениям.

  • Для каждого изображения MeanBFScore является средним счетом BF всех классов в том конкретном изображении.

  • Для набора агрегированных данных MeanBFScore является средним счетом BF всех классов во всех изображениях.

Для получения дополнительной информации смотрите bfscore.

MeanBFScoreMeanBFScoreMeanBFScore
"global-accuracy"

GlobalAccuracy является отношением правильно классифицированных пикселей, независимо от класса, к общему количеству пикселей. Используйте глобальную метрику точности, если вы хотите быструю и в вычислительном отношении недорогую оценку процента правильно классифицированных пикселей.

GlobalAccuracyGlobalAccuracy'none'
"iou"

Пересечение по объединению (IoU), также известное как коэффициент подобия Jaccard, является обычно используемой метрикой. Используйте метрику IoU, если вы хотите статистическое измерение точности, которое штрафует ложные положительные стороны.

  • Для каждого класса IoU является отношением правильно классифицированных пикселей к общему количеству наземной истины и предсказанных пикселей в том классе. Другими словами,

    IoU выигрывают = TP / (TP + FP + FN)

    Изображение описывает истинные положительные стороны (TP), ложные положительные стороны (FP) и ложные отрицательные стороны (FN).

  • Для каждого изображения MeanIoU является средним счетом IoU всех классов в том конкретном изображении.

  • Для набора агрегированных данных MeanIoU является средним счетом IoU всех классов во всех изображениях.

Для получения дополнительной информации смотрите jaccard.

MeanIoUMeanIoUIoU
"weighted-iou"Средний IoU каждого класса, взвешенного количеством пикселей в том классе. Используйте эту метрику, если изображения непропорционально измерили классы, чтобы уменьшать влияние ошибок в маленьких классах на совокупном качественном счете.WeightedIoUWeightedIoU'none'

Пример: metrics = evaluateSemanticSegmentation(pxdsResults, pxdsTruth,'Metrics',["global-accuracy","iou"]) вычисляет глобальную точность и метрики IoU через набор данных, изображения и классы.

Типы данных: string

Отметьте, чтобы отобразить информацию о прогрессе оценки в командном окне, заданном как пара, разделенная запятой, состоящая из 'Verbose' и или 1 (true) или 0 (false).

Отображенная информация включает индикатор выполнения, прошедшее время, предполагаемое время, оставаясь и метрики набора данных.

Пример: metrics = evaluateSemanticSegmentation(pxdsResults, pxdsTruth,'Verbose',0) вычисляет метрики сегментации, не отображая информацию о прогрессе.

Типы данных: логический

Выходные аргументы

свернуть все

Семантические метрики сегментации, возвращенные как объект semanticSegmentationMetrics.

Ссылки

[1] Csurka, G., Д. Ларлус и Ф. Перроннин. "Что такое хорошая мера по оценке для семантической сегментации?" Продолжения британской Конференции по Машинному зрению, 2013, стр 32.1–32.11.

Расширенные возможности

Введенный в R2017b