trainCascadeObjectDetector

Train каскад детектора объектов модель

Описание

пример

trainCascadeObjectDetector(outputXMLFilename,positiveInstances,negativeImages) записывает обученный каскадный детектор XML- файл с именем, outputXMLFilename. Имя файла должно содержать расширение XML. Для получения более подробного объяснения того, как эта функция работает, смотрите Запуск с Cascade Детектора объектов.

trainCascadeObjectDetector(outputXMLFilename,'resume') возобновляет прерванный сеанс обучения. The outputXMLFilename вход должен совпадать с именем выходного файла из прерванного сеанса. Все аргументы, сохраненные из предыдущего сеанса, используются автоматически.

пример

trainCascadeObjectDetector(___,Name,Value) использует дополнительные опции, заданные одним или несколькими Name,Value аргументы в виде пар.

Примеры

свернуть все

Загрузите данные положительных выборок из файла MAT. Файл содержит таблицу, задающую ограничительные рамки для нескольких категорий объектов. Таблица экспортирована из Image Labeler приложение.

Загрузите положительные выборки.

load('stopSignsAndCars.mat');

Выберите ограничительные рамки для знаков упора из таблицы.

positiveInstances = stopSignsAndCars(:,1:2);

Добавьте папку изображений в путь MATLAB.

imDir = fullfile(matlabroot,'toolbox','vision','visiondata',...
    'stopSignImages');
addpath(imDir);

Укажите папку для отрицательных изображений.

negativeFolder = fullfile(matlabroot,'toolbox','vision','visiondata',...
    'nonStopSigns');

Создайте imageDatastore объект, содержащий отрицательные изображения.

negativeImages = imageDatastore(negativeFolder);

Обучите каскадный детектор объектов под названием 'stopSignDetector.xml' с помощью функций HOG. ПРИМЕЧАНИЕ: Выполнение команды может занять несколько минут.

trainCascadeObjectDetector('stopSignDetector.xml',positiveInstances, ...
    negativeFolder,'FalseAlarmRate',0.1,'NumCascadeStages',5);
Automatically setting ObjectTrainingSize to [35, 32]
Using at most 42 of 42 positive samples per stage
Using at most 84 negative samples per stage

--cascadeParams--
Training stage 1 of 5
[........................................................................]
Used 42 positive and 84 negative samples
Time to train stage 1: 0 seconds

Training stage 2 of 5
[........................................................................]
Used 42 positive and 84 negative samples
Time to train stage 2: 0 seconds

Training stage 3 of 5
[........................................................................]
Used 42 positive and 84 negative samples
Time to train stage 3: 2 seconds

Training stage 4 of 5
[........................................................................]
Used 42 positive and 84 negative samples
Time to train stage 4: 6 seconds

Training stage 5 of 5
[........................................................................]
Used 42 positive and 17 negative samples
Time to train stage 5: 9 seconds

Training complete

Используйте недавно обученный классификатор, чтобы обнаружить стоповый знак в изображении.

detector = vision.CascadeObjectDetector('stopSignDetector.xml');

Прочтите тестовое изображение.

img = imread('stopSignTest.jpg');

Обнаружение знака остановки.

bbox = step(detector,img);

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

 detectedImg = insertObjectAnnotation(img,'rectangle',bbox,'stop sign');

Отображение обнаруженного знака остановки.

figure; imshow(detectedImg);

Удалите директорию изображений из пути.

rmpath(imDir);

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

свернуть все

Положительные выборки, заданные как двухколоночная таблица или двухполевая структура.

Первый столбец таблицы или поле структуры содержит имена файлов изображений, заданные как векторы символов или строковые скаляры. Каждое изображение может быть истинным цветом, полутоном или индексированным в любом из форматов, поддерживаемых imread.

Второй столбец таблицы или поле структуры содержит M-by-4 матрицу из M ограничивающих рамок. Каждый ограничивающий прямоугольник находится в формате [<reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> <reservedrangesplaceholder0>] и определяет местоположение объекта в соответствующем изображении.

Можно использовать приложение Image Labeler или Video Labeler, чтобы пометить объекты интереса ограничивающими рамками. Приложение возвращает groundTruth объект. Используйте objectDetectorTrainingData функция для получения таблицы из объекта, используемого для positiveInstances. Функция автоматически определяет количество положительных выборок для использования на каждом из каскадных этапов. Это значение основано на количестве каскадов и истинной положительной скорости. Истинная положительная скорость определяет, сколько положительных выборок может быть неправильно классифицировано.

Типы данных: table | struct

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

Обученное имя файла каскадного детектора, заданное как вектор символов или строковый скаляр с расширением XML. Для примера 'stopSignDetector.xml'.

Типы данных: char

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

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

Пример: 'FeatureType', 'Haar' задает Haar для типа используемых функций.

Размер обучающего объекта, заданный как разделенная разделенными запятой парами. Эта пара содержит 'ObjectTrainingSize'и двухэлементный вектор [height, width], или как 'Auto'. Перед обучением функция изменяет размер положительных и отрицательных выборок, чтобы ObjectTrainingSize в пикселях. Если вы выбираете 'Auto'функция определяет размер автоматически на основе среднего отношения ширины к высоте положительных образцов. Для оптимальной точности обнаружения задайте размер обучения объекта, близкий к ожидаемому размеру объекта в изображении. Однако для более быстрого обучения и обнаружения установите размер обучения объекта меньше ожидаемого размера объекта в изображении.

Типы данных: char | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Отрицательный коэффициент расчета, заданный как разделенная разделенными запятой парами, состоящая из 'NegativeSamplesFactor'и реальный скаляр. Количество отрицательных выборок для использования на каждом этапе равно

NegativeSamplesFactor × [<reservedrangesplaceholder0>].

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Количество каскадных этапов обучения, заданное как разделенная разделенными запятой парами, состоящая из 'NumCascadeStages'и положительное целое число. Увеличение количества каскадов может привести к получению более точного детектора, но также увеличивает время обучения. Больше этапов может потребовать больше обучающих изображений, потому что на каждом этапе устраняется некоторое количество положительных и отрицательных выборок. Это значение зависит от значений FalseAlarmRate и TruePositiveRate. Больше этапов может также позволить вам увеличить FalseAlarmRate. Смотрите Запуск с Cascade Детектора объектов руководства для получения дополнительной информации.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Допустимая скорость ложного предупреждения на каждом этапе, заданная как разделенная разделенными запятой парами, состоящая из 'FalseAlarmRate'и значение в области значений (0 1]. Частотой ложных предупреждений является доля отрицательных обучающих выборок, неправильно классифицированных как положительные выборки.

Общая частота ложных предупреждений вычисляется с помощью FalseAlarmRate на этап и количество каскадных этапов, NumCascadeStages:

FalseAlarmRateNumCascadeStages

Более низкие значения для FalseAlarmRate увеличение сложности каждой стадии. Повышенная сложность может достичь меньшего количества ложных обнаружений, но может привести к увеличению времени обучения и обнаружения. Более высокие значения для FalseAlarmRate может потребовать большего количества каскадных этапов для достижения разумной точности обнаружения.

Типы данных: single | double

Минимальная истинная положительная скорость, необходимая на каждом этапе, задается как разделенная разделенными запятой парами, состоящая из 'TruePositiveRate'и значение в области значений (0 1]. Истинная положительная скорость является долей правильно классифицированных положительных обучающих выборок.

Общая результирующая целевая положительная скорость вычисляется с помощью TruePositiveRate на этап и количество каскадных этапов, NumCascadeStages:

TruePositiveRateNumCascadeStages

Более высокие значения для TruePositiveRate увеличение сложности каждой стадии. Повышенная сложность может достичь большего количества правильных обнаружений, но может привести к увеличению времени обучения и обнаружения.

Типы данных: single | double

Тип функции, заданный как разделенная разделенными запятой парами, состоящая из 'FeatureType'и одно из следующих:

'Haar'[1] - Haar-подобные функции
'LBP'[2] - Локальные двоичные шаблоны
'HOG'[3] - Гистограмма ориентированных градиентов

Функция выделяет большой объем памяти, особенно функции Haar. Чтобы избежать нехватки памяти, используйте эту функцию на 64-разрядной операционной системе с достаточным объемом оперативной памяти.

Типы данных: char

Совет

  • Для обучения хорошего детектора требуются тысячи обучающих выборок. Время вычислений большого объема данных варьируется, но, вероятно, потребуется часов или даже дней. Во время обучения функция отображает время, необходимое для обучения каждого этапа в MATLAB® командное окно.

  • В этой функции используются следующие параметры HOG OpenCV:

    • Нумбины: 9

    • CellSize = [8 8]

    • BlockSize = [4 4]

    • BlockOverlap = [2 2]

    • UseSignedOrientation = false

Ссылки

[1] Виола, П. и М. Дж. Джонс. «Быстрое обнаружение объектов с использованием усиленного каскада простых функций». Материалы конференции IEEE Computer Society 2001. Том 1, 15 апреля 2001, стр. I-511-I-518.

[2] Ojala, T., M. Pietikainen, and T. Maenpaa. «Мультиразрешение, серая шкала и классификация инвариантной текстуры вращения с локальными двоичными шаблонами». Транзакции IEEE по шаблонному анализу и машинному анализу. Том 24, № 7 июля 2002, стр. 971-987.

[3] Даляль, Н. и Б. Триггс. Гистограммы ориентированных градиентов для обнаружения человека. IEEE Computer Society Conference on Компьютерное Зрение and Pattern Recognition. Том 1, 2005, с. 886-893.

Введенный в R2013a