УДК 004.93

Разработка программного модуля распознавания лиц

Хабибуллин Батырхан Тахирович – магистрант МИРЭА – Российского технологического университета

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

Ключевые слова: распознавание лиц, метод гистограммы направленных градиентов, компьютерное зрение.

1. Изучение технологии распознавания лиц

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

1.1 Система распознавания лиц

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

Не смотря на многообразие алгоритмов, существует общая структура процесса распознавания лиц, приведенная на рисунке 1.1.

1

Рисунок 1.1. Структура процесса распознавания лиц.

1.2 Принципы работы технологии распознавания лиц.

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

В общем случае, процесс распознавания лиц состоит из нескольких этапов:

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

В зависимости от конкретной технологии и метода сопоставления используются различные алгоритмы и подходы для создания шаблона лица и поиска соответствий в справочной базе. Однако, независимо от выбранного метода, принцип работы технологии распознавания лиц остается неизменным – это сравнение уникальных характеристик лица с заранее сохраненными данными для определения личности человека.

Виды технологии распознавания лиц можно поделить на:

  • Биометрическое сканирование – это технология, которая использует оптические сенсоры для сканирования уникальных черт лица, таких как форма лица, размер носа и глаз, контур губ и другие физические признаки.
  • Распознавание по шаблону – это алгоритм, который создает математическую модель изображения лица, используя сложные алгоритмы обработки изображений. Эта модель может быть использована для идентификации личности на основе сравнения со специальной базой данных.
  • 3D-распознавание – это технология, которая использует специальное оборудование для создания трехмерной модели лица. Такие модели могут более точно отражать уникальные черты лица, что повышает точность распознавания и уменьшает вероятность ошибок.
  • Инфракрасное распознавание – это технология, которая использует инфракрасный свет для сканирования лица. Это позволяет системе распознавания лиц работать даже в темноте и обеспечивает большую точность распознавания.
  • Системы, использующие глубокое обучение – это самая продвинутая технология распознавания лиц. Она основана на использовании нейронных сетей и алгоритмов машинного обучения для создания моделей, которые могут обрабатывать данные о лицах человека и определять их личность с большой точностью.

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

1.3 Применение технологии распознавания лиц

Технология распознавания лиц имеет множество возможных применений в различных областях, некоторые из которых перечислены ниже:

  • Безопасность: Один из наиболее распространенных способов использования технологии распознавания лиц – это обеспечение безопасности. Распознавание лиц может быть использовано для контроля доступа к зданиям, комнатам или компьютерным системам.
  • Идентификация преступников: Технология распознавания лиц может использоваться правоохранительными органами для идентификации преступников на основе фотографий с камер и видеонаблюдения.
  • Контроль границ: Некоторые страны уже используют технологию распознавания лиц для контроля своих границ. Это позволяет определять тех, кто запрещен к въезду или выезду из страны.
  • Маркетинг: Распознавание лиц может быть использовано для анализа поведения покупателей в магазинах. Это позволяет рекламодателям и маркетологам более точно настраивать их рекламные кампании в соответствии с предпочтениями и потребностями клиентов.
  • Медицинская диагностика: Технология распознавания лиц может быть использована для диагностики некоторых медицинских состояний, таких как синдром Дауна или склеродермия.
  • Управление аэропортом: Распознавание лиц может быть использовано на аэропортах для автоматической идентификации пассажиров, проверки их билетов и определения правильного гейта посадки.
  • Финансы: Распознавание лиц может быть использовано в банковской системе для более безопасной и удобной идентификации клиентов.

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

2. Исследование существующих алгоритмов и методов распознавания лиц

Наиболее популярными методами распознавания лиц сегодня являются следующие:

  • метод гибкого сравнения на графах;
  • метод главных компонент;
  • метод Виолы-Джонса;
  • метод опорных векторов;
  • метод формирования штрих-кодов по изображению лица;
  • метод гистограммы направленных градиентов;
  • сверточная нейронная сеть.

Метод гибкого сравнения на графах (Flexible Graph Matching) [1] – это метод, который используется для распознавания объектов на изображениях и видео. Он основан на создании графа, который представляет объект, и сравнении этого графа с графами других объектов.

Метод главных компонент (Principal Component Analysis) [2] – это метод, который используется для уменьшения размерности данных путем проекции данных на главные компоненты. Он может использоваться для распознавания лиц путем создания шаблона лица и сравнения его с другими лицами.

Метод Виолы-Джонса (Viola-Jones) [3] – это метод, который используется для обнаружения объектов на изображениях путем создания каскада классификаторов Хаара и использования их для поиска объектов на изображении. Он может использоваться для распознавания лиц путем обнаружения лица на изображении и сравнения его с другими лицами.

Метод опорных векторов (Support Vector Machines) [4] – это метод, который используется для классификации данных путем построения гиперплоскости, которая разделяет данные на классы. Он может использоваться для распознавания лиц путем создания модели, которая классифицирует лица на основе их признаков.

Метод формирования штрих-кодов по изображению лица (Face Barcode) [5] – это метод, который используется для создания уникального штрих-кода на основе изображения лица. Он может использоваться для распознавания лиц путем сравнения штрих-кода лица с другими штрих-кодами.

Метод гистограммы направленных градиентов (HOG) [6] – это алгоритм компьютерного зрения, который используется для извлечения признаков из изображений. Он основан на вычислении градиента яркости изображения и последующей конвертации его в пространство направленных градиентов. Затем изображение разбивается на ячейки, и для каждой ячейки вычисляется гистограмма направленных градиентов. В результате получается набор дескрипторов, которые могут быть использованы для классификации объектов на изображении.

Сверточные нейронные сети (CNN) [7] – это тип нейронных сетей, который эффективно работает с данными в форме изображений. Они состоят из нескольких слоев, каждый из которых осуществляет фильтрацию и обработку входных данных. В сверточном слое происходит выделение признаков изображения путем свертки входных данных с ядрами свертки. После этого следует слой активации, который применяет нелинейную функцию к выходным данным сверточного слоя. После нескольких таких слоев может быть добавлен полносвязный слой, который осуществляет классификацию объектов на изображении.

3. Реализация программного модуля распознавания лиц

3.1 Выбор метода для реализации системы распознавания лиц

В качестве детектора я выбрал dlib Hog благодаря его быстродействию и приемлемым показателям распознавания лиц, в качестве же метода для реализации системы распознавания лиц я выбрал язык программирования Python и библиотеку Face-Recognition, основанную на библиотеке dlib. Это позволяет быстро и эффективно разрабатывать алгоритмы распознавания лиц, а также использовать готовые модели для обучения системы на большом количестве изображений.

3.2 Написание кода программного модуля

Разработка системы велась на языке программирования Python в среде разработки PyCharm.

PyCharm – это кроссплатформенная интегрированная среда разработки для языка программирования Python, разработанная компанией JetBrains на основе IntelliJ IDEA. Предоставляет пользователю комплекс средств для написания кода и визуальный отладчик.

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

Для разработки системы также было решено использовать в качестве одной из основных – библиотеку Face-Recognition. Face-Recognition – это библиотека с открытым исходным кодом, построенная на C++ библиотеке dlib. Она отличается высокой точностью, очень удобна в использовании, ее легко развернуть на сервере даже без дорогостоящего GPU и у нее довольно простые требования. Также Face-Recognition с применением cnn метода имеет точность 99,38% в тесте Labeled Faces in the Wild.

Для создания пользовательского интерфейса была использована библиотека PyQt5. PyQt5 – это библиотека для разработки графических интерфейсов (GUI) на языке программирования Python. Она предоставляет Python-интерфейсы к библиотеке Qt, которая написана на языке C++ и является одним из наиболее популярных инструментов для создания GUI.

3.3 Программная реализация модуля распознавания лиц

Далее представлена структура:

  • Импорт необходимых модулей и библиотек.
  • Создание класса FaceRecognitionApp, наследуемого от QMainWindow.
  • Конфигурация пользовательского интерфейса в методе init() с помощью PyQt5.
  • Определение метода choose_folder(), который вызывается при нажатии на кнопку "Выбрать папку" и открывает диалог выбора папки с известными лицами.
  • Определение метода load_known_faces(), который загружает изображения лиц из выбранной папки, извлекает их характеристики и добавляет их в списки self.known_faces_encodings и self.known_faces_names соответственно.
  • Определение метода start_recognition(), который запускает таймер, который вызывает метод update_frame() каждые 33 миллисекунды.
  • Определение метода update_frame(), который захватывает кадр с помощью cv2.VideoCapture(), определяет положение лица на кадре и его характеристики с помощью библиотеки face_recognition, проверяет наличие совпадения с изображениями, загруженными в методе load_known_faces(). Если совпадение найдено, то соответствующее имя добавляется в списки recognized_faces и face_names. Если совпадение не найдено, то имя "Unknown" добавляется в список face_names и сохраняется изображение кадра в папку "Unknown people". Метод также обновляет информацию о статусе на пользовательском интерфейсе.
  • Определение методов display_image() и closeEvent(), которые используются для отображения кадра на пользовательском интерфейсе и корректного закрытия приложения соответственно.
  • Создание объекта класса FaceRecognitionApp, который выводится на экран приложения с помощью метода show(), запуск цикла обработки событий приложения app.exec_(), который ожидает пользовательских действий и обновляет интерфейс, и после закрытия приложения останавливает таймер и освобождает захват видео.

Алгоритм работы программного модуля можно представить в виде блок-схемы, представленной на рисунке 3.1.

2

Рисунок 3.1. Алгоритм работы программного модуля распознавания лиц.

Демонстрация работы программы представлена на рисунке 3.2.

3

Рисунок 3.2. Демонстрация работы программы.

4. Способы усовершенствования модуля

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

  • Использование новых алгоритмов и методов: существуют постоянно развивающиеся алгоритмы и методы обработки изображений, которые могут быть использованы для улучшения модуля компьютерного зрения. Их можно реализовать в виде новых функций или обновлений для уже существующих;
  • Расширение поддерживаемых форматов файлов: модуль компьютерного зрения может быть расширен для поддержки новых форматов файлов, что может быть полезно для работы с различными типами изображений;
  • Создание новых обучающих наборов данных: для улучшения модуля компьютерного зрения необходимо иметь хороший набор данных для обучения. Создание новых наборов данных, содержащих больше информации и различных типов изображений, может помочь улучшить качество распознавания;
  • Улучшение производительности: оптимизация алгоритмов и используемых аппаратных ресурсов может улучшить производительность модуля компьютерного зрения, что может быть важно для его использования в реальном времени;
  • Интеграция с другими системами: модуль компьютерного зрения может быть интегрирован с другими системами, такими как системы машинного обучения, что может помочь улучшить качество распознавания объектов.

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

Список литературы

  1. Васильева Е.В. Анализ современных подходов к узнаванию и распознаванию лиц // Васильева Е.В., Шестаков М.И., Лихачевский Д.В. // 54-я научная конференция аспирантов, магистрантов и студентов БГУИР. 2018.
  2. Померанцев А. Метод главных компонент / Померанцев А. // Российское хемометрическое общество. [Электронный ресурс]. -Режим доступа: http://rcs.chemometrics.ru/Tutorials/pca (дата обращения: 5.12.2019).
  3. Усилин С.А. Алгоритмическое развитие Виола-Джонсовских детекторов для решения прикладных задач распознавания изображений: Автореф. дис. канд. техн. наук. - Москва 2018. - 149 с.
  4. Амосов О С. Модифицированный алгоритм детекции лиц в видеопотоке и его программная реализация / Амосов О.С., Иванов Ю.С. // Науковедение. 2018. Вып. 3. С. 26.
  5. Кухарев Г.А. Формирование штрих-кода по изображениям лиц на основе градиентов яркости / Кухарев Г.А., Матвеев Ю.Н., Щеголева Н.Л. // Научно-технических вестник информационных технологий, механики и оптики. 2018. Вып. 3. С. 91.
  6. Кулинкович В. А. Применение методики гистограмм направленных градиентов для классификации дактилоскопических изображений // Журн. Белорус. гос. ун-та. Математика. Информатика. 2018. № 1. С. 53– 60.
  7. Колесников А. А. Анализ методов и средств искусственного интеллекта для анализа и интерпретации данных активного дистанционного зондирования // Вестник СГУГиТ (Сибирского государственного университета геосистем и технологий). 2022.

Интересная статья? Поделись ей с другими: