exponenta event banner

segmentationConfusionMatrix

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

Описание

пример

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

Примеры

свернуть все

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

load('triangleSegmentationNetwork');

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-е изображение этикетки или 3D изображение этикетки того же размера как предсказанные пиксельные этикетки, LPred.

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

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

свернуть все

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

Совет

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

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

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