trainCascadeObjectDetector

Обучите каскадную объектную модель детектора

Синтаксис

trainCascadeObjectDetector(outputXMLFilename,positiveInstances,negativeImages)
trainCascadeObjectDetector(outputXMLFilename,'resume')
trainCascadeObjectDetector(___,Name,Value)

Описание

пример

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

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

пример

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

Примеры

свернуть все

Загрузите положительные демонстрационные данные из файла MAT. Файл содержит таблицу, задающую ограничительные рамки для нескольких категорий объектов. Таблица была экспортирована из приложения Training 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: 8 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, чтобы маркировать предметы интереса ограничительными рамками. Приложение выводит таблицу или struct, чтобы использовать в качестве positiveInstances. Функция автоматически определяет количество положительных выборок, чтобы использовать на каждом из каскадных этапов. Это значение основано на количестве этапов и истинного положительного уровня. Истинный положительный уровень задает, сколько положительных выборок может быть неправильно классифицировано.

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

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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. Смотрите Train Каскадный Объектный пример по Детектору для получения дополнительной информации.

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

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

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

FalseAlarmRate NumCascadeStages

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

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

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

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

TruePositiveRate NumCascadeStages

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

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

Покажите тип, заданный как пара, разделенная запятой, состоящая из 'FeatureType' и одно из следующего:

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

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

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

Советы

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

Ссылки

[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