evaluateSemanticSegmentation

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

Описание

пример

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

ssm = evaluateSemanticSegmentation(dsResults,dsTruth,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
-------------------------------------
* Processed 100 images.

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

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

metrics = evaluateSemanticSegmentation(pxdsResults,pxdsTruth)
Evaluating semantic segmentation results
----------------------------------------
* Selected metrics: global accuracy, class accuracy, IoU, weighted IoU, BF score.
* Processed 100 images.
* 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  

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

свернуть все

Предсказанные пиксельные метки, следующие из семантической сегментации, заданной как datastore или массив ячеек объектов datastore. dsResults может быть любой datastore, который возвращает категориальные изображения, такие как PixelLabelDatastore или pixelLabelImageDatastore. read(dsResults) должен возвратить категориальный массив, массив ячеек или таблицу. Если read функция возвращает многостолбцовый массив ячеек или таблицу, второй столбец должен содержать категориальные массивы.

Пиксельные метки основной истины, заданные как datastore или массив ячеек объектов datastore. dsResults может быть любой datastore, который возвращает категориальные изображения, такие как PixelLabelDatastore или pixelLabelImageDatastore. Используя read(dsTruth) должен возвратить категориальный массив, массив ячеек или таблицу. Если read функция возвращает многостолбцовый массив ячеек или таблицу, второй столбец должен содержать категориальные массивы.

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

Задайте дополнительные разделенные запятой пары Name,Value аргументы. 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 ложь).

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

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

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

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

свернуть все

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

Ссылки

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

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

Введенный в R2017b