evaluateDetectionMissRate

Оцените метрику коэффициента непопаданий для обнаружения объектов

Описание

пример

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

пример

[logAverageMissRate,fppi,missRate] = evaluateDetectionMissRate(___) возвращает точки данных для графического вывода логарифмических положительных сторон лжи коэффициента непопаданий на изображение (FPPI) кривая, с помощью входных параметров от предыдущего синтаксиса.

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

Примеры

свернуть все

В этом примере показано, как оценить коэффициент непопаданий предварительно обученного детектора объектов YOLO v2.

Загрузите достоверные данные транспортного средства

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

data = load('vehicleTrainingData.mat');
trainingData = data.vehicleTrainingData(1:100,:);

Добавьте полный путь в локальную папку данных о транспортном средстве.

dataDir = fullfile(toolboxdir('vision'), 'visiondata');
trainingData.imageFilename = fullfile(dataDir, trainingData.imageFilename);

Создайте imageDatastore использование файлов из таблицы.

imds = imageDatastore(trainingData.imageFilename);

Создайте boxLabelDatastore использование столбцов меток из таблицы.

blds = boxLabelDatastore(trainingData(:,2:end));

Загрузите детектор YOLOv2 для обнаружения

Загрузите детектор, содержащий layerGraph для trainining.

vehicleDetector = load('yolov2VehicleDetector.mat');
detector = vehicleDetector.detector;

Оцените и постройте результаты коэффициента непопаданий

Запустите детектор с imageDatastore.

results = detect(detector, imds);

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

[am, fppi, missRate] = evaluateDetectionMissRate(results, blds);

Постройте кривую, "регистрируют коэффициент непопаданий".

figure;
loglog(fppi, missRate);
grid on
title(sprintf('Log Average Miss Rate = %.1f', am))

Загрузите таблицу основной истины.

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.5349 seconds.

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

numImages = height(stopSigns);
results(numImages) = struct('Boxes', [], 'Scores', []);

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

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

results = struct2table(results);

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

[am, fppi, missRate] = evaluateDetectionMissRate(results, stopSigns(:, 2));

Постройте кривую, "регистрируют коэффициент непопаданий".

figure
loglog(fppi, missRate);
grid on
title(sprintf('log Average Miss Rate = %.1f', am))

Figure contains an axes. The axes with title log Average Miss Rate = 0.3 contains an object of type line.

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

свернуть все

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

При обнаружении объектов можно создать таблицу результатов обнаружения при помощи imageDatastore.

        ds = imageDatastore(stopSigns.imageFilename);
        detectionResults = detect(detector,ds);

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

Помеченная основная истина в виде datastore или таблицы.

Каждая ограничительная рамка должна быть в формате [x y width height].

  • Datastore — datastore, чей read и readall функции возвращают массив ячеек или таблицу по крайней мере с двумя столбцами ограничительной рамки и векторов ячейки меток. Ограничительные рамки должны быть в массиве ячеек M-by-4 матрицами в формате [x, y, width, height]. Datastore read и readall функции должны возвратить один из форматов:

    • {boxes, labels} — boxLabelDatastore создает этот тип datastore.

    • {images, boxes, labels} — объединенный datastore. Например, использование combineimds , blds).

    Смотрите boxLabelDatastore.

  • Таблица — Один или несколько столбцов. Все столбцы содержат ограничительные рамки. Каждый столбец должен быть вектором ячейки, который содержит M-by-4 матрицы, которые представляют класс отдельного объекта, такой как stopSign, carRear или carFront. Столбцы содержат двойные массивы с 4 элементами ограничительных рамок M в формате [x, y, width, height]. Формат задает местоположение верхнего левого угла и размер ограничительной рамки в соответствующем изображении.

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

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

свернуть все

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

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

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

Введенный в R2017a