bboxPrecisionRecall

Вычислите точность ограничивающего прямоугольника и отзыв против основной истины

Описание

пример

[precision,recall] = bboxPrecisionRecall(bboxes,groundTruthBboxes) измеряет точность перекрытия ограничивающего прямоугольника между bboxes и groundTruthBboxes. Precision - это отношение истинных положительных образцов ко всем положительным образцам объектов в детекторе, основанное на основной истине. Recall - это отношение истинных положительных образцов к сумме истинных срабатываний и ложных срабатываний в детекторе, основанное на основной истине.

Если ограничивающий прямоугольник связан с меткой класса, precision и recall содержат метрики для каждого класса. Если ограничивающий прямоугольник также связан с оценкой достоверности для ранжирования, используйте evaluateDetectionPrecision функция.

[precision,recall] = bboxPrecisionRecall(bboxes,groundTruthBboxes,threshold) задает порог перекрытия для назначения заданного прямоугольника основного блока истинности.

Примеры

свернуть все

Создайте два основных блоков истинности.

groundTruthBoxes = [2 2 10 20; 80 80 30 40];

Создайте три поля для оценки.

boundingBoxes = [4 4 10 20; 50 50 30 10; 90 90 40 50];

Постройте графики.

figure
hold on
for i=1:2
    rectangle('Position',groundTruthBoxes(i,:),'EdgeColor','r');
end
for i=1:3
    rectangle('Position',boundingBoxes(i,:),'EdgeColor','b');
end   

Figure contains an axes. The axes contains 5 objects of type rectangle.

Оцените точность перекрытия по сравнению с достоверными данными.

[precision,recall] = bboxPrecisionRecall(boundingBoxes,groundTruthBoxes)
precision = 0.3333
recall = 0.5000

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

classNames = ["A","B","C"];

Создайте ограничительные рамки для расчета.

predictedLabels = {...
    categorical("A",classNames); ...
    categorical(["C";"B"],classNames)};
bboxes = {...
    [10 10 20 30]; ...
    [60 18 20 10; 120 120 5 10]};
boundingBoxes = table(bboxes,predictedLabels,'VariableNames',...
    {'PredictedBoxes','PredictedLabels'});

Создайте основные блоки истинности.

A = {[10 10 20 28]; []};
B = {[]; [118 120 5 10]};
C = {[]; [59 19 20 10]};
groundTruthData = table(A,B,C);

Оцените точность перекрытия по достоверные данные.

[precision,recall] = bboxPrecisionRecall(boundingBoxes,groundTruthData)
precision = 3×1

     1
     0
     1

recall = 3×1

     1
     0
     1

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

свернуть все

Ограничительные рамки, заданные как одно из следующих. M - количество ограничивающих рамок.

  • Для одноклассных ограничивающих рамок, bboxes может быть матрицей M -by-4 или таблицей с M строками и одним столбцом. Каждая строка матрицы или элемента в таблице представляет ограничивающий прямоугольник, определенный в формате [<reservedrangesplaceholder5> <reservedrangesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2>] , где x и y соответствуют левому верхнему углу ограничивающего прямоугольника.

  • Для ограничивающих рамок мультиклассов, bboxes - таблица с M строками и двумя столбцами. Каждый элемент в первом столбце представляет ограничивающий прямоугольник, определенный в формате [<reservedrangesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> ]. Второй столбец содержит предсказанную метку для каждого ящика. Метка должна быть категориальным типом, заданным именами переменных (столбцов) groundTruthBboxes таблица.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Основные истины, заданные как одно из следующих. M - количество основной истины ограничивающих рамок.

  • Для одноклассных ограничивающих рамок, groundTruthBboxes может быть матрицей M -by-4 или таблицей с M строками и одним столбцом. Каждая строка матрицы или элемента в таблице представляет ограничивающий прямоугольник, определенный в формате [<reservedrangesplaceholder5> <reservedrangesplaceholder4> <reservedrangesplaceholder3> <reservedrangesplaceholder2>] , где x и y соответствуют левому верхнему углу ограничивающего прямоугольника.

  • Для ограничивающих рамок мультиклассов, groundTruthBboxes - таблица с M строками и несколькими столбцами. Каждый столбец представляет другой класс, и имя столбца задает метку класса. У каждого элемента в таблице есть формат [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0> ].

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Порог перекрытия для назначения обнаружения в основном блоке истинности, заданный как числовой скаляр. Коэффициент перекрытия вычисляется как пересечение над объединением.

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

свернуть все

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

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

Введенный в R2018a