exponenta event banner

обнаружить

Обнаружение объектов с помощью детектора объектов ACF

Описание

bboxes = detect(detector,I) обнаруживает объекты в изображении I использование детектора объекта входных агрегированных характеристик канала (ACF). Местоположения обнаруженных объектов возвращаются в виде набора ограничивающих рамок.

пример

[bboxes,scores] = detect(detector,I) также возвращает оценки обнаружения для каждой ограничивающей рамки.

[___]= detect(detector,I,roi) обнаруживает объекты в прямоугольной области поиска, указанной roi, используя любой из предшествующих синтаксисов.

[___] = detect(___,Name,Value) указывает параметры, использующие один или несколько Name,Value аргументы пары. Например, detect(detector,I,'WindowStride',2) устанавливает шаг скользящего окна, используемого для обнаружения объектов, равным 2.

Примеры

свернуть все

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

Загрузите данные обучения.

load('stopSignsAndCars.mat')

Выберите истинность основания для стоп-сигналов. Эта наземная истина - набор известных мест стоп-знаков на изображениях.

stopSigns = stopSignsAndCars(:,1:2);

Добавьте полный путь к файлам изображений.

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

Обучите извещатель ACF. Можно отключить выходные данные о ходе обучения, указав 'Verbose',false в качестве Name,Value пара.

acfDetector = 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.9314 seconds.

Протестируйте детектор ACF на тестовом изображении.

img = imread('stopSignTest.jpg');

[bboxes,scores] = detect(acfDetector,img);

Отображение результатов обнаружения и вставка ограничивающих прямоугольников для объектов в изображение.

for i = 1:length(scores)
   annotation = sprintf('Confidence = %.1f',scores(i));
   img = insertObjectAnnotation(img,'rectangle',bboxes(i,:),annotation);
end

figure
imshow(img)

Figure contains an axes. The axes contains an object of type image.

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

свернуть все

Детектор объекта ACF, указанный как acfObjectDetector объект. Чтобы создать этот объект, вызовите trainACFObjectDetector функция с данными обучения в качестве входных данных.

Входное изображение, указанное как вещественное изображение, изображение без синтаксического анализа, изображение в градациях серого или RGB.

Типы данных: uint8 | uint16 | int16 | double | single | logical

Интересующая область поиска, заданная как вектор [x y width height]. Вектор задает левый верхний угол и размер области в пикселях.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'NumScaleLevels',4

Количество уровней шкалы на октаву, указанное как разделенная запятыми пара, состоящая из 'NumScaleLevels' и положительное целое число. Каждая октава - это понижение масштаба изображения. Чтобы обнаружить людей с более мелкими приращениями масштаба, увеличьте это число. Рекомендуемые значения находятся в диапазоне [4, 8].

Stride для скользящего окна, указанного как разделенная запятыми пара, состоящая из 'WindowStride' и положительное целое число. Это значение указывает расстояние, на которое функция перемещает окно в направлениях x и y. Скользящее окно сканирует изображения на предмет обнаружения объектов.

Выберите самую сильную ограничительную рамку для каждого обнаруженного объекта, заданную как пара, разделенная запятыми, состоящая из 'SelectStrongest' и либо true или false.

  • true - возвращает самую сильную ограничительную рамку для каждого объекта. Чтобы выбрать эти поля, detect вызывает selectStrongestBbox функция, которая использует нексимальное подавление, чтобы устранить перекрывающиеся ограничивающие рамки на основе их доверительных оценок.

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

Минимальный размер области, содержащей обнаруженный объект, указанный как разделенная запятыми пара, состоящая из 'MinSize' и вектор [ширина высоты]. Единицы измерения выражены в пикселях.

По умолчанию MinSize является наименьшим объектом, который обучен detector может обнаружить.

Максимальный размер области, содержащей обнаруженный объект, указанный как разделенная запятыми пара, состоящая из 'MaxSize' и вектор [ширина высоты]. Единицы измерения выражены в пикселях.

Чтобы сократить время вычислений, установите это значение на известный максимальный размер области для объектов, обнаруживаемых в изображении. По умолчанию 'MaxSize' устанавливается на высоту и ширину входного изображения, I.

Порог точности классификации, указанный как пара, разделенная запятыми, состоящая из 'Threshold' и числовой скаляр. Рекомендуемые значения находятся в диапазоне [-1, 1]. При многомасштабном обнаружении объектов пороговое значение управляет точностью и скоростью классификации субрегионов изображения как объектов или объектов, не являющихся объектами. Чтобы ускорить работу с риском отсутствия истинных обнаружений, увеличьте этот порог.

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

свернуть все

Местоположение объектов, обнаруженных во входном изображении, возвращаемое в виде матрицы M-by-4, где M - количество ограничивающих рамок. Каждая строка bboxes содержит четырехэлементный вектор вида [x y width height]. Этот вектор задает левый верхний угол и размер соответствующей ограничивающей рамки в пикселях.

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

Расширенные возможности

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