exponenta event banner

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);

Определите имена классов и связанные с ними идентификаторы меток.

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   

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

свернуть все

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

Метки исходного пикселя истинности, заданные как хранилище данных или массив ячеек объектов хранилища данных. dsResults может быть любым хранилищем данных, которое возвращает категориальные образы, такие как 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 должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как 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 всех классов в данном изображении.

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

MeanAccuracyMeanAccuracyAccuracy
"bfscore"

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

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

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

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

Дополнительные сведения см. в разделе bfscore.

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

MeanBFScoreMeanBFScoreMeanBFScore
"global-accuracy"

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

GlobalAccuracyGlobalAccuracyничего
"iou"

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

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

    Оценка IoU = TP/( TP + FP + FN)

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

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

  • Для совокупного набора данных, MeanIoU - средняя оценка IoU всех классов во всех изображениях.

Дополнительные сведения см. в разделе jaccard.

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

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

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

Флаг для отображения информации о ходе выполнения оценки в командном окне, указанном как разделенная запятыми пара, состоящая из 'Verbose' и либо 1 (true) или 0 (false).

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

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

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

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

свернуть все

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

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

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

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

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

Ссылки

[1] Сюрка, Г., Д. Ларлус и Ф. Перроннин. «Что является хорошей оценочной мерой для семантической сегментации?» Материалы Британской конференции машинного видения, 2013 год, стр. 32.1-32.11.

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

Представлен в R2017b