Для человека различение объектов на изображении — простая задача. Однако для компьютерной программы обнаружение определенных объектов на изображении может оказаться сложной задачей. Компьютер должен использовать некоторые функции изображения, чтобы собирать информацию об объектах на изображении. Затем обучите программу с помощью некоторого механизма обучения этим функциям. Наконец, когда дается невиданное ранее изображение, необходимо провести какое-то сопоставление/классификацию. Поэтому потребность в фреймворке очевидна. Одним из популярных решений является обнаружение объектов Виолы-Джонса. Это фреймворк, разработанный Полом Виолой и Майклом Джонсом. Хотя фреймворк относительно медленно обучается, он может быстро и точно обнаруживать объекты. Более того, он очень хорошо работает для обнаружения человеческих лиц и может делать это в режиме реального времени. Это делает Viola-Jones надежным алгоритмом для обнаружения лиц в видеозаписях в реальном времени (например, с веб-камер и камер видеонаблюдения).

Обнаружение объектов Виолы-Джонса состоит из 4 этапов:

  1. Выбор функций типа Хаара
  2. Создание цельного образа
  3. Запуск тренировки AdaBoost
  4. Создание каскадов классификаторов

Чтобы понять, как работают процедуры, нужно знать, к чему приводит каждый шаг.

Шаг 1. Выбор функций Хаара. Признаки Хаара — это признаки цифрового изображения. В частности, они рассчитывают интенсивность изображения, то есть светлые и темные пиксели. Это делается с помощью окна обнаружения, которое представляет собой определенную область (обычно прямоугольную) на изображении, как показано на диаграмме ниже. Вычисляется сумма этих окон, полученная путем вычитания суммы пикселей под белым прямоугольником из суммы пикселей под черным прямоугольником. Наконец, разделы классифицируются с использованием разницы между суммами окон.

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

Шаг 2. Создание целостного образа. Интегральное изображение дает быстрый и простой способ расчета значения любой функции, подобной Хаару. Это делается с помощью таблицы суммированных площадей. Значение местоположения (x, y) на интегральном изображении представляет собой сумму пикселей выше и левее (x, y) на исходном изображении плюс само себя. Например, снизу вычислить (2,2) = 16: 5+2+3+6 = 16.

После построения интегрального изображения оно используется для эффективного вычисления суммы темных/светлых прямоугольных областей в алгоритме Виолы-Джонса. Это делается путем суммирования (см. диаграмму ниже) угловых пикселей нужного окна.

Чтобы получить сумму синего прямоугольника, просто добавьте зеленые значения и вычтите красные значения в интегральном изображении. 1+21–11–3 = 8.

Шаг 3. Запуск обучения AdaBoost. AdaBoost, то есть алгоритм Adaptive Boosting, представляет собой модель обучения и прогнозирования ML, которая определяет лучшие функции. Это делается с помощью информации о наборе обучающих данных. Алгоритм устанавливает минимальный порог для определения полезной функции. Результатом является классификатор. Этот «сильный» классификатор состоит из множества «слабых» классификаторов. Чтобы найти эти слабые классификаторы, алгоритм выполняет N итераций. При выборе N нужно быть осторожным, чтобы не перетренировать классификатор. Это делается, когда модель хорошо предсказывает обучающие примеры, но не может точно предсказать ранее невиданные данные. Во избежание перетренированности N не должно быть большим числом.

Шаг 4, создание каскадов классификатора. Выше было отмечено, что сильный классификатор состоит из множества слабых классификаторов. Здесь этот сильный классификатор превращается в каскад. Имея множество этапов, каждый этап состоит из слабого классификатора. Имея эту цепочку этапов, он может эффективно тестировать наше изображение/подизображение. Это связано с тем, что задача каждого этапа — определить, нет ли лица в данном окне или, может быть, оно есть. Выход всегда будет «нет» или «может быть». Если «нет», окно отбрасывается, и ему не нужно проходить дальнейшие уровни. Если «возможно», вызывается следующий классификатор, и процесс повторяется до тех пор, пока не будет завершен последний этап. Это гораздо более экономичная и быстрая процедура, так как многие окна будут быстро выброшены.

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