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', использующим функции ПОЖИРАТЕЛЯ РЕСУРСОВ. ПРИМЕЧАНИЕ: команда может занять несколько минут, чтобы запуститься.

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);

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

свернуть все

Положительные выборки в виде таблицы 2D столбца или двупольной структуры.

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

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

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

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

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

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

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

Аргументы name-value

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

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

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

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

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

NegativeSamplesFactor × [the number of positive samples used at each stage].

Типы данных: 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] — Подобные Хаару функции
'LBP'[2] — Локальные бинарные шаблоны
'HOG'[3] — Гистограмма ориентированных градиентов

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

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

Советы

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

  • Параметры ПОЖИРАТЕЛЯ РЕСУРСОВ OpenCV, используемые в этой функции:

    • NumBins : 9

    • CellSize = [8 8]

    • BlockSize = [4 4]

    • BlockOverlap = [2 2]

    • UseSignedOrientation = false

Ссылки

[1] Виола, P. и М. Дж. Джонс. "Быстрое Обнаружение объектов с помощью Повышенного Каскада Простых Функций". Продолжения 2 001 Конференции Общества эпохи компьютеризации IEEE. Объем 1, 15 апреля 2001, стр. Я 511 Я 518.

[2] Ojala, T., М. Питикэйнен и Т. Мэенпэа. “Шкала полутонов мультиразрешения и Классификация Структуры Инварианта Вращения С Локальными Бинарными Шаблонами”. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту. Объем 24, июль 2002 № 7, стр 971–987.

[3] Dalal, N. и Б. Триггс. “Гистограммы Ориентированных Градиентов для Человеческого Обнаружения”. Конференция Общества эпохи компьютеризации IEEE по Компьютерному зрению и Распознаванию образов. Объем 1, 2005, стр 886–893.

Введенный в R2013a