Карта посещений

Счетчики

Реклама Google

 

Обучение каскадов Хаара

Материал из CompVision

Перейти к: навигация, поиск

Содержание

Тренировка и использование классификаторов Хаара

Создание образцов

Для проведения обучения каскада необходимо собрать два вида образцов: положительные и отрицательные. К отрицательным относятся образцы не содержащие целевого объекта. К положительным относятся различные изображения, содержащие целевой объект.

Отрицательные образцы

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

Если структура директорий выглядит так:

/img
  img1.jpg
  img2.jpg
bg.txt

,то файл bg.txt будет иметь такое содержимое:

img/img1.jpg
img/img2.jpg

Положительные образцы

Создание положительных образцов из одного изображения объекта

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

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

- vec <vec_file_name>

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

- img <image_file_name>

 имя изображения, содержащего целевой объект (например логотип компании)

- bg <background_file_name>

 имя файла описания заднего фона

- num <number_of_samples>

 количество генерируемых примеров для обучения

- bgcolor <background_color>

фоновый цвет (на настоящий момент поддерживаются изображения только в серой палитре): фоновый цвет обозначает прозрачный цвет. Чтобы исключить влияние дефектов изображения, получаемых в результате сжатия, задается допуск на цвет фона, определяемый параметром –bgthresh. Все пиксели имеющие цвет, лежащий в диапазоне от bgcolor-bgthresh до bgcolor+bgthresh принимаются прозрачными.

- bgthresh <background_color_threshold>

- inv если флаг установлен, цвета будут инвертированы

- randinv если флаг установлен, цвета будут инвертированы случайно (для одних образцов инвертированы, для других - нет)

- maxidev <max_intensity_deviation>

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

- maxxangle <max_x_rotation_angle>,

- maxyangle <max_y_rotation_angle>,

- maxzangle <max_z_rotation_angle>

максимальные углы поворота в радианах

-show если флаг установлен, все образцы будут отображаться на экране, после нажатия 'esc' процесс продолжится без вывода на экран образцов. Опция полезна при отладке.

- w <sample_width> ширина генерируемых образцов (в пикселях)

- h <sample_height> высота генерируемых образцов (в пикселях)

Создание положительных образцов из множества изображений содержащих объект

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

/img
  img1.jpg
  img2.jpg
info.dat

то файл описания info.dat будет содержать строки:

img/img1.jpg  1  140 100 45 45
img/img2.jpg  2  100 200 50 50   50 30 25 25

Изображение img1.jpg содержит единственный объект (указано в первом параметре) с координатами (x=140,y=100,ширина=45,высота=45).

Изображение img2.jpg содержит два экземпляра целевого объекта.

Для создания набора образцов из серии изображений, необходимо вместо параметра -img задавать параметр -info <collection_file_name>, где

<collection_file_name> имя файла с описанием серии изображений, для приведенного выше примера это файл info.dat.

В случае использования серии маркированных изображений (параметр -info), искажений изображения целевых образцов не производится (берутся как есть). Используются только опции –w, -h, -show и –num, остальные игнорируются.

Утилита createsamples может быть использована для изучения образцов, сохраненных в файле описания положительных образцов. Для этого требуется определить только параметры –vec, –w и –h.

Обратите внимание, для обучения не важно как получены положительные образцы. Таким образом утилита createsamples лишь один из способов, для сбора/получения файла-вектора положительных образцов.

Обучение

Обучение классификатора производится с использованием утилиты haartraining.

Ниже привдятся набор возможных аргументов командной строки.

- data <dir_name>

 имя директории в которой будет сохранен классификатор

- vec <vec_file_name>

 имя файла с положительными образцами

- bg <background_file_name>

 имя файла с описанием фона (см.выше)

- npos <number_of_positive_samples>,

- nneg <number_of_negative_samples>

количество положителных/отрицательных образцов используемых при обучении каждого уровня классификатора. Разумные значения: npos = 7000 и nneg = 3000.

- nstages <number_of_stages>

 Количество уровней классификатора для обучения

- nsplits <number_of_splits>

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

Если 1, тогда используется простой усеченный классификатор (дерево с двумя ветвями), если 2 и более тогда используется CART классификатор с number_of_splits узлами.

- mem <memory_in_MB>

 Количество доступной памяти в МБ. Больше памяти - быстрее процесс обучения.

- sym (default),

- nonsym

Определяет, обладает ли целевой объект вертикальной осевой симметрией (по умолчанию - да), наличие симметрии ускоряет процесс обучения. Например, фронтальные изображения лиц обладают осевой симметрией.

- minhitrate <min_hit_rate>

минимальная частота попаданий для каждого уровня классификатора. Общая частота попаданий может быть приближенно определена как min_hit_rate^number_of_stages.

- maxfalsealarm <max_false_alarm_rate>

максимальный уровень ложных срабатываний для каждого уровня классификатора. Общая частота ложных срабатываний может быть приближенно определена как max_false_alarm_rate^number_of_stages.

- weighttrimming <weight_trimming>

Параметр определяет, будет ли, и насколько будет использоваться подстройка весов. Рекомендованное значение около 0.90.

- eqw

не знаю что это (в документации нет :-/ )

- mode <BASIC (default) | CORE | ALL>

Определяет набор элементов хаара которые будут использоваться при обучении. BASIC - это только верхне-правые, ALL - полные набор верхне правых и повернутых на 45 градусов элементов.

- w <sample_width>,

- h <sample_height>

Ширина и высота образцов, используемых при обучении классификатора. Должна быть точно такая же, как при получении образцов (createsamples)

Применение

Полученные каскады используются функцией cvHaarDetectObjects().

Создание тестовых образцов

Для определения эффективноти классификатора, желательно иметь набор изображений на которых отмечены целевые объекты (набор маркированных изображений). Если такого набора не имеется в наличии, тестовые образцы могут быть созданы из единственного изображения объекта, при помощи утилиты createsamples. Процесс создания тестовых образцов, в данном случае, очень похож на процесс создания образцов для обучения, каждый тестовый образец, представляет собой фоновое изображение, на котором случайным образом расположены, случайным образом деформированные изображения целевого объекта. Если заданы оба аргумента -img и -info, то для создания тестовых образцов используется утилита createsamples. Изображения целевого объекта, случайным образом искажаются, и затем помещаются в случайные позиции фонового изображения и результат сохраняется. Соответствующая строка описания добавляется в файл заданный аргуметном -info.

(Насколько я понял, изображения фона задаются аналогично тому, как это делалось выше)

Аргументы -w и -h определяют минимальный размер изображения целевого объекта, помещаемого на фоновое изображение. Формат имени создаваемого изображения приведен ниже:

imageOrderNumber_x_y_width_height.jpg

где x, y, width и height - координаты прямоугольника, содержащего целевой объект. Замечание: Для тестирования Вы должны использовать набор фоновых изображений, отличных от тех, что использовались при тренировке.

Определение эффективности классификатора

Для определения эффективности созданного классификатора, используется утилита performance. В качестве аргументов, функция принимает набор маркированных изображений (изображений, для которых известно расположение целевого объекта). Далее утилита применяет исследуемый классификатор к этому набору изображений и выдает показатели эффективности классификатора. К числу таких показателей относится количество найденных объектов, количество промахов, количество ложных срабатываний и другая информация.

Функция принимает следующие аргументы командной строки:

- data <dir_name>

 директория где хранится обученный классификатор

- info <collection_file_name>

 файл с описанием тестовых образцов

- maxSizeDiff <max_size_difference>,

- maxPosDiff <max_position_difference>

Определяет требования к точности соответствия размеров, и точности совпадения центров прямоугольников. Значение по умолчанию равно 1.2 и 0.3, соответственно.

- sf <scale_factor>

параметр детектирования. Значение по умолчанию равно 1.2.

- w <sample_width>,

- h <sample_height>

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

литература

[1] Rainer Lienhart and Jochen Maydt. An Extended Set of Haar-like Features for Rapid Object Detection. Submitted to ICIP2002.

[2] Alexander Kuranov, Rainer Lienhart, and Vadim Pisarevsky. An Empirical Analysis of Boosting Algorithms for Rapid Objects With an Extended Set of Haar-like Features. Intel Technical Report MRL-TR-July02-01, 2002.

PS: Хороший пример тренировки каскаов находится здесь: http://note.sonots.com/SciSoftware/haartraining.html

 
Последние посты форума