Среда обнаружения объектов Виолы – Джонса - это среда обнаружения объектов, предложенная в 2001 году Полом Виолой и Майклом Джонсом . [1] [2] Хотя его можно обучить обнаруживать различные классы объектов, в первую очередь он был мотивирован проблемой распознавания лиц .
Описание проблемы
Решаемая проблема - обнаружение лиц на изображении. Человек может сделать это легко, но компьютеру нужны точные инструкции и ограничения. Чтобы сделать задачу более управляемой, Виола – Джонс требует, чтобы лица стояли прямо в полный обзор. Таким образом, чтобы быть обнаруженным, все лицо должно быть направлено в сторону камеры и не должно быть наклонено в какую-либо сторону. Хотя кажется, что эти ограничения могут несколько снизить полезность алгоритма, поскольку за этапом обнаружения чаще всего следует этап распознавания, на практике эти ограничения по позе вполне приемлемы.
Компоненты каркаса
Типы функций и оценка
Характеристики алгоритма Виолы – Джонса, которые делают его хорошим алгоритмом обнаружения, следующие:
- Надежный - очень высокий уровень обнаружения (истинно-положительный результат) и всегда очень низкий уровень ложных срабатываний.
- В реальном времени - для практических приложений необходимо обрабатывать не менее 2 кадров в секунду.
- Только распознавание лиц (не распознавание) - цель состоит в том, чтобы отличить лица от лиц, не являющихся лицами (обнаружение - это первый шаг в процессе распознавания).
Алгоритм состоит из четырех этапов:
- Выбор функций Хаара
- Создание целостного образа
- Adaboost Обучение
- Каскадные классификаторы
Признаки, которые требуются каркасу обнаружения, обычно включают в себя суммы пикселей изображения в прямоугольных областях. По сути, они имеют некоторое сходство с базисными функциями Хаара , которые ранее использовались в области обнаружения объектов на основе изображений. [3] Однако, поскольку все функции, используемые Виолой и Джонсом, основаны на более чем одной прямоугольной области, они, как правило, более сложные. На рисунке справа показаны четыре различных типа функций, используемых во фреймворке. Значение любой данной функции - это сумма пикселей в чистых прямоугольниках, вычтенная из суммы пикселей в затененных прямоугольниках. Прямоугольные элементы такого типа примитивны по сравнению с такими альтернативами, как управляемые фильтры . Хотя они чувствительны к вертикальным и горизонтальным особенностям, их обратная связь значительно грубее.
Особенности Хаара
Все человеческие лица обладают некоторыми схожими свойствами. Эти закономерности можно сопоставить с помощью функций Хаара .
Несколько свойств, общих для человеческих лиц:
- Область глаз темнее щек.
- Область переносицы ярче глаз.
Состав свойств, формирующих согласованные черты лица:
- Расположение и размер: глаза, рот, переносица.
- Значение: ориентированные градиенты яркости пикселей
Затем на изображении лица (показано справа) ищутся четыре характеристики, соответствующие этому алгоритму.
Особенности прямоугольника:
- Значение = Σ (пиксели в черной области) - Σ (пиксели в белой области)
- Три типа: двух-, трех-, четырехугольники, Виола и Джонс использовали двухпрямоугольники.
- Например: разница в яркости между белым и черным прямоугольниками в определенной области.
- Каждая функция связана с определенным местом в подокне.
Таблица суммированных площадей
Представление изображения, называемое интегральным изображением, оценивает прямоугольные элементы за постоянное время, что дает им значительное преимущество в скорости по сравнению с более сложными альтернативными функциями. Поскольку прямоугольная область каждого объекта всегда смежна по крайней мере с одним другим прямоугольником, отсюда следует, что любой двухпрямоугольный объект может быть вычислен в шести ссылках на массив, любой трехпрямоугольный объект в восьми и любой четырехугольный объект в девяти.
Алгоритм обучения
Однако скорость, с которой могут быть оценены характеристики, не может адекватно компенсировать их количество. Например, в стандартном подокне размером 24x24 пикселя имеется всего M = 162 336 [4] возможных функций, и было бы непомерно дорого оценивать их все при тестировании изображения. Таким образом, структура обнаружения объектов использует вариант алгоритма обучения AdaBoost как для выбора лучших функций, так и для обучения классификаторов, которые их используют. Этот алгоритм строит «сильный» классификатор как линейную комбинацию взвешенных простых «слабых» классификаторов.
Каждый слабый классификатор - это пороговая функция, основанная на признаке. .
Пороговое значение и полярность определяются при обучении, а также коэффициенты .
Здесь представлена упрощенная версия алгоритма обучения: [5]
Исходные данные: набор из N положительных и отрицательных обучающих изображений с их метками.. Если изображение i - это лицо, если не .
- Инициализация: присвоить вес к каждому изображению i .
- Для каждой функции с участием
- Перенормируйте веса так, чтобы они равнялись единице.
- Примените функцию к каждому изображению в обучающем наборе, затем найдите оптимальный порог и полярность. что минимизирует взвешенную ошибку классификации. Это где
- Назначьте вес к что обратно пропорционально частоте ошибок. Таким образом считается больше лучших классификаторов.
- Веса для следующей итерации, т. Е. , уменьшаются для изображений i, которые были правильно классифицированы.
- Установите последний классификатор на
Каскадная архитектура
- В среднем только 0,01% всех подокон положительные (лица)
- Равное время вычислений тратится на все подокна
- Большую часть времени следует тратить только на потенциально положительные подокна.
- Простой классификатор с двумя объектами может достичь почти 100% -ного уровня обнаружения с 50% -ной частотой FP.
- Этот классификатор может действовать как 1-й уровень в серии, чтобы отфильтровать большинство негативных окон.
- 2-й слой с 10 функциями может справиться с «более сложными» негативными окнами, которые пережили 1-й слой, и так далее ...
- Каскад постепенно усложняющихся классификаторов обеспечивает еще более высокие показатели обнаружения. Оценка сильных классификаторов, сгенерированных в процессе обучения, может выполняться быстро, но этого недостаточно для выполнения в реальном времени. По этой причине сильные классификаторы расположены в каскаде в порядке сложности, где каждый последующий классификатор обучается только на тех выбранных выборках, которые проходят через предыдущие классификаторы. Если на любом этапе каскада классификатор отклоняет проверяемое подокно, дальнейшая обработка не выполняется и продолжается поиск следующего подокна. Таким образом, каскад имеет форму вырожденного дерева. В случае лиц первый классификатор в каскаде, называемый оператором внимания, использует только две функции для достижения примерно 0% ложноотрицательных и 40% ложных срабатываний. [6] Эффект от использования этого единственного классификатора заключается в сокращении примерно вдвое количества вычислений всего каскада.
При каскадировании каждый этап состоит из сильного классификатора. Таким образом, все функции сгруппированы в несколько этапов, где каждый этап имеет определенное количество функций.
Задача каждого этапа - определить, действительно ли данное подокно не является лицом или может быть лицом. Данное подокно немедленно отбрасывается как не лицо, если оно выходит из строя на любом из этапов.
Ниже приводится простая структура для каскадного обучения:
- f = максимально допустимая частота ложных срабатываний на слой.
- d = минимально допустимая частота обнаружения для каждого слоя.
- Ftarget = целевая общая частота ложных срабатываний.
- P = множество положительных примеров.
- N = набор отрицательных примеров.
F (0) = 1,0; D (0) = 1,0; я = 0пока F (i)> Fцелевое увеличение i n (i) = 0; F (я) = F (я-1) в то время как F (i)> f × F (i-1) увеличивает n (i) используйте P и N для обучения классификатора с n (i) функциями с помощью AdaBoost Оценить текущий каскадный классификатор на проверочном наборе для определения F (i) и D (i) уменьшите порог для i-го классификатора (т.е. сколько слабых классификаторов необходимо принять, чтобы сильный классификатор принял), пока текущий каскадный классификатор не будет иметь скорость обнаружения не менее d × D (i-1) (это также влияет на F (i)) N = ∅ если F (i)> Ftarget, то оценить текущий каскадный детектор на наборе изображений без лица и помещаем все ложные срабатывания в набор N.
Каскадная архитектура имеет интересные последствия для производительности отдельных классификаторов. Поскольку активация каждого классификатора полностью зависит от поведения его предшественника, частота ложных срабатываний для всего каскада составляет:
Аналогичным образом степень обнаружения составляет:
Таким образом, чтобы соответствовать количеству ложных срабатываний, обычно достигаемому другими детекторами, каждый классификатор может уйти с удивительно низкой производительностью. Например, для 32-стадии каскада с для достижения ложных срабатываний от 10 - 6 , каждый классификатор должен только достичь ложных срабатываний около 65%. В то же время, однако, каждый классификатор должен обладать исключительными возможностями для достижения адекватных показателей обнаружения. Например, для достижения уровня обнаружения около 90% каждому классификатору в вышеупомянутом каскаде необходимо достичь уровня обнаружения около 99,7%. [7]
Использование Виолы – Джонса для отслеживания объектов
В видеороликах с движущимися объектами нет необходимости применять обнаружение объекта к каждому кадру. Вместо этого можно использовать алгоритмы отслеживания, такие как алгоритм KLT, для обнаружения характерных особенностей в пределах границ обнаружения и отслеживания их перемещения между кадрами. Это не только улучшает скорость отслеживания, устраняя необходимость повторного обнаружения объектов в каждом кадре, но также повышает надежность, поскольку основные функции более устойчивы, чем структура обнаружения Виолы-Джонса, к вращению и фотометрическим изменениям. [8]
Рекомендации
- ^ Быстрое обнаружение объектов с помощью усиленного каскада простых функций
- ^ Виола, Джонс: Надежное обнаружение объектов в реальном времени, IJCV 2001 См. Стр . 1,3.
- ^ К. Папагеоргиу, М. Орен и Т. Поджио. Общая структура для обнаружения объектов. Международная конференция по компьютерному зрению , 1998 г.
- ^ "Обнаружение лица Виолы-Джонса утверждает, что 180k особенностей" . stackoverflow.com . Проверено 27 июня 2017 .
- ^ Р. Селиски, Компьютерное зрение, алгоритмы и приложения , Springer
- ^ Виола, Джонс: Надежное обнаружение объектов в реальном времени, IJCV 2001 См. Стр. 11.
- ^ Торберт, Шейн (2016). Прикладная информатика (2-е изд.). Springer. С. 122–131.
- ^ Обнаружение и отслеживание лиц с использованием алгоритма KLT
Внешние ссылки
- Слайды, представляющие структуру
- Информация о базисных функциях Хаара
- Расширение структуры Виолы – Джонса с помощью функции SURF
- IMMI - Rapidminer Image Mining Extension - инструмент с открытым исходным кодом для интеллектуального анализа изображений
- Надежное обнаружение лица в реальном времени
- Улучшенный алгоритм детектора объектов Виолы-Джонса
- Цитирование алгоритма Виолы – Джонса в Google Scholar
- Видео-лекция по алгоритму Виолы – Джонса на YouTube - объяснение Adaboost из ppt Цин Чена, Discovery Labs, Университет Оттавы и видео-лекция Рамсри Гаутэма.
Реализации
- Реализация алгоритма распознавания лиц Виолы – Джонса, автор Оле Хельвиг Йенсен
- MATLAB: [1] , [2]
- OpenCV: реализован как
cvHaarDetectObjects()
.