acfObjectDetector

Обнаружение объектов с помощью совокупных функций канала

Описание

The acfObjectDetector объект обнаруживает объекты из изображения, используя детектор объектов совокупных функций канала (ACF). Чтобы обнаружить объекты в изображении, передайте обученный детектор в detect функция.

Детектор объектов ACF распознает конкретные объекты в изображениях, основываясь на обучающих изображениях и местоположениях основной истины, используемых с trainACFObjectDetector функция.

Создание

Создайте acfObjectDetector объект вызовом trainACFObjectDetector функция с обучающими данными.

detector = trainACFObjectDetector(trainingData,...)

Описание

пример

detector = acfObjectDetector(detectorStruct.Classifier,detectorStruct.TrainingOptions) создает acfObjectDetector объект, идентичный существующему acfObjectDetector объект, использующий свойства объекта Classifier и TraningOptions, которые хранятся в detectorStruct структурные поля. Используйте этот синтаксис для воссоздания детектора объектов ACF для генерации кода.

Входные параметры

расширить все

Предварительно обученные acfObjectDetector классификатор объектов, заданный как поле структуры. Чтобы получить свойство объекта Classifierпреобразуйте предварительно обученную acfObjectDetector объект в detectorStruct структура при помощи toStruct функция. Затем используйте запись через точку.

Предварительно обученные acfObjectDetector опции обучения объектов, заданные как поле структуры. Чтобы получить свойство объекта TrainingOptionsпреобразуйте предварительно обученную acfObjectDetector объект в detectorStruct структура при помощи toStruct функция. Затем используйте запись через точку.

Свойства

расширить все

Имя классификационной модели, заданное как вектор символов или строковый скаляр. По умолчанию для имени задается заголовок второго столбца trainingData таблица, заданная в trainACFObjectDetector функция. Вы можете изменить это имя после создания acfObjectDetector объект.

Пример: 'stopSign'

Это свойство доступно только для чтения.

Размер обучающих изображений, заданный как вектор [height width].

Пример: [100 100]

Это свойство доступно только для чтения.

Количество слабых учащихся, используемых в детекторе, заданное в виде целого числа. NumWeakLearners меньше или равно максимальному числу слабых учащихся на последнем этапе обучения. Чтобы ограничить это максимальное, можно использовать 'MaxWeakLearners' пара "имя-значение" trainACFObjectDetector функция.

Функции объекта

detectОбнаружение объектов с помощью детектора объектов ACF
toStructПреобразуйте обученный детектор объектов совокупных функций канала (ACF) в структуру

Примеры

свернуть все

Используйте 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 со stopSignDetector.mat файл, который присутствует в текущей рабочей папке в качестве вспомогательного файла.

stopSignDetector = load('stopSignDetectorACF.mat');
detector = stopSignDetector.detector
detector = 

  acfObjectDetector with properties:

             ModelName: 'stopSign'
    ObjectTrainingSize: [34 31]
       NumWeakLearners: 61

Преобразуйте детектор в структуру при помощи toStruct функция.

detectorStruct = toStruct(detector);

Чтобы сгенерировать код, передайте структуру в функцию MATLAB. Затем внутри функции MATLAB создайте идентичный детектор стоповых знаков ACF с использованием существующих свойств детектора.

detector1 = acfObjectDetector(detectorStruct.Classifier,detectorStruct.TrainingOptions)
detector1 = 

  acfObjectDetector with properties:

             ModelName: 'stopSign'
    ObjectTrainingSize: [34 31]
       NumWeakLearners: 61

Можно пройти detector1 на detect Функция как вход для обнаружения стоповых знаков с изображений.

Ссылки

[1] Dollar, P., R. Appel, S. Belatie, and P. Perona. «Быстрые пирамиды функций для обнаружения объектов». Pattern Analysis and Machine Intelligence, Транзакции IEEE. Том 36, Выпуск 8, 2014, стр. 1532-1545.

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

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