Обучение SURF каскада для локализации объектов

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:17, 23 января 2018.
Learning SURF Cascade for Fast and Accurate Object Detection
Learning surf cascade screen.jpg
Авторы Jianguo Li [@: 1] and
Yimin Zhang[@: 2]
Опубликован 2013 г.
Сайт CVPR 2013
Перевели Ekaterina Saraeva[@: 3], E-mail: katyasaraeva95@mail.ru
Год перевода 2017 г.
Скачать [1]
Аннотация. В статье представлена новая система обучения локализации объектов, основанная на тренировке усиленного каскада с помощью больших массивов. Система обучения основана на хорошо известной структуре Viola-Jones (VJ), но имеет 3 ключевых отличия. Во-первых, предлагаемая структура использует многомерные функции SURF вместо одномерных функций Haar для описания локальных исправлений. В этом случае, количество используемых локальных патчей может быть уменьшено с сотен тысяч до нескольких сотен. Во-вторых, он принимает логистическую регрессию как слабый классификатор для каждого локального патча вместо деревьев решений в структуре VJ. В-третьих, мы принимаем AUC как единый критерий для теста конвергенции во время каскадного обучения, а не двух критериев компромисса (процент ложно-позитивных срабатываний и процент верных срабатываний) в рамках VJ. Выгода заключается в том, что процент ложно-позитивных срабатываний может быть адаптивнен между различными каскадными этапами и, следовательно, дает гораздо более быструю скорость сходимости каскада SURF. Объединение этих изменений дает три положительных свойства. Во-первых, усиленный каскад может быть обучен очень эффективно. Эксперименты показывают, что предлагаемый подход может обучать детектор объектов из миллиардов отрицательных образов в течение одного часа даже на персональных компьютерах. Во-вторых, встроенный детектор сравним с современным алгоритмом не только по точности, но и по скорости обработки. В-третьих, встроенный детектор мал по размеру модели из-за коротких каскадных стадий
Ключевые слова: SURF, локализация объектов на изображении, алгоритм Li на основе SURF каскадов.

Введение

Обнаружение объектов - одна из самых острых тем исследования в области компьютерного зрения из-за широкой области применения. Значительные успехи были достигнуты в течение прошедшего десятилетия, особенно благодаря работе Виолы и Джонса [1]. Для улучшения показателей обобщения, в процедуре обучения требуется использование дополнительных данных. На данный момент гораздо дешевле собрать множество обучающих образов из Интернета с небольшими инкрементальными усилиями по маркировке людей, такими как Mechanical Turk [2]. Однако, использование больших массивов данных делают изучение критически узким местом. Это особенно характерно для обучения детекторов объектов [3], [4], [5]. Как известно, обучение обычно требуется для достижения очень низкого процента ложно-позитивных срабатываний для каждого окна сканирования, такого как [3], что означает, что во время обучения обрабатываться должны сотни миллионов или даже миллиарды отрицательных изображений. Таким образом, локализация некоторого объекта - это очень трудоемкая задача. На первых этап работы может потребоваться несколько месяцев для обучения детектора высокого качества из-за ограниченности вычислительных ресурсов. Даже с учетом значительного роста вычислительной мощности, сегодня существуют рамки обучения, которые делают неэффективной тренировку на больших объемах данных. Требуется несколько дней или даже недель для получения высококачественных детекторов [6], [7], [5]. Поскольку, как правило, требуется тонкая настройка параметров на основе результатов тренировочных экспериментов, исследователи часто сталкиваются с длительными неудачами в области распознавания.

Кто-то может возразить, что мы просто заботимся о скорости обнаружения, так как тренировка нужна только один раз. Тем не менее, разнообразные данные появляются в Интернете каждый день, а некоторые могут быть не достаточно качественными для корректной обработки существующими детекторами, что дает возможный промах. Это справедливо для большинства категорий объектов. Один из способов - переобучение и обновление детекторов на новых доступных данных для уменьшения вероятности промаха. Это похоже на то, что Google делает для обновления своего рейтинга страниц и индексирования. Следовательно, исследования по обучению по-прежнему очень актуальны, поскольку обучение является важной составляющей для визуального распознавания.

Помимо большой проблемы с данными, еще одним важным фактором является скорость конвергенции каскадного обучения. Насколько нам известно, почти все существующие рамки обнаружения каскадов обучаются на основе двух противоречивых критериев (процент ложно-положительных срабатываний и процент положительных срабатываний) для компрометации ошибок обнаружения. Хотя в некоторых исследованиях вводилась промежуточная или пост-настройка каскадных параметров с некоторыми методами оптимизации [8], [9], [10],[11], они не касались скорости конвергенции каскадного обучения. В результате, последний каскад обычно имеет очень длинные этапы.

В настоящей статье предлагается новая структура каскадного обучения для обнаружения объектов с акцентом на эффективность обучения. Во-первых, окно обнаружения представлено локальными SURF-патчами, которые являются пространственными областями внутри окна и описываются многомерным дескриптором SURF [12]. Количество локальных патчей SURF ограничено несколькими сотнями в окне обнаружения. Вследствие этого, размер пула функций значительно уменьшается, что значительно облегчает выбор функций. Более того, SURF намного быстрее в извлечении объектов, чем существующие локальные функции, такие как HoG [13]. Во-вторых, мы принимаем логическую регрессию как слабый классификатор для каждого локального патча SURF. В-третьих, мы принимаем AUC (Area under ROC curve) как единый критерий для теста конвергенции во время каскадного обучения вместо двух противоречащих критериям (процент ложно-позитивных срабатываний и процент верных срабатываний). Мы назвали новый каскад SURF. Обучение каскада SURF сходится гораздо быстрее и создает гораздо более короткие каскадные этапы. Эксперименты показывают, что предлагаемый подход может создавать высокоточные детекторы, обрабатывая миллиарды образцов в течение одного часа даже на персональных компьютерах. Таким образом, этот документ представляет три основных вклада в распознавание:

  1. демонстрирует варианты дескрипторов SURF для быстрого и точного обнаружения объектов.
  2. показывает AUC как единый критерий для каскадного обучения, что делает обучение сходимым быстрее и дает каскадную модель с гораздо более короткими этапами.
  3. показывает систему, которая может обучать детекторы каскадных объектов из миллиардов образцов в течение одного часа даже на ПК.

В остальной части статьи мы сначала рассмотрим связанные работы по обнаружению объектов в разделе 2 и представим детали предлагаемой структуры в разделе 3. Эксперименты показаны в разделе 4. Выводы приводятся в разделе 5.

Изучение алгоритма Виолы-Джонса

Усиленный каскад от Виолы и Джонса является важной вехой в обнаружении объектов [1]. Это вдохновило многих на проведение последующих работ. Необходимо рассмотреть структуру VJ перед погружением в более подробные сведения. В принципе, есть три ключевые идеи, которые позволяют ему создавать детекторы объектов реального времени: интегральное преобразование изображения для эффективного извлечения функций Haar, алгоритм ускорения для слабых классификаторов и структура каскада для быстрого отрицательного отклонения. Структура VJ имеет несколько ограничений. Во-первых, размер пула функций Haar-подобных функций очень высок, что обычно составляет сотни тысяч уровней для типичного шаблона 20 × 20. Это приводит к чрезвычайно большому пространству поиска объектов для обучения слабым классификаторам. Для ускорения обучения было предложено несколько эвристических функций или стратегий фильтрации [14], [15], [16]. Тем не менее, эти методы все еще неудовлетворительны тем, что пространство поиска после фильтрации велико, и существует возможность потери точности при неоптимальном поиске.

Во-вторых, функции Haar имеют очень ограниченную емкость представления. Сложно обрабатывать вариации из-за позы и освещения. С одной стороны, некоторые исследования расширили функции Haar до вращающихся Haar-подобных функций [17], совместные функции Haar [18], редкие функции [19], многоугольники [20] и т.д. Эти функции могут улучшить точность обнаружения, но увеличивают пространство признаков, и, следовательно, проблема выбора функций становится даже критической. С другой стороны, предлагаются некоторые сложные функции для обнаружения объектов, которые включают в себя гистограмму функций ориентированного градиента (HoG)[13] [21], особенности области ковариации [22] и т.д. Они намного медленнее в вычислении, чем Haar функции. В этом документе представлен некоторый вариант возможности применения SURF [12] для описания локальных патчей. Он тесно связан с особенностями HoG в каскадной системе HoG [21]. Однако SURF намного проще и быстрее в вычислении, чем HoG.

В-третьих, каскад обрабатывается на основе двух противоречивых критериев: процент ложно-позитивных срабатываний и процент верных срабатываний (или скорость обнаружения) . Общий FPR каскада 𝑇-ступеней равен , тогда как общая скорость обнаружения равна . Из-за компромисса с ошибкой обнаружения, структура VJ предлагает установить максимальный FPR как и минимальную скорость обнаружения, такую ​​как во время тренировки. Если вы хотите достичь полного , для данной глобальной установки требуется не менее 20 этапов . Это неэффективно, поскольку некоторые этапы могут достичь цели без сближения. Лучше, чтобы мог быть адаптивным для разных этапов, чтобы мы могли легко достичь общей цели обучения. Некоторые методы разрабатывают автоматические схемы для настройки промежуточного порога на каждом этапе [8], [9], [10],[15]. Эти методы могут облегчить сложные ручные настройки, но не имеют ничего общего со скоростью конвергенции. Вдохновленные [23], мы ввели AUC [24] в качестве единственного критерия для тестирования каскадной конвергенции. Это позволит реализовать адаптивный FPR между различными этапами и обеспечить быструю скорость конвергенции и каскадную модель с гораздо более короткими этапами.

Предлагаемый подход имеет некоторую связь с моделью, основанной на деформируемых частях [25]. На ранней стадии частичная модель обучила частичные детекторы отдельно и объединила их вместе [26] для обнаружения. Позже были подготовлены работы по смешению моделей деформируемых частей под каскадной структурой [25][27]. Предлагаемый подход можно рассматривать как простой случай частичной модели при просмотре каждого выбранного локального патча в качестве частичной модели. Тем не менее, предлагаемый подход просто объединяет части дискриминационным образом для каждого этапа без каких-либо графических структур. Хотя он может не иметь такой же мощности для обработки деформируемых объектов, он по-прежнему ценен в области обнаружения объектов из-за его простоты и эффективности.

SURF каскад для локализации объектов

Предлагаемый подход содержит четыре компонента: особенности SURF для описания локального патча, слабый классификатор на основе логистической регрессии для каждого патча, усиление ансамбля слабых классификаторов для каждого этапа и алгоритм каскадного обучения на основе AUC. Мы опишем их ниже отдельно

Описание функции

Компактные локальные патчи: С учетом окна обнаружения мы определяем прямоугольные локальные патчи внутри него, используя схему, аналогичную [6]. Например, с учетом шаблона обнаружения 40 × 40 мы определяем патч с 4 пространственными ячейками и допускаем размер патча в диапазоне от 12 × 12 пикселей до 40 × 40 пикселей. Мы помещаем патч поверх шаблона обнаружения с 4 пикселями вперед, чтобы обеспечить достаточную разницу в характеристиках. Мы также допускаем разное соотношение сторон для каждого патча (соотношение ширины патча и высоты патча). В отличие от [28], 4 пространственные ячейки могут быть сконфигурированы не только 2 × 2, но и 4 × 1 и 1 × 4. Таким образом, в шаблоне обнаружения 40 × 40 генерируется 450 патчей. Каждый патч представлен 32-мерным дескриптором SURF.

SURF-дескриптор: в этом документе используется функция SURF для описания локальных исправлений из-за баланса эффективности вычислений и емкости представления. SURF - это детектор и дескриптор инварианта масштаба и вращения [12]. Он успешно применяется в таких приложениях, как распознавание объектов, сопоставление/регистрация изображений, structure-from-motion и т.д. В этой статье представлен вариант дескриптора SURF для обнаружения объекта, а элемент детектирования контрольной точки не используется.

Дескриптор SURF определяется над градиентным пространством. Градиент может иметь разную гранулярность. В простейшем случае мы определяем 𝑑𝑥 как изображение горизонтального градиента, полученное с ядром фильтра [-1, 0, 1], и как изображение вертикального градиента с помощью ядра фильтра . 8-элементный SURF (или 8-бит в простом случае) вычисляет суммы и отдельно для и , а суммы и для и для каждой пространственной ячейки.

Для вычисления 8-битового SURF требуется работа ветвей, что плохо сказывается на оптимизации скорости. В этой статье рассматривается вариант дескриптора SURF, а именно дескриптор T2 [29]. Дескриптор 4-бина T2 определяется как . Мы расширили дескриптор 4-bin T2 до 8-bin, объединяя дополнительные 4 контейнера от градиентов диагонального и обратно-диагонального направлений. Для двумерных ядер фильтра 𝑑𝑖𝑎𝑔 (-1, 0, 1) и 𝑎𝑛𝑡𝑖𝑑𝑖𝑎𝑔 (1, 0, -1) мы получаем соответственно изображение диагонального градиента и обратно-диагональное изображение градиента . Следовательно, дополнительный 4-бит определяется как )

Нормализация: локальный патч разделен на 4 пространственных ячейки. Дескриптор SURF извлекается в каждой ячейке. Функции конкатенации в 4 ячейках вместе дают 32-мерный (8 × 4) вектор признаков. Чтобы сделать дескриптор инвариантным к размеру патча, вектор функций нуждается в нормализации. Хорошие методы нормализации также могут облегчить влияние изменений освещения / контраста. Мы изучаем различные методы нормализации, предложенные в [13], и обнаруживаем, что нормализация с последующим отсечением и перенормировкой Hys работает лучше всего. Для более подробной информации о том, как применить нормализацию Hys, обратитесь к дополнительным материалам.

Многоканальные интегральные изображения: мы принимаем интегральное представление изображения для ускорения выделения функций [3]. Учитывая 8-битный SURF для описания локальных патчей, при построении одного целостного изображения требуется 4 × 8 = 32 адреса доступа для получения функции SURF из одной ячейки. Здесь мы вводим структуру, которая собирает данные из 8 ячеек и генерирует многоканальные интегральные изображения. Нам нужно всего лишь 4 оператора доступа для каждой ячейки с многоканальным интегральным изображением. Кроме того, эта структура позволяет использовать распараллеливание на уровне инструкций (т. е. SIMD) не только в операции доступа по адресам, но также к операциям суммирования и вычитания для вычисления функции SURF в каждой ячейке. Таким образом, это может значительно ускорить извлечение функции.

Сравнение функций: в этом документе используется дескриптор 8-битного T2, так как он имеет схожую способность представления к оригинальному SURF и даже HoG, в то время как доминирует над другими на скорости извлечения признаков. Практика показывает, что дескриптор 8-битного T2 имеет почти такую ​​же точность, что и исходный дескриптор SURF при обнаружении объекта, в то время как его извлечение функции примерно на 1,5 раза. Между тем, 8-битный T2-дескриптор немного хуже HoG с точки зрения общей точности каскада, в то время как он более чем на 2 раза быстрее, чем SIMD-оптимизированный дескриптор HoG при извлечении признаков. Кроме того, 4-битного T2 дескриптор также применим при обнаружении объекта. Различия между 4-битным и 8-битным - две особенности. Во-первых, дескриптор 8-бит T2 имеет большую емкость представления, чем емкость 4-бит. Например, для создания детекторов с одинаковой точностью дескриптор 8-бит T2 требует 8 этапов, в то время как дескриптор T2 4-бит требует 12 этапов. Во-вторых, потребность в памяти 8-бит вдвое больше, чем у 4-бит. Следовательно, дескриптор 4-бит T2 может применяться в некоторых приложениях с ограниченной памятью.

Слабый классификатор

Мы построили слабый классификатор по каждому локальному патчу и выбрали оптимальные исправления в каждой итерации с ускорением из набора патчей. В структуре VJ слабый классификатор - это дерево решений. В некоторых последующих работах люди вводили другие линейные классификаторы, такие как линейный дискриминант Фишера [30], линейный асимметричный классификатор [39, 4][11][15] и линейный SVM[13] . Этот документ выбирает логическую регрессию как слабый классификатор из-за того, что это линейный классификатор с вероятностным выходом.

При использовании SURF признаков Х поверх локального патча, логистическая регрессия определяет вероятностную модель (модель a.k.a logit):

где 𝑦 = 1 для образцов лица, 𝑦 = -1 для образцов без лица, - весовой вектор для модели, а 𝑏 - смещающий член. Учитывая учебные образцы , параметры можно найти, минимизируя следующие цели:

А - настраиваемый параметр для члена регуляризации, а означает норму (𝑘 = 1,2) весового вектора. Эту проблему можно решить алгоритмами из [31].

Обучение усиленного классификатора

Мы подготовили усиленный каскад для локальных патчей из большого набора данных. Предположим, что есть 𝑁 учебных образцов и 𝐾 возможных локальных патчей, представленных 𝑑-мерными (= 32) SURF признаками x, каждый этап - это усиленная процедура обучения с логистической регрессией, такой как слабый классификатор. Существуют различные варианты алгоритмов ускорения для объединения слабых классификаторов. Мы обнаружили, что Gentle AdaBoost дает лучшие результаты по сравнению с другими вариантами [28].

Gentle AdaBoost считает, что базовый ученик соответствует функции регрессии над данными обучения и выводит реальные значения. Учитывая слабые классификаторы , сильный классификатор выглядит следующим образом:

В 𝑡-м раунде обучения мы построили K моделей логистической регрессии для каждого локального патча параллельно с подмножеством с расширенной выборкой. Мы тестировали каждую модель в сочетании с моделью предыдущих раундов 𝑡-1. То есть мы тестировали на всех примерах обучения.. Каждая тестируемая модель будет производить оценку AUC 𝐽 (). Мы выбрали тот, который производит самый высокий показатель AUC, т.е.:

Эта процедура повторяется до тех пор, пока оценка AUC сойдется или не будет достигнуто заданное количество итераций. Слабый классификатор обучается сбалансированным положительным и отрицательным примерами. Чтобы избежать переобучения, мы ограничили количество использованных примеров во время обучения, как в [8]. На практике мы отбирали активное подмножество из всего тренировочного набора в соответствии с повышением веса. Обычно полезно использовать около 30 × 𝑑 (если 𝑑 = 32, 30 × 𝑑 = 960) положительных образцов и столько же отрицательных образцов.

Вся процедура - предварительный выбор и включение слабых классификаторов в возможные локальные патчи. Проще расширить процедуру возможностью обратного удаления избыточных слабых классификаторов. Это не только сокращает количество слабых классификаторов на каждом этапе, но также позволяет улучшить возможности обобщения сильного классификатора. Для получения дополнительной информации о включении функции обратного удаления или даже возможности плавающего поиска в инфраструктуру форсирования см. [32]. В нашей реализации, для тренировки скорости распознавания, мы добавляем только возможность обратного удаления в Gentle AdaBoost. Подробная информация об усиленном алгоритме обучения приведена в таблице 1.

Таблица 1. Обучение усиленного классификатора для SURF каскада

  1. Установка тренировочного массива , где N - число примеров и K - число локальных патчей, - d-мерный SURF дескриптор для k-го локального патча.
  2. Инициализация весов положительных и негативных примеров. для и для
  3. For t = 1:T усиливающий этап
    1. Выбираются 30 × 𝑑 (𝑑 = 32 в 2 × 2 патча SURF) положительные примеры и 30 × 𝑑 негативные примеры из тренировочного набора, в соответствии с весом в качестве активного подмножества обучения
    2. Для каждого патча тренируется модель логистической регрессии
    3. Каждый патч объединяется с существующей моделью , и оценивается на всем тренировочном наборе для получения оценки AUC
    4. Выбирается наилучшая модель в соответствии с уравнением 2 для включения слабого классификатора
    5. Обновление весов
    6. Нормализация весов таким образом, что
    7. Вычисление на всей обучающей выборке для получения оценки AUC
    8. Если оценка AUC сходится, оборвать круг.
  4. While true, обратное удаление
    1. Найти , где значит, что исключает слабый
    2. Если на всем тренировочном наборе, установить , иначе оборвать круг.
  5. Вывести финальную сильную модель для этой стадии.

Тренировка каскада

Рисунок 1(f) - Число слабых классификаторов для каждого этапа обнаружения лица
Рисунок 1(b) - Накопленная скорость отбраковки на каскадных стадиях детектора лица
Рисунок 1(c) - Число слабых классификаторов на каждом этапе обнаружения машин.
Рисунок 1(d) - Накопленная скорость отбраковки на каскадных этапах детектора автомобиля
Рисунок 2(а) - Топ-3 локальных патча, выбранных по процедуре обучения в красно-зелено-синем порядке на лицевом объекте
Рисунок 2(b) - Топ-3 локальных патча, выбранных по процедуре обучения в красно-зелено-синем порядке на объекте автомобиля.

В течение одного этапа нам не нужно было устанавливать порог для промежуточных слабых классификаторов. Нам просто нужно определить порог решения сильного классификатора . В рамках VJ [1] [6] порог настраивается вручную на основе проверки, основанной на двух конфликтующих критериях, FPR и hit-rate. В нашем случае пороговое значение намного легче определить, поскольку кривая ROC постоянно доступна. С кривой ROC FPR легко определяется при заданной минимальной скорости . Мы уменьшили от 1,0 на кривой ROC до достижения точки перехода . Соответствующим порогом в этой точке является желаемый .

После того, как один этап сошелся, мы продолжили тренировать еще один этап с ложноположительными образцами, поступающими из сканирования нецелевых изображений с частично подготовленным каскадом. Мы повторили эту процедуру, пока общий FPR не достигнет цели. Алгоритм каскадного обучения приведен в таблице 2.

Таблица 2. Тренировка SURF каскада на основе анализа ROC-кривой

  • Вход: общий FPR ; минимальный hit-rate/стадия ; набор позитивных примеров ; набор негативных примеров
  • Инициализация
  • While
    1. Тренировать одноступенчатый классификатор , используя примеры из и в соответствии с алгоритмом, приведенным в Таблице 1.
    2. Оценить модель на всей обучающей выборке для получения ROC-кривой
    3. Выделить порог путем поиска по ROC-кривой для нахождения точки такой, что
    4. и
    5. Очистить набор
    6. If , принять текущий каскадный детектор для сканирования нецелевых изображений с помощью скользящего окна и помещать ложноположительные образцы в , пока
  • Вывести улучшенный каскадный детектор и общую точность обучения F и D.

В предлагаемом подходе FPR является адаптивным для разных этапов и обычно намного меньше 0,5. Например, мы получили 8-ступенчатый каскад для определения лица с на каждом этапе, образуя вектор, подобный . Для сравнения, для VJ-структуры требуется 20 этапов для достижения той же цели (FPR = ). Это означает, что каскадное обучение на основе AUC может сходиться намного быстрее. Это не только значительно уменьшит размер модели (например, моделирование 8-ступенчатого каскада составляет всего 50 КБ), но также значительно увеличит скорость обнаружения.

Эксперименты

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

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

Реализация

Мы реализовали все модули обучения и обнаружения в C/C++ на платформе x86. Для извлечения функции мы приняли интегральный вид изображения, чтобы ускорить вычисление, как описано в разделе 3.1. Для каскадного обучения мы распараллеливали длительный этап обучения слабым классификатором с OpenMP на уровне задач. Кроме того, мы оптимизировали SIMD на некоторых горячих точках, которые включают нормализацию вектора Hys для функций SURF, операцию dotproduct в логистической модели (т. е. ) и извлечение функции из упакованных 8-канальных интегральных изображений. Модуль обнаружения разделяет ту же оптимизацию SIMD с учебной частью.

Эксперименты по обучению и обнаружению проводились на персональной рабочей станции с процессором Core-i7 с частотой 3,2 ГГц (4 ядра 8 потоков SandyBridge) и 12 ГБ оперативной памяти.

Обнаружение лица

Обнаружение лица в анфас

Мы собрали учебные примеры из Интернета. Положительные примеры лиц в анфас брали в основном из набора данных GENKI [33], набора данных facetracer [34], набора данных FERET [35] и т.д. Мы отбрасывали лица размером менее 32 × 32 пикселя, и собрали 15 000 лиц в анфас из этих наборов данных. Мы также получили 15 000 лиц с зеркальным преобразованием и 15 000 выборок, случайным образом преобразуя изображение лица в пределах [-10, 10]. Все обрезанные и полученные лица изменяются до 40 × 40. Наконец, у нас было 45 000 положительных учебных образцов. Отрицательные изображения в основном представляют собой набор данных Caltech 101 [36], набор изображений Corel 5k и т. Д. Мы сделали некоторые уточнения по этому отрицательному набору, чтобы удалить изображения, содержащие лица. Всего мы собрали около 18 000 изображений без лиц.

Мы разместили 450 локальных патчей на шаблоне обнаружения 40 × 40, как описано в разделе 3.1. Мы устанавливаем максимальное количество слабых классификаторов на каждом этапе до 128. Чтобы получить быстрый детектор, мы установили, что первые 3 этапа имеют не более 4 слабых классификаторов. Мы устанавливаем минимальный показатель hit-rate на 0,995 для каждого этапа и общий FPR для каждого окна до . Учитывая это, процедура обучения полностью автоматическая. Потребовалось около 47 минут (2,841 секунд), чтобы функция сошлась на 8-й стадии. Во время обучения мы сканировали как оригинал, так и зеркало каждого негативного изображения с масштабируемым скользящим окном для получения ложноположительных примеров. В итоге обработано более 13,6 млрд. отрицательных примеров.

Для сравнения, мы попытались организовать детектор лица с помощью обучающих модулей OpenCV Haar на одном наборе данных. Однако мы не можем закончить обучение в течение 2 дней на том же компьютере, на котором настроена параллельная обработка. Это означает, что каскад SURF по крайней мере в 60 раз быстрее, чем каскад Хаара во время обучения. Кроме того, мы попытались заменить критерий AUC критериями VJ для управления каскадном признаков SURF, для обучения которого требуется более 5 часов. Этот эксперимент показывает, что критерий, основанный на AUC, приводит к ускорению обучения в 6 раз (5 часов по сравнению с 47 мин), тогда как представление SURF приносит 10-кратное ускорение.

Рисунок 1 (a) и 1 (b) иллюстрируют детали окончательного каскада, включая количество слабых на каждом этапе и накопленную скорость отбраковки на каскадных этапах. Это показывает, что первые три этапа отклоняют 98% отрицательных выборок только с 7 слабыми классификаторами. Каскадный детектор содержит 334 слабых классификатора, и нужно оценить 1,5 за окно. Напротив, детекторы лица на основе Haar по умолчанию в OpenCV содержат более 24 этапов и 2,912 слабых классификаторов и требуют оценки более 28 параметров Haar для каждого окна [17].


Далее на рисунке 2 (а) изображены верхние 3 выбранных локальных патча. Мы заметили, что лучший местный патч лежит в областях двух глаз. Это аналогично детектору Хаара [1].

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

Многофункциональный детектор лиц

Помимо детектора лиц в анфас, мы также разработали многофункциональный детектор лица с использованием предлагаемого подхода. Многофункциональный детектор представляет собой параллельную структуру с независимыми детекторами для каждого вида: фронтальный, левый / правый полупрофильные виды (около 40 ~ 60 градусов вне плоскости вращения на фронтальный вид) и левый / правый полный профиль (около 70 ~90 градусов вращения вне плоскости к фронтальному представлению). Детектор фронтального изображения такой же, как и предыдущий фронтальный детектор. Для примеров с частично полными / полными профилями данные обучения в основном основаны на базе данных CAS-PEAL [37], базе данных FERET [35] и базе данных CMU CMU [38]. Мы собрали 12 000 лиц в полупрофиле и 8 000 лиц в профиле. Обучение детектора для каждого вида следует той же процедуре, что и обучение детектора фронтального зрения.

Обнаружение лица

Мы оценили каскадный детектор SURF на двух общедоступных наборах данных: один - набор данных CMU + MIT, другой - набор данных UMass FDDB [39]

Стандартный набор CMU + MIT состоит из 130 серых изображений с 507 лицами в анфас. Поскольку каскад SURF может непосредственно выводить оценку вероятности (в диапазоне 0 ~ 1) на любом этапе, естественно определить оценку для каждого окна обнаружения , поскольку , где - количество пройденных этапов, а - вероятность на выходе. С этой оценкой мы строго соблюдали контрольный протокол, предложенный в [39], и генерировали кривую ROC, как показано на рисунке 3 (a). Сопоставимые результаты показаны для некоторых недавних работ по распознаванию лиц, таких как детектор VJ [29], детектор многоугольника [7], мягкий каскадный детектор [40] и каскадный детектор рециркуляции [15]. На рис. 3 (а) показано, что каскад SURF достигает сопоставимых характеристик с помощью «мягкого каскада» со стандартным методом [40], но превосходит все остальные методы.

Рисунок 3(а) - Кривые ROC для разных методов в наборе данных CMU + MIT
Рисунок 3(b) - Кривые ROC для разных методов набора данных UMass FDDB

Набор данных CMU + MIT немного устарел, поскольку он содержит только серые изображения с относительным низким разрешением, а размер набора данных слишком мал, чтобы отражать текущее положение дел. Следовательно, вводится контрольный показатель обнаружения UMAS (FDDB) [39]. FDDB содержит 2,845 изображений с общим количеством 5771 лиц в широком диапазоне условий. Кроме того, он обеспечивает систематический протокол для оценки эффективности системы обнаружения лиц. Рисунок 3 (b) Показывает кривую ROC с дискретной оценкой, генерируемую каскадом SURF, по сравнению с доступными результатами по эталону [41] [17] [26] [42]. Мы сравнили с нашим предыдущим алгоритмом [28], который использовал Discrete AdaBoost для ансамблевых классификаторов. Очевидно, что каскад SURF значительно превосходит другие, а Gentle AdaBoost лучше, чем Discrete AdaBoost для ансамблевых классификаторов. Кроме того, наш многооконный детектор дает значительное улучшение по сравнению с чистыми фронтальными детекторами лица. Дополнительно приведены некоторые примеры результатов распознавания лиц в CMU + MIT и UMAD FDDB.

Скорость распознавания

Мы использовали детектор лиц на видео для сбора данных о производительности. Фронтальный детектор достигает 100 кадров в секунду для типичного видео VGA с одним объектом в каждом кадре, в то время как детектор с множеством изображений может обрабатывать это видео в реальном времени. Для сравнения, детектор лица по умолчанию OpenCV может добиться 60 кадров в секунду при параллельной обработке. Как известно, детектор лица OpenCV предназначен для оптимизации скорости обработки.

Это связано с двумя фактами. Во-первых, каскадный детектор SURF имеет меньшее количество ступеней (8 против 24), меньшее количество слабых классификаторов (334 против 2,912) и меньшее среднее число оцененных слабых классификаторов на одно окно обнаружения (1,5 против 28), чем у детектора OpenCV Haar. Эти преимущества могут компенсировать одну слабость: вычисления на каждом слабом классификаторе выше, чем у детектора OpenCV. Во-вторых, каскад SURF выигрывает больше от оптимизации, чем каскад Хаара. 8-этапный каскад SURF имеет лучший баланс нагрузки на нагрузку среди потоков в распараллеливании, чем у 24-ступенчатого каскада Хаар. Кроме того, каскад SURF намного проще для оптимизации SIMD (т. е. в модели и т. д.).

Распознавание автомобилей

Для обнаружения автомобилей мы собрали 600 примеров изображений автомобилей с боковым видом из набора данных PASCAL VOC 2005 [43][44], содержащего подмножество UIUC и подмножество ETHZ. Кроме того, мы получили 600 выборок с зеркалами, 600 образцов с повторной дискретизацией (уменьшение дискретизации 10% с последующим повышением дискретизации 10%) и 1200 выборок со случайной перспективой, трансформирующихся в пределах ± 5 градусов и т. Д. Все обрезанные и полученные образцы автомобилей изменяются до 80 × 32 пикселей , Наконец, у нас было 4200 положительных учебных образцов. Отрицательные изображения собираются аналогично задаче обнаружения лица. В общей сложности, около 5000 негативных изображений без автомобилей для обучения.

На целевом шаблоне обнаружения 80 × 32 мы определили диапазон размера патча от 16 × 16 до 80 × 32 и разрешили следующие соотношения сторон паттерна: , и т.д. Всего мы разместили 502 локальных патча на шаблоне обнаружения. И мы настраиваем ту же конфигурацию обучения, что и для распознавания лиц. Потребовалось 27 минут (1,672 секунды), чтобы закончить тренинг с обработкой около 3,7 миллиарда отрицательных образцов.

Последний каскад содержит 10 этапов. Рисунок 1 (c) и 1 (d) иллюстрируют количество слабых классификаторов на каждом этапе и накопленную скорость отклонения по каскадным этапам. Графики показывают, что первые три этапа отклоняют 95% отрицательных примеров с 7 слабыми классификаторами. В среднем, детектору необходимо оценивать только 2.2 локальных SURF-патчей для каждого окна обнаружения. Мы показали верхние 3 локальных патча, выбранные алгоритмом обучения на рисунке 2 (b).

Набор тестов - 200 изображений из подмножества TUGRAZ в PASCAL VOC 2005 с автомобилями с боковым видом [43], которые содержат автомобили с разной шкалой и даже некоторые варианты точек обзора для бокового обзора. Мы запустили детектор на тестовом наборе и нашли 141 автомобиль и 18 ложных срабатываний. Таким образом, скорость обнаружения составляет 70%, тогда как FPPW составляет , а значение false-positive-per-image составляет 9%. Этот результат выглядит многообещающим, учитывая, что детектор обучен на низком качестве UIUC [44]. Скорость обнаружения на этом наборе данных (изображения с разрешением VGA) составляет около 56 кадров в секунду. Некоторые сложные результаты обнаружения показаны дополнительно.

Заключение

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

Мы сравнили каскадный детектор SURF с существующими алгоритмами по точности и скорости обнаружения. Эксперименты показывают, что каскад SURF демонстрирует результаты наравне с современными детекторами и значительно выигрывает в скорости обучения и обнаружения.

В будущей работе будут рассмотрены три момента: (1) другие возможные варианты SURF для дальнейшего улучшения точности обнаружения; (2) Применение подхода к задаче обнаружения других объектов, таких как обнаружение людей; (3) преобразование каскада SURF деформируемыми частичными моделями.


Ошибка цитирования Для существующих тегов <ref> группы «@:» не найдено соответствующего тега <references group="@:"/> или пропущен закрывающий тег </ref>
  1. 1,0 1,1 1,2 1,3 P. Viola and M. Jones. Rapid object detection using a boosted cascade of simple features. In CVPR, 2001.
  2. A. Sorokin and D. A. Forsyth. Utility data annotation with amazon mechanical turk. In CVPR Workshop, 2008.
  3. 3,0 3,1 3,2 P. Viola and M. Jones. Robust real-time face detection. IJCV, 57(2):137–154, 2004.
  4. S. Maji and A. C. Berg. Max-margin additive classifiers for detection. In ICCV, 2009
  5. 5,0 5,1 C. Zhang and Z. Zhang. A survey of recent advances in face detection. Technical Report MSR-TR-2010-66, Microsoft Research, 2010
  6. 6,0 6,1 6,2 Q. Zhu, S. Avidan, M.-C. Yeh, and K.-T. Cheng. Fast human detection using a cascade of histograms of oriented gradients. In CVPR, 2006
  7. 7,0 7,1 M.-T. Pham, Y. Gao, V. Hoang, and et al. Fast polygonal integration and its application in extending haar-like features to improve object detection. In CVPR, 2010.
  8. 8,0 8,1 8,2 R. Xiao, H. Zhu, H. Sun, and X. Tang. Dynamic cascades for face detection. In ICCV, 2007
  9. 9,0 9,1 L. Bourdev and J. Brandt. Robust object detection via soft cascade. In CVPR, 2005.
  10. 10,0 10,1 C. Zhang and Z. Zhang. A survey of recent advances in face detection. Technical Report MSR-TR-2010-66, Microsoft Research, 2010
  11. 11,0 11,1 J. Wu and et al. Fast asymmetric learning for cascade face detection. IEEE PAMI, 2008
  12. 12,0 12,1 12,2 H. Bay, A. Ess, T. Tuytelaars, and L. V. Gool. Surf: Speeded up robust features. CVIU, 110:346–359, 2008
  13. 13,0 13,1 13,2 13,3 N. Dalal and B. Triggs. Histograms of oriented gradients for human detection. In CVPR, 2005.
  14. B. McCane and K. Novins. On training cascade face detectors. Image and Vision Computing, 2003
  15. 15,0 15,1 15,2 15,3 S. Brubaker, J.Wu, J. Sun, and et al. On the design of cascades of boosted ensembles for face detection. IJCV, 2008.
  16. M.-T. Pham and T.-J. Cham. Fast training and selection of haar features during statistics in boosting-based face detection. In ICCV, 2007
  17. 17,0 17,1 17,2 R. Lienhart and J. Maydt. An extended set of haar-like features for rapid object detection. In ICIP, 2002
  18. T. Mita, T. Kaneko, and O. Hori. Joint haar-like features for face detection. In ICCV, 2005
  19. C. Huang, H. Ai, Y. Li, and S. Lao. Learning sparse features in granular space formulti-view face detection. In AFGR, 2006
  20. M.-T. Pham, Y. Gao, V. Hoang, and et al. Fast polygonal integration and its application in extending haar-like features to improve object detection. In CVPR, 2010
  21. 21,0 21,1 Q. Zhu, S. Avidan, M.-C. Yeh, and K.-T. Cheng. Fast human detection using a cascade of histograms of oriented gradients. In CVPR, 2006
  22. O. Tuzel, F. Porikli, and P. Meer. Region covariance: A fast descriptor for detection and classification. In ECCV, 2006.
  23. P. Long and R. Servedio. Boosting the area under the roc-curve. In NIPS, 2007.
  24. T. Fawcett. Roc graphs: Notes and practical considerations for researchers. Machine Learning, 2004.
  25. 25,0 25,1 P. Felzenszwalb, D.McAllester, and D. Ramanan. A discriminatively trained, multiscale, deformable part model. In CVPR, 2008
  26. 26,0 26,1 K. Mikolajczyk, C. Schmid, and A. Zisserman. Human detection based on a probabilistic assembly of robust part detectors. In ECCV, 2004
  27. P. Felzenszwalb, R. Girshick, and D. McAllester. Cascade object detection with deformable part models. In CVPR, 2010
  28. 28,0 28,1 28,2 J. Li, T. Wang, and Y. Zhang. Face detection using surf cascade. In ICCV workshop, 2011.
  29. 29,0 29,1 S. Winder and M. Brown. Learning local image descriptors. In CVPR, 2007
  30. I. Laptev. Improvements of object detection using boosted histograms. In BMVC, 2005.
  31. R.-E. Fan, K.-W. Chang, C.-J. Hsieh, X.-R. Wang, and C.- J. Lin. Liblinear: A library for large linear classification. JMLR, 2008.
  32. S. Li, Z. Zhang, and et al. Floatboost learning for classification. In NIPS, 2002
  33. http://mplab.ucsd.edu. The MPLab GENKI Database
  34. N. Kumar, P. N. Belhumeur, and S. K. Nayar. Facetracer: A search engine for large collections of images with faces. In ECCV, 2008
  35. 35,0 35,1 P. J. Phillips, H. Moon, P. J. Rauss, and S. Rizvi. The feret evaluation methodology for face recognition algorithms. IEEE TPAMI, 22:1090–1104, 2000
  36. L. Fei-Fei, R. Fergus, and P. Perona. Learning generative visual models from few training examples: an incremental bayesian approach tested on 101 object categories. In CVPR workshop, 2004
  37. W. Gao, B. Cao, S. Shan, X. Chen, D. Zhou, X. Zhang, and D. Zhao. The cas-peal large-scale chinese face database and baseline evaluations. IEEE Trans. SMC-A, 38:149–161, 2008
  38. T. Sim and S. Baker. The cmu pose, illumination, and expression (pie) database. In FG, 2002
  39. 39,0 39,1 39,2 V. Jain and E. Learned-Miller. Fddb: A benchmark for face detection in unconstrained settings. Technical Report UM-CS-2010-009, UMass, 2010. http://vis-www.cs.umass.edu/fddb/.
  40. 40,0 40,1 L. Bourdev and J. Brandt. Robust object detection via soft cascade. In CVPR, 2005..
  41. V. Subburaman and S. Marcel. Fast bounding box estimation based face detection. In ECCV workshop, 2010.
  42. V. Jain and E. Learned-Miller. Online domain adaptation of a pre-trained cascade of classifiers. In CVPR, 2011.
  43. 43,0 43,1 M. Everingham, L. V. Gool, C. K. I. Williams, J. Winn, and A. Zisserman. The pascal visual object classes (voc) challenge. IJCV, 88(2):303–338, 2010.
  44. 44,0 44,1 S. Agarwal, A. Awan, and D. Roth. Learning to detect objects in images via a sparse, part-based representation. IEEE TPAMI, 26(11):1475–1490, 2004. 7.