Вычислить метрику точности для обнаружения объектов
возвращает среднюю точность 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);
Создайте боксLabelDatastore, используя столбцы меток из таблицы.
blds = boxLabelDatastore(trainingData(:,2:end));
Детектор YOLOv2 нагрузки для обнаружения
Загрузите детектор, содержащий leyGraph, для обучения.
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 20.1756 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 - Местоположения объектов и оценкиМестоположения и оценки объектов, заданные в виде таблицы из двух столбцов, содержащей ограничивающие рамки и оценки для каждого обнаруженного объекта. Для многоклассового обнаружения третий столбец содержит прогнозируемую метку для каждого обнаружения. Ограничивающие рамки должны храниться в M-by-4 массиве ячеек. Оценки должны храниться в массиве M-by-1 ячеек, а метки должны храниться в виде категориального вектора.
При обнаружении объектов можно создать таблицу результатов обнаружения с помощью imageDatastore.
ds = imageDatastore(stopSigns.imageFilename);
detectionResults = detect(detector,ds);Типы данных: table
groundTruthData - Маркированная наземная истинаПомеченная истинность основания, заданная как хранилище данных или таблица.
Каждая ограничительная рамка должна иметь формат [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]. Формат определяет расположение верхнего левого угла и размер ограничивающей рамки на соответствующем
изображении.
threshold - Порог перекрытия0.5 | числовой скалярПорог перекрытия для назначения обнаружения полю истинности земли, заданному как числовой скаляр. Коэффициент перекрытия вычисляется как пересечение по соединению.
averagePrecision - Средняя точностьСредняя точность по всем результатам обнаружения, возвращаемая в виде числового скаляра или вектора. Точность - это отношение истинных положительных экземпляров ко всем положительным экземплярам объектов в детекторе, основанное на истинности земли. Для многоклассового детектора средняя точность является вектором средних показателей точности для каждого класса объектов.
recall - Значения отзыва из каждого обнаруженияВосстановление значений из каждого обнаружения, возвращаемых в виде M-by-1 вектора числовых скаляров или в виде массива ячеек. Длина M равна 1 + числу обнаружений, назначенных классу. Например, если результаты обнаружения содержат 4 обнаружения с меткой класса 'car', то recall содержит 5 элементов. Первое значение отзыва всегда 0.
Напомним, что отношение истинных положительных инстанций к сумме истинных положительных и ложных негативов в детекторе, основанном на наземной истине. Для многоклассового детектора, recall и precision - массивы ячеек, где каждая ячейка содержит точки данных для каждого класса объектов.
precision - Значения точности от каждого обнаруженияЗначения точности из каждого обнаружения, возвращаемые как M-by-1 вектор числовых скаляров или как массив ячеек. Длина M равна 1 + числу обнаружений, назначенных классу. Например, если результаты обнаружения содержат 4 обнаружения с меткой класса 'car', то precision содержит 5 элементов. Первое значение precision всегда 1.
Точность - это отношение истинных положительных экземпляров ко всем положительным экземплярам объектов в детекторе, основанное на истинности земли. Для многоклассного детектора: recall и precision - массивы ячеек, где каждая ячейка содержит точки данных для каждого класса объектов.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.