detect

Обнаружение объектов с помощью детектора объектов 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

Необходимая область поиска, определенная как [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0>] вектор. Вектор задает верхний левый угол и размер области в пикселях.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

.
Введенный в R2017a