Оцените метрику точности для обнаружения объектов
возвращает среднюю точность, averagePrecision
= evaluateDetectionPrecision(detectionResults
,groundTruthData
)detectionResults
по сравнению с groundTruthData
. Можно использовать среднюю точность, чтобы измерить уровень детектора объектов. Для детектора мультикласса функция возвращает averagePrecision
когда вектор из музыки к каждому классу объекта в порядке задан groundTruthData
.
[
возвращает точки данных для графического вывода кривой отзыва точности, с помощью входных параметров от предыдущего синтаксиса.averagePrecision
,recall
,precision
]
= evaluateDetectionPrecision(___)
[___] = evaluateDetectionPrecision(___,
задает порог перекрытия для присвоения обнаружения к основному блоку истинности.threshold
)
В этом примере показано, как оценить предварительно обученный детектор объектов YOLO v2.
Загрузите достоверные данные транспортного средства
Загрузите таблицу, содержащую обучающие данные транспортного средства. Первый столбец содержит учебные изображения, остальные столбцы содержат помеченные ограничительные рамки.
data = load('vehicleTrainingData.mat');
trainingData = data.vehicleTrainingData;
Добавьте полный путь в локальную папку данных о транспортном средстве.
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);
Оцените результаты против достоверных данных.
[ap, recall, precision] = evaluateDetectionPrecision(results, blds);
Постройте кривую точности/отзыва.
figure; plot(recall, precision); grid on title(sprintf('Average precision = %.1f', ap))
Обучите основанный на 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 19.2586 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))
detectionResults
— Объектные местоположения и баллыОбъектные местоположения и баллы в виде таблицы 2D столбца, содержащей ограничительные рамки и музыку к каждому обнаруженному объекту. Для обнаружения мультикласса третий столбец содержит предсказанную метку для каждого обнаружения. Ограничительные рамки должны храниться в M-by-4 массив ячеек. Баллы должны храниться в M-by-1 массив ячеек, и метки должны храниться как категориальный вектор.
При обнаружении объектов можно создать таблицу результатов обнаружения при помощи imageDatastore
.
ds = imageDatastore(stopSigns.imageFilename); detectionResults = detect(detector,ds);
Типы данных: table
groundTruthData
— Помеченная основная истинаПомеченная основная истина в виде 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. Например, использование combine
imds
, blds
).
Смотрите boxLabelDatastore
.
Таблица — Один или несколько столбцов. Все столбцы содержат ограничительные рамки. Каждый столбец должен быть вектором ячейки, который содержит M-by-4 матрицы, которые представляют класс отдельного объекта, такой как stopSign, carRear или carFront. Столбцы содержат двойные массивы с 4 элементами ограничительных рамок M в формате [x, y, width, height]. Формат задает местоположение верхнего левого угла и размер ограничительной рамки в соответствующем изображении.
threshold
— Перекройте порог
| числовой скалярПерекройте порог для присвоенного обнаружение к основному блоку истинности в виде числового скаляра. Отношение перекрытия вычисляется как пересечение по объединению.
averagePrecision
— Средняя точностьСредняя точность по всем результатам обнаружения, возвращенным в виде числа или вектора. Precision является отношением истинных положительных экземпляров ко всем положительным экземплярам объектов в детекторе, на основе основной истины. Для детектора мультикласса средняя точность является вектором из средней музыки точности к каждому классу объекта.
recall
— Вспомните значения из каждого обнаруженияВспомните значения из каждого обнаружения, возвращенного как M-by-1 вектор из числовых скаляров или как массив ячеек. Длина M равняется 1 + количество обнаружений, присвоенных классу. Например, если ваши результаты обнаружения содержат 4 обнаружения с меткой 'car'
класса, затем
recall
содержит 5 элементов. Первым значением отзыва всегда является 0
.
Recall является отношением истинных положительных экземпляров к сумме истинных положительных сторон и ложных отрицательных сторон в детекторе, на основе основной истины. Для детектора мультикласса, recall
и precision
массивы ячеек, где каждая ячейка содержит точки данных для каждого класса объекта.
precision
— Значения точности от каждого обнаруженияЗначения точности от каждого обнаружения, возвращенного как M-by-1 вектор из числовых скаляров или как массив ячеек. Длина M равняется 1 + количество обнаружений, присвоенных классу. Например, если ваши результаты обнаружения содержат 4 обнаружения с меткой 'car'
класса, затем
precision
содержит 5 элементов. Первое значение precision
всегда 1
.
Precision является отношением истинных положительных экземпляров ко всем положительным экземплярам объектов в детекторе, на основе основной истины. Для детектора мультикласса, recall
и precision
массивы ячеек, где каждая ячейка содержит точки данных для каждого класса объекта.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.