В статье автор исследует эффективность хэш-метода при сравнении человеческих лиц на фотографиях с применением библиотеки OpenCV и языка программирования Python. Предложены критерии сравнения лиц хэш-методом и проанализированы ограничения его применимости.
Ключевые слова: лицо, сравнение, компьютерное зрение, каскад Хаара, хэш-метод, библиотека OpenCV
Технологии распознавания лиц на фотографиях широко применяются в различных сферах, включая безопасность, здравоохранение, торговлю и образование. На основе анализа лицевых характеристик данные технологии позволяют идентифицировать личность человека, используя алгоритмы машинного обучения [2].
Выбор максимально эффективного алгоритма распознавания лиц на фото и видео является актуальной проблемой. Одним из направлений ее решения выступает технология «компьютерного зрения», реализованная в наборе методов библиотеки OpenCV. Для обнаружения лиц на фото данная библиотека использует метод машинного обучения, получивший название «каскад Хаара» в честь венгерского математика Альфреда Хаара (1885–1933), исследователя геометрических структур, на которых построен данный алгоритм.
Целью данной работы являлось исследование эффективности хэш-метода при сравнении человеческих лиц на фотографиях с применением библиотеки OpenCV и языка программирования Python.
Функция Хаара равна средневзвешенной сумме яркостей пикселей разнотипных подобластей. Превышение этой суммой установленного порога указывает на присутствие объекта. Примитивы разных размеров и форм фиксируют его особенности: форму, контуры, расстояние до других объектов и т. д. При распознавании лиц фото «прогоняется» через многоуровневую систему фильтров, каждый из которых обучен искать определенную деталь (подбородок, глаза, брови, нос, рот и т. д.). В результате каскадной фильтрации все обнаруженные на фото объекты будут разделены на «лица» и «не лица» [5].
В 1999 г. компания Intel создала библиотеку OpenCV с открытым исходным кодом для работы с алгоритмами «компьютерного зрения», машинного обучения и обработки изображений. Файлы каскадов мы скачивали с сервиса GitHub [3]. Сравнивая работу фронтальных каскадов при распознавании лиц на фотографиях, мы установили, что максимальную эффективность показал каскад alt2 (97 %). Он и был выбран для распознавания лиц в данном исследовании.
Хэш изображения (перцептивный хэш) — это представление изображения в виде короткого битового числа фиксированной длины. Процесс вычисления хэша состоит из следующих этапов.
- Предварительная обработка изображения: загрузка, преобразование в оттенки серого, распознавание лица, определение его границ, вырезание по этим границам фрагмента прямоугольной формы, стандартизация его размера и бинаризация.
- Выполнение вычислений: подготовленное изображение сканируется по одному пикселю в направлении сверху вниз слева направо. Если пиксель белый (яркость 255), в хэш-вектор записывается цифра «1», если черный (яркость 0) — цифра «0». В итоге получается последовательность единиц и нулей длиной w x h символов, где w и h — размер изображения по горизонтали и вертикали соответственно [1].
Алгоритм сравнения лиц был реализован в виде программы «Hash» на языке Python [4]. С помощью программы мы провели сравнение лиц на 10-ти тестовых наборах фотографий, подобранных по различным принципам. Каждый тестовый набор включал в себя 3 фото, из которых 1-е фото попарно сравнивалось со 2-м и с 3-м. При этом по относительной разности хэшей вычислялся процент совпадения изображений.
На всех фотографиях наборов № № 1–2 — один и тот же человек. В набор № 1 включены фото актера Киану Ривза примерно в одном и том же возрасте. В наборе № 2 — фото актера Сергея Безрукова в юности, в детстве и в настоящее время.
Наборы № № 3–7 составлены по принципу: на фото № 1 и фото № 2 — один и тот же человек, на фото № 3 — человек похожей внешности. В наборах № № 3, 4, 7 — фото людей европеоидной внешности (актер Леонардо ди Каприо и сотрудник МЧС России Роман Бурцев, актрисы Кира Найтли и Натали Портман, актриса Милла Йовович и ее дочь Эвер Андерсон), в наборе № 5 — монголоидной (южнокорейские актеры Ким Мин Джэ и Ё Чжин Гу), в наборе № 6 — негроидной (актеры Дензел Вашингтон и Деннис Хейсберт). В наборах № № 3–6 — фото людей примерно одного возраста. В наборе № 10 на фото № 1 и фото № 2 — актриса Милла Йовович в детстве и в настоящее время, на фото № 3 — ее старшая дочь Эвер Андерсон в детстве.
На всех фотографиях наборов № № 8–10 — три разных человека. В наборе № 8 — фото близнецов-тройняшек Эльназ, Таназ и Гульназ Хаккак. В наборе № 9 — фото актрисы Мэрилин Монро и сыгравших ее в двух разных байопиках актрис Мишель Уильямс и Анны де Армас. В наборе № 10 — фото актрис Киры Найтли, Натали Портман и Вайноны Райдер.
Результаты тестирования приведены в таблице 1.
Таблица 1
Результаты тестирования хэш-метода сравнения лиц
Фото № 1 |
Сравнение № 1 / № 2 |
Сравнение № 1 / № 3 | ||
Фото № 2 |
Совпадение изображений |
Фото № 3 |
Совпадение изображений | |
К. Ривз |
К. Ривз |
88,39 % |
К. Ривз |
81,01 % |
С. Безруков (в юности) |
С. Безруков (в детстве) |
51,88 % |
С. Безруков (сейчас) |
63,45 % |
Л. ди Каприо |
Л. ди Каприо |
79,38 % |
Р. Бурцев |
63,00 % |
К. Найтли |
К. Найтли |
86,00 % |
Н. Портман |
79,08 % |
Ким Мин Джэ |
Ким Мин Джэ |
73,70 % |
Ё Чжин Гу |
68,07 % |
Д. Вашингтон |
Д. Вашингтон |
75,21 % |
Д. Хейсберт |
57,34 % |
М. Йовович (в детстве) |
М. Йовович (сейчас) |
77,91 % |
Э. Андерсон (в детстве) |
82,74 % |
Э. Хаккак |
Т. Хаккак |
90,21 % |
Г. Хаккак |
85,10 % |
М. Монро |
М. Уильямс |
76,25 % |
А. де Армас |
74,51 % |
К. Найтли |
Н. Портман |
57,75 % |
В. Райдер |
55,34 % |
Анализ полученных данных позволяет сделать следующие выводы.
1. При сравнении лиц на фотографиях хэш-методом можно предложить следующие критерии:
- при совпадении хэшей более чем на 80 % высока вероятность того, что на сравниваемых фото — один и тот же человек;
- при совпадении хэшей менее чем на 60 % наиболее вероятно, что на фотографиях — разные люди;
- интервал 60–80 % можно отнести к спорным значениям, когда для окончательного вывода потребуется дополнительное исследование.
2. Применение хэш-метода в сравнении лиц имеет определенные ограничения:
— разный возраст людей, лица которых нужно сравнить;
— мелкие черты лица (узкие глаза, нос и губы);
— родственные отношения (генетическое сходство близнецов, наследственное сходство родителей и детей);
— макияж и грим (особенно профессиональный), заметно корректирующие черты лица.
Тем не менее, выбрав оптимальный каскад Хаара для распознавания лиц и соблюдая указанные выше ограничения, можно добиться высокой эффективности хэш-метода при сравнении лиц с применением библиотеки «компьютерного зрения» OpenCV.
Литература:
1. Валишин, А. А. Моделирование и сравнительный анализ эффективности перцептивных хэш-функций для поиска сегментированных изображений / А. А. Валишин, А. В. Запривода, С. С. Цухло. — Текст: непосредственный // Математическое моделирование и численные методы. — 2024. — № 2(42). — С. 46–67.
2. Джат, Ю. Как работает система распознавания лиц и где применяется технология / Ю. Джат. — Текст: электронный // Ростелеком: [сайт]. — URL: https://blog.rt.ru/b2c/kak-rabotaet-sistema-raspoznavaniya-lic-i-gde-primenyaetsya-tekhnologiya.htm (дата обращения: 24.09.2025).
3. Каскады Хаара на сервисе GitHub. — Текст: электронный // GitHub: [сайт]. — URL: https://github.com/austinjoyal/haar-cascade-files (дата обращения: 24.09.2025).
4. Компьютерное зрение OpenCV: где применяется и как работает в Python. — Текст: электронный // Skillbox Media: [сайт]. — URL: https://skillbox.ru/media/code/kompyuternoe-zrenie-opencv-gde-primenyaetsya-i-kak-rabotaet-v-python/ (дата обращения: 24.09.2025).
5. Работа каскада Хаара в OpenCV: теория и практика. — Текст: электронный // Система тематических электронных блогов «Хабр»: [сайт]. — URL: https://habr.com/ru/companies/recognitor/articles/228195/ (дата обращения: 24.09.2025).