evaluateSemanticSegmentation

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

Описание

пример

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

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

[ssm,blockMetrics] = evaluateSemanticSegmentation(blockSetConfusion,classNames) вычисляет различные метрики, чтобы оценить качество основанной на блоке семантической сегментации, следует из матриц беспорядка, blockSetConfusion с классами classNames.

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

Примеры

свернуть все

triangleImages набор данных имеет 100 тестовых изображений с метками основной истины. Задайте местоположение набора данных.

dataSetDir = fullfile(toolboxdir('vision'),'visiondata','triangleImages');

Задайте местоположение тестовых изображений.

testImagesDir = fullfile(dataSetDir,'testImages');

Задайте местоположение меток основной истины.

testLabelsDir = fullfile(dataSetDir,'testLabels');

Создайте imageDatastore содержание тестовых изображений.

imds = imageDatastore(testImagesDir);

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

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

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

pxdsTruth = pixelLabelDatastore(testLabelsDir,classNames,labelIDs);

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

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

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

pxdsResults = semanticseg(imds,net,"WriteLocation",tempdir);
Running semantic segmentation network
-------------------------------------
* Processed 100 images.

Оцените результаты предсказания против основной истины.

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  

Отобразите свойства semanticSegmentationMetrics объект.

metrics
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  

Отобразите нормированную матрицу беспорядка, которая хранится в NormalizedConfusionMatrix свойство.

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

    triangle        4730            0   
    background      9601        88069   

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

свернуть все

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

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

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

  • Таблица со строками F и одна переменная с именем ConfusionMatrix. Каждая строка в таблице содержит массив ячеек с матрицей беспорядка для соответствующего изображения.

  • Массив ячеек F "один". Каждый элемент массива ячеек содержит матрицу беспорядка для соответствующего изображения.

Матрицы беспорядка для сегментированных блоков в виде таблицы со строками B и трех столбцов, где B является общим количеством блоков во всех изображениях в наборе данных. Эти три столбца являются переменными ImageNumber, ConfusionMatrix, и BlockInfo. Можно получить таблицу правильного формата при помощи segmentationConfusionMatrix функция в вызове основанного на блоке apply функция. Для примера смотрите, Вычисляют Метрики Сегментации в Основанном на блоке Рабочем процессе.

Имена классов в виде массива строк или массива ячеек из символьных векторов.

Пример: ["sky" "grass" "building" "sidewalk"]

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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"

Оцените все метрики семантической сегментации.

Функция исключает MeanBFScore от метрик семантической сегментации, когда вы задаете матрицу беспорядка (imageSetConfusion или blockSetConfusion) как введено к функции.

Все агрегированные данные установили метрикиВсе метрики изображенийВсе метрики класса
"accuracy"

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

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

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

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

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

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

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

MeanAccuracyMeanAccuracyAccuracy
"bfscore"

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

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

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

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

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

Эта метрика не доступна, когда вы задаете матрицу беспорядка (imageSetConfusion или blockSetConfusion) как введено к функции.

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 объект.

Основанные на блоке метрики семантической сегментации, возвращенные как массив ячеек F "один", где F является количеством изображений в наборе данных. Каждый элемент в массиве ячеек содержит информацию обо всех метриках, вычисленных для всех блоков в соответствующем изображении, отформатированном как таблица.

Каждая таблица имеет K (f) строки, где K (f) является количеством блоков в f th изображение в наборе данных. Таблица имеет до пяти переменных:

  • Таблица всегда включает BlockInfo переменная. Эти табличные данные в этой переменной являются структурами, которые предоставляют пространственную информацию о блоке. Четырьмя полями struct является BlockStartWorld, BlockEndWorld, DataStartWorld, и DataEndWorld. Для получения дополнительной информации об этих полях, смотрите аргумент пары "имя-значение" IncludeBlockInfo apply функция.

  • Таблица включает метрики в свойство DataSetMetrics ssm выходной аргумент. По умолчанию метриками является GlobalAccuracy, MeanAccuracy, MeanIoU, и WeightedIoU. Однако, если вы создаете ssm и задайте подмножество метрик, чтобы вычислить при помощи Metrics аргумент пары "имя-значение", затем таблица включает только заданные метрики.

Ссылки

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

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

Введенный в R2017b