Оцените точность метрики для обнаружения объектов
возвращает среднюю точность 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 для обучения.
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
- Маркированная основная истинаПомеченная основная истина, заданная как datastore или таблица.
Каждый ограничивающий прямоугольник должен быть в формате [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0> ].
Datastore - хранилище данных, read
и readall
функции возвращают массив ячеек или таблицу с по крайней мере двумя столбцами ограничивающего прямоугольника и помечает векторы камер. Ограничивающие прямоугольники должны быть в массиве ячеек матриц <reservedrangesplaceholder4>-by-4 в формате [x, y, width, height]. The datastoreread
и readall
функции должны вернуть один из форматов:
{boxes, labels} - The boxLabelDatastore
создает этот тип datastore.
{images, boxes, labels} - комбинированный datastore. Для примера, использованиеcombine
(imds
, blds
).
См. boxLabelDatastore
.
Таблица - Один или несколько столбцов. Все столбцы содержат ограничительные рамки. Каждый столбец должен быть вектором камеры, который содержит M на 4 матрицы, которые представляют один класс объекта, такой как stopSign, carRear или carFront. Столбцы содержат двойные массивы с 4 элементами M ограничивающих прямоугольников в формате [x, y, width, height]. Формат задает положение верхнего левого угла и размер ограничивающего прямоугольника на соответствующем изображении.
threshold
- Порог перекрытия0.5
| числовой скалярПорог перекрытия для назначения обнаружения в основном блоке истинности, заданный как числовой скаляр. Коэффициент перекрытия вычисляется как пересечение над объединением.
averagePrecision
- Средняя точностьСредняя точность по всем результатам обнаружения, возвращенная как числовой скаляр или вектор. Precision - это отношение истинных положительных образцов ко всем положительным образцам объектов в детекторе, основанное на основной истине. Для детектора мультикласса средняя точность является вектором средней точности счетов для каждого класса объекта.
recall
- Отозвать значения из каждого обнаруженияОтозвать значения из каждого обнаружения, возвращенные как M-на-1 вектор числовых скаляров или как массив ячеек. Длина M равняется 1 + количеству обнаружений, назначенных классу. Для примера, если результаты вашего обнаружения содержат 4 обнаружения с меткой класса 'car'
, затем recall
содержит 5 элементов. Первое значение отзыва всегда 0
.
Recall - это отношение истинных положительных образцов к сумме истинных срабатываний и ложных срабатываний в детекторе, основанное на основной истине. Для многоклассового детектора, recall
и precision
являются массивами ячеек, где каждая камера содержит точки данных для каждого класса объектов.
precision
- Значения точности от каждого обнаруженияЗначения точности от каждого обнаружения, возвращенные как M-на-1 вектор числовых скаляров или как массив ячеек. Длина M равняется 1 + количеству обнаружений, назначенных классу. Для примера, если результаты вашего обнаружения содержат 4 обнаружения с меткой класса 'car'
, затем precision
содержит 5 элементов. Первое значение precision
всегда 1
.
Precision - это отношение истинных положительных образцов ко всем положительным образцам объектов в детекторе, основанное на основной истине. Для мультиклассового детектора, recall
и precision
являются массивами ячеек, где каждая камера содержит точки данных для каждого класса объектов.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.