segmentationConfusionMatrix

Матрица неточностей сегментации изображений на уровне пикселей мультиклассов

Описание

пример

confusionMatrix = segmentationConfusionMatrix(LPred,LTruth) вычисляет матрицу неточностей из предсказанных меток пикселей LPred и основная истина пиксельные метки LTruth.

Примеры

свернуть все

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

load('triangleSegmentationNetwork');

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

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

Получите одно тестовое изображение.

testImage = imread(fullfile(dataSetDir,'testImages','image_001.jpg'));

Получите соответствующую метку основной истины. Изображение метки сохранено как числовое изображение, поэтому преобразуйте метку основной истины в категориальное изображение.

gtLabel = imread(fullfile(dataSetDir,'testLabels','labeled_image_001.png'));
classNames = ["triangle","background"];
labelIDs   = [255 0];
gtLabel = categorical(gtLabel,labelIDs,classNames);

Отобразите метки основной истины над тестовым изображением.

imshow(labeloverlay(testImage,gtLabel))

Figure contains an axes. The axes contains an object of type image.

Выполните семантическую сегментацию изображения.

predLabel = semanticseg(testImage,net);

Получите матрицу неточностей предсказанных меток и основной истины меток. Матрица неточностей показывает сегментацию, правильно классифицированную 21 пиксель как треугольник и 939 пикселей как фон. Матрица неточностей также показывает, что сегментация неправильно классифицировала 64 пикселя фона как треугольник. Никакие треугольные пиксели не классифицируются как фон.

confusionMatrix = segmentationConfusionMatrix(predLabel,gtLabel)
confusionMatrix = 2×2

    21     0
    64   939

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

imshow(labeloverlay(testImage,predLabel))

Figure contains an axes. The axes contains an object of type image.

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

свернуть все

Предсказанные метки пикселей после семантической сегментации, заданные как 2-D изображение метки или 3-D изображение метки.

Типы данных: double | logical | categorical

Основные истины, заданные как 2-D изображение с меткой или 3-D изображение с меткой того же размера, что и предсказанные пиксельные метки LPred.

Типы данных: double | logical | categorical

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

свернуть все

Матрица неточностей для классов в сегментированных изображениях, возвращенная как C -by C числовая матрица, где C - количество классов в семантической сегментации. Элемент (i, j) является количеством пикселей, которые, как известно, относятся к классу i но, по прогнозам, относятся к классу j.

Совет

  • Можно вычислить семантические метрики сегментации, такие как счета Жаккара и точность классификации из матрицы неточностей при помощи evaluateSemanticSegmentation функция.

  • Вы можете использовать эту функцию в рабочих процессах обработки изображений на основе блоков, таких как bigimage. Например, можно выполнить семантическую сегментацию и вычислить матрицу неточностей для блока в том же вызове к apply функция.

Введенный в R2020b