exponenta event banner

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);

Создайте боксLabelDatastore, используя столбцы меток из таблицы.

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

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

Загрузите детектор, содержащий leyGraph, для обучения.

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

Оценка и составление графика результатов оценки промахов

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

results = detect(detector, imds);

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

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

Постройте график log-miss-rate/FPPI.

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));

График кривой log-miss-rate/FPPI.

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.

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

свернуть все

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

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

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

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

Помеченная истинность основания, заданная как хранилище данных или таблица.

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

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

    • {поля, метки} - boxLabelDatastore создает этот тип хранилища данных.

    • {изображения, поля, метки} - комбинированное хранилище данных. Например, использованиеcombine(imds,blds).

    Посмотрите boxLabelDatastore.

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

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

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

свернуть все

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

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

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

См. также

Приложения

Функции

Объекты

Темы

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