Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Воган Ли - Python для хакеров (Библиотека программиста) - 2023.pdf
Скачиваний:
5
Добавлен:
07.04.2024
Размер:
14.76 Mб
Скачать

9

Как различить своих и чужих

Обнаружение лиц — это технология машинного обу­

чения (МО), которая находит человеческие лица на

цифровых изображениях. Это первый этап еще одного

метода МО — распознавания отдельных лиц. Методы

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

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

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

Обнаружение лиц на фотографиях

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

Паттерны можно извлекать, используя шаблоны, подобные приведенным на рис. 9.2. В результате мы получаем так называемые признаки Хаара. Это

Обнаружение лиц на фотографиях      265

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Л

Г а а

 

Г а а

Рис. 9.1. Примеры некоторых светлых и темных участков лица

Рис. 9.2. Пример шаблонов признаков Хаара

В середине изображения на рис. 9.1 шаблон «граничного признака» демонстрирует связь между темными глазами и светлыми щеками. На крайнем правом изображении того же рисунка шаблон «линейного признака» показывает связь между темными глазами и светлым носом.

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

Для его применения алгоритм использует технику скользящего окна. Небольшая прямоугольная область инкрементно перемещается вдоль изображения и оценивается при помощи каскадного классификатора, состоящего из нескольких