Конспект лекций по распознаванию образов

Как решить проблему распознавания лиц с помощью классического машинного обучения

Алгоритм Виолы-Джонса

Это конспекты лекции FAU на YouTube Распознавание образов. Это полная стенограмма видео лекции и соответствующие слайды. Исходники слайдов доступны здесь. Надеемся, вам понравится это не меньше, чем видео. Эта стенограмма была почти полностью сгенерирована машиной с использованием AutoBlog, и в нее были внесены лишь незначительные изменения вручную. Если вы заметили ошибки, сообщите нам об этом!

Навигация

Предыдущая глава / Посмотреть это видео / Верхний уровень

С возвращением в раздел "Распознавание образов". Сегодня мы хотим получить последнее видео нашей лекции, и мы действительно хотим изучить приложение Adaboost, и это будет алгоритм Виолы-Джонса, который был опубликован в 2001 году.

Итак, алгоритм Виолы-Джонса действительно известен тем, что решил проблему обнаружения лиц. Он использует интегральные изображения для вычисления функций и использует Adaboost для фактической классификации. Затем строится каскад классификаторов для быстрого отбрасывания нефазовых областей. Доступны различные реализации. Например: в OpenCV образец фазового детектора фактически реализует Adaboost.

Итак, как работают функции? Что ж, они построены на основе жестких базовых функций. Если вы посещали введение в распознавание образов, вы их уже знаете. Затем вы вычисляете их путем вычитания суммы пикселей в белом из суммы пикселей в серых прямоугольниках. Используются четыре различных типа функций: слева направо, сверху вниз, затем по центру по бокам и этот вид нашивки в виде шахматной доски.

Теперь, чтобы сделать это очень быстро, набор функций действительно велик. Итак, если вы посмотрите на это, у вас будет более 45000 функций для изображения размером 380x280. Поэтому характеристики прямоугольника необходимо вычислять очень эффективно. Это делается с использованием интегральных изображений, а интегральное изображение, обозначенное здесь II, по существу, возвращает интеграл по прямоугольнику в верхнем левом углу. Теперь, если вы хотите вычислить произвольные интегралы в исходном изображении из интегрального изображения, вы можете использовать следующий трюк:

Итак, у нас здесь четыре региона. A, B, C и D, и тогда у нас есть значения из интегрального изображения. Таким образом, значение в единице является в точности интегралом по A. Значение 2 является интегралом по A плюс B. Значение в 3 является интегралом по A плюс C, а значение в 4 является интегралом по A плюс B плюс C плюс D. По сути, это означает, что вы можете вычислить интеграл в D как четыре плюс один минус два плюс три. Таким образом, вы, по сути, вычитаете A два раза. Вот почему вам нужно добавить его один раз, чтобы очень быстро вычислить этот интеграл от D. Таким образом, вы можете вычислить любой прямоугольный интеграл в исходном изображении, просто используя сложение и вычитание четырех значений из интегрального изображения.

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

Тогда более слабый классификатор состоит из признака Xj, оптимального порога θj и четности Sj, чтобы указать направление неравенства. Итак, у нас есть очень простые классификаторы, которые по сути просто оценивают порог и четность, а здесь x является подокном изображения. Таким образом, это очень агрессивный процесс отказа от подавляющего большинства функций, который позволяет вам построить такой каскад повышения.

Интересно, что затем вы можете взглянуть на лучшие функции, выбранные здесь AdaBoost, и это работа моего коллеги Кристиана Хакера. Вы видите, что практически всегда выбирается одна особенность - это заплатка над глазами и носом. Вы просто вычитаете два интегральных изображения, и это уже очень хороший предсказатель для лиц. Тогда, конечно, вам понадобятся дополнительные классификации, чтобы действительно убедиться, что это лица. Но это лучшая функция, которую выбирает AdaBoost. Так что очень интересно, что у нас также есть эта прекрасная интерпретация.

Теперь мы построили этот каскад классификаторов, и это означает, что мы должны оценивать разные функции на каждом этапе этого процесса повышения, и, как только у нас есть неправильная классификация, это не этап, на котором мы просто прекращаем следить за этой конкретной позицией, и это позволяет нам классифицировать очень быстро. Таким образом, вы не хотите оценивать полную последовательность AdaBoost во всех подокнах изображения, и вы просто садитесь на борт после того, как найдете отрицательный пример. Таким образом, эта простая классификация используется для отклонения большинства вложенных окон, и когда вы создаете ее, каждый этап снова создается AdaBoost. На первом этапе в основном используются две функции, показанные ранее, и обнаруживается 100% лиц с вероятностью ложных срабатываний около 40%.

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

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

Итак, в последнем классификаторе, который мы хотим здесь продемонстрировать, у нас есть 32-слойный каскад все более сильного усиленного классификатора. На первом уровне у вас есть только две функции, а на втором уровне у вас есть пять функций, а затем постепенно количество функций увеличивается, потому что у вас меньше образцов, которые вам действительно нужно обрабатывать. Так что вы сможете проводить там больше времени. Таким образом, количество этапов и функций адаптируется до тех пор, пока количество ложных срабатываний на проверочных данных не станет почти нулевым, при сохранении высокого уровня правильности.

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

Итак, здесь вы можете увидеть, как смартфон распознает пользователя, смотрит ли он на самом деле в камеру или смотрит в сторону от камеры. Фактически это результат исследовательского проекта Smartweb.

Итак, какие уроки мы извлекли из этого: усиление слабых классификаторов может дать мощные комбинированные классификаторы? Кстати, бустинг тоже оказался очень успешным с годами. Знаменитая задача Netflix, наконец, была решена с помощью ансамблевой техники, такой как повышение. Итак, мы представили алгоритм AdaBoost и изучили его математические детали, связав его с экспоненциальной функцией потерь. Мы видели, что веса классификатора и данных корректируются во время обучения. Мы видим, что такая система классификации была использована в алгоритме распознавания лиц Виолы и Джона.

Конечно, у меня есть для вас еще кое-что. Снова Элементы статистического обучения, затем общий документ по ускорению и, конечно, вклад Виолы и Джонса в международный журнал компьютерного зрения для надежного обнаружения лиц в реальном времени, который был чрезвычайно популярным методом и применялся во многих системах по порядку. для обнаружения лиц. Кроме того, есть прекрасное введение в алгоритм AdaBoost, который был создан техническим университетом в Праге центром машинного восприятия. Надеюсь, вам понравилась эта небольшая серия лекций. Это уже конец нашей лекции, и я думаю, что вы получили очень хорошую основу по фундаментальным темам распознавания образов и машинного обучения. Вы узнали о сильной связи оптимизации с выпуклыми задачами и о том, что мы видим, что если мы решаем выпуклые задачи, мы также можем получить глобальные минимумы. Но вы также видите фундамент для многих других тем, так что теперь вы можете идти дальше и изучать, например, такие вещи, как глубокое обучение или, также, другие классы, которые мы преподаем, например, у нас также есть очень хорошие классы по обработке медицинских изображений. . Так что, если вы думаете о карьере в области распознавания образов, вы также можете подумать о присоединении к нашим группам в Facebook и LinkedIn. Затем мы регулярно публикуем информацию о дополнительных исследовательских ресурсах, предложениях работы и т. Д. У нас также есть различные научные доклады, на которые вы можете присутствовать, и было бы здорово встретиться с вами в какой-то момент в будущем. Так что большое спасибо за внимание и до свидания.

Если вам понравился этот пост, вы можете найти больше эссе здесь, больше образовательных материалов по машинному обучению здесь или взглянуть на нашу Лекцию Глубокое обучение. Я также был бы признателен за подписку на YouTube, Twitter, Facebook или LinkedIn, если вы хотите получать информацию о новых эссе, видео и исследованиях в будущем. Эта статья выпущена под лицензией Creative Commons 4.0 Attribution License и может быть перепечатана и изменена при наличии ссылки. Если вас интересует создание стенограмм видеолекций, попробуйте Автоблог.

использованная литература

  1. Т. Хасти, Р. Тибширани, Дж. Фридман: Элементы статистического обучения, 2-е издание, Springer, 2009.
  2. Ю. Фройнд, Р. Э. Шапир: теоретико-решающее обобщение онлайн-обучения и приложение для повышения квалификации, Журнал компьютерных и системных наук, 55 (1): 119–139, 1997.
  3. П. А. Виола, М. Дж. Джонс: Надежное обнаружение лиц в реальном времени, Международный журнал компьютерного зрения 57 (2): 137–154, 2004.
  4. Я. Матас и Й. Шохман: AdaBoost, Центр машинного восприятия, Технический университет, Прага. ☞ http://cmp.felk.cvut.cz/~sochmj1/adaboost_talk.pdf