evaluateDetectionPrecision

Оцените метрику точности для обнаружения объектов

Синтаксис

averagePrecision = evaluateDetectionPrecision(detectionResults,groundTruthData)
[averagePrecision,recall,precision] = evaluateDetectionPrecision(___)
[___] = evaluateDetectionPrecision(___,threshold)

Описание

averagePrecision = evaluateDetectionPrecision(detectionResults,groundTruthData) возвращает среднюю точность, detectionResults по сравнению с groundTruthData. Можно использовать среднюю точность, чтобы измерить уровень объектного детектора. Для детектора мультикласса функция возвращает averagePrecision как вектор музыки к каждому классу объекта в порядке, заданном groundTruthData.

пример

[averagePrecision,recall,precision] = evaluateDetectionPrecision(___) возвращает точки данных для графического вывода кривой отзыва точности, с помощью входных параметров от предыдущего синтаксиса.

[___] = evaluateDetectionPrecision(___,threshold) задает порог перекрытия для присвоения обнаружения к наземному полю истины.

Примеры

свернуть все

Обучите основанный на ACF детектор с помощью предварительно загруженной наземной информации об истине. Запустите детектор на учебных изображениях. Оцените детектор и отобразите кривую отзыва точности.

Загрузите наземную таблицу истинности.

load('stopSignsAndCars.mat')
stopSigns = stopSignsAndCars(:,1:2);
stopSigns.imageFilename = fullfile(toolboxdir('vision'),'visiondata', ...
    stopSigns.imageFilename);

Обучите основанный на ACF детектор.

detector = trainACFObjectDetector(stopSigns,'NegativeSamplesFactor',2);
ACF Object Detector Training
The training will take 4 stages. The model size is 34x31.
Sample positive examples(~100% Completed)
Compute approximation coefficients...Completed.
Compute aggregated channel features...Completed.
--------------------------------------------
Stage 1:
Sample negative examples(~100% Completed)
Compute aggregated channel features...Completed.
Train classifier with 42 positive examples and 84 negative examples...Completed.
The trained classifier has 19 weak learners.
--------------------------------------------
Stage 2:
Sample negative examples(~100% Completed)
Found 84 new negative examples for training.
Compute aggregated channel features...Completed.
Train classifier with 42 positive examples and 84 negative examples...Completed.
The trained classifier has 20 weak learners.
--------------------------------------------
Stage 3:
Sample negative examples(~100% Completed)
Found 84 new negative examples for training.
Compute aggregated channel features...Completed.
Train classifier with 42 positive examples and 84 negative examples...Completed.
The trained classifier has 54 weak learners.
--------------------------------------------
Stage 4:
Sample negative examples(~100% Completed)
Found 84 new negative examples for training.
Compute aggregated channel features...Completed.
Train classifier with 42 positive examples and 84 negative examples...Completed.
The trained classifier has 61 weak learners.
--------------------------------------------
ACF object detector training is completed. Elapsed time is 18.4997 seconds.

Составьте таблицу, чтобы сохранить результаты.

numImages = height(stopSigns);
results = table('Size',[numImages 2],...
       'VariableTypes',{'cell','cell'},...
       'VariableNames',{'Boxes','Scores'}); 

Запустите детектор на учебных изображениях. Сохраните результаты как таблицу.

for i = 1 : numImages
    I = imread(stopSigns.imageFilename{i});
    [bboxes, scores] = detect(detector,I);
    results.Boxes{i} = bboxes;
    results.Scores{i} = scores;
end 

Оцените результаты против наземных данных об истине. Получите статистику точности.

[ap,recall,precision] = evaluateDetectionPrecision(results,stopSigns(:,2));

Постройте кривую отзыва точности.

figure
plot(recall,precision)
grid on
title(sprintf('Average Precision = %.1f',ap))

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

свернуть все

Объектные местоположения и очки, заданные как таблица 2D столбца, содержащая ограничительные рамки и музыку к каждому обнаруженному объекту. Для обнаружения мультикласса третий столбец содержит предсказанную метку для каждого обнаружения. Ограничительные рамки должны храниться в M-by-4 массив ячеек. Очки должны храниться в M-by-1 массив ячеек, и метки должны храниться как категориальный вектор.

При обнаружении объектов можно создать таблицу результатов обнаружения при помощи struct2table, чтобы объединить bboxes и scores выходные параметры:

    for i = 1 : numImages
        I = imread(stopSigns.imageFilename{i});
        [bboxes, scores] = detect(detector,I);
        results.Boxes{i} = bboxes;
        results.Scores{i} = scores;
    end

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

Данные тренировки, заданные как таблица с одним или несколькими столбцами. Таблица содержит один столбец для данных единого класса и несколько столбцов для данных о мультиклассе. Каждый столбец содержит M-by-4 матрицы [x, y, width, height] ограничительные рамки, которые задают объектные местоположения. Формат задает местоположение верхнего левого угла и размер объекта. Имя столбца задает метку класса.

Перекройте порог для присвоенного обнаружение к наземному полю истины, заданному в виде числа. Отношение перекрытия вычисляется как пересечение по объединению.

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

свернуть все

Средняя точность по всем результатам обнаружения, возвращенным в виде числа или вектора. Precision является отношением истинных положительных экземпляров ко всем положительным экземплярам объектов в детекторе, на основе наземной истины. Для детектора мультикласса средняя точность является вектором средней музыки точности к каждому классу объекта.

Вспомните значения из каждого обнаружения, возвращенного как M-by-1 вектор числовых скаляров или как массив ячеек. Длина M равняется 1 + количество обнаружений, присвоенных классу. Например, если ваши результаты обнаружения содержат 4 обнаружения с меткой 'car' класса, то recall содержит 5 элементов. Первым значением отзыва всегда является 0.

Recall является отношением истинных положительных экземпляров к сумме истинных положительных сторон и ложных отрицательных сторон в детекторе, на основе наземной истины. Для детектора мультикласса recall и precision являются массивами ячеек, где каждая ячейка содержит точки данных для каждого класса объекта.

Значения точности от каждого обнаружения, возвращенного как M-by-1 вектор числовых скаляров или как массив ячеек. Длина M равняется 1 + количество обнаружений, присвоенных классу. Например, если ваши результаты обнаружения содержат 4 обнаружения с меткой 'car' класса, то precision содержит 5 элементов. Первым значением precision всегда является 1.

Precision является отношением истинных положительных экземпляров ко всем положительным экземплярам объектов в детекторе, на основе наземной истины. Для детектора мультикласса recall и precision являются массивами ячеек, где каждая ячейка содержит точки данных для каждого класса объекта.

Введенный в R2017a