exponenta event banner

trainCascadeObjectDetector

Модель каскадного детектора объектов поезда

Описание

пример

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

trainCascadeObjectDetector(outputXMLFilename,'resume') возобновляет прерванную тренировку. 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 ограничивающих рамок. Каждая ограничительная рамка имеет формат [x y width height] и указывает местоположение объекта на соответствующем изображении.

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

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

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

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

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

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

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

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

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

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

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

NegativeSamplesFactor × [количество положительных образцов, используемых на каждом этапе].

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

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

Типы данных: 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]

    • БлокПерекрытие = [2 2]

    • UseSignedOrientation = false

Ссылки

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

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

[3] Далал, N. и B. Триггеры. «Гистограммы ориентированных градиентов для обнаружения человека». Конференция компьютерного общества IEEE по компьютерному зрению и распознаванию образов. Том 1, 2005, стр. 886-893.

Представлен в R2013a